Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Ausführen von aktualisierendem JavaScript Code

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Ausführen von aktualisierendem JavaScript Code

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

      So, habe es jetzt hinbekommen.

      Der folgende Code funktioniert jetzt, dabei habe ich Logging kennengelernt, scheduling und wie man die Werte in Ereignisse ausgibt und Variablen schreibt.

      schedule("* * * * * *",
      
      function()
      {
      createState('CurrentElectricityUsage_WP');
      createState('CurrentElectricityUsage_HH');
      
      var request= require('request');
      request.post({
        url:     'http://192.168.178.51/a'
      }, function(error, response, body){
        if (body) {
            var parts_WP = body.split('\n')[1].split(' ')[0];
            setState('CurrentElectricityUsage_WP', parts_WP, true);
        }
      }); 
      
      request.post({
        url:     'http://192.168.178.52/a'
      }, function(error, response, body){
        if (body) {
            var parts_HH = body.split('\n')[1].split(' ')[0];
            setState('CurrentElectricityUsage_HH', parts_HH, true);
        }
      });
      }
      )
      

      Danke nochmal für den guten Start!

      Grüße, Jens

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

        @MistyReblaus:

        So, habe es jetzt hinbekommen.

        Der folgende Code funktioniert jetzt, dabei habe ich Logging kennengelernt, scheduling und wie man die Werte in Ereignisse ausgibt und Variablen schreibt.

        schedule("* * * * * *",
        
        function()
        {
        createState('CurrentElectricityUsage_WP');
        createState('CurrentElectricityUsage_HH');
        
        var request= require('request');
        request.post({
          url:     'http://192.168.178.51/a'
        }, function(error, response, body){
          if (body) {
              var parts_WP = body.split('\n')[1].split(' ')[0];
              setState('CurrentElectricityUsage_WP', parts_WP, true);
          }
        }); 
        
        request.post({
          url:     'http://192.168.178.52/a'
        }, function(error, response, body){
          if (body) {
              var parts_HH = body.split('\n')[1].split(' ')[0];
              setState('CurrentElectricityUsage_HH', parts_HH, true);
          }
        });
        }
        )
        

        Danke nochmal für den guten Start!

        Grüße, Jens `
        Nicht schlecht für einen Tag. Nimm createState und var request =

        ausserhalb schedule. Am Anfang z.B. das muss nicht jede Minute ausgeführt werden.

        1 Reply Last reply Reply Quote 0
        • S
          Snoopy81 last edited by

          Hallo,

          ich habe auch einen youless und würde diesen gerne einbinden.

          Da ich aber immernoch Anfänger bin, scheitere ich schon daran, in welches Objekt ich wohl den Code einfügen muss.

          Kann jemand helfen?

          Vielleicht ein kleines todo.

          Der Youless ist ja inzwischen sehr verbreitet und arbeit auch recht zuverlässig.

          Gruß

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

            @Snoopi81: Der Code wird in keinem Objekt eingefügt, sondern im ioBroker.admin unter "Scripte" als eigenes Script. Die Seite "Scripte" musst du u.U. erst freischalten (* rechts vom "Admin").

            Im Script werden zwei Variable (als States) angelegt und der youless wird dann jede Minute abgefragt. Die Werte werden in die beiden Variablen geschrieben. In den Widgets von ioBroker.vis kannst du dann auf den Inhalt dieser Variablen über die Objekt-ID (javascript.0\. …) zugreifen.
            
            Im Script musst du noch die URL auf die IP deines youless anpassen.
            
            ````
            createState('CurrentElectricityUsage_WP');
            createState('CurrentElectricityUsage_HH');
            
            var request= require('request');
            
            schedule("* * * * * *",
            
            function()
            {
            request.post({
              url:     'http://192.168.178.51/a'
            }, function(error, response, body){
              if (body) {
                  var parts_WP = body.split('\n')[1].split(' ')[0];
                  setState('CurrentElectricityUsage_WP', parts_WP, true);
              }
            }); 
            
            request.post({
              url:     'http://192.168.178.52/a'
            }, function(error, response, body){
              if (body) {
                  var parts_HH = body.split('\n')[1].split(' ')[0];
                  setState('CurrentElectricityUsage_HH', parts_HH, true);
              }
            });
            }
            )
            ````
            1 Reply Last reply Reply Quote 0
            • B
              Böhner last edited by

              @Uhula:

              @Snoopi81: Der Code wird in keinem Objekt eingefügt, sondern im ioBroker.admin unter "Scripte" als eigenes Script. Die Seite "Scripte" musst du u.U. erst freischalten (* rechts vom "Admin").

              Im Script werden zwei Variable (als States) angelegt und der youless wird dann jede Minute abgefragt. Die Werte werden in die beiden Variablen geschrieben. In den Widgets von ioBroker.vis kannst du dann auf den Inhalt dieser Variablen über die Objekt-ID (javascript.0\. …) zugreifen.
              
              
              
              Im Script musst du noch die URL auf die IP deines youless anpassen.
              
              
              ````
              createState('CurrentElectricityUsage_WP');
              createState('CurrentElectricityUsage_HH');
              
              var request= require('request');
              
              schedule("* * * * * *",
              
              function()
              {
              request.post({
                url:     'http://192.168.178.51/a'
              }, function(error, response, body){
                if (body) {
                    var parts_WP = body.split('\n')[1].split(' ')[0];
                    setState('CurrentElectricityUsage_WP', parts_WP, true);
                }
              }); 
              
              request.post({
                url:     'http://192.168.178.52/a'
              }, function(error, response, body){
                if (body) {
                    var parts_HH = body.split('\n')[1].split(' ')[0];
                    setState('CurrentElectricityUsage_HH', parts_HH, true);
                }
              });
              }
              )
              ````
              Hallo,
              
              
              
              mit welchem Widget last Ihr den Wert Anzeigen?
              
              Vielen Dank. ` 
              1 Reply Last reply Reply Quote 0
              • Uhula
                Uhula last edited by

                @Böhner:

                mit welchem Widget last Ihr den Wert Anzeigen? `
                Ich, gar nicht, weil ich keinen youless habe 😉 Ich habe nur versucht eine Erläuterung zu geben, wie man minütlich die Werte in javascript.0-Variable schreibt.

                Zum Darstellen in vis kannst du dann z.B. das basic HTML - Widget nehmen und in der HTML-Eigenschaft {javascript.0.CurrentElectricityUsage_WP} eintragen; über die Bindingfunktionalität von vis wird dort dann der Variablenwert geholt und angezeigt. Alternativ im basic String-Widget und unter Objekt-ID javascript.0.CurrentElectricityUsage_WP wählen.

                1 Reply Last reply Reply Quote 0
                • B
                  Böhner last edited by

                  ja danke läuft jetzt 🙂

                  1 Reply Last reply Reply Quote 0
                  • A
                    andreas0003 last edited by

                    Hallo, vielen Dank für diese Anleitung. Ich habe auch 2 LS120 jedoch am s0 Bus angeschlossen. Leider liefert mir das Skript immer nur den Wert 0. Was müsste ich denn ändern, damit die Daten vom s0 ausgelesen werden?

                    Hier die Ausgabe, wenn ich den Link im Browser eingebe ip\a

                    86577,100 kWh

                    0 Watt

                    0%

                    2090,968 kWh

                    713 Watt

                    0

                    Es wird wohl der obere und nicht der untere Wert geloggt.

                    viele Grüße

                    Andreas

                    1 Reply Last reply Reply Quote 0
                    • A
                      andreas0003 last edited by

                      Hallo,

                      hat keiner eine Idee?

                      vg

                      Andreas

                      1 Reply Last reply Reply Quote 0
                      • M
                        mx-driver last edited by

                        Hallo,

                        Kann man auch den Zählerstand abfragen?

                        Gruss

                        Mx-driver

                        V 1 Reply Last reply Reply Quote 0
                        • V
                          vitallo @mx-driver last edited by

                          Hallo, auch wenn schon etwas älter - habe ich die gleich Fragestellung. Wie kann ich den Zählerstand abfragen ?

                          Gefunden hab ich nur das als php Code
                          <?
                          $IP = GetValue(42120 /[ System\IP-Adressen\Youless LS110]/);
                          $url = "http://$IP/a?f=j";

                          $handle=fopen($url, "r");
                          $json="";
                          $json=fgets($handle, 10000 /[Objekt #10000 existiert nicht]/);
                          fclose($handle);
                          $Meter= json_decode($json);

                          SetValue(54104 /[ Versorgung\Strommessung\EVN\Zählerstand]/, 1str_replace(",",".",$Meter->cnt));
                          SetValue(24466 /
                          [ Versorgung\Strommessung\EVN\aktuelle Leistung]/, 1str_replace(",",".",$Meter->pwr));
                          SetValue(33148 /[ Versorgung\Strommessung\EVN\Signalstärke]/, 1*str_replace(",",".",$Meter->lvl));

                          ?>

                          Jemand eine Idee ?

                          K 1 Reply Last reply Reply Quote 0
                          • K
                            knatterman @vitallo last edited by

                            Hallo,

                            bin gerade bei meinen Versuchen, die Daten des youless für Vis zu nutzen auf folgendes Wiki gestoßen:

                            https://wiki.td-er.nl/index.php?title=YouLess

                            Hilft vielleicht irgendwann irgendwem ...

                            Gruß
                            Frank

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

                              Ich hatte auch eine Zeit nach einer Anleitung gesucht um den youless auszuwerten. Parser und JS fand ich aber eher kompliziert im Vergleich zu Blockly und JSON. Ich hab es wie folgt umgesetzt. Ggf hilft das noch jmd anders?! Man brauch dazu nur 3 Datenpunkte. Gesamtverbrauch als string und Rest als number. Oder man konvertiert im Blockly den ersten Wert als Number. Geht auch. Funktioniert einwandfrei bei mir.
                              5cef679d-0ed2-475d-94c8-921ef4a6d758-image.png

                              Es basiert auf dieser Anleitung: https://www.machs-smart.de/json-blockly-einlesen-parsen-verarbeiten/

                              M D 2 Replies Last reply Reply Quote 0
                              • M
                                mx-driver @eierfeile last edited by mx-driver

                                @eierfeile Klasse!
                                nachgebaut und hat direkt funktioniert.

                                Hier mal das Blockly falls es jemand braucht 🙂

                                <xml xmlns="https://developers.google.com/blockly/xml">
                                  <variables>
                                    <variable id="U`X2r)s~:#1daPU6#C5S">result</variable>
                                  </variables>
                                  <block type="schedule" id="h)sr[UqjCX4r`J0y,NOU" x="213" y="38">
                                    <field name="SCHEDULE">*/5 * * * *</field>
                                    <statement name="STATEMENT">
                                      <block type="request" id="C@^EhcbOp4pfjda+@DS$">
                                        <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation>
                                        <field name="WITH_STATEMENT">TRUE</field>
                                        <field name="LOG"></field>
                                        <value name="URL">
                                          <shadow type="text" id="?F;%q5pb.vNj3_(|nAbj">
                                            <field name="TEXT">http://192.168.178.130/a?f=j</field>
                                          </shadow>
                                        </value>
                                        <statement name="STATEMENT">
                                          <block type="control" id="#qP~WDbEXNtX-^w0YWmo">
                                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                            <field name="OID">Meine_Geraete.0.Youless_Gesamtverbrauch</field>
                                            <field name="WITH_DELAY">FALSE</field>
                                            <value name="VALUE">
                                              <block type="get_attr" id="DT:+-IH`~S/_~:^(cIe1">
                                                <value name="PATH">
                                                  <shadow type="text" id="pP)C9-DV_0PgX]OX,E)w">
                                                    <field name="TEXT">cnt</field>
                                                  </shadow>
                                                </value>
                                                <value name="OBJECT">
                                                  <block type="convert_json2object" id="V=JUWD*B8!qW2PGQOo@F">
                                                    <value name="VALUE">
                                                      <block type="variables_get" id=":V0ok#UMRzhU+v6M6F1~">
                                                        <field name="VAR" id="U`X2r)s~:#1daPU6#C5S">result</field>
                                                      </block>
                                                    </value>
                                                  </block>
                                                </value>
                                              </block>
                                            </value>
                                            <next>
                                              <block type="control" id="~0Y4#HidzaQ3;PM6H(0C" disabled="true">
                                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                <field name="OID">Meine_Geraete.0.Youless_Momentanverbrauch</field>
                                                <field name="WITH_DELAY">FALSE</field>
                                                <value name="VALUE">
                                                  <block type="get_attr" id="Jo.jGs.yi=0(1_[;BcO|">
                                                    <value name="PATH">
                                                      <shadow type="text" id="#DOA[Vtj?9bhe2KGAZ6k">
                                                        <field name="TEXT">pwr</field>
                                                      </shadow>
                                                    </value>
                                                    <value name="OBJECT">
                                                      <block type="convert_json2object" id="`}J3R/ZvCZ}_HFvs,7r6">
                                                        <value name="VALUE">
                                                          <block type="variables_get" id="2[,~KAOhOS3:D++8VL4f">
                                                            <field name="VAR" id="U`X2r)s~:#1daPU6#C5S">result</field>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </value>
                                                  </block>
                                                </value>
                                                <next>
                                                  <block type="control" id="V7qiF1[#4B%UF[;H.N~D" disabled="true">
                                                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                    <field name="OID">Meine_Geraete.0.Youless_Signalstaerke</field>
                                                    <field name="WITH_DELAY">FALSE</field>
                                                    <value name="VALUE">
                                                      <block type="get_attr" id="c4B1sGnP32M@w(0kpy/g">
                                                        <value name="PATH">
                                                          <shadow type="text" id="koHP)70[DX91M@B@P0hX">
                                                            <field name="TEXT">lvl</field>
                                                          </shadow>
                                                        </value>
                                                        <value name="OBJECT">
                                                          <block type="convert_json2object" id="{20BTmI`~|{2m)?A)u:6">
                                                            <value name="VALUE">
                                                              <block type="variables_get" id="9%rHN^Uwq8X#m]qsQY?F">
                                                                <field name="VAR" id="U`X2r)s~:#1daPU6#C5S">result</field>
                                                              </block>
                                                            </value>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </value>
                                                  </block>
                                                </next>
                                              </block>
                                            </next>
                                          </block>
                                        </statement>
                                      </block>
                                    </statement>
                                  </block>
                                </xml>
                                
                                1 Reply Last reply Reply Quote 0
                                • D
                                  DeeJayDave @eierfeile last edited by

                                  @eierfeile Hallo zusammen,
                                  vielen Dank für das Skript! 🙂 Tolle Arbeit. Ich habe jedoch noch Einträge im Log, die ich nicht fixen kann:

                                  javascript.0
                                  2021-09-02 10:37:40.159	warn	You are assigning a string to the state "alias.0.Youless_Zählerstand" which expects a number. Please fix your code to use a number or change the state type to string. This warning might become an error in future versions.
                                  
                                  javascript.0
                                  2021-09-02 10:37:40.088	info	State value to set for "0_userdata.0.Youless_Gesamtverbrauch" has to be type "number" but received type "string"
                                  

                                  Könnt ihr mir verraten, wie euer Datenpunkt "Gesamtverbrauch" definiert ist?

                                  _ 1 Reply Last reply Reply Quote 0
                                  • _
                                    _techniker_ @DeeJayDave last edited by _techniker_

                                    @deejaydave said in Ausführen von aktualisierendem JavaScript Code:

                                    @eierfeile Hallo zusammen,
                                    vielen Dank für das Skript! 🙂 Tolle Arbeit. Ich habe jedoch noch Einträge im Log, die ich nicht fixen kann:

                                    javascript.0
                                    2021-09-02 10:37:40.159	warn	You are assigning a string to the state "alias.0.Youless_Zählerstand" which expects a number. Please fix your code to use a number or change the state type to string. This warning might become an error in future versions.
                                    
                                    javascript.0
                                    2021-09-02 10:37:40.088	info	State value to set for "0_userdata.0.Youless_Gesamtverbrauch" has to be type "number" but received type "string"
                                    

                                    Könnt ihr mir verraten, wie euer Datenpunkt "Gesamtverbrauch" definiert ist?

                                    Das würde mich auch interessieren.

                                    23457,066 ist mein Wert und bekomme die selber Meldung.

                                    ...
                                    createState('Aktuelle_Leistung', {type: 'number', unit: 'W', role: 'value.power'});
                                    createState('Zählerstand', {type: 'number' , unit: 'kWh', role: 'value.power'});
                                    ...
                                    setState('Zählerstand', obj.cnt, true);
                                             setState('Aktuelle_Leistung', obj.pwr, true);
                                    

                                    Aktuelle_Leistung wird ohne Fehler übernohmen.

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

                                      Keiner ne Idee dazu? 😞

                                      _ 1 Reply Last reply Reply Quote 0
                                      • _
                                        _techniker_ @DeeJayDave last edited by

                                        @deejaydave said in Ausführen von aktualisierendem JavaScript Code:

                                        Keiner ne Idee dazu? 😞

                                        Sieht so aus. Schade. 😞

                                        _ 1 Reply Last reply Reply Quote 0
                                        • _
                                          _techniker_ @_techniker_ last edited by _techniker_

                                          @_techniker_

                                          http://192.168.*.*/a?f=j
                                          

                                          Mit diesem Befehl lese ich die Daten aus und bekomme:

                                          cnt " 23559,653"
                                          pwr 661
                                          lvl 24
                                          dev "(±0%)"
                                          det ""
                                          con ""
                                          sts ""
                                          cs0 " 0,000"
                                          ps0 0
                                          raw 221

                                          Evtl liegt es ja an " "
                                          Nur wie bekomme ich das weg?

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

                                            So wie es aussieht, werden wir mit diesem Fehler leben müssen 😞

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            981
                                            Online

                                            31.7k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            14
                                            32
                                            5291
                                            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