siehe oben
ETA Heizung auslesen
Moderator: Co-Administratoren
-
- Beiträge: 566
- Registriert: 17.04.2021, 17:12
- System: CCU
- Hat sich bedankt: 28 Mal
- Danksagung erhalten: 130 Mal
Re: ETA Heizung auslesen
ich hab mal an den relevanten Stellen die WriteLine eimgesetzt:
lass das mit im Test Fenster laufen :
und poste die Ausgaben
Pffff. zu langsam
lass das mit im Test Fenster laufen :
Code: Alles auswählen
string WerteListe = "";
WerteListe = WerteListe # 'Kessel_Vorlauf,/112/10021/0/0/12241;';
WerteListe = WerteListe # 'HK1_Vorlauf,/112/10101/0/0/12241;';
WerteListe = WerteListe.RTrim(";");
boolean cuxd = false;
boolean test = true;
string Hinweis;
string variable;
string key;
string url;
string etaXml;
string AtrbName = "scaleFactor";
!CUxD Verweis
string cuxdAdress = "CUxD.CUX2801001:4.";
!Adresse ETA
string serverAdress = "http://192.18.0.13:8080//user/var";
string ListPos;
foreach(ListPos, WerteListe.Split(";")) {
variable = ListPos.StrValueByIndex(",", 0);
!Auswertung nur wenn die Systemvariable auch angelegt ist.
object SVrObj = dom.GetObject(ID_SYSTEM_VARIABLES).Get(variable);
if (!SVrObj) {
Hinweis = Hinweis # "Variablenname " # variable # " ist falsch oder nicht angelegt\n";
if (test == false) {
continue;
}
}
key = ListPos.StrValueByIndex(",", 1);
etaXml = "";
url = serverAdress # key;
if (cuxd) {
!hier ist die Abfrage mit CUxD
dom.GetObject(cuxdAdress # "CMD_SETS").State("wget -q -O - '" # url # "'");
dom.GetObject(cuxdAdress # "CMD_QUERY_RET").State(1);
string etaXml = dom.GetObject(cuxdAdress # "CMD_RETS").State();
WriteLine("CuxD-etaXml: " # etaXml);
} else {
string stdout;
string stderr;
system.Exec("wget -q -O - '"# url # "'" , &stdout, &stderr);
WriteLine(stderr);
string etaXml = stdout;
WriteLine("wget-etaXml: " # etaXml);
}
if (etaXml == "") {
Hinweis = Hinweis # "Datenabfrage für " # url # " fehlgeschlagen\n";
continue;
}
xml xmlData;
xml xNode = xmlData.Parse(etaXml);
integer index = 0;
xml Elem1 = xNode.GetChildNode("value");
WriteLine("Elem1: " # Elem1);
if (Elem1.GetAttribute(AtrbName) <> 1) {
real wert = Elem1.GetText().ToFloat() / Elem1.GetAttribute(AtrbName).ToFloat();
} else {
AtrbName = "strValue";
string wert = Elem1.GetAttribute(AtrbName);
AtrbName = "scaleFactor";
}
if (test) {
WriteLine("Wert für " # variable # " bei " # key # " ist " # wert);
}
!an Systemvareable
if (SVrObj) {
SVrObj.State(wert);
WriteLine(SVrObj.Value());
WriteLine(SVrObj.Value().Type());
}
}
if ((test) && (Hinweis > "")) {
WriteLine(Hinweis);
}
Pffff. zu langsam
Gruß
Harry
Harry
- Henke
- Beiträge: 1535
- Registriert: 27.06.2022, 20:51
- System: CCU
- Hat sich bedankt: 142 Mal
- Danksagung erhalten: 309 Mal
Re: ETA Heizung auslesen
Da kommt als XMP irgendetwas, wo man noch die Startposition raus finden muss.
Wette ich drauf.
Wette ich drauf.
-
- Beiträge: 566
- Registriert: 17.04.2021, 17:12
- System: CCU
- Hat sich bedankt: 28 Mal
- Danksagung erhalten: 130 Mal
Re: ETA Heizung auslesen
scheint so, als hätte sich da ein Tippfehler eingeschlichen:
ändere mal diese Zeile
string serverAdress = "http://192.18.0.13:8080//user/var";
auf
string serverAdress = "http://192.168.0.13:8080//user/var";
also 168 statt 18
und lass das test skript noch mal laufen
ändere mal diese Zeile
string serverAdress = "http://192.18.0.13:8080//user/var";
auf
string serverAdress = "http://192.168.0.13:8080//user/var";
also 168 statt 18
und lass das test skript noch mal laufen
Gruß
Harry
Harry
Re: ETA Heizung auslesen
Stimmt und jetzt zeigt es auch die Werte bei den Systemvariablen an. Ich danke euch
Code: Alles auswählen
Wert für Kessel_Vorlauf bei /112/10021/0/0/12241 ist 42.000000
Wert für HK1_Vorlauf bei /112/10101/0/0/12241 ist 37.000000
Tyfys hat geschrieben: ↑12.01.2023, 11:30scheint so, als hätte sich da ein Tippfehler eingeschlichen:
ändere mal diese Zeile
string serverAdress = "http://192.18.0.13:8080//user/var";
auf
string serverAdress = "http://192.168.0.13:8080//user/var";
also 168 statt 18
und lass das test skript noch mal laufen
Re: ETA Heizung auslesen
Hab jetzt mal paar Werte zum testen eingetragen. Danke für die Hilfe
Code: Alles auswählen
!ETA PU11
string WerteListe = "";
WerteListe = WerteListe # 'Kessel_Vorlauf,/112/10021/0/0/12241;';
WerteListe = WerteListe # 'HK1_Vorlauf,/112/10101/0/0/12241;';
WerteListe = WerteListe # 'Volllaststunden,/112/10021/0/0/12153;';
WerteListe = WerteListe # 'Gesamtverbrauch,/112/10021/0/0/12016;';
WerteListe = WerteListe # 'Verbrauch_seit_Wartung,/112/10021/0/0/12014;';
WerteListe = WerteListe # 'Inhalt_Pelletsbehälter,/112/10021/0/0/12011;';
WerteListe = WerteListe # 'Verbrauch_seit_Entaschung,/112/10021/0/0/12012;';
WerteListe = WerteListe # 'Verbrauch_seit_Aschebox_leeren,/112/10021/0/0/12013;';
WerteListe = WerteListe # 'Kessel,/112/10021/0/0/12000;';
WerteListe = WerteListe # 'Kesseldruck,/112/10021/0/0/12180;';
WerteListe = WerteListe # 'Kessel,/112/10021/0/0/12161;';
WerteListe = WerteListe # 'Kessel_Soll,/112/10021/0/0/12001;';
WerteListe = WerteListe # 'Vorlauf,/112/10021/0/0/12241;';
WerteListe = WerteListe # 'Kesselpumpe,/112/10021/0/11123/0;';
WerteListe = WerteListe # 'Abgas,/112/10021/0/0/12162;';
WerteListe = WerteListe # 'Abgasgebläse,/112/10021/0/0/12165;';
WerteListe = WerteListe # 'Restsauerstoff,/112/10021/0/0/12164;';
WerteListe = WerteListe # 'Inhalt_Pelletsbehälter,/112/10021/0/0/12011;';
WerteListe = WerteListe # 'Außentemperatur,/112/10241/0/0/12197;';
WerteListe = WerteListe # 'Puffer_oben,/112/10251/0/0/12242;';
WerteListe = WerteListe # 'Puffer_unten,/112/10251/0/0/12244;';
WerteListe = WerteListe.RTrim(";");
boolean cuxd = false;
boolean test = true;
string Hinweis;
string variable;
string key;
string url;
string etaXml;
string AtrbName = "scaleFactor";
!CUxD Verweis
string cuxdAdress = "CUxD.CUX2801001:4.";
!Adresse ETA
string serverAdress = "http://192.168.0.13:8080//user/var";
string ListPos;
foreach(ListPos, WerteListe.Split(";")) {
variable = ListPos.StrValueByIndex(",", 0);
!Auswertung nur wenn die Systemvariable auch angelegt ist.
object SVrObj = dom.GetObject(ID_SYSTEM_VARIABLES).Get(variable);
if (!SVrObj) {
Hinweis = Hinweis # "Variablenname " # variable # " ist falsch oder nicht angelegt\n";
if (test == false) {
continue;
}
}
key = ListPos.StrValueByIndex(",", 1);
etaXml = "";
url = serverAdress # key;
if (cuxd) {
!hier ist die Abfrage mit CUxD
dom.GetObject(cuxdAdress # "CMD_SETS").State("wget -q -O - '" # url # "'");
dom.GetObject(cuxdAdress # "CMD_QUERY_RET").State(1);
string etaXml = dom.GetObject(cuxdAdress # "CMD_RETS").State();
} else {
string stdout;
string stderr;
system.Exec("wget -q -O - '"# url # "'" , &stdout, &stderr);
string etaXml = stdout;
}
if (etaXml == "") {
Hinweis = Hinweis # "Datenabfrage für " # url # " fehlgeschlagen\n";
continue;
}
xml xmlData;
xml xNode = xmlData.Parse(etaXml);
integer index = 0;
xml Elem1 = xNode.GetChildNode("value");
if (Elem1.GetAttribute(AtrbName) <> 1) {
real wert = Elem1.GetText().ToFloat() / Elem1.GetAttribute(AtrbName).ToFloat();
} else {
AtrbName = "strValue";
string wert = Elem1.GetAttribute(AtrbName);
AtrbName = "scaleFactor";
}
if (test) {
WriteLine("Wert für " # variable # " bei " # key # " ist " # wert);
}
!an Systemvareable
if (SVrObj) {
SVrObj.State(wert);
}
}
if ((test) && (Hinweis > "")) {
WriteLine(Hinweis);
}
-
- Beiträge: 566
- Registriert: 17.04.2021, 17:12
- System: CCU
- Hat sich bedankt: 28 Mal
- Danksagung erhalten: 130 Mal
Re: ETA Heizung auslesen
dann ist die Kuh ja vom Eis...
Prima, dann hast du das Prinzip ja auch nun auch intus.
Wenn alles zufriedenstellend läuft kannst du
boolean test = true;
ändern auf
boolean test = false;
dann wird auch nichts mehr per WriteLine ausgegeben.
Falls bei irgendeinem Wert on oder off ausgegeben wird, würde
ich mich freuen, wenn du die dazugehörigen xml-Daten so wie hier posten in CodeTags (</>) würdest.
Gruß
Harry
Harry
Re: ETA Heizung auslesen
Ich spiele mal etwas rum und poste dann das Ergebnis. Ich möchte die Werte im Wohnzimmer auf dem Tablet anzeigen lassen und auch paar Werte in einem Diagramm aufzeichnen.
Macht es einen Unterschied ob es die WriteLine anzeigt oder nicht?
Macht es einen Unterschied ob es die WriteLine anzeigt oder nicht?
Tyfys hat geschrieben: ↑12.01.2023, 14:10dann ist die Kuh ja vom Eis...
Prima, dann hast du das Prinzip ja auch nun auch intus.
Wenn alles zufriedenstellend läuft kannst du
boolean test = true;
ändern auf
boolean test = false;
dann wird auch nichts mehr per WriteLine ausgegeben.
Falls bei irgendeinem Wert on oder off ausgegeben wird, würde
ich mich freuen, wenn du die dazugehörigen xml-Daten so wie hier posten in CodeTags (</>) würdest.
-
- Beiträge: 566
- Registriert: 17.04.2021, 17:12
- System: CCU
- Hat sich bedankt: 28 Mal
- Danksagung erhalten: 130 Mal
Re: ETA Heizung auslesen
Man sieht die Ausgaben ja nur im Fenster Skript testen.
Da ist es ganz nützlich zu sehen, ob man alles korrekt eingerichtet hat.
Ansonsten wäre es wie früher bei der Schreibmaschine , wenn man ohne Papier auf die Walze schreibt.
Da ist es ganz nützlich zu sehen, ob man alles korrekt eingerichtet hat.
Ansonsten wäre es wie früher bei der Schreibmaschine , wenn man ohne Papier auf die Walze schreibt.
Gruß
Harry
Harry