ETA Heizung auslesen
Moderator: Co-Administratoren
Re: ETA Heizung auslesen
Welche Version hattest Du vor dem Update auf 3.54.0?
Musst Du eventuell den Zugriff "Freischaltung der REST API" wieder aktivieren?
Musst Du eventuell den Zugriff "Freischaltung der REST API" wieder aktivieren?
- 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
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
-
- Beiträge: 531
- Registriert: 17.04.2021, 17:12
- System: CCU
- Hat sich bedankt: 26 Mal
- Danksagung erhalten: 121 Mal
Re: ETA Heizung auslesen
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:
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.
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);
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
Harry
-
- Beiträge: 531
- Registriert: 17.04.2021, 17:12
- System: CCU
- Hat sich bedankt: 26 Mal
- Danksagung erhalten: 121 Mal
Re: ETA Heizung auslesen
Tyfys hat geschrieben: ↑14.11.2021, 14:08Das 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:
Also nach strValue wie gehabt gesucht.Dann wie gehabt das davor liegende entfernt mit Substr().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);
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
Harry
-
- Beiträge: 531
- Registriert: 17.04.2021, 17:12
- System: CCU
- Hat sich bedankt: 26 Mal
- Danksagung erhalten: 121 Mal
Re: ETA Heizung auslesen
Tyfys hat geschrieben: ↑14.11.2021, 14:09Tyfys hat geschrieben: ↑14.11.2021, 14:08Das 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:
Also nach strValue wie gehabt gesucht.Dann wie gehabt das davor liegende entfernt mit Substr().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);
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
Harry
-
- Beiträge: 40
- Registriert: 30.12.2012, 12:43
- Danksagung erhalten: 7 Mal
Re: ETA Heizung auslesen
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: 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.
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:
Viele Grüße
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: 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);
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":""}]
- 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
Ich hatte leider keinen Output mehr von der "alten" API Responds
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
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!
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
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
Re: ETA Heizung auslesen
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
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
-
- Beiträge: 14086
- Registriert: 08.05.2013, 23:33
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Nordwürttemberg
- Hat sich bedankt: 581 Mal
- Danksagung erhalten: 1492 Mal
Re: ETA Heizung auslesen
Warum, hilft Dir der ensprechende Abschnitt "19.9 Systemvariable" des WebUI-Handbuches nicht?. Wirklich sehr empfehlenswerte Lektüre, wenn man Fragen hat.
Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch