Autor Thema: Neue Version von HTTPMOD mit neuen Features zum Testen  (Gelesen 97124 mal)

Offline StefanStrobel

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1212
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #525 am: 15 Februar 2019, 18:45:19 »
Hallo Uwe,

prinzipiell sollte das kein Problem sein.
Aber was für Daten möchtest Du denn damit an den Server senden?
Bei einem set wird ja meist nur ein String übertragen.

Gruss
  Stefan

Offline UHT

  • New Member
  • *
  • Beiträge: 16
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #526 am: 15 Februar 2019, 18:56:43 »
Hallo Stefan,

Richtig, nur ein String, wobei ich auch ein Fall hab, wo ich nur ne URL mit PUT aufrufen will.

Offline UHT

  • New Member
  • *
  • Beiträge: 16
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #527 am: 19 Februar 2019, 12:32:26 »
So hab das Modul mal modifiziert. Man kann nun bei Set die HTTP Methode auswählen (GET; PUT; PUSH)
@Stefan
kannst du so übernehmen wenn die willst. Falls etwas nicht passt, einfach melden.

Offline mar3d@RPi3

  • New Member
  • *
  • Beiträge: 10
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #528 am: 19 Februar 2019, 17:37:38 »
@ Beta-User: attr Wetterwarner readingEncode UTF-8

Offline StefanStrobel

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1212
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #529 am: 19 Februar 2019, 18:22:25 »
Hallo Uwe,

sieht auf den ersten Blick gut aus und ich würde es eigentlich auch gerne übernehmen.
Nur hast Du es in einer alten Version von HTTPMOD eingebaut. Das macht die Übernahme etwas aufwändig.
Aktuell ist die 3.5.9, die bisher nur im Forum lag. Ich habe sie gerade auch eingecheckt.
Vielleicht kannst Du Deinen Diff ja auf die neue Version anwenden und dann einen Diff zur 3.5.9 posten?

Gruss
   Stefan

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 7937
  • eigentlich eher user wie "developer"
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #530 am: 19 Februar 2019, 19:39:01 »
@ Beta-User: attr Wetterwarner readingEncode UTF-8
:)
Danke; ist jetzt auch so im template, geht ja vermutlich nicht nur mir so...
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN
svn:MySensors, WeekdayTimer, AttrTemplate => {mqtt2, mysensors, httpmod}

Offline UHT

  • New Member
  • *
  • Beiträge: 16
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #531 am: 20 Februar 2019, 07:08:12 »
Hallo Uwe,

sieht auf den ersten Blick gut aus und ich würde es eigentlich auch gerne übernehmen.
Nur hast Du es in einer alten Version von HTTPMOD eingebaut. Das macht die Übernahme etwas aufwändig.
Aktuell ist die 3.5.9, die bisher nur im Forum lag. Ich habe sie gerade auch eingecheckt.
Vielleicht kannst Du Deinen Diff ja auf die neue Version anwenden und dann einen Diff zur 3.5.9 posten?

Gruss
   Stefan

Hallo Stefan,

ja klar kann ich machen.

