Neue Version von HTTPMOD mit neuen Features zum Testen

Begonnen von StefanStrobel, 05 Dezember 2015, 08:31:32

Vorheriges Thema - Nächstes Thema

StefanStrobel

#795
Hallo,

ich habe mal angefangen HTTPMOD aufzuhübschen.
Die wichtigste Änderung ist dabei dass das Modul einen eigenen Namespace bekommen hat.
Als Anwender sollte man davon nichts bemerken, aber genau da könnte es Probleme geben. Deshalb würde ich mich freuen, wenn ich etwas Hilfe beim Testen bekomme.
Ich habe versucht, einiges an automatischen Tests zu schreiben, allerdings decken die sicher noch nicht alles ab. Wer hier seine Anwendungsfälle hinzufügen möchte kann gerne mithelfen.
Meine Tests sind eingecheckt und liegen unter t/FHEM/98_HTTPMOD/.
Vor dem Update auf das neue Modul sollte per update das Modul FHEM::HTTPMOD::Utils installiert werden. Darin sind die Funktionen, die nicht nur HTTPMOD sondern auch andere meiner Module verwenden. Die Datei sollte in lib/FHEM/HTTPMOD als Utils.pm liegen.

Gruss
   Stefan

EDIT 29.8.2020: angehängtes Modul gelöscht, neuere Version in späterem Post.

Gisbert

Hallo Stefan,

was genau muss ich tun?
Diese Schritte denke ich, sind klar:
update all
Sichern von 98_HTTPMOD.pm
Kopieren der neuen 98_HTTPMOD.pm in ./FHEM
shutdown restart

Wie teste ich? Nur schauen, ob alle meine HTTPMOD-Devices das erwartungsgemäße Verhalten zeigen? Oder auf was muss ich genauer achten?

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

StefanStrobel

Hallo Gisbert,

Ich würde einfach nur schauen ob alles wie vorher funktioniert, alle Werte korrekt aktualisiert werden, ggf. get und set klappen etc.

Gruss / vielen Dank
   Stefan

Gisbert

#798
Hallo Stefan,

da stimmt noch was Gravierendes nicht.
Die HTTPMOD-Devices sind noch als Definitionen vorhanden, sie tauchen aber nirgends in den zugewiesenen Räumen auf, auch nicht in unsorted.
Ich habe das alte HTTPMOD-Modul wieder geladen.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

Gisbert

#799
Hallo Stefan,

was ist mit
Zitatpackage FHEM::HTTPMOD::Utils
in Utils.pm gemeint?
Muss ich das aktiv installieren, und wenn ja wie?

Viele Grüße Gisbert

Edit: update in der Fhem-Konsole und shutdown restart hatte ich durchgeführt. Die Datei Utils.pm liegt im beschriebenen Ordner.
Edit2: Unter "Own modules and helper files" in der Fhem-Webseite ist mir der Eintrag "98_FhemTestUtils.pm" aufgefallen, den ich bisher noch nicht als solchen registriert hatte.
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

StefanStrobel

Hallo Gisbert,

vielen Dank für's Testen!
Am einfachsten wäre es für mich, wenn Du ein betroffenes HTTPMOD-Gerät auf verbose 5 setzen könntest und dann das Log beim Starten postest. Dann sollte einfach erkennbar sein, woran es liegt.
Die 98_FhemTestUtils sollten eigentlich nicht benötigt werden. Wo siehst Du die denn?

Gruss / Thanx
   Stefan

Gisbert

Hallo Stefan,

ich kann leider die nächsten Tage nicht testen. Falls in der Zwischenzeit niemand sonst weitermacht, komme ich erst gegen Ende der nächste Woche dazu. Die 98_FhemTestUtils.pm wird in der Liste angezeigt, in der auch 99_myUtils.pm liegt.

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

amenomade

#802
Bei mir stürzt Fhem ab mit:
Undefined subroutine &FHEM::HTTPMOD::Utils::ValidExpr called at ./FHEM/98_HTTPMOD.pm line 492, <$fh> line 233.

