Neue Version von HTTPMOD mit neuen Features zum Testen

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

Vorheriges Thema - Nächstes Thema

ch.eick

#990
Hallo zusammen,

ich habe bei einem Device

attr BYD_Status get04DeleteIfUnmatched 1

gesetzt, weil dort readings aufbereitet werden, aber dann nichts enthalten.
Mit der Version 98_HTTPMOD_3.5.22.pm hat das auch noch funktioniert.
Bei Version 98_HTTPMOD_4.0.15.pm  klappt das wohl nicht mehr.


BatteryInformation-7 2020-11-18 23:24:00   <<<< die readings waren bisher immer weg
BatteryInformation-8 2020-11-18 23:24:00   <<<<
BatteryInformation_Alarm_state Normal! 2020-11-18 23:24:00
BatteryInformation_Current -0.026 2020-11-18 23:24:00
BatteryInformation_Date_and_Time 2020-11-19 00:22:52 2020-11-18 23:24:00
BatteryInformation_MaxCellTemp 16.000 2020-11-18 23:24:00
BatteryInformation_MaxCellVol 3.220 2020-11-18 23:24:00


Bitte wundert Euch nicht über die Regex, das ist eine total grottige Http Seite :-(

2020.11.18 23:36:00.124 5: BYD_Status: ExtractReading BatteryInformation with regex (?^:value=([+|-]{0,1}\d+.\d+)[%]{0,1}>|value=([A-Z]+)>|value="(\d{4}-\d+-\d+ \d+:\d+:\d+)"|Alarm state:<\/h3><\/td>\n<td>.*">(\w+\W)<\/font>) and options g ...

snip...

2020.11.18 23:35:03.141 5: BYD_Status: ExtractReading for get04-41 sets BatteryInformation-41 to
2020.11.18 23:35:03.142 5: BYD_Status: ExtractReading value as hex is
2020.11.18 23:35:03.143 5: BYD_Status: ExtractReading for get04-42 sets BatteryInformation_System_state to RUN
2020.11.18 23:35:03.144 5: BYD_Status: ExtractReading value as hex is 52554e
2020.11.18 23:35:03.145 5: BYD_Status: ExtractReading for get04-43 sets BatteryInformation-43 to
2020.11.18 23:35:03.145 5: BYD_Status: ExtractReading value as hex is
2020.11.18 23:35:03.146 5: BYD_Status: ExtractReading for get04-44 sets BatteryInformation-44 to
2020.11.18 23:35:03.146 5: BYD_Status: ExtractReading value as hex is
2020.11.18 23:35:03.147 5: BYD_Status: ExtractReading for get04-45 sets BatteryInformation-45 to
2020.11.18 23:35:03.147 5: BYD_Status: ExtractReading value as hex is
2020.11.18 23:35:03.148 5: BYD_Status: ExtractReading for get04-46 sets BatteryInformation-46 to
2020.11.18 23:35:03.148 5: BYD_Status: ExtractReading value as hex is
2020.11.18 23:35:03.150 5: BYD_Status: ExtractReading for get04-47 sets BatteryInformation_Date_and_Time to 2020-11-19 00:33:54
2020.11.18 23:35:03.150 5: BYD_Status: ExtractReading value as hex is 323032302d31312d31392030303a33333a3534
2020.11.18 23:35:03.150 5: BYD_Status: ExtractReading for get04-48 sets BatteryInformation-48 to
2020.11.18 23:35:03.150 5: BYD_Status: ExtractReading value as hex is
2020.11.18 23:35:03.151 5: BYD_Status: ExtractReading for get04-49 sets BatteryInformation-49 to
2020.11.18 23:35:03.151 5: BYD_Status: ExtractReading value as hex is
2020.11.18 23:35:03.151 5: BYD_Status: ExtractReading for get04-50 sets BatteryInformation-50 to
2020.11.18 23:35:03.152 5: BYD_Status: ExtractReading value as hex is
2020.11.18 23:35:03.152 5: BYD_Status: ExtractReading for get04-51 sets BatteryInformation-51 to
2020.11.18 23:35:03.152 5: BYD_Status: ExtractReading value as hex is
2020.11.18 23:35:03.153 5: BYD_Status: ExtractReading for get04-52 sets BatteryInformation_Alarm_state to Normal!
2020.11.18 23:35:03.153 5: BYD_Status: ExtractReading value as hex is 4e6f726d616c21
2020.11.18 23:35:03.153 4: BYD_Status: Read response matched 52, unmatch 0 Reading(s)
2020.11.18 23:35:03.153 5: BYD_Status: Read response to get04 matched BatteryInformation_TotalVoltage BatteryInformation-2 BatteryInformation-3 BatteryInformation-4 BatteryInformation_PackVoltage BatteryInformation-6 BatteryInformation-7 BatteryInformation-8 BatteryInformation_Current BatteryInformation-10 BatteryInformation-11 BatteryInformation-12 BatteryInformation_SOC BatteryInformation-14 BatteryInformation-15 BatteryInformation-16 BatteryInformation_SysTemp BatteryInformation-18 BatteryInformation-19 BatteryInformation-20 BatteryInformation_MaxCellVol BatteryInformation-22 BatteryInformation-23 BatteryInformation-24 BatteryInformation_MinCellVol BatteryInformation-26 BatteryInformation-27 BatteryInformation-28 BatteryInformation_MaxCellTemp BatteryInformation-30 BatteryInformation-31 BatteryInformation-32 BatteryInformation_MinCellTemp BatteryInformation-34 BatteryInformation-35 BatteryInformation-36 BatteryInformation_Power BatteryInformation-38 BatteryInformation-39 BatteryInformation-40 BatteryInformation-41 BatteryInformation_System_state BatteryInformation-43 BatteryInformation-44 BatteryInformation-45 BatteryInformation-46 BatteryInformation_Date_and_Time BatteryInformation-48 BatteryInformation-49 BatteryInformation-50 BatteryInformation-51 BatteryInformation_Alarm_state
2020.11.18 23:35:03.244 5: BYD_Status: DoDeleteIfUnmatched called with request get04
2020.11.18 23:35:03.245 5: BYD_Status: DoDeleteIfUnmatched: List from requestReadings is BatteryInformation-10 BatteryInformation-11 BatteryInformation-12 BatteryInformation-14 BatteryInformation-15 BatteryInformation-16 BatteryInformation-18 BatteryInformation-19 BatteryInformation-2 BatteryInformation-20 BatteryInformation-22 BatteryInformation-23 BatteryInformation-24 BatteryInformation-26 BatteryInformation-27 BatteryInformation-28 BatteryInformation-3 BatteryInformation-30 BatteryInformation-31 BatteryInformation-32 BatteryInformation-34 BatteryInformation-35 BatteryInformation-36 BatteryInformation-38 BatteryInformation-39 BatteryInformation-4 BatteryInformation-40 BatteryInformation-41 BatteryInformation-43 BatteryInformation-44 BatteryInformation-45 BatteryInformation-46 BatteryInformation-48 BatteryInformation-49 BatteryInformation-50 BatteryInformation-51 BatteryInformation-6 BatteryInformation-7 BatteryInformation-8 BatteryInformation_Alarm_state BatteryInformation_Current BatteryInformation_Date_and_Time BatteryInformation_MaxCellTemp BatteryInformation_MaxCellVol BatteryInformation_MinCellTemp BatteryInformation_MinCellVol BatteryInformation_PackVoltage BatteryInformation_Power BatteryInformation_SOC BatteryInformation_SysTemp BatteryInformation_System_state BatteryInformation_TotalVoltage
2020.11.18 23:35:03.245 5: BYD_Status: DoDeleteIfUnmatched: check reading BatteryInformation-10 (matched)
2020.11.18 23:35:03.245 5: BYD_Status: DoDeleteIfUnmatched: check reading BatteryInformation-11 (matched)
2020.11.18 23:35:03.245 5: BYD_Status: DoDeleteIfUnmatched: check reading BatteryInformation-12 (matched)
2020.11.18 23:35:03.245 5: BYD_Status: DoDeleteIfUnmatched: check reading BatteryInformation-14 (matched)
2020.11.18 23:35:03.245 5: BYD_Status: DoDeleteIfUnmatched: check reading BatteryInformation-15 (matched)
2020.11.18 23:35:03.246 5: BYD_Status: DoDeleteIfUnmatched: check reading BatteryInformation-16 (matched)
2020.11.18 23:35:03.246 5: BYD_Status: DoDeleteIfUnmatched: check reading BatteryInformation-18 (matched)


Gruß
    Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

yersinia

#991
Mit der Version
98_HTTPMOD.pm 23017 2020-10-24 12:02:29Z StefanStrobel
fehlt mir das Internal displayurl. Gibt es dafür einen Grund?
Ich nutze dies um den generierten Link beim Heizöl-Preis-Check als Verweis zu nutzen.



EDIT: Das Internal TRIGGERTIME_FMT für den Zeitpunkt der nächsten Ausführung fehlt mir auch.
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

StefanStrobel

Hallo yersinia,

das hatte ich vor ein paar Wochen ausführlicher beschrieben (siehe #957).
Zitat
Für den Fall, dass sie doch noch jemand sucht, habe ich den Übergabe-Hash für HttpUtils als $hash->{HttpUtils} referenziert.
Das bisherige $hash->{addr} ist daher jetzt immer noch als $hash->{HttpUtils}{addr} erreichbar
TRIGGERTIME gehört da jedoch nicht dazu. Das ist jetzt versteckt als .TRIGGERTIME. Das redundante TRIGGERTIME_FMT ist weggefallen.
Du kannst es aber einfach mit FmtDateTime() aus $hash->{'.TRIGGERTIME'} berechnen.

Gruss
    Stefan

StefanStrobel

Hallo Christian,

danke für den Hinweis, das schaue ich mir genauer an.

Gruss
   Stefan

yersinia

Zitat von: StefanStrobel am 19 November 2020, 17:34:14
Hallo yersinia,

das hatte ich vor ein paar Wochen ausführlicher beschrieben (siehe #957).TRIGGERTIME gehört da jedoch nicht dazu. Das ist jetzt versteckt als .TRIGGERTIME. Das redundante TRIGGERTIME_FMT ist weggefallen.
Du kannst es aber einfach mit FmtDateTime() aus $hash->{'.TRIGGERTIME'} berechnen.
Sorry, ich habe die Antwort erst die Tage gelesen - das es wegfällt ist mir entgangen (zugegebenermaßen verfolge ich den Thread auch nicht sehr aufmerksam). Dank der Unterstützung von betateilchen konnte ich auch FmtDateTime() nutzen. Thx.
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

siggel

#995
Laut Update-Check habe ich den aktuellen Stand, daher melde ich das mal als wohl noch nicht adressierten Bug:

Kann es sein, dass die URL nicht mehr so lang sein kann wie vorher?

Aktuell geht meine sonst über Monate funktionierende Fahrzeitabfrage nicht mehr. Es erfolgt kein Update der Readings, insbesondere auch kein status REQUEST_DENIED o.ä.:

define tryme HTTPMOD https://maps.googleapis.com/maps/api/distancematrix/json?origins=Ortxxxx,Strxxxxxxxxx+1&destinations=Ortyyyy,Stryyyyyy+yyyyyyyyyyyyyy+11&mode=driving&language=de-DE&departure_time=now&key=APIKEYxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0

Kürze ich das wie folgt ein, funktioniert es tadellos, ist aber natürlich vom Ergebnis her unbrauchbar bei einem Zielort in Hamburg  ;)

https://maps.googleapis.com/maps/api/distancematrix/json?origins=Ortxxxx&destinations=Ortyyyy&mode=driving&language=de-DE&departure_time=now&key=APIKEYxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Sieht für mich so aus, dass da irgendwo eine String-Verarbeitung im Unterschied zu vorher nicht mehr genug Zeichen aufnimmt, daher habe ich im Beispiel mal anonymisierte Orte + API-Key in realer Länge dargestellt.
RPi 3B+, ConBee II, OSRAM/Ledvance Plug/Light/Switch mini, Aqara Contact/Multisensor/Motion Sensor/Magic Cube, IKEA Tradfri Dimmer/Switch, Shelly 1/1PM/2.5/i3/uni/Plug S, Gosund SP111 (Tasmota), D1mini (Tasmota/WLED), Echo Dot, Fire Tablet (FTUI), Indego, Homematic IP CCU3/eTRV2/eTRV-B/STHO-A

ch.eick

Zitat von: StefanStrobel am 19 November 2020, 17:35:10
Hallo Christian,

danke für den Hinweis, das schaue ich mir genauer an.
Moin, gibt es hier schon was neues? Ich habe meinen Update bisher gestoppt.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

StefanStrobel

Hallo Christian,

bräuchte noch etwas mehr Daten um das Problem nachvollziehen zu können.
Ideal wäre ein Dump der HTML-Seite, in der die Readings gesetzt werden und einen bei der die Readings gelöscht werden sollten, sowie Deine Konfiguration. Dann könnte ich das bei mir mit einer file://-url nachstellen.

Gruss / Thanx
   Stefan

StefanStrobel

Hallo siggel,

bitte setze das Device doch mal auf verbose 5 und poste einen Auszug aus dem Log sowie Deine komplette Konfiguration des Devices. Dann sollte man einfach erkennen können, wo das Problem liegt. In Deinem ersten Beispiel ist das Device ja mit Intervall 0 definiert. Wie startest Du in diesem Fall die Abfrage?

Gruss
   Stefan

ch.eick

Zitat von: StefanStrobel am 04 Dezember 2020, 17:33:57
bräuchte noch etwas mehr Daten um das Problem nachvollziehen zu können.
Ideal wäre ein Dump der HTML-Seite, in der die Readings gesetzt werden und einen bei der die Readings gelöscht werden sollten, sowie Deine Konfiguration. Dann könnte ich das bei mir mit einer file://-url nachstellen.
Ich habe mal etwas zusammengestellt und angehängt.
verbose 5
showbody 1
list device
raw device

Momentan war ich noch am userreading und stateFormat, die Probleme habe ich bereits beseitigt, obwohl sie noch im log auftauchen.

VG und Danke
    Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

amenomade

Zitat von: siggel am 03 Dezember 2020, 22:51:58
Laut Update-Check habe ich den aktuellen Stand, daher melde ich das mal als wohl noch nicht adressierten Bug:

Kann es sein, dass die URL nicht mehr so lang sein kann wie vorher?

Nein, ich habe noch eine längere URL (391 Zeichen) als Du (251) und die funktioniert.
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

Hallo Christian,

ich habe Deine Konfiguration mit dem von Dir geposteten Buffer und der alten Version (3.5.22 - 7.2.2020) getestet und dort kommt ebenfalls


2020.12.05 15:14:12 5: BYD_Status: DoDeleteIfUnmatched: check reading BatteryInformation-15 (matched)
2020.12.05 15:14:12 5: BYD_Status: DoDeleteIfUnmatched: check reading BatteryInformation-16 (matched)
2020.12.05 15:14:12 5: BYD_Status: DoDeleteIfUnmatched: check reading BatteryInformation-18 (matched)
2020.12.05 15:14:12 5: BYD_Status: DoDeleteIfUnmatched: check reading BatteryInformation-19 (matched)


Kannst Du ein Log inkl. Buffer posten in dem man sieht, was bei Dir mit der alten Version passiert ?
Irgendwo muss da ja ein Unterschied sein. Eventuell an einer ganz anderen Stelle?

Gruss
   Stefan

ch.eick

#1002
Zitat von: StefanStrobel am 05 Dezember 2020, 15:28:13
Hallo Christian,

ich habe Deine Konfiguration mit dem von Dir geposteten Buffer und der alten Version (3.5.22 - 7.2.2020) getestet und dort kommt ebenfalls

Kannst Du ein Log inkl. Buffer posten in dem man sieht, was bei Dir mit der alten Version passiert ?
Irgendwo muss da ja ein Unterschied sein. Eventuell an einer ganz anderen Stelle?
Ich muss mal schauen, ob ich das noch zurück drehen kann, jedoch weiß ich, dass mit dem Attribut "get04DeleteIfUnmatched 1" die ganzen leeren readings nach dem Parsen gelöscht wurden.

EDIT: Das neue Log mit list Device hängt an.
Im Log sehe ich auch keinen Unterschied, aber hänge dann noch zwei Screenshot des Devices mit an, wo der Unterschied zu sehen ist.
Zwischen den Screenshots habe ich das Modul ausgetauscht und einen shutdown restart gemacht, sowie eine neue Abfrage mit get.
Dann zeigen sich die ganzen leeren readings, die zuvor immer gelöscht wurden.

Gruß
    Christian

RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

yersinia

Hallo Stefan,

Aus dem httpmod.tenplate Thread ist mir was bezüglich replacementNNValue aufgefallen:
Zitat von: yersinia am 06 Dezember 2020, 15:43:08Was ich noch nicht ganz verstanden habe, ist warum das dropdown im userAttr nicht zieht:
replacement04Value:40m,60m,80m
Im template steht es richtig drin, aber HTTPMOD generiert trotzdem noch ein replacement04Value was dann in etwa so aussieht im userAttr:
replacement04Value replacement04Value:40m,60m,80m
Einer eine Idee wie das kommt?
Dieses Verhalten hat man auch, wenn man bei einem HTTPMOD-Device manuell im userAttr das replacementNNValue in ein DropDown-Attribut umwandelt - danach wird das replacementNNValue wie oben beschrieben trotzdem drangehängt. Man kann es manuell löschen und dann funktioniert es mit der DropDown-Auswahl.

Ich finds' etwas kurios, aber wahrscheinlich war die Verwendung des replacementNNValue Attributes auch nie als DropDown gedacht wie ich es im httpmod.template nutzen würde.
Hast du eine Idee, ob man das abstellen könnte? Wäre es sinnvoll?
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

StefanStrobel

Hallo yersinia,

danke für den Hinweis.
Die Ursache liegt in einer Funktion, die für jedes verwendete Regex-Attribut automatisch einen userAttr-Eintrag erzeugt, damit man in Fhemweb auf das Attribut klicken kann um es zu ändern.
ich habe gerade bemerkt, dass das gar nicht mehr nötig ist und werde es ausbauen.

Gruss
   Stefan