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
    13
    1
    142

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

  • 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.
  • apollon77A Offline
    apollon77A Offline
    apollon77
    wrote on last edited by
    #7

    PS: Welche anderen Formate sind denn per HTTP noch erreichbar? SML auch? Dann wäre es noch einfacher weil ich das schon parsen kann.

    Habt Ihr mal ne Doku?

    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
    • I Offline
      I Offline
      ichderarnd
      wrote on last edited by
      #8

      Es geht um dieses Gerät:

      http://www.efr.de/fileadmin/content/dow … NEU_DE.pdf

      Die Beschreibung der Schnittstelle finde ich grade nicht auf dem EFR Server. Sie liegt aber z.B. hier:

      http://www.sev-soemmerda.de/de/Strom/Sm … id-Hub.pdf

      Was anderes als JSON per http geht meines Wissens nicht. Klappt aber gut!

      Ich hatte ebenfalls daran gedacht, daraus einen Adapter zu bauen. Habe mich in die Adapter-Entwicklung aber bisher noch nicht eingelesen. Würde also noch etwas dauern.

      Viele Grüße

      arndl

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

        Ich schaue mal rein

        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
        • apollon77A Offline
          apollon77A Offline
          apollon77
          wrote on last edited by
          #10

          Laut Produktinformationen hat das Ding auch IR … Da kommt binärkodiertes SML raus ... Das kann ich schon direkt :-)

          Aber ich schaue mal das ich in meinen Adapter auch ne URL Option einbaue wo man dieses Format parsen kann, Am Ende bauen die nur SML in ein JSON um ...

          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
          • I Offline
            I Offline
            ichderarnd
            wrote on last edited by
            #11

            Stimmt… SML ist in den technischen Daten mit aufgeführt. Bisher sagt mir das Protokoll allerdings nichts.

            Ob das Gerät das über Ethernet spricht? Für SML scheint das Übertragungsmedium nicht festgelegt zu sein.

            Den "Parser" für das EFR JSON Format habe ich ja weiter oben gepostet. Der funktioniert so, wie er da steht.

            arndl

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

              Das Parsen des JSON ist nicht das Thema :-)

              Also am Ende ist der Smart Grid Hub nur ein Aufsatz auf den Easymeter-Zähler und holt dort per SML die Daten alle paar Sekunden ab und bereitet diese auf und stellt Sie zur Verfügung.

              Wird in der ersten version mit drin sein …

              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
              • M Offline
                M Offline
                MIKAMI
                wrote on last edited by
                #13

                Hallo Zusammen,

                vielen Dank für die schnelle Hilfe und konstruktiven Vorschläge. Das Script von Arndl funktioniert und ließt auf jedenfall schon mal einige Werte aus dem Easymeter aus. Das Script von paul53 ist einfacher (da natürlich weniger Werte) scheint aber irgendwie nicht zu funktionieren. Es kommt zu folgender Fehlermeldung:

                javascript.0 2017-01-17 19:52:04.579 info terminating

                javascript.0 2017-01-17 19:52:04.569 error at emitNone (events.js:72:20)

                javascript.0 2017-01-17 19:52:04.569 error at IncomingMessage.g (events.js:260:16)

                javascript.0 2017-01-17 19:52:04.569 error at IncomingMessage. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1001:12)

                javascript.0 2017-01-17 19:52:04.569 error at Request.emit (events.js:169:7)

                javascript.0 2017-01-17 19:52:04.569 error at emitOne (events.js:77:13)

                javascript.0 2017-01-17 19:52:04.569 error at Request. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1081:10)

                javascript.0 2017-01-17 19:52:04.569 error at Request.emit (events.js:172:7)

                javascript.0 2017-01-17 19:52:04.569 error at emitTwo (events.js:87:13)

                javascript.0 2017-01-17 19:52:04.569 error at Request.self.callback (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:186:22)

                javascript.0 2017-01-17 19:52:04.569 error at Request._callback (script.js.Scripte.Easymeter:38:54)

                javascript.0 2017-01-17 19:52:04.569 error TypeError: Cannot read property 'values' of undefined

                javascript.0 2017-01-17 19:52:04.555 error uncaught exception: Cannot read property 'values' of undefined

                javascript.0 2017-01-17 19:52:03.900 info script.js.Scripte.Easymeter: registered 0 subscriptions and 1 schedule

                Falls es zu den Logs noch eine Vorschlag zur Abhilfe gibt gerne, ansonsten werde ich mal versuchen am Wochenende das Script von arndl auf meine Bedürfnisse zu reduzieren (das sollte ja kein Problem sein)

                Danke auch an moebius. An node-red habe ich mich allerdings bis jetzt noch nicht rangewagt (kommt sicherlich noch…)

                Vielen Dank

                Michael

                1 Reply Last reply
                0
                • 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
                                          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.4k

                                          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