obwohl Utils.pm in ./lib/FHEM/HTTPMOD liegt.

(unter Windows - mein Test-Fhem)

(ActiveState Perl
This is perl 5, version 26, subversion 3 (v5.26.3) built for MSWin32-x64-multi-thread)

EDIT: ich habe am Anfang gedacht, dass meine Perl Version irgendwie mit packages und exports nicht funktioniert. Aber nein, das Modul Utils wird richtig geladen. Nur... die Funktion existiert nirgendwo.

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

Hab die Zeile auskommentiert, und weiter getestet.

Folgendes HTTPMOD funktioniert nicht mehr:

List:
defmod GeoTest HTTPMOD none 0
attr GeoTest enableControlSet 1
attr GeoTest get01Name Tag01
attr GeoTest get01Poll 1
attr GeoTest get01Regex (?s)Zeit auswählen<br>(?<Tag01_WochenTag>[A-Za-z]+).-.(?<Tag01_Datum>[0-9\.]{10}).*?<td>09:15<\/td><td>(?<Tag01_09Uhr>.*?)<\/td>.*?<td>12:15<\/td><td>(?<Tag01_12Uhr>.*?)<\/td>
attr GeoTest get01Replacement01Value {strftime("%d.%m.%Y", localtime( time))}
attr GeoTest get02Name Tag02
attr GeoTest get02Poll 1
attr GeoTest get02Regex (?s)Zeit auswählen<br>(?<Tag02_WochenTag>[A-Za-z]+).-.(?<Tag02_Datum>[0-9\.]{10}).*?<td>09:15<\/td><td>(?<Tag02_09Uhr>.*?)<\/td>.*?<td>12:15<\/td><td>(?<Tag02_12Uhr>.*?)<\/td>
attr GeoTest get02Replacement01Value {strftime("%d.%m.%Y", localtime(time + 86400))}
attr GeoTest get03Name Tag03
attr GeoTest get03Poll 1
attr GeoTest get03Regex (?s)Zeit auswählen<br>(?<Tag03_WochenTag>[A-Za-z]+).-.(?<Tag03_Datum>[0-9\.]{10}).*?<td>09:15<\/td><td>(?<Tag03_09Uhr>.*?)<\/td>.*?<td>12:15<\/td><td>(?<Tag03_12Uhr>.*?)<\/td>
attr GeoTest get03Replacement01Value {strftime("%d.%m.%Y", localtime( time + 2*86400))}
attr GeoTest get04Name Tag04
attr GeoTest get04Poll 1
attr GeoTest get04Regex (?s)Zeit auswählen<br>(?<Tag04_WochenTag>[A-Za-z]+).-.(?<Tag04_Datum>[0-9\.]{10}).*?<td>09:15<\/td><td>(?<Tag04_09Uhr>.*?)<\/td>.*?<td>12:15<\/td><td>(?<Tag04_12Uhr>.*?)<\/td>
attr GeoTest get04Replacement01Value {strftime("%d.%m.%Y", localtime( time + 3*86400))}
attr GeoTest get05Name Tag05
attr GeoTest get05Poll 1
attr GeoTest get05Regex (?s)Zeit auswählen<br>(?<Tag05_WochenTag>[A-Za-z]+).-.(?<Tag05_Datum>[0-9\.]{10}).*?<td>09:15<\/td><td>(?<Tag05_09Uhr>.*?)<\/td>.*?<td>12:15<\/td><td>(?<Tag05_12Uhr>.*?)<\/td>
attr GeoTest get05Replacement01Value {strftime("%d.%m.%Y", localtime( time + 4*86400))}
attr GeoTest get06Name Tag06
attr GeoTest get06Poll 1
attr GeoTest get06Regex (?s)Zeit auswählen<br>(?<Tag06_WochenTag>[A-Za-z]+).-.(?<Tag06_Datum>[0-9\.]{10}).*?<td>09:15<\/td><td>(?<Tag06_09Uhr>.*?)<\/td>.*?<td>12:15<\/td><td>(?<Tag06_12Uhr>.*?)<\/td>
attr GeoTest get06Replacement01Value {strftime("%d.%m.%Y", localtime( time + 5*86400))}
attr GeoTest getURL https://geocache-planer.de/CAL/anmeldung.php?date=%%date%%&CALID=ASCHYBY
attr GeoTest replacement01Mode expression
attr GeoTest replacement01Regex %%date%%
attr GeoTest verbose 5


