ETA Heizung auslesen

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

iceman68
Beiträge: 16
Registriert: 22.02.2017, 09:48
Hat sich bedankt: 1 Mal

Re: ETA Heizung auslesen

Beitrag von iceman68 » 14.11.2021, 13:42

Welche Version hattest Du vor dem Update auf 3.54.0?
Musst Du eventuell den Zugriff "Freischaltung der REST API" wieder aktivieren?

Benutzeravatar
Wheeler
Beiträge: 75
Registriert: 27.01.2011, 22:50
Wohnort: Feldkirchen-Westerham
Hat sich bedankt: 5 Mal
Danksagung erhalten: 1 Mal

Re: ETA Heizung auslesen

Beitrag von Wheeler » 14.11.2021, 13:50

Die API Abfrage lief unter der vorherigen Version 3.53.1 mit cRemE-fReSh's Script noch problemlos. Aktiviert ist diese auch, denn die Abfrage an sich sowohl im Script als auch direkt über den Browser klappt ja auch. Irgendwas scheint an der Responds anders zu sein, da wohl das Parsing nicht richtig funktioniert.
RaspberryMatic Version 3.59.6.20211009, 148 Devices, CUxD 2.6, CCU-Historian V2.6.0 auf Debian Linux

Tyfys
Beiträge: 185
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 8 Mal
Danksagung erhalten: 40 Mal

Re: ETA Heizung auslesen

Beitrag von Tyfys » 14.11.2021, 14:08

Das Skript funktioniert nur, wenn an der Reihenfolge der Werte nichts geändert wird.
Es sucht zuerst Wertname1 als Start und dann Wertname2 als Ende und filtert dann dazwischen den eigentlichen Wert heraus.

Wenn sich nun die Reihenfolge geändert, hat klappt das ganze nicht mehr.
z.B. wenn erst Wertname2 kommt undf danch dann Wertname1 oder
wenn sich zwischen Wertname1 und Wertname2 nun noch Wertname3 geschoben hat.

Der zweiten Kinken liegt am Umwandeln eines String - in dem Beispiele "1,87" - in eine real -Zahl.
Da musst du vorher das Dezimalzeichen von Komma auf Punkt ändern.

Ich habe die Aufrufausgabe mal verarbeitet, wie ich es machen würde:

Code: Alles auswählen

string eta_xml = '<eta xmlns="http://www.eta.co.at/rest/v1" version="1.0"><value advTextOffset="0" unit="bar" uri="//user/var/40/10021/0/0/12180" strValue="1,87" scaleFactor="100" decPlaces="2">187</value></eta>';
WriteLine( eta_xml);
string word = "strValue";
integer word_laenge = word.Length();
integer word_position = eta_xml.Find(word);
string daten = eta_xml.Substr((word_position + word_laenge +2), 10);
WriteLine(daten);
integer word_position = daten.Find('"');
daten = daten.Substr(0, (word_position ));
WriteLine(daten);
daten=daten.Replace(",", ".");
real zahl = daten.ToFloat();
WriteLine(zahl);
Also nach strValue wie gehabt gesucht.Dann wie gehabt das davor liegende entfernt mit Substr().
Dann allerding nach dem ersten " (Anführungszeichen) Vorkommengesucht und daraus dann den
Wert ermittelt.
Dann das Komma gegen Punkt getauscht.
Danmach klappt auch ToFloat()

Analog dann für andere Werte anwenden.

Evtl. hilft es dir weiter.
Gruß
Harry

Tyfys
Beiträge: 185
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 8 Mal
Danksagung erhalten: 40 Mal

Re: ETA Heizung auslesen

Beitrag von Tyfys » 14.11.2021, 14:09

Tyfys hat geschrieben:
14.11.2021, 14:08
Das Skript funktioniert nur, wenn an der Reihenfolge der Werte nichts geändert wird.
Es sucht zuerst Wertname1 als Start und dann Wertname2 als Ende und filtert dann dazwischen den eigentlichen Wert heraus.

Wenn sich nun die Reihenfolge geändert, hat klappt das ganze nicht mehr.
z.B. wenn erst Wertname2 kommt undf danch dann Wertname1 oder
wenn sich zwischen Wertname1 und Wertname2 nun noch Wertname3 geschoben hat.

