ETA Heizung auslesen

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

Moderator: Co-Administratoren

Benutzeravatar
Henke
Beiträge: 1524
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 141 Mal
Danksagung erhalten: 306 Mal

Re: ETA Heizung auslesen

Beitrag von Henke » 12.01.2023, 00:45

Xythras hat geschrieben:
12.01.2023, 00:40
Wie geht das?
siehe oben :-)

Tyfys
Beiträge: 551
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 27 Mal
Danksagung erhalten: 125 Mal

Re: ETA Heizung auslesen

Beitrag von Tyfys » 12.01.2023, 00:49

ich hab mal an den relevanten Stellen die WriteLine eimgesetzt:
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);
}
und poste die Ausgaben

Pffff. zu langsam
Gruß
Harry

Benutzeravatar
Henke
Beiträge: 1524
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 141 Mal
Danksagung erhalten: 306 Mal

Re: ETA Heizung auslesen

Beitrag von Henke » 12.01.2023, 00:56

Da kommt als XMP irgendetwas, wo man noch die Startposition raus finden muss.
Wette ich drauf.

Xythras
Beiträge: 28
Registriert: 05.01.2023, 19:27
System: CCU

Re: ETA Heizung auslesen

Beitrag von Xythras » 12.01.2023, 11:08

Moin, es wird nichts ausgegeben :cry:

Tyfys
Beiträge: 551
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 27 Mal
Danksagung erhalten: 125 Mal

Re: ETA Heizung auslesen

Beitrag von Tyfys » 12.01.2023, 11:30

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
Gruß
Harry

Xythras
Beiträge: 28
Registriert: 05.01.2023, 19:27
System: CCU

Re: ETA Heizung auslesen

Beitrag von Xythras » 12.01.2023, 12:33

Stimmt :D und jetzt zeigt es auch die Werte bei den Systemvariablen an. Ich danke euch 8)

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:30
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

Xythras
Beiträge: 28
Registriert: 05.01.2023, 19:27
System: CCU

Re: ETA Heizung auslesen

Beitrag von Xythras » 12.01.2023, 13:44

Hab jetzt mal paar Werte zum testen eingetragen. Danke für die Hilfe :D

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);
}

Tyfys
Beiträge: 551
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 27 Mal
Danksagung erhalten: 125 Mal

Re: ETA Heizung auslesen

Beitrag von Tyfys » 12.01.2023, 14:10

Xythras hat geschrieben:
12.01.2023, 12:33
jetzt zeigt es auch die Werte bei den Systemvariablen an
dann ist die Kuh ja vom Eis...
Xythras hat geschrieben:
12.01.2023, 13:44
Hab jetzt mal paar Werte zum testen eingetragen.
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

Xythras
Beiträge: 28
Registriert: 05.01.2023, 19:27
System: CCU

Re: ETA Heizung auslesen

Beitrag von Xythras » 12.01.2023, 14:50

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?



Tyfys hat geschrieben:
12.01.2023, 14:10
Xythras hat geschrieben:
12.01.2023, 12:33
jetzt zeigt es auch die Werte bei den Systemvariablen an
dann ist die Kuh ja vom Eis...
Xythras hat geschrieben:
12.01.2023, 13:44
Hab jetzt mal paar Werte zum testen eingetragen.
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.

Tyfys
Beiträge: 551
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 27 Mal
Danksagung erhalten: 125 Mal

Re: ETA Heizung auslesen

Beitrag von Tyfys » 12.01.2023, 15:17

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. :D
Gruß
Harry

Antworten

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