Log (Teil):
2020.08.22 01:31:11 5: GeoTest: set called with reread
2020.08.22 01:31:11 4: GeoTest: GetUpdate called (reread)
2020.08.22 01:31:11 5: GeoTest: GetUpdate checks if poll required for Tag01 (01)
2020.08.22 01:31:11 4: GeoTest: GetUpdate will request Tag01
2020.08.22 01:31:11 5: GeoTest: AddToQueue adds type get01 to URL https://geocache-planer.de/CAL/anmeldung.php?date=%%date%%&CALID=ASCHYBY, no data, no headers, retry 0, initial queue len: 0
2020.08.22 01:31:11 5: GeoTest: HandleSendQueue called from HTTPMOD::AddToSendQueue, qlen = 1
2020.08.22 01:31:11 5: GeoTest: Replace called for type get01, regex (?^:%%date%%), mode expression, value {strftime("%d.%m.%Y", localtime( time))} input:
2020.08.22 01:31:11 5: GeoTest: Replace called for type get01, regex (?^:%%date%%), mode expression, value {strftime("%d.%m.%Y", localtime( time))} input:
2020.08.22 01:31:11 5: GeoTest: Replace called for type get01, regex (?^:%%date%%), mode expression, value {strftime("%d.%m.%Y", localtime( time))} input: https://geocache-planer.de/CAL/anmeldung.php?date=%%date%%&CALID=ASCHYBY
2020.08.22 01:31:11 3: GeoTest: Replacement 01 with expression {strftime("%d.%m.%Y", localtime( time))} created warning: Use of uninitialized value in substitution iterator at ./FHEM/98_HTTPMOD.pm line 870.

2020.08.22 01:31:11 5: GeoTest: Replace: match for type get01, regex (?^:%%date%%), mode expression, value {strftime("%d.%m.%Y", localtime( time))}, input: https://geocache-planer.de/CAL/anmeldung.php?date=%%date%%&CALID=ASCHYBY, result is https://geocache-planer.de/CAL/anmeldung.php?date=&CALID=ASCHYBY
2020.08.22 01:31:11 5: GeoTest: HandleSendQueue is using Cookie PHPSESSID with path / and Value 79l0qonmm59gb3am7u9oo5ha8i (key PHPSESSID;/, destination path is /CAL/anmeldung.php?date=&CALID=ASCHYBY)
2020.08.22 01:31:11 5: GeoTest: HandleSendQueue is adding Cookie header: PHPSESSID=79l0qonmm59gb3am7u9oo5ha8i
2020.08.22 01:31:11 4: GeoTest: HandleSendQueue sends get01 with timeout 2 to https://geocache-planer.de/CAL/anmeldung.php?date=&CALID=ASCHYBY, No Data,