Der zweiten Kinken liegt am Umwandeln eines String - in dem Beispiele "1,87" - in eine real -Zahl.
Da musst du vorher das Dezimalzeichen von Komma auf Punkt ändern.

Ich habe die Aufrufausgabe mal verarbeitet, wie ich es machen würde:

Code: Alles auswählen

string eta_xml = '<eta xmlns="http://www.eta.co.at/rest/v1" version="1.0"><value advTextOffset="0" unit="bar" uri="//user/var/40/10021/0/0/12180" strValue="1,87" scaleFactor="100" decPlaces="2">187</value></eta>';
WriteLine( eta_xml);
string word = "strValue";
integer word_laenge = word.Length();
integer word_position = eta_xml.Find(word);
string daten = eta_xml.Substr((word_position + word_laenge +2), 10);
WriteLine(daten);
integer word_position = daten.Find('"');
daten = daten.Substr(0, (word_position ));
WriteLine(daten);
daten=daten.Replace(",", ".");
real zahl = daten.ToFloat();
WriteLine(zahl);
Also nach strValue wie gehabt gesucht.Dann wie gehabt das davor liegende entfernt mit Substr().
Dann allerding nach dem ersten " (Anführungszeichen) Vorkommen gesucht und daraus dann den
Wert ermittelt.
Dann das Komma gegen Punkt getauscht.
Danmach klappt auch ToFloat()

Analog dann für andere Werte anwenden.

Evtl. hilft es dir weiter.
Gruß
Harry

Tyfys
Beiträge: 185
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 8 Mal
Danksagung erhalten: 40 Mal

Re: ETA Heizung auslesen

Beitrag von Tyfys » 14.11.2021, 14:10

Tyfys hat geschrieben:
14.11.2021, 14:09
Tyfys hat geschrieben:
14.11.2021, 14:08
Das Skript funktioniert nur, wenn an der Reihenfolge der Werte nichts geändert wird.
Es sucht zuerst Wertname1 als Start und dann Wertname2 als Ende und filtert dann dazwischen den eigentlichen Wert heraus.

Wenn sich nun die Reihenfolge geändert, hat klappt das ganze nicht mehr.
z.B. wenn erst Wertname2 kommt undf danch dann Wertname1 oder
wenn sich zwischen Wertname1 und Wertname2 nun noch Wertname3 geschoben hat.

Der zweiten Kinken liegt am Umwandeln eines String - in dem Beispiele "1,87" - in eine real -Zahl.
Da musst du vorher das Dezimalzeichen von Komma auf Punkt ändern.

Ich habe die Aufrufausgabe mal verarbeitet, wie ich es machen würde:

Code: Alles auswählen

string eta_xml = '<eta xmlns="http://www.eta.co.at/rest/v1" version="1.0"><value advTextOffset="0" unit="bar" uri="//user/var/40/10021/0/0/12180" strValue="1,87" scaleFactor="100" decPlaces="2">187</value></eta>';
WriteLine( eta_xml);
string word = "strValue";
integer word_laenge = word.Length();
integer word_position = eta_xml.Find(word);
string daten = eta_xml.Substr((word_position + word_laenge +2), 10);
WriteLine(daten);
integer word_position = daten.Find('"');
daten = daten.Substr(0, (word_position ));
WriteLine(daten);
daten=daten.Replace(",", ".");
real zahl = daten.ToFloat();
WriteLine(zahl);
Also nach strValue wie gehabt gesucht.Dann wie gehabt das davor liegende entfernt mit Substr().
Dann allerding nach dem ersten " (Anführungszeichen) Vorkommen gesucht und daraus dann den
Wert ermittelt.
Dann das Komma gegen Punkt getauscht.
Danach klappt auch ToFloat()

Analog dann für andere Werte anwenden.

Evtl. hilft es dir weiter.
Gruß
Harry

cRemE-fReSh
Beiträge: 34
Registriert: 30.12.2012, 12:43
Danksagung erhalten: 1 Mal

Re: ETA Heizung auslesen

