HTTPMOD / EZR Möhlenhoff Heizungssteuerung liest keine Werte mehr aus

Begonnen von moloko, 01 Mai 2022, 20:50:46

Vorheriges Thema - Nächstes Thema

moloko

Hallo zusammen,

ich habe die Anbindung meiner Möhlenhoff / Homematik Fußbodenheizung über HTTPMOD irgendwo abgekupfert und sie funktionierte seit Jahren einwandfrei. 

Seit ein paar Wochen (letztes fhem update?) liest (und setzt) fhem die Werte nicht mehr.

Ich habe:
- die Devices gelöscht und erneut angelegt, hat nicht geholfen - jetzt steht überall "0" drin
- die static.xml in einem XPath Debugger gegen die XPath Ausrücke getestet (erwartungsgemäß passt alles)
- keine Passwörter gesetzt in den EZRs, statischer xml Aufruf funktioniert im Browser tadellos
- leider keine Ahnung, wie man HTTPMOD Ausdrücke in fhem debuggen kann

Ich hoffe, ich stelle mich nicht blöd an, wäre für Tipps zur weiteren Vorgehensweise sehr dankbar...
Vielen Dank!

Hier die Definition:
define eg.ez.ezr HTTPMOD http://192.168.x.xx/data/Static.xml 600
attr eg.ez.ezr userattr enableXPath-Strict stateFormat
attr eg.ez.ezr enableControlSet 1
attr eg.ez.ezr enableXPath-Strict 1
attr eg.ez.ezr reading01Name measured-temp
attr eg.ez.ezr reading01Regex xpath-strict://devices/Device/HEATAREA [@nr="1"]/T_ACTUAL/text()
attr eg.ez.ezr reading02Name desired-temp
attr eg.ez.ezr reading02Regex xpath-strict://devices/Device/HEATAREA [@nr="1"]/T_TARGET/text()
attr eg.ez.ezr reading03Name actor1-percent
attr eg.ez.ezr reading03Regex xpath-strict://devices/Device/HEATCTRL [@nr="1"]/ACTOR_PERCENT/text()
attr eg.ez.ezr reading04Name battery
attr eg.ez.ezr reading04Regex xpath-strict://devices/Device/IODEVICE [@nr="1"]/BATTERY/text()
attr eg.ez.ezr reading05Name signal-strength
attr eg.ez.ezr reading05Regex xpath-strict://devices/Device/IODEVICE [@nr="1"]/SIGNALSTRENGTH/text()
attr eg.ez.ezr reading06Name actor2-percent
attr eg.ez.ezr reading06Regex xpath-strict://devices/Device/HEATCTRL [@nr="2"]/ACTOR_PERCENT/text()
attr eg.ez.ezr reading07Name mode
attr eg.ez.ezr reading07Regex xpath-strict://devices/Device/HEATAREA [@nr="1"]/HEATAREA_MODE/text()
attr eg.ez.ezr room Fussbodenheizung
attr eg.ez.ezr set01Data <?xml version="1.0" encoding="UTF-8"?><Devices><Device><ID>ezr-ug</ID><HEATAREA nr="1"><T_TARGET>$val</T_TARGET></HEATAREA></Device></Devices>
attr eg.ez.ezr set01Max 30
attr eg.ez.ezr set01Min 5
attr eg.ez.ezr set01Name set-temp
attr eg.ez.ezr set01URL http://192.168.x.xx/data/changes.xml
attr eg.ez.ezr set02Data <?xml version="1.0" encoding="UTF-8"?><Devices><Device><ID>ezr-ug</ID><HEATAREA nr="1"><HEATAREA_MODE>$val</HEATAREA_MODE></HEATAREA></Device></Devices>
attr eg.ez.ezr set02Hint 0,1,2
attr eg.ez.ezr set02Name mode
attr eg.ez.ezr set02TextArg 1
attr eg.ez.ezr set02URL http://192.168.x.xx/data/changes.xml
attr eg.ez.ezr set03Data <?xml version="1.0" encoding="UTF-8"?><Devices><Device><ID>ezr-ug</ID><HEATAREA nr="1"><T_HEAT_DAY>$val</T_HEAT_DAY></HEATAREA></Device></Devices>
attr eg.ez.ezr set03Max 30
attr eg.ez.ezr set03Min 5
attr eg.ez.ezr set03Name Tag
attr eg.ez.ezr set03TextArg 1
attr eg.ez.ezr set03URL http://192.168.x.xx/data/changes.xml
attr eg.ez.ezr set04Data <?xml version="1.0" encoding="UTF-8"?><Devices><Device><ID>ezr-ug</ID><HEATAREA nr="1"><T_HEAT_NIGHT>$val</T_HEAT_NIGHT></HEATAREA></Device></Devices>
attr eg.ez.ezr set04Max 30
attr eg.ez.ezr set04Min 5
attr eg.ez.ezr set04Name Nacht
attr eg.ez.ezr set04URL http://192.168.x.xx/data/changes.xml
attr eg.ez.ezr stateFormat {sprintf("Ist: %.1f , Soll: %.1f, Actor1: %.1f, Actor2: %.1f, Batterie: %.1f, Signal: %.1f",  ReadingsNum($name,"measured-temp",0), ReadingsNum($name,"desired-temp",0), ReadingsNum($name,"actor1-percent",0), ReadingsNum($name,"actor2-percent",0), ReadingsNum($name,"battery",0), ReadingsNum($name,"signal-strength",0))}
attr eg.ez.ezr widgetOverride userattr:textField-long set04Data:textField-long