header: Cookie: PHPSESSID=79l0qonmm59gb3am7u9oo5ha8i
2020.08.22 01:31:11 5: HttpUtils url=https://geocache-planer.de/CAL/anmeldung.php?date=&CALID=ASCHYBY
2020.08.22 01:31:11 5: GeoTest: GetUpdate checks if poll required for Tag02 (02)
2020.08.22 01:31:11 4: GeoTest: GetUpdate will request Tag02
2020.08.22 01:31:11 5: GeoTest: AddToQueue adds type get02 to URL https://geocache-planer.de/CAL/anmeldung.php?date=%%date%%&CALID=ASCHYBY, no data, no headers, retry 0, initial queue len: 0
2020.08.22 01:31:11 5: GeoTest: HandleSendQueue called from HTTPMOD::AddToSendQueue, qlen = 1
2020.08.22 01:31:11 5: GeoTest: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2020.08.22 01:31:11 5: GeoTest: GetUpdate checks if poll required for Tag03 (03)
2020.08.22 01:31:11 4: GeoTest: GetUpdate will request Tag03
2020.08.22 01:31:11 5: GeoTest: AddToQueue adds type get03 to URL https://geocache-planer.de/CAL/anmeldung.php?date=%%date%%&CALID=ASCHYBY, no data, no headers, retry 0, initial queue len: 1
2020.08.22 01:31:11 5: GeoTest: HandleSendQueue called from HTTPMOD::AddToSendQueue, qlen = 2
2020.08.22 01:31:11 5: GeoTest: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2020.08.22 01:31:11 5: GeoTest: GetUpdate checks if poll required for Tag04 (04)
2020.08.22 01:31:11 4: GeoTest: GetUpdate will request Tag04
2020.08.22 01:31:11 5: GeoTest: AddToQueue adds type get04 to URL https://geocache-planer.de/CAL/anmeldung.php?date=%%date%%&CALID=ASCHYBY, no data, no headers, retry 0, initial queue len: 2
2020.08.22 01:31:11 5: GeoTest: HandleSendQueue called from HTTPMOD::AddToSendQueue, qlen = 3
2020.08.22 01:31:11 5: GeoTest: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2020.08.22 01:31:11 5: GeoTest: GetUpdate checks if poll required for Tag05 (05)
2020.08.22 01:31:11 4: GeoTest: GetUpdate will request Tag05
2020.08.22 01:31:11 5: GeoTest: AddToQueue adds type get05 to URL https://geocache-planer.de/CAL/anmeldung.php?date=%%date%%&CALID=ASCHYBY, no data, no headers, retry 0, initial queue len: 3
2020.08.22 01:31:11 5: GeoTest: HandleSendQueue called from HTTPMOD::AddToSendQueue, qlen = 4
2020.08.22 01:31:11 5: GeoTest: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2020.08.22 01:31:11 5: GeoTest: GetUpdate checks if poll required for Tag06 (06)
2020.08.22 01:31:11 4: GeoTest: GetUpdate will request Tag06
2020.08.22 01:31:11 5: GeoTest: AddToQueue adds type get06 to URL https://geocache-planer.de/CAL/anmeldung.php?date=%%date%%&CALID=ASCHYBY, no data, no headers, retry 0, initial queue len: 4
2020.08.22 01:31:11 5: GeoTest: HandleSendQueue called from HTTPMOD::AddToSendQueue, qlen = 5
2020.08.22 01:31:11 5: GeoTest: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2020.08.22 01:31:11 4: IP: geocache-planer.de -> 81.169.145.86
2020.08.22 01:31:11 5: HttpUtils request header:
GET /CAL/anmeldung.php?date=&CALID=ASCHYBY HTTP/1.0

Host: geocache-planer.de

User-Agent: fhem

Accept-Encoding: gzip,deflate

Cookie: PHPSESSID=79l0qonmm59gb3am7u9oo5ha8i


2020.08.22 01:31:11 4: https://geocache-planer.de/CAL/anmeldung.php?date=&CALID=ASCHYBY: HTTP response code 200
2020.08.22 01:31:11 5: HttpUtils https://geocache-planer.de/CAL/anmeldung.php?date=&CALID=ASCHYBY: Got data, length: 5398
2020.08.22 01:31:11 5: HttpUtils response header:


Das Problem ist wahrscheinlich da:
2020.08.22 01:31:11 5: GeoTest: Replace called for type get01, regex (?^:%%date%%), mode expression, value {strftime("%d.%m.%Y", localtime( time))} input: https://geocache-planer.de/CAL/anmeldung.php?date=%%date%%&CALID=ASCHYBY

2020.08.22 01:31:11 3: GeoTest: Replacement 01 with expression {strftime("%d.%m.%Y", localtime( time))} created warning: Use of uninitialized value in substitution iterator at ./FHEM/98_HTTPMOD.pm line 870.

