Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Script zum Auslesen eines Stiebel Eltron ISG

    NEWS

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    Script zum Auslesen eines Stiebel Eltron ISG

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      tschombe last edited by

      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 Reply Quote 0
      • Q
        Qlink last edited by

        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 Reply Quote 0
        • apollon77
          apollon77 last edited by

          @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 🙂

          1 Reply Last reply Reply Quote 0
          • T
            twiederh last edited by

            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 Reply Quote 0
            • SmarthomeMF
              SmarthomeMF last edited by

              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

              1 Reply Last reply Reply Quote 0
              • nik82
                nik82 Most Active last edited by

                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 Reply Quote 0
                • Q
                  Qlink last edited by

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

                  habs aber noch nicht getestet…

                  1 Reply Last reply Reply Quote 0
                  • nik82
                    nik82 Most Active last edited by

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

                    1 Reply Last reply Reply Quote 0
                    • Q
                      Qlink last edited by

                      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 Reply Quote 0
                      • nik82
                        nik82 Most Active last edited by

                        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 Reply Quote 0
                        • D
                          darkiop Most Active last edited by

                          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

                          1 Reply Last reply Reply Quote 0
                          • nik82
                            nik82 Most Active last edited by

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

                            1 Reply Last reply Reply Quote 0
                            • D
                              darkiop Most Active last edited by

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

                              viewtopic.php?f=35&t=13554

                              1 Reply Last reply Reply Quote 0
                              • J
                                JB_Mystery last edited by

                                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 Reply Quote 0
                                • D
                                  darkiop Most Active last edited by

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

                                  viewtopic.php?f=24&t=14309

                                  1 Reply Last reply Reply Quote 0
                                  • D
                                    darkiop Most Active last edited by

                                    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 % |
                                    
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • S
                                      SaschaS last edited by

                                      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 Reply Quote 0
                                      • D
                                        darkiop Most Active last edited by

                                        Es gibt mittlerweile einen Adapter dazu:

                                        viewtopic.php?f=24&t=14309

                                        1 Reply Last reply Reply Quote 0
                                        • First post
                                          Last post

                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        850
                                        Online

                                        32.0k
                                        Users

                                        80.5k
                                        Topics

                                        1.3m
                                        Posts

                                        9
                                        18
                                        5756
                                        Loading More Posts
                                        • Oldest to Newest
                                        • Newest to Oldest
                                        • Most Votes
                                        Reply
                                        • Reply as topic
                                        Log in to reply
                                        Community
                                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                        The ioBroker Community 2014-2023
                                        logo