Ich habe für mich einen Weg gefunden die einzelnen Zustände meines ETA Kessels auszulesen.
Ich wollte meinen Ansatz teilen der auf meinem Wissen aus dem Wunderground Script basiert.
Danke an Funkleuchtturm!!!
Als erstes habe ich diverse Systemvariablen angelegt: Dann ein Programm erstellt: Dieses Programm läuft periodisch alle 7 Minuten und führt folgendes Script aus:
Code: Alles auswählen
!Kessel Zustand
var url = "http://192.168.178.**:8080//user/var/40/10021/0/0/12000";
!hier ist die Abfrage mit CUxD
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string eta_xml = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
!Daten mit Suchworten aus XML-File ausfiltern:
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), 1);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
word_laenge =daten.Length();
string anfangsbuchstabe = daten.Substr(0,1);
if (anfangsbuchstabe == "H")
{ if (daten == "H") {daten = "Heizen" ;} }
if (anfangsbuchstabe == "Z")
{ if (daten == "Z") {daten = "Zünden" ;} }
if (anfangsbuchstabe == "F")
{ if (daten == "F") {daten = "Füllen" ;} }
if (anfangsbuchstabe == "A")
{ if (daten == "A") {daten = "Ausgeschaltet" ;} }
if (anfangsbuchstabe == "G")
{ if (daten == "G") {daten = "Glutabbrand" ;} }
if (anfangsbuchstabe == "B")
{ if (daten == "B") {daten = "Bereit" ;} }
dom.GetObject("ETA_Kessel").State(daten);
!WriteLine(daten);
Code: Alles auswählen
!Vorlauftemperatur
var url = "http://192.168.178.**:8080//user/var/120/10101/0/0/12241";
!hier ist die Abfrage mit CUxD
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string eta_xml = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
!Daten mit Suchworten aus XML-File ausfiltern:
string word = "advTextOffset";
integer word_laenge = word.Length();
integer word_position = eta_xml.Find(word);
string daten = eta_xml.Substr((word_position + word_laenge +5), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
real zahl = daten.ToFloat()/10;
dom.GetObject("ETA_Vorlauftemperatur").State(zahl);
!Temperatur
var url = "http://192.168.178.**:8080//user/var/40/10241/0/0/12197";
!hier ist die Abfrage mit CUxD
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string eta_xml = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
!Daten mit Suchworten aus XML-File ausfiltern:
string word = "advTextOffset";
integer word_laenge = word.Length();
integer word_position = eta_xml.Find(word);
string daten = eta_xml.Substr((word_position + word_laenge +5), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
real zahl = daten.ToFloat()/10;
dom.GetObject("ETA_Aussentemperatur").State(zahl);
!WriteLine(daten);
!WriteLine("Läuft bis Atemp!");
!Puffer oben
var url = "http://192.168.178.**:8080//user/var/120/10251/0/0/12242.xml";
!hier ist die Abfrage mit CUxD
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string eta_xml = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
!Daten mit Suchworten aus XML-File ausfiltern:
string word = "advTextOffset";
integer word_laenge = word.Length();
integer word_position = eta_xml.Find(word);
string daten = eta_xml.Substr((word_position + word_laenge +5), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
real zahl = daten.ToFloat()/10;
dom.GetObject("ETA_Puffer_oben").State(zahl);
!WriteLine("Läuft bis Pufferoben!");
!Puffer mitte
var url = "http://192.168.178.**:8080//user/var/120/10251/0/0/12522.xml";
!hier ist die Abfrage mit CUxD
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string eta_xml = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
!Daten mit Suchworten aus XML-File ausfiltern:
string word = "advTextOffset";
integer word_laenge = word.Length();
integer word_position = eta_xml.Find(word);
string daten = eta_xml.Substr((word_position + word_laenge +5), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
real zahl = daten.ToFloat()/10;
dom.GetObject("ETA_Puffer_mitte").State(zahl);
!WriteLine("Läuft bis Puffermitte!");
!Puffer unten
var url = "http://192.168.178.**:8080//user/var/120/10251/0/0/12244.xml";
!hier ist die Abfrage mit CUxD
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string eta_xml = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
!Daten mit Suchworten aus XML-File ausfiltern:
string word = "advTextOffset";
integer word_laenge = word.Length();
integer word_position = eta_xml.Find(word);
string daten = eta_xml.Substr((word_position + word_laenge +5), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
real zahl = daten.ToFloat()/10;
dom.GetObject("ETA_Puffer_unten").State(zahl);
!WriteLine("Läuft bis Pufferunten!");
!Puffer Ladezustand
var url = "http://192.168.178.**:8080//user/var/120/10251/0/0/12528.xml";
!hier ist die Abfrage mit CUxD
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string eta_xml = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
!Daten mit Suchworten aus XML-File ausfiltern:
string word = "advTextOffset";
integer word_laenge = word.Length();
integer word_position = eta_xml.Find(word);
string daten = eta_xml.Substr((word_position + word_laenge +5), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
real zahl = daten.ToFloat()/10;
dom.GetObject("ETA_Puffer_Ladezustand").State(zahl);
!WriteLine("Läuft bis PufferLadezustand!");
Code: Alles auswählen
!Vorrat
var url = "http://192.168.178.**:8080//user/var/40/10201/0/0/12015.xml";
!hier ist die Abfrage mit CUxD
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string eta_xml = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
!Daten mit Suchworten aus XML-File ausfiltern:
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), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
real zahl = daten.ToFloat();
dom.GetObject("ETA_Vorrat").State(zahl);
!Gesamtverbrauch
var url = "http://192.168.178.**:8080//user/var/40/10021/0/0/12016.xml";
!hier ist die Abfrage mit CUxD
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string eta_xml = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
!Daten mit Suchworten aus XML-File ausfiltern:
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), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -2));
real zahl = daten.ToFloat();
dom.GetObject("ETA_Gesamtverbrauch").State(zahl);
!WriteLine("Läuft bis Gesamtverbrauch!");
Ich wollte dies nur teilen, falls jemand daran Interesse hat.
Es lief bei mir den ganzen Winter ohne Problem durch...
Ich bin mir sicher das dies nicht der Königsweg ist, aber da ich eine Script Null bin, war mehr nicht möglich.
Jetzt suche ich noch nach einem Weg, Variablen im ETA zu setzen. z.B: Wenn SysVar Heizperiode NEIN Dann Kessel AUS.
Da bin ich aber noch nicht weiter.
Bis dahin...
Thorsten