2020.08.22 01:31:11 5: GeoTest: Replace: match for type get01, regex (?^:%%date%%), mode expression, value {strftime("%d.%m.%Y", localtime( time))}, input: https://geocache-planer.de/CAL/anmeldung.php?date=%%date%%&CALID=ASCHYBY, result is https://geocache-planer.de/CAL/anmeldung.php?date=&CALID=ASCHYBY


Da er das Datum nicht ersetzt, werden danach natürlich keine Readings extrahiert.

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

StefanStrobel

Vielen Dank!

Hab die replacement-Fehler identifiziert, neue Version ist auf dem Weg :-)

Gruss
   Stefan

amenomade

#805
Wenn Du dabei bist, vergiss die ValidExpr Funktion nicht ;)

Noch ein HTTPMOD das nicht mehr funktioniert. Bringt Fhem zum Abstürz.
defmod Gezeiten_Windfinder HTTPMOD https://api.windfinder.com/v2/spots/de1729/tides/?limit=-1&customer=wfweb&version=1.0&token=$sid 0
attr Gezeiten_Windfinder enableControlSet 1
attr Gezeiten_Windfinder reAuthRegex UNAUTHORIZED
attr Gezeiten_Windfinder reading01Name HW_Tag
attr Gezeiten_Windfinder reading01OExpr substr($val,4,2)
attr Gezeiten_Windfinder reading01Regex dtl":".{5}(.{5}).{15}","tp":"high.*?dtl":".{5}(.{5}).{15}","tp":"high.*?dtl":".{5}(.{5}).{15}","tp":"high.*?dtl":".{5}(.{5}).{15}","tp":"high.*?dtl":".{5}(.{5}).{15}","tp":"high.*?dtl":".{5}(.{5}).{15}","tp":"high.*?dtl":".{5}(.{5}).{15}","tp":"high
attr Gezeiten_Windfinder reading02Name HW_Zeit
attr Gezeiten_Windfinder reading02Regex dtl":".{11}(.{5}).{9}","tp":"high.*?dtl":".{11}(.{5}).{9}","tp":"high.*?dtl":".{11}(.{5}).{9}","tp":"high.*?dtl":".{11}(.{5}).{9}","tp":"high.*?dtl":".{11}(.{5}).{9}","tp":"high.*?dtl":".{11}(.{5}).{9}","tp":"high.*?dtl":".{11}(.{5}).{9}","tp":"high
attr Gezeiten_Windfinder reading03Name HW_Level
attr Gezeiten_Windfinder reading03Regex dtl":".*?,"tp":"high","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"high","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"high","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"high","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"high","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"high","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"high","th":([0-9].[0-9]?[0-9]?).*?
attr Gezeiten_Windfinder reading04Name NW_Tag
attr Gezeiten_Windfinder reading04Regex dtl":".{5}(.{5}).{15}","tp":"low.*?dtl":".{5}(.{5}).{15}","tp":"low.*?dtl":".{5}(.{5}).{15}","tp":"low.*?dtl":".{5}(.{5}).{15}","tp":"low.*?dtl":".{5}(.{5}).{15}","tp":"low.*?dtl":".{5}(.{5}).{15}","tp":"low.*?dtl":".{5}(.{5}).{15}","tp":"low
attr Gezeiten_Windfinder reading05Name NW_Zeit
attr Gezeiten_Windfinder reading05Regex dtl":".{11}(.{5}).{9}","tp":"low.*?dtl":".{11}(.{5}).{9}","tp":"low.*?dtl":".{11}(.{5}).{9}","tp":"low.*?dtl":".{11}(.{5}).{9}","tp":"low.*?dtl":".{11}(.{5}).{9}","tp":"low.*?dtl":".{11}(.{5}).{9}","tp":"low.*?dtl":".{11}(.{5}).{9}","tp":"low
attr Gezeiten_Windfinder reading06Name NW_Level
attr Gezeiten_Windfinder reading06Regex dtl":".*?,"tp":"low","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"low","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"low","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"low","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"low","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"low","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"low","th":([0-9].[0-9]?[0-9]?).*?
attr Gezeiten_Windfinder room ,HTTPMODs
attr Gezeiten_Windfinder showBody 0
attr Gezeiten_Windfinder sid01IdRegex window.API_TOKEN = '(.*?)'
attr Gezeiten_Windfinder sid01URL https://de.windfinder.com/tide/dangast
attr Gezeiten_Windfinder verbose 5