Beitrag von cRemE-fReSh » 14.11.2021, 16:53

Ich habs mal angeschaut.
Die Schnittstelle hat sich geändert, bzw. zumindest die Reihenfolge der Werte in der XML. Dass das Script das nicht mehr schafft, ist leider klar, da es an Hand der Namen der aufeinanderfolgenden Attribute sucht....

Bister: uri -> strVaue -> unit -> decPlaces -> scaleFactor -> advTextOffset
Neu: advTextOffset -> unit -> uri -> strVaue -> scaleFactor -> decPlaces

Vergleich:
Compare.png
Damit muss schlicht die Reihenfolge des Parsings angepasst werden.

Auf die schnelle und ohne probieren sollte das Zerschnipseln zukünftig wohl so aussehen. Letztendlich müsste eigentlich nur advTextOffset durch decPlaces ersetzt werden.

Code: Alles auswählen

	!Daten mit Suchworten aus XML-File ausfiltern:
	string word = "decPlaces";
	integer word_laenge = word.Length();
	integer word_position = etaXml.Find(word);
	string daten = etaXml.Substr((word_position + word_laenge +5), 100);
	integer word_position = daten.Find(word);
	daten = daten.Substr(0, (word_position -2));
	!ScalFactor auslesen Komma

	!Wert auslesen zwischen "scaleFactor" und "decPlaces"
	string word= "scaleFactor";
	integer word_laenge = word.Length();
	integer word_scalV_position = etaXml.Find(word)+ word_laenge+2;
	!WriteLine(word_scalV_position);
	!string scaleFactor= etaXml.Substr((word_scalV_position));
	!WriteLine("decPlaces= " # scaleFactor);

	string word= "decPlaces";
	integer word_advT_position = etaXml.Find(word);
	!WriteLine(word_advT_position);
	integer value_laenge = ( word_advT_position - word_scalV_position)-2;
	!WriteLine(value_laenge);

	!string scaleFactor= etaXml.Substr((word_scalV_position),value_laenge);
	real Factor= etaXml.Substr((word_scalV_position),value_laenge).ToFloat();
	!WriteLine("Factor= " # Factor);
Kannst du es mal versuchen?

Btw: Mit NodeRed gehts bedeutend einfacher. Da mach ich das inzwischen drin. Die Skripte von hier nutze ich schon eine Weile nicht mehr.
Hier mal das Export:

Code: Alles auswählen

[{"id":"dbe651ef.937fc","type":"tab","label":"ETA","disabled":false,"info":""},{"id":"3862f3f4.376c74","type":"inject","z":"dbe651ef.937fc","name":"1min","topic":"","payload":"","payloadType":"date","repeat":"60","crontab":"","once":false,"onceDelay":"","x":110,"y":500,"wires":[["16ee5093.036b0f","87610dd4.b0c8a","a2f85580.771858","bdf72aec.1e2fe8","ce634c69.2cd038","4711b359.aa9c44","4de6540b.dce3b4","e0d92c55.6e3ab8","b0d2f8fe.b99b4","f64ccd3.62f62b","49b096db.0ea64"]]},{"id":"16ee5093.036b0f","type":"http request","z":"dbe651ef.937fc","name":"user/var/40/10241/0/0/12197","method":"GET","ret":"txt","paytoqs":false,"url":"http://192.168.188.103:8080/user/var/40/10241/0/0/12197","tls":"","persist":false,"proxy":"","authType":"","x":380,"y":220,"wires":[["143edef2.cc8101"]]},{"id":"d4face72.9748f8","type":"debug","z":"dbe651ef.937fc","name":"Debug","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":830,"y":180,"wires":[]},{"id":"143edef2.cc8101","type":"xml","z":"dbe651ef.937fc","name":"","property":"payload","attr":"","chr":"","x":571,"y":220,"wires":[["7deb7c9.0630d04"]]},{"id":"7deb7c9.0630d04","type":"change","z":"dbe651ef.937fc","name":"Value","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.eta.value[0].$.strValue","tot":"msg"},{"t":"change","p":"payload","pt":"msg","from":",","fromt":"str","to":".","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":691,"y":220,"wires":[["d4face72.9748f8","6d02ca68.787d6c"]]},{"id":"6d02ca68.787d6c","type":"ccu-sysvar","z":"dbe651ef.937fc","name":"ETA_Aussentemperatur","ccuConfig":"69e820bd.716","topic":"ReGaHSS/${Name}","change":true,"cache":true,"x":891,"y":220,"wires":[[]]},{"id":"87610dd4.b0c8a","type":"http request","z":"dbe651ef.937fc","name":"user/var/40/10021/0/0/12013","method":"GET","ret":"txt","paytoqs":false,"url":"http://192.168.188.103:8080/user/var/40/10021/0/0/12013","tls":"","persist":false,"proxy":"","authType":"","x":380,"y":280,"wires":[["c50aeb17.daa8c8"]]},{"id":"c50aeb17.daa8c8","type":"xml","z":"dbe651ef.937fc","name":"","property":"payload","attr":"","chr":"","x":570,"y":280,"wires":[["225d1ec3.2a7772"]]},{"id":"225d1ec3.2a7772","type":"change","z":"dbe651ef.937fc","name":"Value","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.eta.value[0].$.strValue","tot":"msg"},{"t":"change","p":"payload","pt":"msg","from":",","fromt":"str","to":".","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":690,"y":280,"wires":[["25de885c.a66848"]]},{"id":"25de885c.a66848","type":"ccu-sysvar","z":"dbe651ef.937fc","name":"ETA_Aschebox_leeren","ccuConfig":"69e820bd.716","topic":"ReGaHSS/${Name}","change":true,"cache":true,"x":880,"y":280,"wires":[[]]},{"id":"a2f85580.771858","type":"http request","z":"dbe651ef.937fc","name":"user/var/40/10021/0/0/12180","method":"GET","ret":"txt","paytoqs":false,"url":"http://192.168.188.103:8080/user/var/40/10021/0/0/12180","tls":"","persist":false,"proxy":"","authType":"","x":380,"y":340,"wires":[["74afb38.b3527cc"]]},{"id":"74afb38.b3527cc","type":"xml","z":"dbe651ef.937fc","name":"","property":"payload","attr":"","chr":"","x":570,"y":340,"wires":[["a3b83016.2b41c"]]},{"id":"a3b83016.2b41c","type":"change","z":"dbe651ef.937fc","name":"Value","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.eta.value[0].$.strValue","tot":"msg"},{"t":"change","p":"payload","pt":"msg","from":",","fromt":"str","to":".","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":690,"y":340,"wires":[["59bc8e82.ffc0f8"]]},{"id":"59bc8e82.ffc0f8","type":"ccu-sysvar","z":"dbe651ef.937fc","name":"ETA_Kesseldruck","ccuConfig":"69e820bd.716","topic":"ReGaHSS/${Name}","change":true,"cache":true,"x":870,"y":340,"wires":[[]]},{"id":"bdf72aec.1e2fe8","type":"http request","z":"dbe651ef.937fc","name":"user/var/40/10021/0/0/12161","method":"GET","ret":"txt","paytoqs":false,"url":"http://192.168.188.103:8080/user/var/40/10021/0/0/12161","tls":"","persist":false,"proxy":"","authType":"","x":380,"y":400,"wires":[["23c700be.48cbe"]]},{"id":"23c700be.48cbe","type":"xml","z":"dbe651ef.937fc","name":"","property":"payload","attr":"","chr":"","x":570,"y":400,"wires":[["efdf3525.129688"]]},{"id":"efdf3525.129688","type":"change","z":"dbe651ef.937fc","name":"Value","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.eta.value[0].$.strValue","tot":"msg"},{"t":"change","p":"payload","pt":"msg","from":",","fromt":"str","to":".","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":690,"y":400,"wires":[["6c7021a3.81765"]]},{"id":"6c7021a3.81765","type":"ccu-sysvar","z":"dbe651ef.937fc","name":"ETA_Kesseltemperatur","ccuConfig":"69e820bd.716","topic":"ReGaHSS/${Name}","change":true,"cache":true,"x":890,"y":400,"wires":[[]]},{"id":"ce634c69.2cd038","type":"http request","z":"dbe651ef.937fc","name":"user/var/120/10101/0/0/12241","method":"GET","ret":"txt","paytoqs":false,"url":"http://192.168.188.103:8080/user/var/120/10101/0/0/12241","tls":"","persist":false,"proxy":"","authType":"","x":390,"y":460,"wires":[["2dd04a73.efe71e"]]},{"id":"2dd04a73.efe71e","type":"xml","z":"dbe651ef.937fc","name":"","property":"payload","attr":"","chr":"","x":590,"y":460,"wires":[["8aaf1a9a.945218"]]},{"id":"8aaf1a9a.945218","type":"change","z":"dbe651ef.937fc","name":"Value","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.eta.value[0].$.strValue","tot":"msg"},{"t":"change","p":"payload","pt":"msg","from":",","fromt":"str","to":".","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":710,"y":460,"wires":[["a605215d.baf96"]]},{"id":"a605215d.baf96","type":"ccu-sysvar","z":"dbe651ef.937fc","name":"ETA_Vorlauftemperatur","ccuConfig":"69e820bd.716","topic":"ReGaHSS/${Name}","change":true,"cache":true,"x":910,"y":460,"wires":[[]]},{"id":"4711b359.aa9c44","type":"http request","z":"dbe651ef.937fc","name":"user/var/40/10021/0/0/12011","method":"GET","ret":"txt","paytoqs":false,"url":"http://192.168.188.103:8080/user/var/40/10021/0/0/12011","tls":"","persist":false,"proxy":"","authType":"","x":380,"y":520,"wires":[["f1883545.a44c08"]]},{"id":"f1883545.a44c08","type":"xml","z":"dbe651ef.937fc","name":"","property":"payload","attr":"","chr":"","x":570,"y":520,"wires":[["1daeddd2.028c42"]]},{"id":"1daeddd2.028c42","type":"change","z":"dbe651ef.937fc","name":"Value","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.eta.value[0].$.strValue","tot":"msg"},{"t":"change","p":"payload","pt":"msg","from":",","fromt":"str","to":".","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":690,"y":520,"wires":[["d2013bbe.ba2748"]]},{"id":"d2013bbe.ba2748","type":"ccu-sysvar","z":"dbe651ef.937fc","name":"ETA_Pelletsbehaelter_Fuellstand","ccuConfig":"69e820bd.716","topic":"ReGaHSS/${Name}","change":true,"cache":true,"x":920,"y":520,"wires":[[]]},{"id":"4de6540b.dce3b4","type":"http request","z":"dbe651ef.937fc","name":"user/var/40/10201/0/0/12015","method":"GET","ret":"txt","paytoqs":false,"url":"http://192.168.188.103:8080/user/var/40/10201/0/0/12015","tls":"","persist":false,"proxy":"","authType":"","x":380,"y":580,"wires":[["1cbac52e.4f7693"]]},{"id":"1cbac52e.4f7693","type":"xml","z":"dbe651ef.937fc","name":"","property":"payload","attr":"","chr":"","x":570,"y":580,"wires":[["7fbe1b5.64d80e4"]]},{"id":"7fbe1b5.64d80e4","type":"change","z":"dbe651ef.937fc","name":"Value","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.eta.value[0].$.strValue","tot":"msg"},{"t":"change","p":"payload","pt":"msg","from":",","fromt":"str","to":".","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":690,"y":580,"wires":[["42fb8d7e.51ae3c"]]},{"id":"42fb8d7e.51ae3c","type":"ccu-sysvar","z":"dbe651ef.937fc","name":"ETA_Pelletsbehaelter_Fuellstand_Vorrat","ccuConfig":"69e820bd.716","topic":"ReGaHSS/${Name}","change":true,"cache":true,"x":940,"y":580,"wires":[[]]},{"id":"e0d92c55.6e3ab8","type":"http request","z":"dbe651ef.937fc","name":"user/var/120/10251/0/0/12242","method":"GET","ret":"txt","paytoqs":false,"url":"http://192.168.188.103:8080/user/var/120/10251/0/0/12242","tls":"","persist":false,"proxy":"","authType":"","x":390,"y":640,"wires":[["eb4eab36.b88fb8"]]},{"id":"eb4eab36.b88fb8","type":"xml","z":"dbe651ef.937fc","name":"","property":"payload","attr":"","chr":"","x":590,"y":640,"wires":[["90287bec.d779e8"]]},{"id":"90287bec.d779e8","type":"change","z":"dbe651ef.937fc","name":"Value","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.eta.value[0].$.strValue","tot":"msg"},{"t":"change","p":"payload","pt":"msg","from":",","fromt":"str","to":".","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":710,"y":640,"wires":[["4c0b0852.37605"]]},{"id":"4c0b0852.37605","type":"ccu-sysvar","z":"dbe651ef.937fc","name":"ETA_Pufferspeicher_Temp_Oben","ccuConfig":"69e820bd.716","topic":"ReGaHSS/${Name}","change":true,"cache":true,"x":940,"y":640,"wires":[[]]},{"id":"b0d2f8fe.b99b4","type":"http request","z":"dbe651ef.937fc","name":"user/var/120/10251/0/0/12244","method":"GET","ret":"txt","paytoqs":false,"url":"http://192.168.188.103:8080/user/var/120/10251/0/0/12244","tls":"","persist":false,"proxy":"","authType":"","x":390,"y":700,"wires":[["3db5462f.304e3a"]]},{"id":"3db5462f.304e3a","type":"xml","z":"dbe651ef.937fc","name":"","property":"payload","attr":"","chr":"","x":590,"y":700,"wires":[["c6a90d5.5d6b1f"]]},{"id":"c6a90d5.5d6b1f","type":"change","z":"dbe651ef.937fc","name":"Value","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.eta.value[0].$.strValue","tot":"msg"},{"t":"change","p":"payload","pt":"msg","from":",","fromt":"str","to":".","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":710,"y":700,"wires":[["a7642af5.98bf68"]]},{"id":"a7642af5.98bf68","type":"ccu-sysvar","z":"dbe651ef.937fc","name":"ETA_Pufferspeicher_Temp_Unten","ccuConfig":"69e820bd.716","topic":"ReGaHSS/${Name}","change":true,"cache":true,"x":940,"y":700,"wires":[[]]},{"id":"f64ccd3.62f62b","type":"http request","z":"dbe651ef.937fc","name":"user/var/40/10021/0/0/12000","method":"GET","ret":"txt","paytoqs":false,"url":"http://192.168.188.103:8080/user/var/40/10021/0/0/12000","tls":"","persist":false,"proxy":"","authType":"","x":380,"y":760,"wires":[["eac2cdca.c523"]]},{"id":"eac2cdca.c523","type":"xml","z":"dbe651ef.937fc","name":"","property":"payload","attr":"","chr":"","x":590,"y":760,"wires":[["621c2ee4.6b6cc"]]},{"id":"621c2ee4.6b6cc","type":"change","z":"dbe651ef.937fc","name":"Value","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.eta.value[0].$.strValue","tot":"msg"},{"t":"change","p":"payload","pt":"msg","from":",","fromt":"str","to":".","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":710,"y":760,"wires":[["5a9a0fb5.9f3c9"]]},{"id":"5a9a0fb5.9f3c9","type":"ccu-sysvar","z":"dbe651ef.937fc","name":"ETA_Kesselzustand","ccuConfig":"69e820bd.716","topic":"ReGaHSS/${Name}","change":true,"cache":true,"x":900,"y":760,"wires":[[]]},{"id":"49b096db.0ea64","type":"http request","z":"dbe651ef.937fc","name":"user/var/120/10101/0/0/12092","method":"GET","ret":"txt","paytoqs":false,"url":"http://192.168.188.103:8080/user/var/120/10101/0/0/12092","tls":"","persist":false,"proxy":"","authType":"","x":390,"y":820,"wires":[["c4bda41d.ce3898"]]},{"id":"c4bda41d.ce3898","type":"xml","z":"dbe651ef.937fc","name":"","property":"payload","attr":"","chr":"","x":590,"y":820,"wires":[["e6b7356d.f21c7"]]},{"id":"e6b7356d.f21c7","type":"change","z":"dbe651ef.937fc","name":"Value","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.eta.value[0].$.strValue","tot":"msg"},{"t":"change","p":"payload","pt":"msg","from":",","fromt":"str","to":".","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":710,"y":820,"wires":[["f4955c90.d297a8"]]},{"id":"f4955c90.d297a8","type":"ccu-sysvar","z":"dbe651ef.937fc","name":"ETA_Heizung","ccuConfig":"69e820bd.716","topic":"ReGaHSS/${Name}","change":true,"cache":true,"x":880,"y":820,"wires":[[]]},{"id":"69e820bd.716","type":"ccu-connection","z":"","name":"Home","host":"192.168.188.24","regaEnabled":true,"bcrfEnabled":true,"iprfEnabled":true,"virtEnabled":true,"bcwiEnabled":false,"cuxdEnabled":false,"regaPoll":true,"regaInterval":"30","rpcPingTimeout":"60","rpcInitAddress":"192.168.188.45","rpcServerHost":"127.0.0.1","rpcBinPort":"3047","rpcXmlPort":"3048","queueTimeout":"5000","queuePause":"250","contextStore":""}]
Viele Grüße

Benutzeravatar
Wheeler
Beiträge: 75
Registriert: 27.01.2011, 22:50
Wohnort: Feldkirchen-Westerham
Hat sich bedankt: 5 Mal
Danksagung erhalten: 1 Mal

Re: ETA Heizung auslesen

Beitrag von Wheeler » 14.11.2021, 22:00

Ich hatte leider keinen Output mehr von der "alten" API Responds :cry:
Dein Script hat auf Anhieb problemlos funktioniert!

Mit NodeRed hab ich mich bisher noch nicht beschäftigt. Das hört sich nach dem nächsten Projekt für lange Winterabende an :D
Vielen Dank für Eure Hilfe!

Hier mal der Vollständigkeit halber das gesamte Script mit den Variablen, welche ich abfrage.
Achtung das Script läuft nur unter der ETA Version >= 3.54.0!

Code: Alles auswählen

!Achtung das Script läuft nur unter der ETA Version >= 3.54.0!
string parameterList = "ETA_Aussentemperatur,/120/10601/0/0/12197
\tETA_Aschebox_leeren,/40/10021/0/0/12013
\tETA_Kesseldruck,/40/10021/0/0/12180
\tETA_Kesseltemperatur,/40/10021/0/0/12161
\tETA_Vorlauftemperatur,/120/10101/0/0/12241
\tETA_Pelletsbehaelter_Fuellstand,/40/10021/0/0/12011
\tETA_Pelletsbehaelter_Fuellstand_Vorrat,/40/10201/0/0/12015
\tETA_Pufferspeicher_Temp_Oben,/120/10601/0/0/13191
\tETA_Pufferspeicher_Temp_Mitte,/120/10601/0/11328/0
\tETA_Pufferspeicher_Temp_Unten,/120/10601/0/0/13192
\tETA_Pufferspeicher_Capacity,/120/10601/0/0/12528
\tETA_Solar_Kollektorpumpe,/120/10221/0/11142/0
\tETA_Solar_Kollektortemperatur,/120/10221/0/0/12275
\tETA_Gesamtverbrauch,/40/10021/0/0/12016
\tETA_Inhalt_Pelletsbehaelter,/40/10021/0/0/12011
\tETA_Volllaststunden,/40/10021/0/0/12153
\tETA_Energie,/40/10021/14877/0/2273
\tETA_Leistung,/40/10021/14877/0/2287
\tETA_Wärmemessung,/40/10021/14877/0/0
\tETA_Wassermenge,/40/10021/14877/0/2274
";

string parameter;
string variable;
string url;
string urlComplete;
string etaXml;

!CUxD Verweis
string cuxdAdress = "CUxD.CUX2801001:4.";

!Adresse ETA 
string serverAdress = "http://192.168.10.239:8080//user/var";


foreach (parameter, parameterList)
{
	variable = parameter.StrValueByIndex(",",0);
	url = parameter.StrValueByIndex(",",1);
	etaXml = "";
	urlComplete = serverAdress # url;
	WriteLine(urlComplete);

	!hier ist die Abfrage mit CUxD
	dom.GetObject(cuxdAdress # "CMD_SETS").State("wget -q -O - '"#urlComplete#"'");
	dom.GetObject(cuxdAdress # "CMD_QUERY_RET").State(1);
	string etaXml = dom.GetObject(cuxdAdress # "CMD_RETS").State();

		!Daten mit Suchworten aus XML-File ausfiltern:
	string word = "decPlaces";
	integer word_laenge = word.Length();
	integer word_position = etaXml.Find(word);
	string daten = etaXml.Substr((word_position + word_laenge +5), 100);
	integer word_position = daten.Find(word);
	daten = daten.Substr(0, (word_position -2));
	!ScalFactor auslesen Komma

	!Wert auslesen zwischen "scaleFactor" und "decPlaces"
	string word= "scaleFactor";
	integer word_laenge = word.Length();
	integer word_scalV_position = etaXml.Find(word)+ word_laenge+2;
	!WriteLine(word_scalV_position);
	!string scaleFactor= etaXml.Substr((word_scalV_position));
	!WriteLine("decPlaces= " # scaleFactor);

	string word= "decPlaces";
	integer word_advT_position = etaXml.Find(word);
	!WriteLine(word_advT_position);
	integer value_laenge = ( word_advT_position - word_scalV_position)-2;
	!WriteLine(value_laenge);

	!string scaleFactor= etaXml.Substr((word_scalV_position),value_laenge);
	real Factor= etaXml.Substr((word_scalV_position),value_laenge).ToFloat();
	!WriteLine("Factor= " # Factor);
	
	real zahl = daten.ToFloat()/Factor;

	WriteLine(daten);
	WriteLine(zahl);

	!an Systemvareable
	dom.GetObject(variable).State(zahl); 
}
RaspberryMatic Version 3.59.6.20211009, 148 Devices, CUxD 2.6, CCU-Historian V2.6.0 auf Debian Linux

Wkrueckel
Beiträge: 6
Registriert: 30.12.2021, 12:18
System: Access Point

Re: ETA Heizung auslesen

Beitrag von Wkrueckel » 14.01.2022, 13:25

Hallo an die ETA und HomeMatic Gemeinde.

zuerst mal ein Riesen Kompliment an alle für euere Posts

Seit ein paar Tagen bin ich auch stolzer Besitzer einer CCU3.
Programmiertechnisch unerfahren, aber lernwillig!
Da ich auch eine ETA SH20 besitze ist das Thema hier für mich sehr interessant!
Was ich gerne verwirklichen möchte ist, dass sobald mein Pufferspeicher über 100% Wassertemperatur kommt, die Heizung zwar zum Absenken der Temperatur auf macht, die Raum Thermostate davon aber nichts mitbekommen.

Wo es bei mir aber schon hackt sind die Systemvariablen, da ich nicht weiß wie ich diese eintragen muss.
Ein Bild mit einem Beispiel wäre sehr hilfreich.

Danke Werner

Xel66
Beiträge: 10792
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 219 Mal
Danksagung erhalten: 845 Mal

Re: ETA Heizung auslesen

Beitrag von Xel66 » 14.01.2022, 14:42

Wkrueckel hat geschrieben:
14.01.2022, 13:25
Ein Bild mit einem Beispiel wäre sehr hilfreich.
Warum, hilft Dir der ensprechende Abschnitt "19.9 Systemvariable" des WebUI-Handbuches nicht?. Wirklich sehr empfehlenswerte Lektüre, wenn man Fragen hat.

Gruß Xel66
-------------------------------------------------------------------------------------------
343 Kanäle in 118 Geräten und 264 CUxD-Kanäle in 33 CUxD-Geräten:
282 Programme, 246 Systemvariablen und 144 Direktverknüpfungen,
RaspberryMatic Version: 3.61.5.20211113 + Testsystem: CCU2 2.53.27
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Wkrueckel
Beiträge: 6
Registriert: 30.12.2021, 12:18
System: Access Point

Re: ETA Heizung auslesen

Beitrag von Wkrueckel » 14.01.2022, 19:26

Ja danke erst mal, schaue ich mir an!!!

LG

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“