rudolfkoenig

Ich wuerde "attr eg.ez.ez verbose 5" setzen, und das dazugehoerige FHEM-Log untersuchen oder hier anhaengen.

moloko

Vielen Dank für den Hinweis und die Antwort (sorry für die späte Erwiderung, bin zeitlich recht angespannt unterwegs, leider).

Aus dem Hauptlog entnehme ich XPath Fehler für die EZRs, zB::

2022.05.01 00:07:30 3: eg.ez.ezr: PrecompileRegexAttr cannot store precompiled regex because outdated xpath syntax is used in attr reading01Regex xpath-strict://devices/Device/HEATAREA [@nr="1"]/T_ACTUAL/text(). Please upgrade attributes

Online XPath Test-Sites ergeben eine korrekte Auswertung des XPaths, muss ich da was anpassen?

Rudy

Versuch es mal mit folgender Definition:

define eg.ez.ezr HTTPMOD http://192.168.x.xx/data/Static.xml 600
attr eg.ez.ezr reading01Name measured-temp
attr eg.ez.ezr reading01XPath-Strict //HEATAREA[@nr="1"]/T_ACTUAL/text()
attr eg.ez.ezr reading02Name desired-temp
attr eg.ez.ezr reading02XPath-Strict //HEATAREA[@nr="1"]/T_TARGET/text()
attr eg.ez.ezr reading03Name actor1-percent
attr eg.ez.ezr reading03XPath-Strict //HEATCTRL[@nr="1"]/ACTOR_PERCENT/text()
attr eg.ez.ezr reading04Name battery
attr eg.ez.ezr reading04XPath-Strict //IODEVICE[@nr="1"]/BATTERY/text()
attr eg.ez.ezr reading05Name signal-strength
attr eg.ez.ezr reading05XPath-Strict //IODEVICE[@nr="1"]/SIGNALSTRENGTH/text()
attr eg.ez.ezr reading06Name actor2-percent
attr eg.ez.ezr reading06XPath-Strict //HEATCTRL[@nr="2"]/ACTOR_PERCENT/text()
attr eg.ez.ezr reading07Name mode
attr eg.ez.ezr reading07XPath-Strict //HEATAREA[@nr="1"]/HEATAREA_MODE/text()
attr eg.ez.ezr room Fussbodenheizung
attr eg.ez.ezr set01Data <?xml version="1.0" encoding="UTF-8"?><Devices><Device><ID>ezr-ug</ID><HEATAREA nr="1"><T_TARGET>$val</T_TARGET></HEATAREA></Device></Devices>
attr eg.ez.ezr set01Max 30
attr eg.ez.ezr set01Min 5
attr eg.ez.ezr set01Name set-temp
attr eg.ez.ezr set01URL http://192.168.x.xx/data/changes.xml
attr eg.ez.ezr set02Data <?xml version="1.0" encoding="UTF-8"?><Devices><Device><ID>ezr-ug</ID><HEATAREA nr="1"><HEATAREA_MODE>$val</HEATAREA_MODE></HEATAREA></Device></Devices>
attr eg.ez.ezr set02Hint 0,1,2
attr eg.ez.ezr set02Name mode
attr eg.ez.ezr set02TextArg 1
attr eg.ez.ezr set02URL http://192.168.x.xx/data/changes.xml
attr eg.ez.ezr set03Data <?xml version="1.0" encoding="UTF-8"?><Devices><Device><ID>ezr-ug</ID><HEATAREA nr="1"><T_HEAT_DAY>$val</T_HEAT_DAY></HEATAREA></Device></Devices>
attr eg.ez.ezr set03Max 30
attr eg.ez.ezr set03Min 5
attr eg.ez.ezr set03Name Tag
attr eg.ez.ezr set03TextArg 1
attr eg.ez.ezr set03URL http://192.168.x.xx/data/changes.xml
attr eg.ez.ezr set04Data <?xml version="1.0" encoding="UTF-8"?><Devices><Device><ID>ezr-ug</ID><HEATAREA nr="1"><T_HEAT_NIGHT>$val</T_HEAT_NIGHT></HEATAREA></Device></Devices>
attr eg.ez.ezr set04Max 30
attr eg.ez.ezr set04Min 5
attr eg.ez.ezr set04Name Nacht
attr eg.ez.ezr set04URL http://192.168.x.xx/data/changes.xml