Log:
2020.08.22 11:27:33 5: Gezeiten_Windfinder: set called with reread
2020.08.22 11:27:33 4: Gezeiten_Windfinder: GetUpdate called (reread)
2020.08.22 11:27:33 5: Gezeiten_Windfinder: AddToQueue adds type update to URL https://api.windfinder.com/v2/spots/de1729/tides/?limit=-1&customer=wfweb&version=1.0&token=$sid, no data, no headers, retry 0, initial queue len: 0
2020.08.22 11:27:33 5: Gezeiten_Windfinder: HandleSendQueue called from HTTPMOD::AddToSendQueue, qlen = 1
2020.08.22 11:27:33 4: Gezeiten_Windfinder: HandleSendQueue sends update with timeout 2 to https://api.windfinder.com/v2/spots/de1729/tides/?limit=-1&customer=wfweb&version=1.0&token=$sid, No Data, No Header
2020.08.22 11:27:33 5: HttpUtils url=https://api.windfinder.com/v2/spots/de1729/tides/?limit=-1&customer=wfweb&version=1.0&token=$sid
2020.08.22 11:27:33 4: IP: api.windfinder.com -> 54.171.75.14
2020.08.22 11:27:33 5: HttpUtils request header:
GET /v2/spots/de1729/tides/?limit=-1&customer=wfweb&version=1.0&token=$sid HTTP/1.0

Host: api.windfinder.com

User-Agent: fhem

Accept-Encoding: gzip,deflate


2020.08.22 11:27:33 4: https://api.windfinder.com/v2/spots/de1729/tides/?limit=-1&customer=wfweb&version=1.0&token=$sid: HTTP response code 401
2020.08.22 11:27:33 5: HttpUtils https://api.windfinder.com/v2/spots/de1729/tides/?limit=-1&customer=wfweb&version=1.0&token=$sid: Got data, length: 124
2020.08.22 11:27:33 5: HttpUtils response header:
HTTP/1.1 401 UNAUTHORIZED

Server: nginx

Date: Sat, 22 Aug 2020 09:27:34 GMT

Content-Type: application/json

Content-Length: 124

Connection: close

Cache-Control: no-cache, no-store, must-revalidate

Pragma: no-cache

Expires: 0

Access-Control-Allow-Origin: *
2020.08.22 11:27:33 4: Gezeiten_Windfinder: Read callback: request type was update retry 0,

header: HTTP/1.1 401 UNAUTHORIZED

Server: nginx

Date: Sat, 22 Aug 2020 09:27:34 GMT

Content-Type: application/json

Content-Length: 124

Connection: close

Cache-Control: no-cache, no-store, must-revalidate

Pragma: no-cache

Expires: 0

Access-Control-Allow-Origin: *, body length 124
2020.08.22 11:27:33 5: Gezeiten_Windfinder: Read callback: body

