Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst]: Easymeter bzw. Smart Grid Hub über Javascript auslesen (JSON)

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    288

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.3k

[gelöst]: Easymeter bzw. Smart Grid Hub über Javascript auslesen (JSON)

Scheduled Pinned Locked Moved Skripten / Logik
27 Posts 6 Posters 4.8k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • paul53P Offline
    paul53P Offline
    paul53
    wrote on last edited by
    #14

    Ich hatte das Skript nachträglich korrigiert (Zeile 3):

    var request = require('request');
    

    Ist das in Deinem Skript enthalten ?

    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

    1 Reply Last reply
    0
    • M Offline
      M Offline
      MIKAMI
      wrote on last edited by
      #15

      Ja, die Codezeile ist im Script enthalten…

      1 Reply Last reply
      0
      • paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by
        #16

        Dann versuch das mal:

        // Easymeter auslesen
        
        var request = require('request');
        var pfad = "Easymeter.";
        
        var idpower       = pfad + "Leistung";
        var idheute       = pfad + "Ertrag-heute";
        var idgestern     = pfad + "Ertrag-gestern";
        
        var url = 'http://192.168.2.8/json.txt?LogName=xxx&LogPSWD=xxx';
        
        createState(idpower, 0, {
            desc: 'Momentanleistung',
            type: 'number',
            role: 'value',
            unit: 'W'
        });
        
        createState(idheute, 0, {
            desc: 'Ertrag Tag',
            type: 'number',
            role: 'value',
            unit: 'kWh'
        });
        
        createState(idgestern, 0, {
            desc: 'Ertrag Vortag',
            type: 'number',
            role: 'value',
            unit: 'kWh'
        });
        
        function main() {
            request(url, function (err, state, body) {
                if(!err && state.statusCode == 200) {
                    var result;
                    try{
                        result = JSON.parse(body);
                        log('JSON response: ' + JSON.stringify(result, null, 2), 'debug');
                    } catch (e) {
                        log('JSON parse error:' + e, 'error');
                    }   
                    if (result) {
                        var values = result.billingData.values;
                        log("Momentanleistung: " + values[2].value,"info");
                        log("Ertrag Tag: "       + values[9].value,"info");
                        log("Ertrag Vortag: "    + values[10].value,"info");
                        setState(idpower  , values[2].value);
                        setState(idheute  , values[9].value);
                        setState(idgestern, values[10].value);
                    }
                } else {
                    log("Fehler: " + err + " bei Abfrage von: " + url, "warn");
                }
            });
        }
        
        schedule("*/10 * * * *", main); // alle 10 Minuten die Werte abfragen
        
        // Beim Skriptstart die Werte abfragen
        setTimeout(main,500);
        

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        1 Reply Last reply
        0
        • blauholstenB Offline
          blauholstenB Offline
          blauholsten
          Developer
          wrote on last edited by
          #17

          @paul53:

          Ich hatte das Skript nachträglich korrigiert (Zeile 3):

          var request = require('request');
          

          Ist das in Deinem Skript enthalten ? `

          Kann es sein das durch das asyncrone verhalten von "request" das Object noch nicht geladen ist?

          Entwickler vom: - Viessman Adapter
          - Alarm Adapter

          1 Reply Last reply
          0
          • blauholstenB Offline
            blauholstenB Offline
            blauholsten
            Developer
            wrote on last edited by
            #18

            Kannst ja mal das probieren…

            // Easymeter auslesen
            
            var request = require('request');
            var pfad = "Easymeter.";
            
            var idpower       = pfad + "Leistung";
            var idheute       = pfad + "Ertrag-heute";
            var idgestern     = pfad + "Ertrag-gestern";
            
            var url = 'http://192.168.2.8/json.txt?LogName=xxx&LogPSWD=xxx';
            
             createState(idpower, 0, {
                desc: 'Momentanleistung',
                type: 'number',
                role: 'value',
                unit: 'W'
            });
            
            createState(idheute, 0, {
                desc: 'Ertrag Tag',
                type: 'number',
                role: 'value',
                unit: 'kWh'
            });
            
            createState(idgestern, 0, {
                desc: 'Ertrag Vortag',
                type: 'number',
                role: 'value',
                unit: 'kWh'
            });
            
            function write(values){
                        log("Momentanleistung: " + values[2].value,"info");
                        log("Ertrag Tag: "       + values[9].value,"info");
                        log("Ertrag Vortag: "    + values[10].value,"info");
                        setState(idpower  , values[2].value);
                        setState(idheute  , values[9].value);
                        setState(idgestern, values[10].value);
            } 
            
            function main() {
                request(url, function (err, state, body) {
                    if(!err && state.statusCode == 200) {
                        try{
                            var values = JSON.parse(body).billingData.values;
                            setTimout(function(){
                            write(values)},100);
                        }
                        catch(e){
                            log(e + "parsen fehlgeschlagen");
                        }
            
                    } else {
                        log("Fehler: " + err + " bei Abfrage von: " + url, "warn");
                    }
                });
            }
            
            schedule("*/10 * * * *", main); // alle 10 Minuten die Werte abfragen
            
            // Beim Skriptstart die Werte abfragen
            setTimeout(main,500);
            

            Entwickler vom: - Viessman Adapter
            - Alarm Adapter

            1 Reply Last reply
            0
            • M Offline
              M Offline
              MIKAMI
              wrote on last edited by
              #19

              Hallo Zusammen,

              danke für die Rückmeldungen. Das Script von blauholsten bringt leider ebenfalls einen Fehler:

              javascript.0 2017-01-18 19:20:00.568 info javascript.0 script.js.Scripte.Easymeter_1: TypeError: Cannot read property 'values' of undefinedparsen fehlgeschlagen

              javascript.0 2017-01-18 19:18:42.130 info script.js.Scripte.Easymeter_1: TypeError: Cannot read property 'values' of undefinedparsen fehlgeschlagen

              Das aktualisierte Script von paul53 bringt folgende Logeinträge

              javascript.0 2017-01-18 19:35:12.595 info terminating

              javascript.0 2017-01-18 19:35:12.579 error at emitNone (events.js:72:20)

              javascript.0 2017-01-18 19:35:12.579 error at IncomingMessage.g (events.js:260:16)

              javascript.0 2017-01-18 19:35:12.579 error at IncomingMessage. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1001:12)

              javascript.0 2017-01-18 19:35:12.579 error at Request.emit (events.js:169:7)

              javascript.0 2017-01-18 19:35:12.579 error at emitOne (events.js:77:13)

              javascript.0 2017-01-18 19:35:12.579 error at Request. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1081:10)

              javascript.0 2017-01-18 19:35:12.579 error at Request.emit (events.js:172:7)

              javascript.0 2017-01-18 19:35:12.579 error at emitTwo (events.js:87:13)

              javascript.0 2017-01-18 19:35:12.579 error at Request.self.callback (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:186:22)

              javascript.0 2017-01-18 19:35:12.579 error at Request._callback (script.js.Scripte.Easymeter_1_2:45:48)

              javascript.0 2017-01-18 19:35:12.579 error TypeError: Cannot read property 'values' of undefined

              javascript.0 2017-01-18 19:35:12.565 error uncaught exception: Cannot read property 'values' of undefined

              Mach ich evt. selbst einen Fehler? Für das Verständnis kann mir evt. mal jemand erklären wie ich hier auf die values [2],[9] und [10] im Script komme wenn im JSON Output die gewünschten Werte an einer anderen Stelle stehen? Warum ist im JSON Output der Wert meistens "value" nur einmal "values" und im Script "values* .value Ist evt. da der Fehler oder liegt es an meinen Nichtwissen bezüglich Javascript und JSON :?

              Danke und Gruß
              
              Michael
              
              1 Reply Last reply
              0
              • blauholstenB Offline
                blauholstenB Offline
                blauholsten
                Developer
                wrote on last edited by
                #20

                EDIT: Blödsinniger Post :oops:

                Entwickler vom: - Viessman Adapter
                - Alarm Adapter

                1 Reply Last reply
                0
                • paul53P Offline
                  paul53P Offline
                  paul53
                  wrote on last edited by
                  #21

                  Füge mal vor oder nach

                  var result;
                  

                  ein und poste das Ergebnis:

                  log('body: ' + body);
                  

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                  1 Reply Last reply
                  0
                  • I Offline
                    I Offline
                    ichderarnd
                    wrote on last edited by
                    #22

                    @MIKAMI:

                    Mach ich evt. selbst einen Fehler? Für das Verständnis kann mir evt. mal jemand erklären wie ich hier auf die values [2],[9] und [10] im Script komme wenn im JSON Output die gewünschten Werte an einer anderen Stelle stehen? Warum ist im JSON Output der Wert meistens "value" nur einmal "values" und im Script "values* .value Ist evt. da der Fehler oder liegt es an meinen Nichtwissen bezüglich Javascript und JSON :?

                    Danke und Gruß
                    
                    Michael
                    
                    Hallo Michael,
                    
                    
                    
                    guck Dir mal die Zeile:
                    
                    
                    ````
                    var billingData = result["billingData:"];
                    ````
                    
                    aus meinem Code weiter oben im Post an. EFR hat da leider einen Doppelpunkt in das "billingData" gebastelt…
                    
                    Wenn Du es so löst, sollte es auch mit den anderen Beispielen klappen.
                    
                    
                    
                    Viele Grüße
                    
                    arndl ` 
                    
                    1 Reply Last reply
                    0
                    • paul53P Offline
                      paul53P Offline
                      paul53
                      wrote on last edited by
                      #23

                      @arndl:

                      EFR hat da leider einen Doppelpunkt in das "billingData" gebastelt… `
                      Stimmt, habe ich glatt übersehen :? Dann muss die Zeile

                                      var values = result.billingData.values;
                      

                      geändert werden in

                                      var values = result["billingData:"].values;
                      
                      

                      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                      1 Reply Last reply
                      0
                      • M Offline
                        M Offline
                        MIKAMI
                        wrote on last edited by
                        #24

                        Hallo Zusammen,

                        vielen Dank für die Unterstützung und Fehlersuche. Ich habe jetzt die Scripte auf meine 2 Smart Grid Hubs erfolgreich angepasst und bekomme die Werte die ich brauche…

                        1876_smart_grid_hub.jpg

                        Danke und Gruß Michael

                        1 Reply Last reply
                        0
                        • paul53P Offline
                          paul53P Offline
                          paul53
                          wrote on last edited by
                          #25

                          @MIKAMI:

                          Ich habe jetzt die Scripte auf meine 2 Smart Grid Hubs erfolgreich angepasst und bekomme die Werte die ich brauche.. `
                          Dann markiere bitte den Beitrag als [gelöst].

                          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                          1 Reply Last reply
                          0
                          • M Offline
                            M Offline
                            MIKAMI
                            wrote on last edited by
                            #26

                            Betreff markiert als [gelöst]

                            Danke

                            1 Reply Last reply
                            0
                            • apollon77A Offline
                              apollon77A Offline
                              apollon77
                              wrote on last edited by
                              #27

                              Alle interessierten können auch gern den neuen Adapter testen …

                              http://forum.iobroker.net/viewtopic.php?f=36&t=5047

                              Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                              • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                              • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                              1 Reply Last reply
                              0
                              Reply
                              • Reply as topic
                              Log in to reply
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes


                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              576

                              Online

                              32.7k

                              Users

                              82.5k

                              Topics

                              1.3m

                              Posts
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                              ioBroker Community 2014-2025
                              logo
                              • Login

                              • Don't have an account? Register

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Home
                              • Recent
                              • Tags
                              • Unread 0
                              • Categories
                              • Unreplied
                              • Popular
                              • GitHub
                              • Docu
                              • Hilfe