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.
    • 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
                                          • nik82
                                            nik82 Most Active last edited by

                                            Cool, danke dir erstmal.

                                            Ich denke das wird noch richtig gut 😄

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            705
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

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