{"status":401,"type":"Authorization error","code":"#40130","message":"Invalid request token","payload":{"method":"WF-AUTH"}}
2020.08.22 11:27:33 4: Gezeiten_Windfinder: Read found no charset header (bodyDecode was set to auto)
2020.08.22 11:27:33 5: Gezeiten_Windfinder: GetCookies is looking for Cookies
2020.08.22 11:27:33 5: Gezeiten_Windfinder: ExtractSid called, context reading, num 0
2020.08.22 11:27:33 4: Gezeiten_Windfinder: checking for redirects, code=401, ignore=0
2020.08.22 11:27:33 4: Gezeiten_Windfinder: no redirects to handle
2020.08.22 11:27:33 5: Gezeiten_Windfinder: Read callback sets LAST_REQUEST to update
2020.08.22 11:27:33 5: Gezeiten_Windfinder: CheckAuth is checking buffer with ReAuthRegex (?^:UNAUTHORIZED)
2020.08.22 11:27:33 4: Gezeiten_Windfinder: CheckAuth decided new authentication required
2020.08.22 11:27:33 4: Gezeiten_Windfinder: Auth called with Steps: 01
2020.08.22 11:27:33 5: Gezeiten_Windfinder: AddToQueue prepends type auth01 to URL https://de.windfinder.com/tide/dangast, no data, no headers, retry 0, initial queue len: 0
2020.08.22 11:27:33 5: Gezeiten_Windfinder: HandleSendQueue called from HTTPMOD::DoAuth, qlen = 1
2020.08.22 11:27:33 4: Gezeiten_Windfinder: HandleSendQueue sends auth01 with timeout 2 to https://de.windfinder.com/tide/dangast, No Data, No Header
2020.08.22 11:27:33 5: HttpUtils url=https://de.windfinder.com/tide/dangast
2020.08.22 11:27:33 5: Gezeiten_Windfinder: AddToQueue adds type update to URL https://api.windfinder.com/v2/spots/de1729/tides/?limit=-1&customer=wfweb&version=1.0&token=$sid, no data, no headers, retry 1, initial queue len: 0
2020.08.22 11:27:33 5: Gezeiten_Windfinder: HandleSendQueue called from HTTPMOD::AddToSendQueue, qlen = 1
2020.08.22 11:27:33 5: Gezeiten_Windfinder: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2020.08.22 11:27:33 4: Gezeiten_Windfinder: CheckAuth requeued request update after auth, retryCount 0 ...
2020.08.22 11:27:33 4: IP: de.windfinder.com -> 54.171.75.14
2020.08.22 11:27:34 5: HttpUtils request header:
GET /tide/dangast HTTP/1.0

Host: de.windfinder.com

User-Agent: fhem

Accept-Encoding: gzip,deflate


2020.08.22 11:27:34 4: https://de.windfinder.com/tide/dangast: HTTP response code 200
2020.08.22 11:27:34 5: HttpUtils https://de.windfinder.com/tide/dangast: Got data, length: 61432
2020.08.22 11:27:34 5: HttpUtils response header:
HTTP/1.1 200 OK

Server: nginx

Date: Sat, 22 Aug 2020 09:27:34 GMT

Content-Type: text/html; charset=utf-8

Connection: close

Vary: Accept-Encoding

Expires: Sat, 22 Aug 2020 09:41:30 GMT

Strict-Transport-Security: max-age=31536000

X-Frame-Options: SAMEORIGIN

X-Xss-Protection: 1; mode=block

X-Content-Type-Options: nosniff

Content-Encoding: gzip
2020.08.22 11:27:34 4: Gezeiten_Windfinder: Read callback: request type was auth01 retry 0,

header: HTTP/1.1 200 OK

Server: nginx

Date: Sat, 22 Aug 2020 09:27:34 GMT

Content-Type: text/html; charset=utf-8

Connection: close

Vary: Accept-Encoding

Expires: Sat, 22 Aug 2020 09:41:30 GMT

Strict-Transport-Security: max-age=31536000

X-Frame-Options: SAMEORIGIN

X-Xss-Protection: 1; mode=block

X-Content-Type-Options: nosniff

Content-Encoding: gzip, body length 61432
2020.08.22 11:27:34 5: Gezeiten_Windfinder: Read callback: body


<!--



