Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Geloest] Bitte um Hilfe bei Script ccu-> iobroker

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Geloest] Bitte um Hilfe bei Script ccu-> iobroker

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

      MOD-Edit by eric2905; 19.05.2017 / 21:15; Betreff geändert und Code-Tags eingefügt

      Hallo,

      ich habe den iobroker nun schon eine Weile laufen und einiges hier schon erlesen und umgesetzt.

      Da meine CCU immer mehr Abstürze fabrizierte, habe ich dort einiges rausgeworfen und iobroker übertragen.

      Das mit den Adaptern ist wirklich eine tolle Sache.

      Nun möchte ich noch das nachfolgende Script von meiner CCU zum iobroker "konvertieren"

      Da fehlt mir momentan ein Adapter 😞

      Könnt ihr mir helfen und mir schreiben, wie ich die Telnetabfrage meines Danfoss WR in iobroker bewerkstelligen kann?

      Hier mein Script von der CCU über cuxd:

      ! Per Telnet auslesen
      dom.GetObject("CUxD.CUX2801001:9.CMD_SETS").State("(echo '00*'; usleep 50000) | telnet 192.168.1.82 15000");
      dom.GetObject("CUxD.CUX2801001:9.CMD_QUERY_RET").State(1);
      
      ! in Variable solarroh schreiben
      var Solarroh;
      string Solarroh = dom.GetObject("CUxD.CUX2801001:9.CMD_RETS").State();
      !WriteLine(solarroh);
      
      !Einspeisung separieren
      var x;
      string x =Solarroh.Substr(23, 4);
      !WriteLine(x);
      var m;
      string m =Solarroh.Substr(29, 4);
      !WriteLine(m);
      
      !Wert in Systemvariable Einspeisung schreiben
      dom.GetObject('Solar').State(x);
      dom.GetObject('Solar_Monat').State(m);
      

      Vielen Dank für eure Hilfe im voraus

      1 Reply Last reply Reply Quote 0
      • D
        der_broker last edited by

        Sorry für die Fehler bei der Erstellung und Danke für die Änderung.

        Ich werde mich bessern

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

          @der_broker:

          Sorry für die Fehler bei der Erstellung und Danke für die Änderung.

          Ich werde mich bessern `
          Alles gut - das erhöht nur die Lesbarkeit.

          Gruß,

          Eric

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

            Hier der Versuch einer Übersetzung HM Script –> Javascript (nicht getestet):

            var debug = true;  // Logging
            var cmd = "(echo '00*'; usleep 50000) | telnet 192.168.1.82 15000";
            
            exec(cmd, function (error, stdout, stderr) {
                if(error) log('Exec-Fehler: ' + stderr, 'error');
                else {
                    var Solarroh = stdout;
                    if(debug) log(Solarroh);
                    var x = Solarroh.substr(23, 4);
                    if(debug) log(x);
                    var m = Solarroh.substr(29, 4);
                    if(debug) log(m);
                    setState('Solar', parseFloat(x));
                    setState('Solar_Monat', parseFloat(m));
                }
            });
            

            Die beiden Datenpunkte 'Solar' und 'Solar_Monat' vom Typ Zahl müssen vorher im Reiter "Objekte" unter javascript.0 erstellt werden.

            1 Reply Last reply Reply Quote 0
            • D
              der_broker last edited by

              Vielen Dank für Deine Hilfe.

              Leider scheitere ich am fehlenden TELNET.

              Da es hier keinen Adapter über iobroker gibt, habe ich im GIT gesucht und einen 3 Jahre alten Eintrag gefunden.

              Diesen habe ich nun versucht über eine eigene URL zu installieren.

              Leider bekomme ich hier Fehler angezeigt.

              $ ./iobroker url "https://github.com/ioBroker/ioBroker.telnet"
              install https://github.com/ioBroker/ioBroker.telnet/tarball/master
              npm install https://github.com/ioBroker/ioBroker.telnet/tarball/master --production --prefix "/opt/iobroker" (System call)
              npm
               http GET https://github.com/ioBroker/ioBroker.telnet/tarball/master
              npm http 200 https://github.com/ioBroker/ioBroker.telnet/tarball/master
              npm ERR! Error: No name providednpm ERR!     at needName (/usr/local/lib/node_modules/npm/lib/cache.js:1247:37)
              npm ERR!     at /usr/local/lib/node_modules/npm/lib/cache.js:1123:10
              npm ERR!     at process._tickCallback (node.js:415:13)
              npm ERR! If you need help, you may report this log at:
              npm ERR!     <http: github.com/isaacs/npm/issues="">
              npm ERR! or email it to:
              npm 
              ERR!     <npm-@googlegroups.com>
              npm ERR! System Linux 3.4.112-sun7i
              npm ERR!
               command "/usr/local/bin/node" "/usr/local/bin/npm" "install" "https://github.com/ioBroker/ioBroker.telnet/tarball/master" "--production" "--prefix" "/opt/iobroker"npm ERR!
               cwd /optnpm
               ERR! node -v v0.10.22npm ERR! 
              npm -v 1.3.14
              npm ERR! npm ERR! Additional logging details can be found in:
              npm
               ERR!     /opt/npm-debug.lognpm ERR! not ok code 0
              
              ERROR: host.cubietruck Cannot install https://github.com/ioBroker/ioBroker.telnet/tarball/master: 1
              ERROR: process exited with code 25</npm-@googlegroups.com></http:>
              

              Alles nicht so einfach 😞

              1 Reply Last reply Reply Quote 0
              • D
                der_broker last edited by

                Nun habe ich socket.io installiert und bekomme noch:

                20:58:54.618	[error]	javascript.0 script.js.common.Solar: Exec-Fehler: /bin/sh: 1: telnet: not found sh: echo: I/O error /bin/sh: 1: usleep: not found
                
                1 Reply Last reply Reply Quote 0
                • D
                  der_broker last edited by

                  Nun habe ich telnet installiert und bekomme noch

                  21:18:15.331	[error]	javascript.0 script.js.common.Solar: Exec-Fehler: /bin/sh: 1: usleep: not found Connection closed by foreign host.
                  
                  1 Reply Last reply Reply Quote 0
                  • D
                    der_broker last edited by

                    Ich komme nicht weiter.

                    Scheinbar gibt es unter JavaScript kein USLEEP.

                    Mein TCP Server wartet nach Eingabe von Telnet … 15000 drei Sekunden auf 00*, dann wird die Verbindung geschlossen.

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

                      @der_broker:

                      Scheinbar gibt es unter JavaScript kein USLEEP. `
                      Das hat nichts mit Javascript oder ioBroker zu tun, sondern liegt an den Unterschieden der Linux-Varianten.

                      1 Reply Last reply Reply Quote 0
                      • D
                        der_broker last edited by

                        OK. Ist also ein fehlender Befehl in meinem Armbian 😞

                        Sleep ist da!

                        Unterschied zu usleep scheint nur zu sein, dass sleep mit Sekunden arbeitet.

                        Also habe ich sleep 1 für usleep 50000 eingegeben.

                        Ergebnis:

                        [error]	javascript.0 script.js.common.Solar: Exec-Fehler: Connection closed by foreign host.
                        

                        Das Script pausiert 1 oder 2 Sekunden, je nach Vorgabe, führt die Eingabe 00* wohl nicht aus.

                        1 Reply Last reply Reply Quote 0
                        • D
                          der_broker last edited by

                          die CMD Zeile habe ich umgestellt und das script läuft scheinbar.

                          var cmd = "telnet 192.168.1.82 15000 | (echo '00*'; sleep 1s)";
                          

                          Leider werden die Variablen nicht gefüllt.

                          LOG:

                          javascript.0	2017-05-21 12:31:41.633	info	script.js.common.Solar: setForeignState(id=javascript.0.Solar_Monat_iob, state=null)
                          javascript.0	2017-05-21 12:31:41.632	info	script.js.common.Solar: setForeignState(id=javascript.0.Solar_iob, state=null)
                          javascript.0	2017-05-21 12:31:41.632	info	script.js.common.Solar:
                          javascript.0	2017-05-21 12:31:41.631	info	script.js.common.Solar:
                          javascript.0	2017-05-21 12:31:41.628	info	script.js.common.Solar: 00*
                          javascript.0	2017-05-21 12:31:35.637	info	script.js.common.Solar: registered 0 subscriptions and 0 schedules
                          javascript.0	2017-05-21 12:31:35.637	info	script.js.common.Solar: exec: telnet 192.168.1.82 15000 | (echo '00*'; sleep 1s)
                          
                          1 Reply Last reply Reply Quote 0
                          • D
                            der_broker last edited by

                            Der SLEEP Befehl funktioniert wohl doch nicht.

                            Im Log sehe einen neuen LOG Eintrag immer nach 6 Sekunden.

                            Egal ob ich den Sleep Befehl drinnen habe oder ihn rausnehme.

                            😢

                            javascript.0	2017-05-21 12:47:45.535	info	script.js.common.Solar: setForeignState(id=javascript.0.Solar_Monat_iob, state=null)
                            javascript.0	2017-05-21 12:47:45.531	info	script.js.common.Solar: setForeignState(id=javascript.0.Solar_iob, state=null)
                            javascript.0	2017-05-21 12:47:45.530	info	script.js.common.Solar:
                            javascript.0	2017-05-21 12:47:45.527	info	script.js.common.Solar:
                            javascript.0	2017-05-21 12:47:45.525	info	script.js.common.Solar: 00*
                            javascript.0	2017-05-21 12:47:39.491	info	script.js.common.Solar: registered 0 subscriptions and 0 schedules
                            javascript.0	2017-05-21 12:47:39.470	info	script.js.common.Solar: exec: telnet 192.168.1.82 15000 | (echo '00*')
                            javascript.0	2017-05-21 12:47:39.455	info	Start javascript script.js.common.Solar
                            javascript.0	2017-05-21 12:47:39.430	info	Stop script script.js.common.Solar
                            javascript.0	2017-05-21 12:46:57.803	info	script.js.common.Solar: setForeignState(id=javascript.0.Solar_Monat_iob, state=null)
                            javascript.0	2017-05-21 12:46:57.798	info	script.js.common.Solar: setForeignState(id=javascript.0.Solar_iob, state=null)
                            javascript.0	2017-05-21 12:46:57.796	info	script.js.common.Solar:
                            javascript.0	2017-05-21 12:46:57.795	info	script.js.common.Solar:
                            javascript.0	2017-05-21 12:46:57.793	info	script.js.common.Solar: 00*
                            javascript.0	2017-05-21 12:46:51.720	info	script.js.common.Solar: registered 0 subscriptions and 0 schedules
                            javascript.0	2017-05-21 12:46:51.695	info	script.js.common.Solar: exec: telnet 192.168.1.82 15000 | (echo '00*'; sleep 1s)
                            javascript.0	2017-05-21 12:46:51.689	info	Start javascript script.js.common.Solar
                            
                            1 Reply Last reply Reply Quote 0
                            • paul53
                              paul53 last edited by

                              @der_broker:

                              die CMD Zeile habe ich umgestellt und das script läuft scheinbar.

                              var cmd = "telnet 192.168.1.82 15000 | (echo '00*'; sleep 1s)";
                              ```` `  
                              

                              Als blutiger Linux-Laie behaupte ich: In dieser Reihenfolge kann die pipe nicht funktionieren; das Ergebnis muss "00*" sein. Versuche es mal ohne sleep (mit und ohne Semikolon / Klammern).

                              var cmd = "echo '00*' | telnet 192.168.1.82 15000";
                              

                              Woher hast Du dieses Kommando ? Was bedeutet '15000' ? Liefert Deine Quelle noch andere Möglichkeiten ?

                              1 Reply Last reply Reply Quote 0
                              • D
                                der_broker last edited by

                                Hab ich auch schon wieder umgestellt.

                                15000 ist der Port, auf den der TCP Server auf Anfragen wartet.

                                root@cubietruck:~# telnet 192.168.1.82 15000
                                Trying 192.168.1.82...
                                Connected to 192.168.1.82.
                                Escape character is '^]'.
                                00*
                                {00,21,05,2017,13,38,0030.6,00678,003240,00045138,06203,000,000.0,000,000.0,000,000.0,000,000.0,00},:
                                
                                Connection closed by foreign host.
                                

                                Das ist die Ausgabe, wenn ich die Sachen manuell über die Konsole eingebe.

                                Connection Closed kommt nach einem zweiten Enter.

                                Manuell funktioniert das über den IOBroker Cubie.

                                1 Reply Last reply Reply Quote 0
                                • D
                                  der_broker last edited by

                                  Andere Möglichkeiten gibt es auch.

                                  Es gibt CSV Dateien auf dem SolarviewPI.

                                  Diese müsste dann geholt werden, taggleich mit dem aktuellen Datum.

                                  Die TelnetFunktion läuft seit 2 Jahren ohne Probleme auf dem CCUPi.

                                  Wie geschrieben, möchte ich die CCU weiter entscripten!

                                  1 Reply Last reply Reply Quote 0
                                  • D
                                    der_broker last edited by

                                    Evtl. funktioniert das Script ja auch.

                                    Das Schließen kann doch auch darauf hindeuten, dass wie im Terminal die Verbindung halt geschlossen wurde.javascript.0 2017-05-21 13:51:51.342````
                                    error script.js.common.Solar: Exec-Fehler: Connection closed by foreign host.
                                    javascript.0 2017-05-21 13:51:50.300 info script.js.common.Solar: registered 0 subscriptions and 0 schedules
                                    javascript.0 2017-05-21 13:51:50.275 info script.js.common.Solar: exec: echo '00*';sleep 1 | telnet 192.168.1.82 15000
                                    javascript.0 2017-05-21 13:51:50.266 info Start javascript script.js.common.Solar
                                    javascript.0 2017-05-21 13:51:50.221 info Stop script script.js.common.Solar

                                    
                                    Dann läuft das Parsen evtl. nicht.
                                    
                                    Müsste da im Log etwas auftauchen?
                                    
                                    Was ist das mit den Adaptern einfach… :)
                                    1 Reply Last reply Reply Quote 0
                                    • paul53
                                      paul53 last edited by

                                      @der_broker:

                                      Dann läuft das Parsen evtl. nicht.

                                      Müsste da im Log etwas auftauchen? `

                                              if(debug) log(Solarroh);
                                      

                                      müsste genau den String liefern:

                                      {00,21,05,2017,13,38,0030.6,00678,003240,00045138,06203,000,000.0,000,000.0,000,000.0,000,000.0,00},:
                                      

                                      Das Parsen erfolgt erst im Anschluss. Ergebnis sollte sein '30.6' und '0678'.

                                      Das Parsen geht allerdings besser, da die Werte Komma-separiert sind:

                                              Solarroh = Solarroh.split(',');  // erzeugt ein Array
                                              var x = Solarroh[6];
                                              if(debug) log(x);
                                              var m = Solarroh[7];
                                              if(debug) log(m);
                                      
                                      
                                      1 Reply Last reply Reply Quote 0
                                      • paul53
                                        paul53 last edited by

                                        Vielleicht dauert 'sleep 1' zu lange ? Versuche es mal mit 'sleep 0.05'.

                                        1 Reply Last reply Reply Quote 0
                                        • D
                                          der_broker last edited by

                                          Danke Dir für Deine Hilfe.

                                          Leider kein Erfolg.

                                          Keinerlei Änderung.

                                          1 Reply Last reply Reply Quote 0
                                          • D
                                            der_broker last edited by

                                            In den Variablen kommt nichts an.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            548
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            25
                                            3982
                                            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