Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Youless Script

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Youless Script

    This topic has been deleted. Only users with topic management privileges can see it.
    • paul53
      paul53 @vitallo last edited by paul53

      @vitallo

      • Code bitte immer in Codetags (</>) posten.
      • Weshalb wird die gleiche URL zweimal hintereinander aufgerufen ?
      • Welche Werte sollen in Datenpunkte ? Nach der Maßeinheit (kW) zu urteilen, die beiden Leistungswerte, also die Werte in Zeilen 2 und 6 ?
      • Es fehlt die Umrechnung von Watt in kW
      • Ist ein Abfrage jede Sekunde erforderlich (Systemlast) ?

      Was ergibt folgendes Test-Skript in der Log-Ausgabe (Code tags) ?

      request.post({url: 'http://192.168.1.46/a?f=j'}, function(error, response, body) {
         if (!error && body) log(body);
      });
      

      Eine Rückgabe als JSON lässt sich einfacher per JS verarbeiten.

      V 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @vitallo last edited by paul53

        @vitallo sagte:

        Kann ich die parts[0] abfrage - in das erste Skript einbauen ?

        parts[0] liefert die erste Zeile (Zählerstand). Damit sind noch Wandlungen erforderlich, um den Wert als Zahl zu erhalten:

           let cnt = parseFloat(parts[0].trim().replace(',', '.'));
        
        1 Reply Last reply Reply Quote 0
        • V
          vitallo @paul53 last edited by

          @paul53 said in Youless Script:

          @vitallo

          • Code bitte immer in Codetags (</>) posten.
          • Weshalb wird die gleiche URL zweimal hintereinander aufgerufen ?
          • Welche Werte sollen in Datenpunkte ? Nach der Maßeinheit (kW) zu urteilen, die beiden Leistungswerte, also die Werte in Zeilen 2 und 6 ?
          • Es fehlt die Umrechnung von Watt in kW
          • Ist ein Abfrage jede Sekunde erforderlich (Systemlast) ?

          Was ergibt folgendes Test-Skript in der Log-Ausgabe (Code tags) ?

          request.post({url: 'http://192.168.1.46/a?f=j'}, function(error, response, body) {
             if (!error && body) log(body);
          });
          

          Eine Rückgabe als JSON lässt sich einfacher per JS verarbeiten.

          • Code bitte immer in Codetags (</>) posten.

          OK , Danke für diesen Hinweis

          • Weshalb wird die gleiche URL zweimal hintereinander aufgerufen ?

          Ich dachte bisher - zwei Werte - zweimal Abfragen.

          • Welche Werte sollen in Datenpunkte ? Nach der Maßeinheit (kW) zu urteilen, die beiden Leistungswerte, also die Werte in Zeilen 2 und 6 ?

          die ersten beiden Zeilen

          erste Zeile = Zählerstand
          zweite Zeile - Aktuelle Last

          • Es fehlt die Umrechnung von Watt in kW

          das wäre nicht notwenig

          • Ist ein Abfrage jede Sekunde erforderlich (Systemlast) ?

          Naja, für den Zählerstand sicherlich nicht.

          Was ergibt folgendes Test-Skript in der Log-Ausgabe (Code tags) ?

          2020-11-21 11:49:23.193 - info: javascript.0 (1107) script.js.Strom.Testskript: {"cnt":" 107835,806","pwr":410,"lvl":38,"dev":"(±7%)","det":"","con":"","sts":"","cs0":" 0,000","ps0":0,"raw":415}

          Mittlerweile , hab ich es soweit hinbekommen das mit dem Code, soweit die beiden Werte gezogen werden - jedoch brauche ich die Einheit (Watt, kHh) nicht.

          Bildschirmfoto 2020-11-21 um 12.55.44.png

          createState('AktuellerVerbrauch');
          createState('Zählerstand');
          
          var request= require('request');
          
          schedule("* * * * * *",
          
          function()
          {
          request.post({
          url: 'http://192.168.1.46/a'
          },
          
          function(error, response, body){
          if (body) {
          var parts = body.split('\n');
          setState('AktuellerVerbrauch', parts[1], true);
          }
          }); 
          
          request.post({
          url: 'http://192.168.1.46/a'
          }, function(error, response, body){
          if (body) {
          var parts = body.split('\n');
          setState('Zählerstand', parts[0], true);
          }
          });
          }
          );```
          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @vitallo last edited by paul53

            @vitallo sagte:

            {"cnt":" 107835,806","pwr":410,

            Die Leistung also in Watt ?

            createState('Aktuelle_Leistung', {type: 'number', unit: 'W', role: 'value.power'});
            createState('Zählerstand', {type: 'number', unit: 'kWh', role: 'value.power.consumption'});
            
            schedule('*/5 * * * * *' , function() { // alle 5 s
               request.post({url: 'http://192.168.1.46/a?f=j'}, function(error, response, body) {
                  if (!error && body) {
                     let obj = JSON.parse(body);
                     let cnt = parseFloat(obj.cnt.replace(',', '.'));
                     setState('Zählerstand', cnt, true);
                     setState('Aktuelle_Leistung', obj.pwr, true);
                  }
               });
            });
            
            V 1 Reply Last reply Reply Quote 0
            • V
              vitallo @paul53 last edited by

              @paul53 said in Youless Script:

              @vitallo sagte:

              {"cnt":" 107835,806","pwr":410,

              Die Leistung also in Watt ?

              createState('Aktuelle_Leistung', {type: 'number', unit: 'W', role: 'value.power');
              createState('Zählerstand', {type: 'number', unit: 'kWh', role: 'value.power.consumption');
              
              schedule('*/5 * * * * *' , function() { // alle 5 s
                 request.post({url: 'http://192.168.1.46/a?f=j'}, function(error, response, body) {
                    if (!error && body) {
                       let obj = JSON.parse(body);
                       let cnt = parseFloat(obj.cnt.trim().replace(',', '.'));
                       setState('Zählerstand', cnt, true);
                       setState('Aktuelle_Leistung', obj.pwr, true);
                    }
                 });
              });
              

              Am liebsten wäre mir gar keine Watt oder kWh angaben.

              Habe gerade mal Dein Script getestet - es erfolgt diese Fehlermeldung

              2020-11-21 12:15:24.573 - error: javascript.0 (1107) script.js.Strom.Stromzähler compile failed:
              at script.js.Strom.Stromzähler:1
              2020-11-21 12:15:24.573 - error: javascript.0 (1107) createState('Aktuelle_Leistung', {type: 'number', unit: 'W', role: 'value.power');
              2020-11-21 12:15:24.573 - error: javascript.0 (1107) ^
              2020-11-21 12:15:24.573 - error: javascript.0 (1107) SyntaxError: Unexpected token )
              2020-11-21 12:15:24.573 - error: javascript.0 (1107) at new Script (vm.js:83:7)
              2020-11-21 12:15:24.573 - error: javascript.0 (1107) at Object.createScript (vm.js:277:10)
              2020-11-21 12:15:24.573 - error: javascript.0 (1107) at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1336:28)
              2020-11-21 12:15:24.573 - error: javascript.0 (1107) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1559:37)
              2020-11-21 12:15:24.573 - error: javascript.0 (1107) at createProblemObject (/opt/iobroker/node_modules/iobroker.javascript/main.js:1645:17)
              2020-11-21 12:15:24.573 - error: javascript.0 (1107) at adapter.getForeignState (/opt/iobroker/node_modules/iobroker.javascript/main.js:1196:17)
              2020-11-21 12:15:24.573 - error: javascript.0 (1107) at client.get (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:616:17)
              2020-11-21 12:15:24.573 - error: javascript.0 (1107) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
              2020-11-21 12:15:24.573 - error: javascript.0 (1107) at promise.then (/opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49)
              2020-11-21 12:15:24.573 - error: javascript.0 (1107) at process._tickCallback (internal/process/next_tick.js:68:7)

              paul53 2 Replies Last reply Reply Quote 0
              • paul53
                paul53 @vitallo last edited by paul53

                @vitallo sagte:

                es erfolgt diese Fehlermeldung

                Sorry: Geschweifte schließende Klammer vergessen - ist oben korrigiert (Zeilen 1, 2).

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

                  @vitallo sagte:

                  Am liebsten wäre mir gar keine Watt oder kWh angaben.

                  Der Wert der Datenpunkte sind reine Zahlen.

                  V 1 Reply Last reply Reply Quote 0
                  • V
                    vitallo @paul53 last edited by

                    @paul53 said in Youless Script:

                    @vitallo sagte:

                    Am liebsten wäre mir gar keine Watt oder kWh angaben.

                    Der Wert der Datenpunkte sind reine Zahlen.

                    auch wenn die Einheit dahintersteht ? Ok - Danke

                    Hab eine Fehlermeldung erhalten.


                    2020-11-21 12:26:35.598 - info: javascript.0 (1107) Start javascript script.js.KellerStromzähler
                    2020-11-21 12:26:35.598 - error: javascript.0 (1107) script.js.KellerStromzähler compile failed:
                    at script.js.KellerStromzähler:2
                    2020-11-21 12:26:35.598 - error: javascript.0 (1107) createState('Aktuelle_Leistung', {type: 'number', unit: 'W', role: 'value.power');
                    2020-11-21 12:26:35.598 - error: javascript.0 (1107) ^
                    2020-11-21 12:26:35.598 - error: javascript.0 (1107) SyntaxError: Unexpected token )
                    2020-11-21 12:26:35.598 - error: javascript.0 (1107) at new Script (vm.js:83:7)
                    2020-11-21 12:26:35.599 - error: javascript.0 (1107) at Object.createScript (vm.js:277:10)
                    2020-11-21 12:26:35.599 - error: javascript.0 (1107) at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1336:28)
                    2020-11-21 12:26:35.599 - error: javascript.0 (1107) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1559:37)
                    2020-11-21 12:26:35.599 - error: javascript.0 (1107) at createProblemObject (/opt/iobroker/node_modules/iobroker.javascript/main.js:1645:17)
                    2020-11-21 12:26:35.599 - error: javascript.0 (1107) at adapter.getForeignState (/opt/iobroker/node_modules/iobroker.javascript/main.js:1196:17)
                    2020-11-21 12:26:35.599 - error: javascript.0 (1107) at client.get (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:616:17)
                    2020-11-21 12:26:35.599 - error: javascript.0 (1107) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
                    2020-11-21 12:26:35.599 - error: javascript.0 (1107) at promise.then (/opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49)
                    2020-11-21 12:26:35.599 - error: javascript.0 (1107) at process._tickCallback (internal/process/next_tick.js:68:7)

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

                      @vitallo sagte:

                      Hab eine Fehlermeldung erhalten.

                      Die beiden ersten Zeilen sind noch nicht korrigiert (schließende geschweifte Klammer).

                      createState('Aktuelle_Leistung', {type: 'number', unit: 'W', role: 'value.power'});
                      createState('Zählerstand', {type: 'number', unit: 'kWh', role: 'value.power.consumption'});
                      
                      V 1 Reply Last reply Reply Quote 0
                      • V
                        vitallo @paul53 last edited by

                        @paul53

                        Ok, jetzt ohne Fehlermeldung

                        Gibt es hier die Möglichkeit noch das W rauszunehmen ?

                        Bildschirmfoto 2020-11-21 um 13.33.50.png

                        in der Zeiten Abfrage ist es raus

                        Bildschirmfoto 2020-11-21 um 13.34.28.png

                        Das ist der Hammer wie schnell Du das zusammen hast - sag auf jeden fall schon mal DANKE

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

                          @vitallo sagte:

                          Gibt es hier die Möglichkeit noch das W rauszunehmen ?

                          Lösche die Maßeinheit in den Objekt-Eigenschaften unter "Allgemein" (Mülleimer rechts).

                          V 1 Reply Last reply Reply Quote 0
                          • V
                            vitallo @paul53 last edited by

                            @paul53

                            Dann kann ich nun nur noch Herzlichen Dank sagen.

                            Jetzt noch in Grafana einbauen und dann hab ich das mit Deiner Arbeit / Unterstützung erledigt.

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            847
                            Online

                            31.9k
                            Users

                            80.1k
                            Topics

                            1.3m
                            Posts

                            2
                            13
                            658
                            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