Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. Neuer Adapter: ioBroker.stiebel-lwz / ioBroker.stiebel-isg

    NEWS

    • [erledigt] 15. 05. Wartungsarbeiten am ioBroker Forum

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Neuer Adapter: ioBroker.stiebel-lwz / ioBroker.stiebel-isg

    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      darkiop Most Active last edited by

      ****Michael (unltdnetworx) hat einen ähnlichen Adapter erstellt, ihr findet ihn hier. Meine Entwicklung wird damit erstmal pausiert.

      https://github.com/unltdnetworx/ioBroker.stiebel-isg

      Die Diskussion dazu findet in diesem Thread statt.****

      =======================================================

      Habe meine ersten Gehversuche in der Adaptererstellung hinter mir, ging einfacher wie gedacht.

      Aufbauend auf https://github.com/darkiop/iobroker.isg habe ich nun den Adapter https://github.com/darkiop/ioBroker.stiebel-lwz erstellt.

      Wäre super wenn die Erfahrenen da mal drüber schauen würden und ggf. Kritik liefern 🙂

      Danke und einen schönen Abend,

      Thorsten

      1 Reply Last reply Reply Quote -1
      • Jey Cee
        Jey Cee Developer last edited by

        Hi darkiop,

        ich hab mir den Adapter mal angeschaut.

        Erstmal Grundlegendes, du solltest statt var für die Definition von Variablen und Konstanten let und const verwenden. Das ist EcmaScript 6 Syntax, das ist der Standard hinter JavaScript.

        let definiert Variablen die immer innerhalb eines Blocks zur Verfügung stehen und damit ist auch ganz klar wo sie verfügbar ist. Bei var ist das nicht so klar abgegrenzt, was bei einem größeren Projekt zu Fehlern führen kann.

        const erhält bei der Initialisierung einen Wert der nicht geändert werden kann. Wie let steht es Blockweise zur Verfügung.

        Dein Code an sich sieht OK aus. Wenn du Objekte anlegst solltest du möglichst genau definieren was es für ein Objekt ist und welche Eigenschaften es hat. Das erleichtert später die Arbeit in iobroker.

        Du kannst zum Beispiel min und max definieren, dann akzeptiert iobroker nur Werte innerhalb dieses Bereichs.

        Das steht relativ Ausführlich in der Adapter Development Dokumentation.

        Außerdem gibt es die Möglichkeit Objekte die vom Adapter immer benötigt werden in der io-package.json zu definieren. Das erspart etwas code.

        Ich würde dir aber Empfehlen nicht den Umweg über das Bash Script zu gehen. Der Direkte weg geht über die nodejs Funktion request, damit sendest du den Befehl an die PHP.

        Und die case Funktion heißt in JS Switch.

        Gruß

        Jey Cee

        Gesendet von meinem m8 mit Tapatalk

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

          Super, vielen Dank - const und let habe ich bereits eingebaut. Aktuell bin ich dran das Bash Skript über request zu abzulösen.

          Stehe allerdings gerade auf dem Schlauch und bekomme

          –data-urlencode "data=[{"name":"$1","value":"$2"}]"

          und

          –data "make=send"

          nicht implementiert.

          Hier noch der Link zum Bash-Skript, da ist der curl Aufruf zu sehen.

          https://github.com/darkiop/ioBroker.sti ... isg_set.sh

                  // TODO request instead of isg_set.sh
                  // https://www.npmjs.com/package/request
                  var options = {
                      url: 'http://' + $isgIP + '/save.php',
                      method: 'POST',
                      jar: true, // cookies
                      gzip: true,
                      headers: {
                          'Accept': 'text/plain, */*; q=0.01',
                          'Accept-Language': 'de,en-US;q=0.7,en;q=0.3',
                          'Host': 'isg',
                          'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0',
                          'Referer': 'http://isg/',
                          'Content-Type': 'application/x-www-form-urlencoded',
                          'X-Requested-With': 'XMLHttpRequest',
                          'Connection': 'keep-alive',
                          'Pragma': 'no-cache',
                          'Cache-Control': 'no-cache',
          
                      }
                  };
          
                  // --data-urlencode "data=[{\"name\":\"$1\",\"value\":\"$2\"}]"
                  // --data "make=send" \
          
                  function callback(error, response, body) {
                      if (!error && response.statusCode == 200) {
                          adapter.log.info('stateChange ' + body);
                      }
                  }
          
                  request(options, callback);
          
          1 Reply Last reply Reply Quote 0
          • Jey Cee
            Jey Cee Developer last edited by

            Das hier sollte dir bei URL encode weiterhelfen: https://stackoverflow.com/questions/425 … ess-module

            Und data-send solltest du nicht brauchen.

            Gesendet von meinem m8 mit Tapatalk

            1 Reply Last reply Reply Quote 0
            • apollon77
              apollon77 last edited by

              Ich habe auch mal drüber geschaut. Hier noch ein bissl Feedback:

              • Wenn du keine Widgets oder www Teile implementiert (beides optional) dann Verzeichnisse entfernen

              • Bitte bei Travis-CI/Appveyor regsitrieren mit GitHub Account und dann Projekt aktivieren und einen commit machen. Ab dann laufen die Tests bei jedem Commit

              • In io-package.js im Bereichn "native" müssen die Testeinträge raus und durch deine Admin-Variablen mit Defaultwerten ersetzt werden

              • In io.package das restartAdapters raus wenn kein Widget dabei ist

              . in io.package als Adaptertyp etwas passenderes als "general" setzen bitte. Liste: http://download.iobroker.net/list.html

              • Es wäre denke sinnvoll die States etwas "Endkundenfreundlicher" zu bennennals aktuell und auch mit read/write und ggf erlaubten Werten u.ä. zu arbeiten. Aktuell kann der User da alles reinschreiben was er will … Hm 🙂

              Ingo

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

                Hi darkiop,

                ich hätte heute mal den lwz Adapter hinzugefügt.

                Leider läuft er nicht. Ich bekomme folgende Fehlermeldung im Log:

                host.iobroker	2018-06-18 16:43:13.746	info	Restart adapter system.adapter.stiebel-lwz.0 because enabled
                host.iobroker	2018-06-18 16:43:13.746	error	instance system.adapter.stiebel-lwz.0 terminated with code 1 ()
                host.iobroker	2018-06-18 16:43:13.371	info	instance system.adapter.stiebel-lwz.0 started with pid 804
                host.iobroker	2018-06-18 16:42:43.366	info	Restart adapter system.adapter.stiebel-lwz.0 because enabled
                host.iobroker	2018-06-18 16:42:43.366	error	instance system.adapter.stiebel-lwz.0 terminated with code 1 ()
                host.iobroker	2018-06-18 16:42:42.928	info	instance system.adapter.stiebel-lwz.0 started with pid 2296
                host.iobroker	2018-06-18 16:42:12.930	info	Restart adapter system.adapter.stiebel-lwz.0 because enabled
                host.iobroker	2018-06-18 16:42:12.930	error	instance system.adapter.stiebel-lwz.0 terminated with code 1 ()
                host.iobroker	2018-06-18 16:42:12.602	info	instance system.adapter.stiebel-lwz.0 started with pid 700
                host.iobroker	2018-06-18 16:41:42.596	info	Restart adapter system.adapter.stiebel-lwz.0 because enabled
                host.iobroker	2018-06-18 16:41:42.596	error	instance system.adapter.stiebel-lwz.0 terminated with code 1 ()
                host.iobroker	2018-06-18 16:41:42.049	info	instance system.adapter.stiebel-lwz.0 started with pid 1936
                host.iobroker	2018-06-18 16:41:12.024	info	Restart adapter system.adapter.stiebel-lwz.0 because enabled
                host.iobroker	2018-06-18 16:41:12.024	error	instance system.adapter.stiebel-lwz.0 terminated with code 1 ()
                host.iobroker	2018-06-18 16:41:11.684	info	instance system.adapter.stiebel-lwz.0 started with pid 3036
                

                Auch wenn ich auf debug umstelle erhalte ich nicht mehr infos …

                Hast du eine Idee was das Problem sein kann ?

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

                  Hey, sagt mir leider nichts. Hatte auch noch keine Zeit bisher die oben genannten Anmerkungen einzubauen. Mal schauen, vielleicht im Laufe der Woche. Der Adapter ist ja aktuell auch nur ein erster Wurf und noch sehr Ausbaufähig 🙂

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

                    @apollon77: Habe deine ersten Anmerkungen eingebaut und auch meinen GH Account mit Travis-CI/Appveyor verknüpft. Passt das so?

                    An das umbenennen der States gehe ich noch. Bei dem read/write und erlaubten Werte Thema bräuchte ich Unterstützung 😉

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

                      Denke du meinst das so?

                      https://github.com/darkiop/ioBroker.sti … 4d1bbba2b4

                      Hab nun einen DP aus der for schleife genommen und mit Standardwerten versehen. Wie würde das dann bei den Zahlenwerten auszusehen haben?

                      Danke und Gruß, Thorsten

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

                        Und noch eine ganz andere Frage:

                        Wenn ich den Adapter mittels git direkt in /opt/iobroker/node_modules/iobroker.stiebel-lwz clone und danach dann über den Admin die Instanz erzeuge, funktioniert das setzen der Parameter über die Datenpunkte leider nicht. Laut Log werden sie zwar gesetzt - aber an der LWZ kommt nichts an. Installiere ich den Adapter über den Admin über die Github URL und erzeuge dann die Instanz funktioniert das. Hier habe ich dann aber kein Git Repo und behelfe mir aktuell dadurch, das ich dieses dann paralell an einem anderen Ort clone und via copy & paste dann die Änderungen im /opt/iobroker Ordner einfüge.

                        Was muss hier noch getan werden damit auch ein 'clone' zu einem funktionalen Adapter/Instanz führt? Ein 'npm install' im Adapter Ordner hat mir leider auch nicht geholfen.

                        Grüße und noch einen schönen Sonntag!

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

                          Vieleicht kann auch noch jemand den Thread hier in das Entwicklungsforum schieben - ioBroker.vis Adapter Forum war wohl die falsche wahl damals 🙂

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

                            Ich komme aktuell mit der Umsetzung mittels request nicht weiter. Habe, um das ganz zu testen, die neue function für den request Vorgang in folgende Datei [1] gepackt und mittels NODE_DEBUG=request node test-node.js ausgführt.

                            Ergebnis ist folgendes:

                            REQUEST { url: 'http://isg/save.php',
                              method: 'POST',
                              form: { name: 'val39s', value: '11' },
                              headers:
                               { Host: 'isg',
                                 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0',
                                 Accept: 'text/plain, */*; q=0.01',
                                 'Accept-Language': 'de,en-US;q=0.7,en;q=0.3',
                                 Referer: 'http://isg/',
                                 'Content-Type': 'application/x-www-form-urlencoded',
                                 'X-Requested-With': 'XMLHttpRequest',
                                 Connection: 'keep-alive',
                                 Pragma: 'no-cache',
                                 'Cache-Control': 'no-cache' },
                              gzip: true,
                              jar: true,
                              callback: [Function: callback] }
                            REQUEST make request http://isg/save.php
                            REQUEST onRequestResponse http://isg/save.php 200 { 'transfer-encoding': 'chunked',
                              'x-powered-by': 'PHP/5.3.0',
                              'set-cookie': [ 'PHPSESSID=144fc5b9ed3fb331b498eacdefd3d940; path=/' ],
                              expires: 'Thu, 19 Nov 1981 08:52:00 GMT',
                              'cache-control': 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0',
                              pragma: 'no-cache',
                              'content-type': 'application/json',
                              date: 'Tue, 26 Jun 2018 17:59:57 GMT',
                              server: 'lighttpd/1.4.19' }
                            REQUEST reading response's body
                            REQUEST finish init function http://isg/save.php
                            REQUEST response end http://isg/save.php 200 { 'transfer-encoding': 'chunked',
                              'x-powered-by': 'PHP/5.3.0',
                              'set-cookie': [ 'PHPSESSID=144fc5b9ed3fb331b498eacdefd3d940; path=/' ],
                              expires: 'Thu, 19 Nov 1981 08:52:00 GMT',
                              'cache-control': 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0',
                              pragma: 'no-cache',
                              'content-type': 'application/json',
                              date: 'Tue, 26 Jun 2018 17:59:57 GMT',
                              server: 'lighttpd/1.4.19' }
                            REQUEST end event http://isg/save.php
                            REQUEST has body http://isg/save.php 78
                            REQUEST emitting complete http://isg/save.php
                            REQUEST RESULTS: null 200 {"success":true,"message":"Die Einstellungen wurden erfolgreich gespeichert."}
                            
                            

                            Allerdings wirt der neue Wert nicht auf dem empfangenden System übernommen. Ich vermute mal hier stimmt noch etwas mit den überlieferten Daten nicht. In dem bisherigen Bash-Script war der JSON String so aufgebaut:

                            data=[{"name":"$1","value":"$2"}]

                            Jemand eine Idee was hier noch zu tun ist?

                            [1] https://github.com/darkiop/ioBroker.sti … request.js

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

                              Hallo zusammen, muss den Thread nochmal nach oben schieben. Hätte am WE etwas Zeit um mich weiter um den Adapter zu kümmern - allerdings stecke ich aktuell durch die oben beschrieben Fragen in einer Sackgasse … 😉

                              Grüße Thorsten

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

                                Die Frage mit den Min/Max Werten in der io-package.json hat sich erledigt - habe ich gerade ins Repo geladen - abschauen bei anderen Adaptern kann hilfreich sein 😉

                                Die Frage mit dem git clone ebenfalls - auf meiner Testumgebung funktioniert das jetzt wie gewünscht.

                                Offene Fragen wären jetzt noch der Teil mit dem JS request anstatt meinen Bash Skript und ein funktionales automatisches Testen bei pushs.

                                Die aktuellen Werte aus der Weboberfläche ziehe ich mir momentan ebenfalls über ein Bash Skript in die CCU:

                                https://github.com/darkiop/ioBroker.sti … -to-ccu.sh

                                Auch das würde ich gerne in den Adapter integrieren - hier fehlt mir noch die Idee wie und mit welchen Mitteln ich das am besten mache.

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

                                  Hallo,

                                  erstmal vielen Dank für die Arbeit, suche auch schön länger ein fertiges Script für IOBroker, habe das jetzt mal getestet.

                                  Ich scheitere aber leider schon an der Installation.

                                  Ich gebe das hier ein:

                                  cd /opt/iobroker
                                  
                                  iobroker stop
                                  
                                  npm install iobroker.stiebel-lwz@0.0.3 --production
                                  
                                  iobroker upload stiebel-lwz
                                  
                                  iobroker start
                                  

                                  Es taucht aber weder eine Instanz, noch Objekte auf.

                                  Und dann hätte ich noch die Frage ob du die Datei für die CCU nochmal uploaden kannst, der Link funtioniert nicht:

                                  https://github.com/darkiop/ioBroker.sti … -to-ccu.sh

                                  Da ich auch eine CCU habe, würde ich auch gerne erstmal die Daten in die CCU importieren.

                                  Danke im Voraus.
                                  6616_installation.jpg

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

                                    Hi,

                                    habe etwas aufgeräumt im Repo, die Skripte für die CCU liegen nun hier:

                                    https://github.com/darkiop/ioBroker.sti … mp/scripts

                                    Installiere den Adapter über die Github URL direkt über den Admin. Dann im Tab Adapter nach LWZ suchen und eine Instanz erstellen.

                                    Der Adapter ist aktuell sehr zweckmäßig und ich habe selbst noch so einige Probleme - aber es geht in kleinen Schritten vorwärts 😉

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

                                      @darkiop:

                                      Dann im Tab Adapter nach LWZ suchen und eine Instanz erstellen. `

                                      Das war das Problem, danke dir jetzt hab ich den Adapter drin, habe die Betriebsart auf "Automatik" gestellt.

                                      Er übernimmt aber noch keine Daten.

                                      Kann ich irgendwie überprüfen an was es liegt bzw. warum er noch keine Daten zieht?

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

                                        Also beim Start des Adapters sollte er sich für das Objekt Betriebsart den aktuellen Status ziehen. Vorausgesetzt du hast kein Benutzer/Passwort im ISGweb hinterlegt und das ISGweb ist auf der Version 8.5.6 (nur mit dieser kann ich testen).

                                        Versuche mal auf der Shell direkt über

                                        bash /opt/iobroker/node_modules/iobroker.stiebel-lwz/isg_set.sh 192.168.1.100 BETRIEBSART WARMWASSER
                                        

                                        den Befehl abzusetzen - statt WARMWASSER für die Automatik nimmst du AUTOMATIK. Die IP entsprechend ersetzen.

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

                                          Ah jetzt funktioniert es, habe zwar zum test schon das Kennwort raus, hat er aber anscheinend nicht ganz übernommen.

                                          Jetzt übernimmt er auch die Daten. Cool, danke.

                                          Hätte jetzt noch zwei Sachen:

                                          1. Ist es irgendwie möglich die Daten auch mit Kennwort abzugreifen?

                                          2. Momentan sind ja nur die "Steuerungs"-Sachen wie Betriebsart, Lüftung usw. möglich, wird es in Zukunft noch möglich sein, alle anderen Werte zu loggen?

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

                                            Das mit User/PW sollte machbar sein - ist sicher mal geplant, ich schreibs mal auf die TODO 🙂

                                            Die anderen Parameter kann man ebenfalls setzen, da der Adapter aber noch in einem sehr frühen Stadium ist, habe ich nur diese 4 bisher eingebaut.

                                            Alle weiteren habe ich aber bereits extrahiert und hier notiert:

                                            https://github.com/darkiop/ioBroker.sti … ameters.md

                                            Habe allerdings noch ein paar grundlegende Problemchen, wenn das alles geht dann kann ich auch mit den Parametern in die Breite gehen. Als nächstes würde ich gerne das auslesen der aktuellen Parameter aus dem ISGweb angehen wollen.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            663
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            17
                                            419
                                            63995
                                            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