Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Energieerfassung mittels Weidmann emlog Script (JSON)

    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

    Energieerfassung mittels Weidmann emlog Script (JSON)

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

      Hallo Zusammen,

      ich habe mir das Weidmann Gerät emlog vor einiger Zeit gekauft um meine Stromzähler (1x Solar) (1x Bezug + Verbrauch) auszulesen.
      Im Gerät ist intern ein Raspberry verbaut und über die USB Schnittstellen werden Leseköpfe von Weimann angesteckt.
      Es lassen sich bis zu 3 Zähler mit einem Gerät auslesen.

      Das Gerät hat neben einer lokalen Auswertung über ein Windows Programm eine Webauswertung und eine JSON Seite über die man die Werte in IOBroker bekommt. Auch verschickt das Gerät auf Wunsch täglich eine eMail mit einer Verbrauchsdarstellung.
      Auf der SDKarte können noch dazu historische Verbrauchsdaten gespeichert werden (Tag, Monat, Jahr).

      Mittlerweile bin ich aber von der Lösung Weidmann zu einer Raspberry & IOBroker installation mit Smartmeter Adapter von Ingo umgestiegen. Die Leseköpfe
      von Weidmann funktionieren auch dort. Besten Dank nochmal an Ingo für den tollen Adapter.
      Warum? Bei der Lösung mit Weidmann habe ich nach 1-2 Wochen Betrieb leider immer wieder Probleme gehabt und musste das Gerät vor Ort neu starten.
      An was das liegt habe ich leider nicht herausgefunden und bin daher auf die einfachere Lösung mit Smartmeter und PI umgestiegen.

      PS: ich lese damit einem Itron ICE 3000 aus.
      Die Einstellung die ich hier im Forum gefunden habe hat am Anfang nicht geklappt, mit dieser Einstellung funktioniert aber der Zähler nun:

      Screenshot at Feb 07 10-21-34.png

      Falls aber jemand das Weidmann emlog Gerät noch hat, nachfolgende mein altes Script, bitte beachtet:

      • 192.168.xxx.xxx natürlich mit der Webadresse Eures Gerätes ersetzen!
      • Wenn Ihr kein Telegram habt die Zeile 78 aus kommentieren
      /*
      Abfrage per JSON
      Quelle: keine
      
      Die Ergebnisse kann man im JSON Viewer anschauen
      http://www.jsoneditoronline.org/
      
      Die Auswertung erfolgt dann mit dem folgende Script:
      **** Weidmann EmLog  ****
      */
      var logging = false;
      
      var request = require("request");
      var myJson = {};
      var instanz = 'javascript.0'; instanz = instanz + '.';
      var pfad = "EmLog_EnergieZaehler.";
      var idEmLogBezugZaehler180        = pfad + "BezugZaehler_180";
      var idEmLogLieferungZaehler280        = pfad + "LieferungZaehler_280";
      var idEmLogWirkleistung270        = pfad + "Wirkleistung_270";
      var idEmLogWLieferung280        = pfad + "WLieferung_280";
      
      createState(idEmLogBezugZaehler180, 0, {
          name: 'EmLog Strombezugszähler 180',
          desc: 'Bezugsmenge in KWh',
          type: 'number',
          role: 'value',
          unit: 'KWh'
      });
      
      createState(idEmLogLieferungZaehler280, 0, {
          name: 'EmLog StromLieferungzähler 280',
          desc: 'Lieferung Einspeisungsmenge in KWh',
          type: 'number',
          role: 'value',
          unit: 'KWh'
      });
      
      createState(idEmLogWirkleistung270, 0, {
          name: 'EmLog Wirkleistung 270',
          desc: 'Wirkleistung in W',
          type: 'number',
          role: 'value',
          unit: 'W'
      });
      
      createState(idEmLogWLieferung280, 0, {
          name: 'EmLog Leistung Lieferung 280',
          desc: 'Leistung in W',
          type: 'number',
          role: 'value',
          unit: 'W'
      });
      
      
      
      function parseJson(text) {
          if (text === "") return {};
          if (logging) log("readJson-text: " + text);
          try {
              json = JSON.parse(text);
          } catch (ex) {
              json = {};
          }
          if(!json) json = {};
          return json;
      }
      
      function readJson(url, callback) {
          request(url, function (err, state, body){
              if (logging) log("readJSon-url: " + url);
              if (body) {
                  if (logging) log("readJSon-body: " + body);
                  var json = parseJson(body);
                  callback(null, json);
              } else {
                  var error = "(" + err + ") ERROR bei Abfrage von: " + url;
                  log(error, "error");
                  setState("telegram.1.communicate.response", "!!!EmLog Energiezähler: Fehler beim Auslesen: " + err + "  " + url);
                  callback(error, null);
              }
          });
      }
      
      
      
      function main() {
          
          // erst mal die Allgemeinen Gesamtdaten des Zaehlers auslesen
          var url = 'http://192.168.xxx.xxx/pages/getinformation.php?export&meterindex=1';
          readJson(url, function(err,json) {
              if(!err) {
                  myJson = json;
                  //if (logging) log("Json: " + json);
                  if (logging) log("BezugZaehler_1.8.0: "    + parseFloat(myJson.Zaehlerstand_Bezug.Stand180),"info"); // Zähler KWh
                  if (logging) log("LieferungZaehler_2.8.0: "    + parseFloat(myJson.Zaehlerstand_Lieferung.Stand280),"info"); // Zähler KWh
                  if (logging) log("Wirkleistung_2.7.0: "    + parseFloat(myJson.Wirkleistung_Lieferung.Leistung270),"info"); // Leistung W
                  if (logging) log("WLieferung_2.8.0: "    + parseFloat(myJson.Kwh_Lieferung.Kwh280+1000),"info"); // Leistung W
      
                  setState(instanz+idEmLogBezugZaehler180  ,parseFloat(myJson.Zaehlerstand_Bezug.Stand180));
                  if (logging) log("setstate schreibe in Tag: " + instanz+idEmLogBezugZaehler180 + " den Wert:" + parseFloat(myJson.Zaehlerstand_Bezug.Stand180))
                  setState(instanz+idEmLogLieferungZaehler280  ,parseFloat(myJson.Zaehlerstand_Lieferung.Stand280));
                  if (logging) log("setstate schreibe in Tag: " + instanz+idEmLogLieferungZaehler280 + " den Wert:" + parseFloat(myJson.Zaehlerstand_Lieferung.Stand280))
                  setState(instanz+idEmLogWirkleistung270  ,parseFloat(myJson.Wirkleistung_Lieferung.Leistung270));
                  if (logging) log("setstate schreibe in Tag: " + instanz+idEmLogWirkleistung270 + " den Wert:" + parseFloat(myJson.Wirkleistung_Lieferung.Leistung270))
                  setState(instanz+idEmLogWLieferung280  ,parseFloat(myJson.Kwh_Lieferung.Kwh280)*1000);
                  if (logging) log("setstate schreibe in Tag: " + instanz+idEmLogWLieferung280 + " den Wert:" + parseFloat(myJson.Kwh_Lieferung.Kwh280)*1000)
             
              } else {
                  if (logging) log("Fehler beim Auslesen des EmLog Zählers über JSON. Keine Daten erhalten.","warn");
                  myJson = {};
              }
          });
      
      
      
      }
      
      schedule("0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58 * * * *", function () { // alle 2 Minute die Werte abfragen
          main();
      });
      
      // Beim Skriptstart die Werte abfragen
      setTimeout(main,1500);
      

      Gruss
      Thomas

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

      Support us

      ioBroker
      Community Adapters
      Donate

      828
      Online

      31.8k
      Users

      80.0k
      Topics

      1.3m
      Posts

      1
      1
      939
      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