Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Script zum Auslesen eines Stiebel Eltron ISG

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.0k

Script zum Auslesen eines Stiebel Eltron ISG

Script zum Auslesen eines Stiebel Eltron ISG

Scheduled Pinned Locked Moved Skripten / Logik
18 Posts 9 Posters 6.0k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Offline
    T Offline
    tschombe
    wrote on last edited by
    #1

    Hi,

    ich hab an meiner Stiebel Eltron Wärmepumpe meiner Heizung ein

    ISG angeschlossen und meinen alten ccu.io - Adapter als Script portiert.

    Irgendwie hab ich es nicht geschafft, einen Adapter daraus zu machen, aber eigentlich

    reicht mir das auch so als Script, bin mir nicht ganz sicher welchen Vorteil ein Adapter bringen würde,

    ich finde das als Script fast praktischer.

    Auf dem ISG läuft die Firmwareversion 7.0.

    Es müssen 2 zusätzliche node module installiert werden (xmldom und xpath)

    im ordner /opt/iobroker/node_modules/iobroker.javascript die beiden befehle ausführen:

    npm install xpath
    
    npm install xmldom
    

    Hier das Script, es wird über Schedule alle 10 minuten ausgeführt, die IP Adresse des ISG muss natürlich passend eingetragen werden:

    ! ````
    var http = require('http');
    var xpath = require('xpath');
    var dom = require('xmldom').DOMParser;
    ! var stiebeleltronIP = '192.168.2.26';
    ! createState('stiebeleltron.prozess.RUECKLAUFTEMPERATUR');
    createState('stiebeleltron.prozess.RUECKLAUFTEMPERATUR');
    createState('stiebeleltron.prozess.VORLAUFTEMPERATUR');
    createState('stiebeleltron.prozess.FROSTSCHUTZTEMPERATUR');
    createState('stiebeleltron.prozess.AUSSENTEMPERATUR');
    createState('stiebeleltron.prozess.VERDAMPFERTEMPERATUR');
    createState('stiebeleltron.prozess.REKUPERATORTEMPERATUR');
    createState('stiebeleltron.prozess.ZWISCHENEINSPRITZUNGSTEMP');
    createState('stiebeleltron.prozess.HEISSGASTEMPERATUR');
    createState('stiebeleltron.prozess.NIEDERDRUCK');
    createState('stiebeleltron.prozess.HOCHDRUCK');
    ! createState('stiebeleltron.laufzeit.HEIZEN');
    createState('stiebeleltron.laufzeit.WARMWASSER');
    createState('stiebeleltron.laufzeit.ABTAUEN');
    createState('stiebeleltron.laufzeit.NHZ_1');
    createState('stiebeleltron.laufzeit.NHZ_2');
    createState('stiebeleltron.laufzeit.NHZ_1_2');
    createState('stiebeleltron.laufzeit.NHZ_GESAMT');
    ! createState('stiebeleltron.waermemenge.HEIZEN_TAG');
    createState('stiebeleltron.waermemenge.HEIZEN_SUMME');
    createState('stiebeleltron.waermemenge.WARMWASSER_TAG');
    createState('stiebeleltron.waermemenge.WARMWASSER_SUMME');
    createState('stiebeleltron.waermemenge.NHZ_HEIZEN_SUMME');
    createState('stiebeleltron.waermemenge.NHZ_WW_SUMME');
    ! createState('stiebeleltron.verbrauch.HEIZEN_TAG');
    createState('stiebeleltron.verbrauch.HEIZEN_SUMME');
    createState('stiebeleltron.verbrauch.WARMWASSER_TAG');
    createState('stiebeleltron.verbrauch.WARMWASSER_SUMME');
    createState('stiebeleltron.verbrauch.GESAMT_TAG');
    createState('stiebeleltron.verbrauch.GESAMT_SUMME');
    ! createState('stiebeleltron.anlage.RAUM_SOLLTEMPERATUR');
    createState('stiebeleltron.anlage.WARMWASSER_SOLLTEMPERATUR');
    createState('stiebeleltron.anlage.WARMWASSER_ISTTEMPERATUR');
    createState('stiebeleltron.anlage.HEIZEN_BIVALENZTEMPERATUR');
    createState('stiebeleltron.anlage.HEIZEN_EINSATZGRENZE');
    createState('stiebeleltron.anlage.WARMWASSER_BIVALENZTEMPERATUR');
    createState('stiebeleltron.anlage.WARMWASSER_EINSATZGRENZE');
    createState('stiebeleltron.anlage.AUSSENTEMPERATUR');
    createState('stiebeleltron.anlage.HEIZEN_SOLLTEMPERATUR');
    createState('stiebeleltron.anlage.HEIZEN_ISTTEMPERATUR');
    createState('stiebeleltron.anlage.VORLAUF_ISTEMPERATUR');
    createState('stiebeleltron.anlage.FESTWERT_SOLLTEMPERATUR');
    createState('stiebeleltron.anlage.PUFFERSOLLTEMPERATUR');
    createState('stiebeleltron.anlage.STATUS');
    ! schedule("*/10 * * * *", function () {
    pollStiebelEltron();
    });
    ! // call once after script restart
    pollStiebelEltron();
    ! // Frage stiebeleltron ein Mal und speichere die Antwort in CCU.IO Datenpunkten
    function pollStiebelEltron() {
    log("polling stiebel eltron adapter");

    http.get("http://" + stiebeleltronIP + "/?s=0", function (http_res) {
    
        // initialize the container for our data
        var data = "";
    
        // this event fires many times, each time collecting another piece of the response
        http_res.on("data", function (chunk) {
            // append this chunk to our growing `data` var
            data += chunk;
        });
    
        // this event fires *one* time, after all the `data` events/chunks have been gathered
        http_res.on("end", function () {
    
            try {// the website has some  without starttags, they must be removed to use dom 
                var newdata = data.replace(/<\/div>\s<\/div>\s<\/div>\s<\/div>\s/gmi, "<\/div>\r\n<\/div>");
                var doc = new dom().parseFromString(newdata);
                var nodes = xpath.select("//*[@id=\"box_start_status_system\"]", doc);
    
                // since i dont get xpath queries work right, i do it the hard way of accessing the childnodes directly
                // Tabelle Prozessdaten
                var status = nodes[0].childNodes[1].childNodes[2].childNodes[0].data;
                setState('javascript.0.stiebeleltron.anlage.STATUS', status);
            }
            catch (e) {
                log("stiebeleltron: Cannot set Website 1 data:" + e, 'error');
            }
        });
    });
    
    http.get("http://" + stiebeleltronIP + "/?s=1,0", function (http_res) {
        // initialize the container for our data
        var data = "";
    
        // this event fires many times, each time collecting another piece of the response
        http_res.on("data", function (chunk) {
            // append this chunk to our growing `data` var
            data += chunk;
        });
    
        // this event fires *one* time, after all the `data` events/chunks have been gathered
        http_res.on("end", function () {
    
            try {// the website has some  without starttags, they must be removed to use dom 
                var newdata = data.replace(/<\/div>\s<\/div>\s<\/div>\s<\/div>\s/gmi, "<\/div>\r\n<\/div>");
                var doc = new dom().parseFromString(newdata);
                var nodes = xpath.select("//*[@id=\"content\"]", doc);
    
                // since i dont get xpath queries work right, i do it the hard way of accessing the childnodes directly
                // Tabelle Raumtemperatur //*[@id="content"]/div[1]/table/tbody/tr[2]/td[2]
                var test = Object("");
                var raumsoll = removeDegreeUnit(nodes[0].childNodes[1].childNodes[0].childNodes[2].childNodes[3].childNodes[0].data, test);
                setState('javascript.0.stiebeleltron.anlage.RAUM_SOLLTEMPERATUR', raumsoll);
    
                // Tabelle Heizung //*[@id="content"]/div[3]/table/tbody/tr[2]/td[2]
                var aussentemp = removeDegreeUnit(nodes[0].childNodes[2].childNodes[0].childNodes[2].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.anlage.AUSSENTEMPERATUR', aussentemp);
    
                var isttemphk1 = removeDegreeUnit(nodes[0].childNodes[2].childNodes[0].childNodes[4].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.anlage.HEIZEN_ISTTEMPERATUR', isttemphk1);
    
                var solltemphk1 = removeDegreeUnit(nodes[0].childNodes[2].childNodes[0].childNodes[6].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.anlage.HEIZEN_SOLLTEMPERATUR', solltemphk1);
    
                var vorlauftemp = removeDegreeUnit(nodes[0].childNodes[2].childNodes[0].childNodes[8].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.anlage.VORLAUF_ISTEMPERATUR', vorlauftemp);
    
                var festwertsoll = checkFalseBool(nodes[0].childNodes[2].childNodes[0].childNodes[10].childNodes[3].childNodes[0].data, "AUS ");
                setState('javascript.0.stiebeleltron.anlage.FESTWERT_SOLLTEMPERATUR', festwertsoll);
    
                var puffersoll = removeDegreeUnit(nodes[0].childNodes[2].childNodes[0].childNodes[12].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.anlage.PUFFERSOLLTEMPERATUR', puffersoll);
    
                // Tabelle Warmwasser
                var wwist = removeDegreeUnit(nodes[0].childNodes[3].childNodes[0].childNodes[2].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.anlage.WARMWASSER_ISTTEMPERATUR', wwist);
    
                var wwsoll = removeDegreeUnit(nodes[0].childNodes[3].childNodes[0].childNodes[4].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.anlage.WARMWASSER_SOLLTEMPERATUR', wwsoll);
    
                // Tabelle elektr. nachwaermung
                var bivalenzheizung = removeDegreeUnit(nodes[0].childNodes[4].childNodes[0].childNodes[2].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.anlage.HEIZEN_BIVALENZTEMPERATUR', bivalenzheizung);
    
                var einsatzgrenzeheizung = removeDegreeUnit(nodes[0].childNodes[4].childNodes[0].childNodes[4].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.anlage.HEIZEN_EINSATZGRENZE', einsatzgrenzeheizung);
    
                var bivalenzww = removeDegreeUnit(nodes[0].childNodes[4].childNodes[0].childNodes[6].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.anlage.WARMWASSER_BIVALENZTEMPERATUR', bivalenzww);
    
                var einsatzgrenzeww = removeDegreeUnit(nodes[0].childNodes[4].childNodes[0].childNodes[8].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.anlage.WARMWASSER_EINSATZGRENZE', einsatzgrenzeww);
            }
            catch (e) {
                log("stiebeleltron: Cannot set Website 10 data:" + e, 'error');
            }
        });
    });
    
    http.get("http://" + stiebeleltronIP + "/?s=1,1", function (http_res) {
        // initialize the container for our data
        var data = "";
    
        // this event fires many times, each time collecting another piece of the response
        http_res.on("data", function (chunk) {
            // append this chunk to our growing `data` var
            data += chunk;
        });
    
        // this event fires *one* time, after all the `data` events/chunks have been gathered
        http_res.on("end", function () {
            try {
                // the website has some  without starttags, they must be removed to use dom 
                var newdata = data.replace(/<\/div>\s<\/div>\s<\/div>\s<\/div>\s/gmi, "<\/div>\r\n<\/div>");
                var doc = new dom().parseFromString(newdata);
                var nodes = xpath.select("//*[@id=\"content\"]", doc);
    
                // since i dont get xpath queries work right, i do it the hard way of accessing the childnodes directly
                // Tabelle Prozessdaten
                var ruecklauftemp = removeDegreeUnit(nodes[0].childNodes[1].childNodes[0].childNodes[2].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.prozess.RUECKLAUFTEMPERATUR', ruecklauftemp);
    
                var vorlauftemp = removeDegreeUnit(nodes[0].childNodes[1].childNodes[0].childNodes[4].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.prozess.VORLAUFTEMPERATUR', vorlauftemp);
    
                var frostschutztemp = removeDegreeUnit(nodes[0].childNodes[1].childNodes[0].childNodes[6].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.prozess.FROSTSCHUTZTEMPERATUR', frostschutztemp);
    
                var aussentemp = removeDegreeUnit(nodes[0].childNodes[1].childNodes[0].childNodes[8].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.prozess.AUSSENTEMPERATUR', aussentemp);
    
                var verdampfertemp = removeDegreeUnit(nodes[0].childNodes[1].childNodes[0].childNodes[10].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.prozess.VERDAMPFERTEMPERATUR', verdampfertemp);
    
                var rekuperatortemp = removeDegreeUnit(nodes[0].childNodes[1].childNodes[0].childNodes[12].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.prozess.REKUPERATORTEMPERATUR', rekuperatortemp);
    
                var zwischeneinspritztemp = removeDegreeUnit(nodes[0].childNodes[1].childNodes[0].childNodes[14].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.prozess.ZWISCHENEINSPRITZUNGSTEMP', zwischeneinspritztemp);
    
                var heissgastemp = removeDegreeUnit(nodes[0].childNodes[1].childNodes[0].childNodes[16].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.prozess.HEISSGASTEMPERATUR', heissgastemp);
    
                var niederdruck = removePressureUnit(nodes[0].childNodes[1].childNodes[0].childNodes[18].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.prozess.NIEDERDRUCK', niederdruck);
    
                var hochdruck = removePressureUnit(nodes[0].childNodes[1].childNodes[0].childNodes[20].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.prozess.HOCHDRUCK', hochdruck);
    
                // Tabelle Wärmemenge
                var outHeizenTag = removePowerUnit(nodes[0].childNodes[2].childNodes[0].childNodes[2].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.waermemenge.HEIZEN_TAG', outHeizenTag);
    
                var outHeizenSumme = removePowerUnit(nodes[0].childNodes[2].childNodes[0].childNodes[4].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.waermemenge.HEIZEN_SUMME', outHeizenSumme);
    
                var outwarmwasserTag = removePowerUnit(nodes[0].childNodes[2].childNodes[0].childNodes[6].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.waermemenge.WARMWASSER_TAG', outwarmwasserTag);
    
                var outwarmwasserSumme = removePowerUnit(nodes[0].childNodes[2].childNodes[0].childNodes[8].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.waermemenge.WARMWASSER_SUMME', outwarmwasserSumme);
    
                var outNHZHeizenSumme = removePowerUnit(nodes[0].childNodes[2].childNodes[0].childNodes[10].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.waermemenge.NHZ_HEIZEN_SUMME', outNHZHeizenSumme);
    
                var outNHZWarmwasserSumme = removePowerUnit(nodes[0].childNodes[2].childNodes[0].childNodes[12].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.waermemenge.NHZ_WW_SUMME', outNHZWarmwasserSumme);
    
                // Tabelle Leistungsaufnahme
                var heizenTag = removePowerUnit(nodes[0].childNodes[3].childNodes[0].childNodes[2].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.verbrauch.HEIZEN_TAG', heizenTag);
    
                var heizenSumme = removePowerUnit(nodes[0].childNodes[3].childNodes[0].childNodes[4].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.verbrauch.HEIZEN_SUMME', heizenSumme);
    
                var warmwasserTag = removePowerUnit(nodes[0].childNodes[3].childNodes[0].childNodes[6].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.verbrauch.WARMWASSER_TAG', warmwasserTag);
    
                var warmwasserSumme = removePowerUnit(nodes[0].childNodes[3].childNodes[0].childNodes[8].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.verbrauch.WARMWASSER_SUMME', warmwasserSumme);
    
                setState('javascript.0.stiebeleltron.verbrauch.GESAMT_TAG', heizenTag + warmwasserTag);
                setState('javascript.0.stiebeleltron.verbrauch.GESAMT_SUMME', heizenSumme + warmwasserSumme);
    
                // Tabelle Laufzeit
                var laufzeitHeizen = removeHourUnit(nodes[0].childNodes[4].childNodes[0].childNodes[2].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.laufzeit.HEIZEN', laufzeitHeizen);
    
                var laufzeitWarmwasser = removeHourUnit(nodes[0].childNodes[4].childNodes[0].childNodes[4].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.laufzeit.WARMWASSER', laufzeitWarmwasser);
    
                var laufzeitAbtauen = removeHourUnit(nodes[0].childNodes[4].childNodes[0].childNodes[6].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.laufzeit.ABTAUEN', laufzeitAbtauen);
    
                var laufzeitNhz1 = removeHourUnit(nodes[0].childNodes[4].childNodes[0].childNodes[8].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.laufzeit.NHZ_1', laufzeitNhz1);
    
                var laufzeitNhz2 = removeHourUnit(nodes[0].childNodes[4].childNodes[0].childNodes[10].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.laufzeit.NHZ_2', laufzeitNhz2);
    
                var laufzeitNhz1u2 = removeHourUnit(nodes[0].childNodes[4].childNodes[0].childNodes[12].childNodes[3].childNodes[0].data);
                setState('javascript.0.stiebeleltron.laufzeit.NHZ_1_2', laufzeitNhz1u2);
    

    ! setState('javascript.0.stiebeleltron.laufzeit.NHZ_GESAMT', laufzeitNhz1 + laufzeitNhz2 + laufzeitNhz1u2);
    }
    catch (e) {
    log("stiebeleltron: Cannot set Website 11 data:" + e, 'error');
    }
    });
    });
    }

    function checkFalseBool(input, checkvalue) {
    var result = (input != checkvalue);
    return Boolean(result);
    }

    ! function checkTrueBool(input, checkvalue) {
    var result = input == checkvalue;
    return Boolean(result);
    }
    ! function removeUnit(input, unitLength, unit) {
    if (unit)
    unit.valueOf = unit.toSource = unit.toString = input.substring(input.length - unitLength, input.length);
    var value = input.substring(0, input.length - unitLength);
    value = value.replace(/,/, ".");
    return parseFloat(value);
    }
    ! function removeHourUnit(input, unit) {
    return removeUnit(input, 2, unit);
    }
    ! function removePowerUnit(input, unit) {
    return removeUnit(input, 4);
    }
    ! function removePressureUnit(input, unit) {
    return removeUnit(input, 4);
    }
    ! function removeDegreeUnit(input, unit) {
    return removeUnit(input, 2, unit);
    }
    ! ````

    1 Reply Last reply
    0
    • Q Offline
      Q Offline
      Qlink
      wrote on last edited by
      #2

      Hi tschombe,

      wir haben vor ein paar Monaten schonmal zwecks ISG auslesen im HM Forum geschrieben.

      Anscheinend gibt es Unterschiede zwischen der deutschen und der österreichischen Version des ISG…

      Könnte man solche Unterschiede eventuell in einem Adapter konfigurierbar machen ?

      Ein Konfig Menü im Adapter in dem man einstellen kann, ob man österr. oder dt. Version und das Auslesen funktioniert dementsprechend dann mit jeder Version.

      Hättest du eventuell Bock sowas auf die Beine zu stellen ?

      Ich habe leider NULL Ahnung davon, würde dich aber so gut es mir möglich ist dabei unterstützen.

      Beste Grüße

      1 Reply Last reply
      0
      • apollon77A Online
        apollon77A Online
        apollon77
        wrote on last edited by
        #3

        @tschombe:

        Es müssen 2 zusätzliche node module installiert werden (xmldom und xpath)

        im ordner /opt/iobroker/node_modules/iobroker.javascript die beiden befehle ausführen:

        npm install xpath
        
        npm install xmldom
        ```` `  
        

        Es isz besser die beiden Module in der Javascript-Adapter-Konfig einzutragen. Dann wird es automagisch vom Adapter installiert 🙂

        Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

        • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
        • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
        1 Reply Last reply
        0
        • T Offline
          T Offline
          twiederh
          wrote on last edited by
          #4

          Hallo,

          ich würde das Script gerne für mein ISG nutzen, leider funktioniert es bei mir nicht, es gibt folgende Fehlermeldungen:

          22:00:00.452 [info] javascript.0 script.js.common.StiebelEltron: polling stiebel eltron adapter

          22:00:00.842 [error] javascript.0 script.js.common.StiebelEltron: stiebeleltron: Cannot set Website 1 data:TypeError: Cannot read property 'childNodes' of undefined

          22:00:01.137 [error] javascript.0 script.js.common.StiebelEltron: stiebeleltron: Cannot set Website 11 data:TypeError: Cannot read property '2' of null

          22:00:01.492 [error] javascript.0 script.js.common.StiebelEltron: stiebeleltron: Cannot set Website 10 data:TypeError: Cannot read property '2' of null

          Ich vermute, dass das daran liegt, dass mein ISG ein Login erfordert, im Script sehe ich keinen Hinweis auf Benutzername und Passwort. Wie kann man das Script so abändern, dass es sich am ISG anmeldet? Danke für Eure Hilfe.

          Viele Grüße,

          Thomas.

          1 Reply Last reply
          0
          • SmarthomeMFS Offline
            SmarthomeMFS Offline
            SmarthomeMF
            wrote on last edited by
            #5

            Hallo zusammen

            Ich habe auch eine Wärmepumpe von Stiebel Eltron

            Meine ist die LWZ 303 SOL

            Ich bin noch ganz am Anfang und weis nicht wie ich das Projekt angehen soll.

            Mein Wunsch wäre das ich die Daten auslesen kann und wenn möglich auch die Heizung dann Steuern!

            Wäre toll wenn mir da einer von euch helfen kann.

            Danke

            Max

            ioBroker auf einem NUC ,16GB RAM, 120GB SSD) mit Proxmox
            Cloud Pro, iot, Alexa, Sonos, sonoff, Fronius, Harmony, Doorbird, Shelly, Hue, Loxone, Mihome, …

            1 Reply Last reply
            0
            • nik82N Offline
              nik82N Offline
              nik82
              Most Active
              wrote on last edited by
              #6

              Hallo,

              ich wollte mal nachfragen ob schon jemand Erfahrung in Sachen "steuern" gemacht hat.

              Also das man z.B. die Lüfterstufen über IOBroker ändern kann?

              1 Reply Last reply
              0
              • Q Offline
                Q Offline
                Qlink
                wrote on last edited by
                #7

                geht anscheinend mit dem skript hier viewtopic.php?f=21&t=11900

                habs aber noch nicht getestet…

                1 Reply Last reply
                0
                • nik82N Offline
                  nik82N Offline
                  nik82
                  Most Active
                  wrote on last edited by
                  #8

                  Danke für den Tip, habe jetzt schon ein PHP-Programm geschrieben bekommen, das ist so ähnlich.

                  1 Reply Last reply
                  0
                  • Q Offline
                    Q Offline
                    Qlink
                    wrote on last edited by
                    #9

                    Kannst du das eventuell zur Verfügung stellen und eine kurze Anleitung dazu schreiben wie man es zum Laufen bekommt, bzw. wie man damit steuert ?

                    Dann hätten mehrere Leute was davon 😉

                    Beste Grüße

                    1 Reply Last reply
                    0
                    • nik82N Offline
                      nik82N Offline
                      nik82
                      Most Active
                      wrote on last edited by
                      #10

                      Das würde ich gerne, aber ich habe das selber nicht geschrieben und es ist an meine ganze MySQL-Datenbank abgepasst und auch auf meine ISG-Firmwareversion.

                      Das wird nichts bringen einfach den Quellcode hier reinzutun, aber ich habe es mal ein wenig verglichen, es ist im Prinzip ein ähnliches PHP-Script wie von dem Link den du eingestellt hast.

                      Also wenn jemand es ausprobieren will, dann einfach mal das PHP-Script von deinem Link kopieren.

                      1 Reply Last reply
                      0
                      • D Offline
                        D Offline
                        darkiop
                        Most Active
                        wrote on last edited by
                        #11

                        Ich steuere mit meinem PHP Code die LWZ über das ISG - funktioniert eigentlich zuverlässig. Würde das ganze allerdings gerne in JS umschreiben damit alles auf dem iobroker läuft und idealer Weise auch mit deinem Parse Skript in einem Adapter packen - hier fehlt mir allerdings noch das Know How für.

                        Hab auch gerade festgestellt, das mit meiner ISG Version (8.5.6) nicht alle Werte mit deinen Skript ausgelesen werden können:

                        5671_2018-04-07_10_23_20-clipboard.png

                        Proxmox-ioBroker-Redis-HA Doku: https://forum.iobroker.net/topic/47478/dokumentation-einer-proxmox-iobroker-redis-ha-umgebung

                        1 Reply Last reply
                        0
                        • nik82N Offline
                          nik82N Offline
                          nik82
                          Most Active
                          wrote on last edited by
                          #12

                          Gibts eigentlich eine Möglichkeit das ISG mit dem oben genannten Script auszulesen wenn dies Kennwort geschützt ist?

                          1 Reply Last reply
                          0
                          • D Offline
                            D Offline
                            darkiop
                            Most Active
                            wrote on last edited by
                            #13

                            Hallo zusammen, zum senden an das ISG, siehe hier:

                            viewtopic.php?f=35&t=13554

                            Proxmox-ioBroker-Redis-HA Doku: https://forum.iobroker.net/topic/47478/dokumentation-einer-proxmox-iobroker-redis-ha-umgebung

                            1 Reply Last reply
                            0
                            • J Offline
                              J Offline
                              JB_Mystery
                              wrote on last edited by
                              #14

                              Hallo zusammen,

                              ich bin auch ein Nutzer des ISGplus und ich versuche noch zusätzlich die Betriebsart der LWZ mit auszulesen. Ich scheitere leider daran, dass es kein Text ist. Kann mir jemand etwas auf die Sprünge helfen, wie ich da vor gehen kann. Vielen Dank. Zu finden ist es auf der Startseite im Auswahlfenster. Verändern müsste über val39 funktionieren, wie auch alle anderen Werte. Teste ich dann im Nachgang, wenn ich es auslesen kann.

                              [Edit]: Habe es durch ewiges probieren selber rausgefunden.

                              var betriebsart = doc.getElementById('aval39').getAttribute('value');
                              

                              Hinweis: AUTOMATIK = 11; BEREITSCHAFT = 1; TAGBETRIEB = 3; ABSENKBETRIEB = 4; WARMWASSER = 5; HANDBETRIEB = 14; NOTBETRIEB = 0;

                              1 Reply Last reply
                              0
                              • D Offline
                                D Offline
                                darkiop
                                Most Active
                                wrote on last edited by
                                #15

                                Habe begonnen einen Adapter für das ISGweb zu schreiben:

                                viewtopic.php?f=24&t=14309

                                Proxmox-ioBroker-Redis-HA Doku: https://forum.iobroker.net/topic/47478/dokumentation-einer-proxmox-iobroker-redis-ha-umgebung

                                1 Reply Last reply
                                0
                                • D Offline
                                  D Offline
                                  darkiop
                                  Most Active
                                  wrote on last edited by
                                  #16

                                  Ich versuche gerade die Werte einzulesen, tu mir aber schwer mittels den childNodes die Werte auszulesen.

                                  Zum möchte ich den Wert der RAUMISTTEMP HK1 lesen, der kopierte xpath mittels Firefox Developer Edition:

                                  /html/body/div[2]/div/form/div/div[1]/table/tbody/tr[2]/td[2]
                                  

                                  Da ich direkt bei #content einsteige muss ja nur noch

                                  /div[1]/table/tbody/tr[2]/td[2]
                                  

                                  selektieren.

                                  Wie muss denn der Korrekte selekt über die childNodes ausschauen?

                                  var test = xpath.select("//*[@id=\"content\"]", doc);
                                  var status = test[0].childNodes[1].childNodes[1].childNodes[1].childNodes[2].childNodes[2].childNodes[0].data;
                                  
                                  

                                  Beispiel der HTML Seite:

                                  
                                             RAUMTEMPERATUR | 
                                  
                                             RAUMISTTEMP. HK1 |
                                             21,0 °C |
                                  
                                             RAUMSOLLTEMP. HK1 |
                                             21,0 °C |
                                  
                                             RAUMFEUCHTE HK1 |
                                             0,0 % |
                                  
                                             RAUMISTTEMP. HK2 |
                                             21,0 °C |
                                  
                                             RAUMSOLLTEMP. HK2 |
                                             21,0 °C |
                                  
                                             RAUMFEUCHTE HK2 |
                                             0,0 % |
                                  
                                  

                                  Proxmox-ioBroker-Redis-HA Doku: https://forum.iobroker.net/topic/47478/dokumentation-einer-proxmox-iobroker-redis-ha-umgebung

                                  1 Reply Last reply
                                  0
                                  • S Offline
                                    S Offline
                                    SaschaS
                                    wrote on last edited by
                                    #17

                                    Hallo zusammen,

                                    ich scheitere bei der Installation vom Skript zum Auslesen der ISG-Wert:

                                    Erhalte die schon öfters beschriebene Fehlermeldung:

                                    17:33:00.031 info javascript.0 script.js.common.ISG.ISGauslesen: polling stiebel eltron adapter

                                    17:33:01.237 error javascript.0 script.js.common.ISG.ISGauslesen: stiebeleltron: Cannot set Website 20 data:TypeError: Cannot read property '0' of null

                                    17:33:02.214 error javascript.0 script.js.common.ISG.ISGauslesen: stiebeleltron: Cannot set Website 23 data:TypeError: Cannot read property 'childNodes' of undefined

                                    17:33:05.592 error javascript.0 script.js.common.ISG.ISGauslesen: stiebeleltron: Cannot set Website 10 data:TypeError: Cannot read property 'substring' of undefined

                                    17:33:06.671 error javascript.0 script.js.common.ISG.ISGauslesen: stiebeleltron: Cannot set Website 11 data:TypeError: Cannot read property '2' of null

                                    xpath und xmldom habe ich wie beschrieben installiert. Ging bei mir allerdings nur mit sudo
                                    9888_bildschirmfoto_2018-12-14_um_17.34.28.png

                                    Habt ihr eine Idee, wie man die Fehlersuche weiter eingrenzen kann?

                                    1 Reply Last reply
                                    0
                                    • D Offline
                                      D Offline
                                      darkiop
                                      Most Active
                                      wrote on last edited by
                                      #18

                                      Es gibt mittlerweile einen Adapter dazu:

                                      viewtopic.php?f=24&t=14309

                                      Proxmox-ioBroker-Redis-HA Doku: https://forum.iobroker.net/topic/47478/dokumentation-einer-proxmox-iobroker-redis-ha-umgebung

                                      1 Reply Last reply
                                      0
                                      Reply
                                      • Reply as topic
                                      Log in to reply
                                      • Oldest to Newest
                                      • Newest to Oldest
                                      • Most Votes


                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      598

                                      Online

                                      32.4k

                                      Users

                                      81.3k

                                      Topics

                                      1.3m

                                      Posts
                                      Community
                                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                      ioBroker Community 2014-2025
                                      logo
                                      • Login

                                      • Don't have an account? Register

                                      • Login or register to search.
                                      • First post
                                        Last post
                                      0
                                      • Recent
                                      • Tags
                                      • Unread 0
                                      • Categories
                                      • Unreplied
                                      • Popular
                                      • GitHub
                                      • Docu
                                      • Hilfe