moloko

Hallo Rudy,

vielen Dank für die Hilfe, die Definition wurde verarbeitet.
Grund ist, dass "reading01Regex xpath-strict:" im Vergleich zu "reading01XPath-Strict" veraltet ist?


vorher:    attr eg.ez.ezr reading01XPath-Strict //HEATAREA[@nr="1"]/T_ACTUAL/text()
nachher:   attr eg.ez.ezr reading01Regex xpath-strict://Devices/Device/HEATAREA [@nr="1"]/T_ACTUAL/text()


Hier als Ergänzung das Log zur neuen Defintion:

2022.06.04 14:13:58 5: eg.ez.ezr: ReadCallback called from __ANON__
2022.06.04 14:13:58 4: eg.ez.ezr: Read callback: request type was update retry 0,
header: HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Date: Sat, 04 Jun 2022 14:22:42 GMT
Content-Length: 8271, body length 8271
2022.06.04 14:13:58 5: eg.ez.ezr: Read callback: body
<?xml version="1.0" encoding="UTF-8"?>
<Devices>
<Device>.....
</Device>
</Devices>

2022.06.04 14:13:58 4: eg.ez.ezr: BodyDecode is not decoding the response body (charset not found, bodyDecode defaults to none)
2022.06.04 14:13:58 5: eg.ez.ezr: InitParsers: XPath-Strict parsing done.
2022.06.04 14:13:58 5: eg.ez.ezr: GetCookies is looking for Cookies
2022.06.04 14:13:58 5: eg.ez.ezr: ExtractSid called, context reading, num unknown
2022.06.04 14:13:58 4: eg.ez.ezr: checking for redirects, code=200, ignore=0
2022.06.04 14:13:58 4: eg.ez.ezr: no redirects to handle
2022.06.04 14:13:58 5: eg.ez.ezr: Read callback sets LAST_REQUEST to update
2022.06.04 14:13:58 5: eg.ez.ezr: CheckAuth decided no authentication required
2022.06.04 14:13:58 5: eg.ez.ezr: UpdateReadingList created list of reading.* nums to parse during getUpdate as 01 02 03 04 05 06 07
2022.06.04 14:13:58 5: eg.ez.ezr: Read starts parsing response to update with defined readings: 01,02,03,04,05,06,07
2022.06.04 14:13:58 5: eg.ez.ezr: ExtractReading measured-temp with XPath-Strict //HEATAREA[@nr="1"]/T_ACTUAL/text()
2022.06.04 14:13:58 5: eg.ez.ezr: FormatReading is encoding the reading value as utf-8 because no encoding was specified and the response body charset was unknown or decoded
2022.06.04 14:13:58 5: eg.ez.ezr: ExtractReading for reading01-1 sets measured-temp to 22.2
2022.06.04 14:13:58 5: eg.ez.ezr: ExtractReading value as hex is 32322e32
2022.06.04 14:13:58 5: eg.ez.ezr: ExtractReading desired-temp with XPath-Strict //HEATAREA[@nr="1"]/T_TARGET/text()
2022.06.04 14:13:58 5: eg.ez.ezr: FormatReading is encoding the reading value as utf-8 because no encoding was specified and the response body charset was unknown or decoded
2022.06.04 14:13:58 5: eg.ez.ezr: ExtractReading for reading02-1 sets desired-temp to 18.0
2022.06.04 14:13:58 5: eg.ez.ezr: ExtractReading value as hex is 31382e30
2022.06.04 14:13:58 5: eg.ez.ezr: ExtractReading actor1-percent with XPath-Strict //HEATCTRL[@nr="1"]/ACTOR_PERCENT/text()
2022.06.04 14:13:59 5: eg.ez.ezr: FormatReading is encoding the reading value as utf-8 because no encoding was specified and the response body charset was unknown or decoded
2022.06.04 14:13:59 5: eg.ez.ezr: ExtractReading for reading03-1 sets actor1-percent to 0
2022.06.04 14:13:59 5: eg.ez.ezr: ExtractReading value as hex is 30
2022.06.04 14:13:59 5: eg.ez.ezr: ExtractReading battery with XPath-Strict //IODEVICE[@nr="1"]/BATTERY/text()
2022.06.04 14:13:59 5: eg.ez.ezr: FormatReading is encoding the reading value as utf-8 because no encoding was specified and the response body charset was unknown or decoded
2022.06.04 14:13:59 5: eg.ez.ezr: ExtractReading for reading04-1 sets battery to 2
2022.06.04 14:13:59 5: eg.ez.ezr: ExtractReading value as hex is 32
2022.06.04 14:13:59 5: eg.ez.ezr: ExtractReading signal-strength with XPath-Strict //IODEVICE[@nr="1"]/SIGNALSTRENGTH/text()
2022.06.04 14:13:59 5: eg.ez.ezr: FormatReading is encoding the reading value as utf-8 because no encoding was specified and the response body charset was unknown or decoded
2022.06.04 14:13:59 5: eg.ez.ezr: ExtractReading for reading05-1 sets signal-strength to 1
2022.06.04 14:13:59 5: eg.ez.ezr: ExtractReading value as hex is 31
2022.06.04 14:13:59 5: eg.ez.ezr: ExtractReading actor2-percent with XPath-Strict //HEATCTRL[@nr="2"]/ACTOR_PERCENT/text()
2022.06.04 14:13:59 5: eg.ez.ezr: FormatReading is encoding the reading value as utf-8 because no encoding was specified and the response body charset was unknown or decoded
2022.06.04 14:13:59 5: eg.ez.ezr: ExtractReading for reading06-1 sets actor2-percent to 0
2022.06.04 14:13:59 5: eg.ez.ezr: ExtractReading value as hex is 30
2022.06.04 14:13:59 5: eg.ez.ezr: ExtractReading mode with XPath-Strict //HEATAREA[@nr="1"]/HEATAREA_MODE/text()
2022.06.04 14:13:59 5: eg.ez.ezr: FormatReading is encoding the reading value as utf-8 because no encoding was specified and the response body charset was unknown or decoded
2022.06.04 14:13:59 5: eg.ez.ezr: ExtractReading for reading07-1 sets mode to 2
2022.06.04 14:13:59 5: eg.ez.ezr: ExtractReading value as hex is 32
2022.06.04 14:13:59 4: eg.ez.ezr: Read response matched 7, unmatch 0 Reading(s)
2022.06.04 14:13:59 5: eg.ez.ezr: Read response to update matched measured-temp desired-temp actor1-percent battery signal-strength actor2-percent mode
2022.06.04 14:13:59 5: eg.ez.ezr: UpdateHintList called
2022.06.04 14:13:59 5: eg.ez.ezr: UpdateHintList: setlist = interval reread:noArg stop:noArg start:noArg clearCookies:noArg upgradeAttributes:noArg storeKeyValue mode:0,1,2 set-temp Nacht Tag
2022.06.04 14:13:59 5: eg.ez.ezr: UpdateHintList: getlist =
2022.06.04 14:14:00 2: AttrTemplates: got 246 entries
2022.06.04 14:14:00 5: eg.ez.ezr: HandleSendQueue called from ReadCallback, qlen = 0
2022.06.04 14:14:00 5: eg.ez.ezr: HandleSendQueue found no usable entry in queue

Rudy

Zitat von: moloko am 04 Juni 2022, 14:29:04
Hallo Rudy,

vielen Dank für die Hilfe, die Definition wurde verarbeitet.
Grund ist, dass "reading01Regex xpath-strict:" im Vergleich zu "reading01XPath-Strict" veraltet ist?
Schön dass es geklappt hat. Ja, da wurde von längerer Zeit was geändert und jetzt funktioniert nur noch die neue Schreibweise.