Offline UHT

  • New Member
  • *
  • Beiträge: 16
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #532 am: 20 Februar 2019, 16:46:35 »
Hallo Stefan,
hier der diff:
232c232
< sub HTTPMOD_AddToQueue($$$$$;$$$$);
---
> sub HTTPMOD_AddToQueue($$$$$;$$$$$);
327a328
>       "set[0-9]+Method:GET,POST,PUT " . # select HTTP method for the set
1533c1534
<         HTTPMOD_AddToQueue($hash, $url, $header, $data, "set$setNum", $rawVal);
---
>         HTTPMOD_AddToQueue($hash, $url, $header, $data, "set$setNum", $rawVal, 0, 0, 0, AttrVal($name, "set${setNum}Method", ""));
2851a2853,2856
>         if($hash->{REQUEST}{method}) {          #check if optional parameter for HTTP Method is set
>             $hash->{method}  = $hash->{REQUEST}{method};
>             Log3 $name, 5, "$name: HandleSendQueue - call with HTTP METHOD: $hash->{method} ";
>         }
2959,2960c2964,2965
< HTTPMOD_AddToQueue($$$$$;$$$$){
<     my ($hash, $url, $header, $data, $type, $value, $count, $ignoreredirects, $prio) = @_;
---
> HTTPMOD_AddToQueue($$$$$;$$$$$){
>     my ($hash, $url, $header, $data, $type, $value, $count, $ignoreredirects, $prio, $method) = @_;
2974a2980
>     $request{method}          = $method;
3478c3484
<     
---
>
3756a3763,3764
>         <li><b>set[0-9]+Method</b></li>
>             HTTP Method (GET, POST or PUT) which shall be used for the set.

Und angehängt noch das komplette File mit meinen Änderungen.

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1559
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #533 am: 21 Februar 2019, 11:29:53 »
:)
Dann mal hier eine erweiterte Sammlung für "model", neben Spritpreis ist aktuell drin:
- ORF-Wetter
- homebridge-videodoorbell
- RESOL Solaranlage

Servus,
Das ORF-Wetter scheint nur in Wien zu gehen (Innere Stadt) gibt es halt nicht überall...
Anbei ein allgemeinerer Ansatz, gleich unter Vergabe der Namen im Regex direkt.

attr wetter.orf get01Name Aktualisieren
attr wetter.orf reading01Regex (?s)Temperatur.*?.*?>.*?(?<temperature>[\d,]+)&thinsp.*?Taupunkt.*?.*?>.*?(?<taupunkt>[\d,]+)&thinsp.*?Wind.*?>\n\s*(?<wind>[^<]+)\s<abbr.*?Windspitzen.*?>\n\s*(?<windspitzen>[^<]+)\s<abbr.*?Luftdruck.*?>\n\s*(?<luftdruck>[^<]+)\s<abbr.*?Luftfeuchtigkeit.*?>\n\s*(?<humidity>[^<]+)\s<abbr.*?Sonnenschein.*?>\n\s*(?<sonne>[^<]+)\s<abbr.*?Niederschlag.*?>\n\s*(?<rain>[^<\n]+).*?</p.*?(?<messwerte>Messwerte[^<\n]+)

sG
Joe
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 7937
  • eigentlich eher user wie "developer"
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #534 am: 21 Februar 2019, 12:10:12 »
Servus zurück!

Danke für's Melden und Verfeinern, im ersten Wurf hatte ich nur mal so zusammengetragen, was ich in den Weiten des Forums gefunden hatte, damit überhaupt erst mal erkennbar wird, wie die Funktionalität an sich ist/sein könnte ;D . Kann also durchaus sein, dass das nicht die einzige konstruktive Kritik an der file bleiben wird ::) .

Update kommt bei Gelegenheit, dann gibts auch einen Link in der MAINTAINER.txt auf https://forum.fhem.de/index.php/topic,97694.0.html (und evtl. ein Eingangstemplate, in dem darauf verlinkt ist).

Gruß, Beta-User
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN
svn:MySensors, WeekdayTimer, AttrTemplate => {mqtt2, mysensors, httpmod}

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 7937
  • eigentlich eher user wie "developer"
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #535 am: 22 Februar 2019, 08:02:59 »
Servus,
Das ORF-Wetter scheint nur in Wien zu gehen (Innere Stadt) gibt es halt nicht überall...
Anbei ein allgemeinerer Ansatz, gleich unter Vergabe der Namen im Regex direkt.
Moin, habe das mal versucht umzusetzen, aber irgendwie will das nicht so recht...
Meine derzeitige RAW-Definition (die Reading-01-Namen hatte ich auch schon mal rausgeworfen, half auch nicht):

defmod ORFtest2 HTTPMOD https://wetter.orf.at/steiermark/ 1800
attr ORFtest2 userattr get01Name reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name reading01Regex reading02-1Name reading02-2Name reading02-3Name reading02-4Name reading02-5Name reading02-6Name reading02-7Name reading02-8Name reading02Regex
attr ORFtest2 enableControlSet 1
attr ORFtest2 get01Name grazuniversitaet
attr ORFtest2 model A_02m_ORF_weather
attr ORFtest2 reading01-1Name temperature
attr ORFtest2 reading01-2Name weather
attr ORFtest2 reading01-3Name wind
attr ORFtest2 reading01-4Name windDir
attr ORFtest2 reading01-5Name precipitation
attr ORFtest2 reading01Regex (?s)Temperatur.*?.*?>.*?(?<temperature>[\d,]+)&thinsp.*?Taupunkt.*?.*?>.*?(?<taupunkt>[\d,]+)&thinsp.*?Wind.*?>\n\s*(?<wind>[^<]+)\s<abbr.*?Windspitzen.*?>\n\s*(?<windspitzen>[^<]+)\s<abbr.*?Luftdruck.*?>\n\s*(?<luftdruck>[^<]+)\s<abbr.*?Luftfeuchtigkeit.*?>\n\s*(?<humidity>[^<]+)\s<abbr.*?Sonnenschein.*?>\n\s*(?<sonne>[^<]+)\s<abbr.*?Niederschlag.*?>\n\s*(?<rain>[^<\n]+).*?</p.*?(?<messwerte>Messwerte[^<\n]+)
attr ORFtest2 reading02-1Name sunRise
attr ORFtest2 reading02-2Name sunSet
attr ORFtest2 reading02-3Name moonPhase
attr ORFtest2 reading02-4Name moonRise
attr ORFtest2 reading02-5Name moonSet
attr ORFtest2 reading02-6Name dayLength
attr ORFtest2 reading02-7Name dawn
attr ORFtest2 reading02-8Name dusk
attr ORFtest2 reading02Regex Sonnenaufgang um <\/span>(.*)<s[\w\W]*Sonnenuntergang um <\/span>(.*)<s[\w\W]*Mondphase: (.*)\.[\w\W]*Mondaufgang um <\/span>(.*)<s[\w\W]*Monduntergang um <\/span>(.*)<s[\w\W]*Tagesl&auml;;;;nge: <\/span>(.*)&[\w\W]*Morgen<\/span>: <\/span>(.*)&[\w\W]*Abend:<\/span><\/span>(.*)&
attr ORFtest2 room Wetter
attr ORFtest2 stateFormat weather bei temperature°C

setstate ORFtest2 weather bei temperature°C

Template dazu:#Austrian weather, Forum: https://forum.fhem.de/index.php/topic,94110.msg868080.html#msg868080
name:A_02m_ORF_weather
filter:TYPE=HTTPMOD
desc: Get austrian weather.<br>Define a HTTPMOD device like <br>defmod weatherORF HTTPMOD https://wetter.orf.at/steiermark/ 1800 <br>Change region to your needs <br><a href="https://forum.fhem.de/index.php/topic,94110.msg868080.html#msg868080">Source: Forum</a>
par:STATIONNAME;Use a valid station name like grazuniversitaet,
attr DEVICE userattr reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name reading01Regex reading02-1Name reading02-2Name reading02-3Name reading02-4Name reading02-5Name reading02-6Name reading02-7Name reading02-8Name reading02Regex
attr DEVICE enableControlSet 1
attr DEVICE get01Name STATIONNAME
#attr DEVICE reading01-1Name temperature
#attr DEVICE reading01-2Name weather
#attr DEVICE reading01-3Name wind
#attr DEVICE reading01-4Name windDir
#attr DEVICE reading01-5Name precipitation
attr DEVICE reading01Regex (?s)Temperatur.*?.*?>.*?(?<temperature>[\d,]+)&thinsp.*?Taupunkt.*?.*?>.*?(?<taupunkt>[\d,]+)&thinsp.*?Wind.*?>\n\s*(?<wind>[^<]+)\s<abbr.*?Windspitzen.*?>\n\s*(?<windspitzen>[^<]+)\s<abbr.*?Luftdruck.*?>\n\s*(?<luftdruck>[^<]+)\s<abbr.*?Luftfeuchtigkeit.*?>\n\s*(?<humidity>[^<]+)\s<abbr.*?Sonnenschein.*?>\n\s*(?<sonne>[^<]+)\s<abbr.*?Niederschlag.*?>\n\s*(?<rain>[^<\n]+).*?</p.*?(?<messwerte>Messwerte[^<\n]+)
attr DEVICE reading02-1Name sunRise
attr DEVICE reading02-2Name sunSet
attr DEVICE reading02-3Name moonPhase
attr DEVICE reading02-4Name moonRise
attr DEVICE reading02-5Name moonSet
attr DEVICE reading02-6Name dayLength
attr DEVICE reading02-7Name dawn
attr DEVICE reading02-8Name dusk
attr DEVICE reading02Regex Sonnenaufgang um <\/span>(.*)<s[\w\W]*Sonnenuntergang um <\/span>(.*)<s[\w\W]*Mondphase: (.*)\.[\w\W]*Mondaufgang um <\/span>(.*)<s[\w\W]*Monduntergang um <\/span>(.*)<s[\w\W]*Tagesl&auml;;nge: <\/span>(.*)&[\w\W]*Morgen<\/span>: <\/span>(.*)&[\w\W]*Abend:<\/span><\/span>(.*)&
attr DEVICE room Wetter
attr DEVICE stateFormat weather bei temperature°C
attr DEVICE model A_02m_ORF_weather
Für einen Schubs wäre ich dankbar, wir können das gerne auch in dem anderen Thread weiter diskutieren, weiß nur nicht, ob du den beobachtest...
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN
svn:MySensors, WeekdayTimer, AttrTemplate => {mqtt2, mysensors, httpmod}

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1559
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #536 am: 23 Februar 2019, 05:20:51 »
Bin unterwegs ohne Internet. Mach ich nächste Woche.
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1559
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #537 am: 25 Februar 2019, 08:12:54 »
Moin, habe das mal versucht umzusetzen, aber irgendwie will das nicht so recht...

Hier war eigentlich nur due URL falsch.

Dies hier klappt (für den ersten Teil) direkt!
Der Sonnenaufgang wurd auf der Seite jedoch gar nicht dargestellt, weshalb dieser im zweiten Teil nicht gefunden werden kann.

defmod ORFtest2 HTTPMOD https://wetter.orf.at/steiermark/grazuniversitaet/ 1800
attr ORFtest2 userattr get01Name reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name reading01Regex reading02-1Name reading02-2Name reading02-3Name reading02-4Name reading02-5Name reading02-6Name reading02-7Name reading02-8Name reading02Regex
attr ORFtest2 enableControlSet 1
attr ORFtest2 get01Name grazuniversitaet
attr ORFtest2 model A_02m_ORF_weather
attr ORFtest2 reading01Regex (?s)Temperatur.*?.*?>.*?(?<temperature>[\d,]+)&thinsp.*?Taupunkt.*?.*?>.*?(?<taupunkt>[\d,]+)&thinsp.*?Wind.*?>\n\s*(?<wind>[^<]+)\s<abbr.*?Windspitzen.*?>\n\s*(?<windspitzen>[^<]+)\s<abbr.*?Luftdruck.*?>\n\s*(?<luftdruck>[^<]+)\s<abbr.*?Luftfeuchtigkeit.*?>\n\s*(?<humidity>[^<]+)\s<abbr.*?Sonnenschein.*?>\n\s*(?<sonne>[^<]+)\s<abbr.*?Niederschlag.*?>\n\s*(?<rain>[^<\n]+).*?</p.*?(?<messwerte>Messwerte[^<\n]+)
attr ORFtest2 reading02-1Name sunRise
attr ORFtest2 reading02-2Name sunSet
attr ORFtest2 reading02-3Name moonPhase
attr ORFtest2 reading02-4Name moonRise
attr ORFtest2 reading02-5Name moonSet
attr ORFtest2 reading02-6Name dayLength
attr ORFtest2 reading02-7Name dawn
attr ORFtest2 reading02-8Name dusk
attr ORFtest2 reading02Regex Sonnenaufgang um <\/span>(.*)<s[\w\W]*Sonnenuntergang um <\/span>(.*)<s[\w\W]*Mondphase: (.*)\.[\w\W]*Mondaufgang um <\/span>(.*)<s[\w\W]*Monduntergang um <\/span>(.*)<s[\w\W]*Tagesl&auml;;;;nge: <\/span>(.*)&[\w\W]*Morgen<\/span>: <\/span>(.*)&[\w\W]*Abend:<\/span><\/span>(.*)&
attr ORFtest2 room Wetter
attr ORFtest2 stateFormat weather bei temperature°C

setstate ORFtest2 weather bei 2,2°C
setstate ORFtest2 2019-02-25 08:07:52 humidity 55
setstate ORFtest2 2019-02-25 08:07:52 luftdruck 1036,8
setstate ORFtest2 2019-02-25 08:07:52 messwerte Messwerte von 7.00 Uhr
setstate ORFtest2 2019-02-25 08:07:52 rain 0,0
setstate ORFtest2 2019-02-25 08:07:52 sonne 0
setstate ORFtest2 2019-02-25 08:07:52 taupunkt 5,9
setstate ORFtest2 2019-02-25 08:07:52 temperature 2,2
setstate ORFtest2 2019-02-25 08:07:52 wind Ost, 5
setstate ORFtest2 2019-02-25 08:07:52 windspitzen Ost, 8



Der Regex müsste noch um die weiteren Werte ergänzt werden. GGf. ist dies sogar so möglich dass er fehlende Werte schlichtweg ignoriert.
Machst Du das?
sG
joe
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 7937
  • eigentlich eher user wie "developer"
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #538 am: 26 Februar 2019, 07:44:32 »
Dies hier klappt (für den ersten Teil) direkt!
[...]
Der Regex müsste noch um die weiteren Werte ergänzt werden. GGf. ist dies sogar so möglich dass er fehlende Werte schlichtweg ignoriert.
Machst Du das?
sG
joe
Moin,

den Zwischenstand habe ich jetzt mal eingecheckt, der Stationsname wird dabei auch direkt aus der URL abgeleitet, das ist vielleicht auch für weitere Anwendungsfälle interessant.
Da ich mich aber a) mit regex auch nicht leicht tue und b) nicht im schönen Österreich wohne:
Ich bau sehr gerne ein, was mir jemand was als Optimierungswunsch zuruft, aber seht mir nach, wenn wesentlich mehr nicht drin ist :-* :) .

(wir können die Diskussion btw. dann auch in dem Template-Thread weiterführen.)

Gruß, Beta-User
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN
svn:MySensors, WeekdayTimer, AttrTemplate => {mqtt2, mysensors, httpmod}

Offline ThomasMagnum

  • Full Member
  • ***
  • Beiträge: 143
Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
« Antwort #539 am: 10 April 2019, 08:50:39 »
Hallo,

ist es möglich ein Reading als zu nutzende URL in HTTPMOD zu verwenden und diese in der DEF per ReadingsVal zu übergeben?
Hintergrund ist die flexible Nutzung von HTTPMOD zur Ermittlung von Spritpreisen anhand der aktuellen Position.

Vielen Dank schon mal.

Gruß, Thomas