__        __                      _     _      _             _
\ \      / /__    __ _ _ __ ___  | |__ (_)_ __(_)_ __   __ _| |
  \ \ /\ / / _ \  / _` | '__/ _ \ | '_ \| | '__| | '_ \ / _` | |
   \ V  V /  __/ | (_| | | |  __/ | | | | | |  | | | | | (_| |_|
    \_/\_/ \___|  \__,_|_|  \___| |_| |_|_|_|  |_|_| |_|\__, (_)
                                                        |___/   

          > > > > > www.windfinder.com/careers  < < < < <




-->
<!DOCTYPE html>
<html class="no-js" lang="de">
.................... (Inhalt gelöscht sonst zu gross ..Die Daten sind aber da ............................
</html>

2020.08.22 11:27:34 4: Gezeiten_Windfinder: Read found charset header and set decoding to utf-8 (bodyDecode was set to auto)
2020.08.22 11:27:34 4: Gezeiten_Windfinder: Read is decoding the response body as utf-8
2020.08.22 11:27:34 5: Gezeiten_Windfinder: GetCookies is looking for Cookies
2020.08.22 11:27:34 5: Gezeiten_Windfinder: ExtractSid called, context sid, num 01
2020.08.22 11:27:34 4: Gezeiten_Windfinder: ExtractSid set sid to 6c15759a6334737084e0ec731068b614
2020.08.22 11:27:34 4: Gezeiten_Windfinder: checking for redirects, code=200, ignore=0
2020.08.22 11:27:34 4: Gezeiten_Windfinder: no redirects to handle
2020.08.22 11:27:34 5: Gezeiten_Windfinder: Read callback sets LAST_REQUEST to auth01
Undefined subroutine &main::HandleSendQueue called at fhem.pl line 3349.


Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

StefanStrobel

#806
So, hier eine neue Version mit hoffentlich weniger Fehlern ;-)
Das mit dem eigenen Namespace hat durchaus einige Stolperfallen, insbesondere wenn Anwender Perl-Expressions nutzen können.
Ich hoffe ich habe jetzt alle relevanten Funktionen importiert ...

Gruss
   Stefan

EDIT 29.8.2020: angehängtes Modul gelöscht, neuere Version in späterem Post.

StefanStrobel

Hallo,

anbei nochmal eine neuere Version mit der Bitte um Feedback, ob damit noch alles bei Euch läuft.
Falls es Probleme gibt, wäre ein Auszug aus dem Log mit verbose 5 sehr hilfreich.
Wenn es keine Probleme gibt, würde ich die neue Version am nächsten Wochenende einchecken.

Gruß / Thanx
    Stefan

Gisbert

#808
Hallo Stefan,

läuft anscheinend :) :), hab zur Sicherheit auch von einem Device den log-Auszug mit verbose 5 drangehängt. Da kommt soviel, dass es mein Handy nicht gepackt hat ;), aber am PC kann man es dann problemlos rauskopieren. Vielleicht erkennst du ja noch etwas, was noch besser, schöner, neuer, ... sein sollte. Bin mir nicht 100% sicher, ob ich einmal oder zweimal reread gesetzt hatte; es müsste aber wahrscheinlich nur einmal sein, passt auch zu den Zeitstempeln.

In Code-Tags konnte man das Ganze nicht eintragen, da wurde was abgeschnitten, oder es führte zu Fehlern, bei dem man einen Admin informieren sollte.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

amenomade

Das encode/decode? scheint anders zu funktionieren.

defmod bundesligaTabelle HTTPMOD http://www.transfermarkt.de/2-bundesliga/tabelle/wettbewerb/L2 0
attr bundesligaTabelle userattr reading01Name reading01Regex reading02Name reading02Regex
attr bundesligaTabelle enableControlSet 1
attr bundesligaTabelle enableCookies 1
attr bundesligaTabelle enforceGoodReadingNames 1
attr bundesligaTabelle handleRedirects 1
attr bundesligaTabelle reading01Name platz01Verein
attr bundesligaTabelle reading01Regex (?s)class="rechts hauptlink">1<.*?alt="(.*?)" class


Mit der alten Version (07.02.2020)
   READINGS:
     2020-08-30 18:42:54   platz01Verein   Fortuna Düsseldorf

Mit der neuen:
   READINGS:
     2020-08-30 18:46:23   platz01Verein   Fortuna D�sseldorf
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus