Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Smartmeter mit Landis+Gyr E650

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Smartmeter mit Landis+Gyr E650

    This topic has been deleted. Only users with topic management privileges can see it.
    • Michael Uray
      Michael Uray @Homoran last edited by

      @homoran said in Smartmeter mit Landis+Gyr E650:

      Der Adapter "regelt" dann nach (wenn ich mich nicht täusche.

      Ja, das seint so zu sein, denn er schaltet dann auf 9600 hoch, was ja auch korrekt wäre, doch kommen dann mit 9600 aus irgend einem Grund keine brauchbaren Daten mehr an.
      Ich frage mich nur warum, wo der Zähler doch eigentlich meldet dies zu unterstützen?

      Hier habe ich noch ein PDF mit der Norm gefunden:
      https://www.ungelesen.net/protagWork/media/downloads/solar-steuerung/iec62056-21{ed1.0}en_.pdf

      Protocol mode C and protocol mode E (with baud rate changeover, with
      acknowledgement / option select message or other protocols)
      0 - 300 Bd
      1 - 600 Bd
      2 - 1 200 Bd
      3 - 2 400 Bd
      4 - 4 800 Bd
      5 - 9 600 Bd
      6 - 19 200 Bd
      7, 8, 9 - reserved for later extensions.

      d) Protocol mode D (data transmission at 2 400 Bd)
      Baud rate character is always 3.

      "Protocol mode D (data transmission at 2 400 Bd)"
      Eventuell ist das hier der Auslöser?

      1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @Michael Uray last edited by Homoran

        @michael-uray sagte in Smartmeter mit Landis+Gyr E650:

        "Protocol mode D (data transmission at 2 400 Bd)"
        Eventuell ist das hier der Auslöser?

        Wo hast du die Info über mode D gefunden?

        in deinem Log stand:
        @michael-uray sagte in Smartmeter mit Landis+Gyr E650:

        D0 Protocol E (2) not fully supported! Let us try it 🙂 Please contact the developer if you have problems

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

          Also ich sehe im log das der Adapter die Logon Nachricht korrekt empfängt und auch parst das es 9600 Baud sind und dem Zähler mit "050" dann das Kommando zum Baudrate-CHangeover sendet ... und dann "hört" er auf 9600 baud ... ALso wenn Es mit nem Baudrate override tut schau nochmal nach dem Sitz des Kopfes bzw das die Senderichtung korrekt funktioniert

          1 Reply Last reply Reply Quote 0
          • apollon77
            apollon77 @Homoran last edited by

            @homoran sagte in Smartmeter mit Landis+Gyr E650:

            D0 Protocol E (2) not fully supported! Let us try it Please contact the developer if you have problems

            Ja Protokoll E heisst quasi "die Daten könnten anders aussehen als normalerweise) ... hat aber an sich mit dem Baudrates und so nichts zu tun

            1 Reply Last reply Reply Quote 0
            • Michael Uray
              Michael Uray last edited by Michael Uray

              Ich hatte damals auch noch ein Script für mich geschrieben, welches diverse Werte ausrechnet die in den ausgelesenen Daten nicht vorhanden sind. Bzw. bildet es auch die Werte in leichter verständlichen Objektnamen ab, denn die OBIS Codes sind ja nicht besonders gut zu merken.

              Vielleicht kann es ja jemand brauchen.

              Edit 1:
              DrwPower wird aktuell noch nicht berechnet und DlvPower müsste nur bei negativen Werten übernommen werden.

              const CtFactor = 200    // factor for current transformers
              const VtFactor = 1      // factor for voltage transformers
              const path = '0_userdata.0.EMTR1'
              
              
              // create required objects on startup
              createState(path + '.info.MeterOwnerNumber')
              createState(path + '.info.Firmware')
              createState(path + '.info.Error')
              
              createState(path + '.Voltage', {type: "number", unit: 'V'})
              createState(path + '.VoltageL1', {type: "number", unit: 'V'})
              createState(path + '.VoltageL2', {type: "number", unit: 'V'})
              createState(path + '.VoltageL3', {type: "number", unit: 'V'})
              
              createState(path + '.Current', {type: "number", unit: 'A'})
              createState(path + '.CurrentL1', {type: "number", unit: 'A'})
              createState(path + '.CurrentL2', {type: "number", unit: 'A'})
              createState(path + '.CurrentL3', {type: "number", unit: 'A'})
              
              createState(path + '.Frequency', {type: "number", unit: 'Hz'})
              createState(path + '.cosPhi', {type: "number"})
              createState(path + '.sinPhi', {type: "number"})
              
              // DLV = delivery to grid
              createState(path + '.DLV1.Power', {type: "number", unit: 'kW'})
              createState(path + '.DLV1.Energy', {type: "number", unit: 'kWh'})
              createState(path + '.DLV1.ReactiveEnergy', {type: "number", unit: 'kVarh'})
              createState(path + '.DLV1.ReactivePower', {type: "number", unit: 'kVar'})
              
              // DRW = draw from grid
              createState(path + '.DRW1.Power', {type: "number", unit: 'kW'})
              createState(path + '.DRW1.Energy', {type: "number", unit: 'kWh'})
              createState(path + '.DRW1.ReactiveEnergy', {type: "number", unit: 'kVarh'})
              createState(path + '.DRW1.ReactivePower', {type: "number", unit: 'kVar'})
              
              var MeterOwnerNumber
              var Firmware
              var Error 
              
              var CurrentTime
              var CurrentDate
              var Frequency
              
              var CurrentL1 // = 3.43 A
              var CurrentL2 // = 3.35 A
              var CurrentL3 // = 3.36 A
              var CurrentN  // = 0.04 A
              var Current // = calulated
              
              var VoltageL1 // = 241.1 V
              var VoltageL2 // = 241.1 V
              var VoltageL3 // = 241.1 V
              var Voltage // = calulated
              
              var Angle_U_L1_to_U_L1 // = 0*Deg
              var Angle_U_L2_to_U_L1 // = 120*Deg
              var Angle_U_L3_to_U_L1 // = 240*Deg
              var Angle_I_L1_to_U_L1 // = 200*Deg
              var Angle_I_L2_to_U_L1 // = 321*Deg
              var Angle_I_L2_to_U_L2 // = calulated
              var Angle_I_L3_to_U_L1 // = 80*Deg
              var Angle_I_L3_to_U_L3 // = calulated
              var Angle
              var CosPhi // = calulated
              var SinPhi // = calulated
              
              var DlvEnergy = 0.0
              var DlvReactiveEnergy = 0.0
              var DlvPower = 0.0
              var DlvReactivePower = 0.0
              
              var DrwEnergy = 0.0
              var DrwReactiveEnergy = 0.0
              var DrwPower = 0.0
              var DrwReactivePower = 0.0
              
              on({ id: 'smartmeter.0.1-0:2_8_0.value', change: 'any' }, function (data) {
                  // wait 1000 ms when this datapoint changed to make sure all datapoints got updated
                  setTimeout(() => {
              
                      MeterOwnerNumber = getState('smartmeter.0.1-0:0_0_0.value').val;
                      Firmware = getState('smartmeter.0.1-0:0_2_0.value').val;
                      Error = getState('smartmeter.0.1-0:97_97.value').val;
              
                      DrwEnergy = getState('smartmeter.0.1-0:1_8_0.value').val;
                      DrwReactiveEnergy = getState('smartmeter.0.1-0:3_8_0.value').val;
              
                      DlvEnergy = getState('smartmeter.0.1-0:2_8_0.value').val;
                      DlvReactiveEnergy = getState('smartmeter.0.1-0:4_8_0.value').val;
              
                      CurrentL1 = getState('smartmeter.0.1-0:31_7.value').val * CtFactor;
                      CurrentL2 = getState('smartmeter.0.1-0:51_7.value').val * CtFactor;
                      CurrentL3 = getState('smartmeter.0.1-0:71_7.value').val * CtFactor;
                      CurrentN = getState('smartmeter.0.1-0:91_7.value').val * CtFactor;
              
                      VoltageL1 = getState('smartmeter.0.1-0:32_7.value').val * VtFactor;
                      VoltageL2 = getState('smartmeter.0.1-0:52_7.value').val * VtFactor;
                      VoltageL3 = getState('smartmeter.0.1-0:72_7.value').val * VtFactor;
              
                      Frequency = getState('smartmeter.0.1-0:14_7.value').val * VtFactor;
              
                      Angle_U_L1_to_U_L1 = getState('smartmeter.0.1-0:81_7_0.value').val;
                      Angle_U_L2_to_U_L1 = getState('smartmeter.0.1-0:81_7_1.value').val;
                      Angle_U_L3_to_U_L1 = getState('smartmeter.0.1-0:81_7_2.value').val;
                      Angle_I_L1_to_U_L1 = getState('smartmeter.0.1-0:81_7_4.value').val;
                      Angle_I_L2_to_U_L1 = getState('smartmeter.0.1-0:81_7_5.value').val;
                      Angle_I_L3_to_U_L1 = getState('smartmeter.0.1-0:81_7_6.value').val;
              
                      Current = (CurrentL1 + CurrentL2 + CurrentL3) / 3;
                      Voltage = ((VoltageL1 + VoltageL2 + VoltageL3) / 3) * Math.sqrt(3);
              
                      Angle_I_L2_to_U_L2 = Angle_I_L2_to_U_L1 - 120;
                      Angle_I_L3_to_U_L3 = Angle_I_L3_to_U_L1 + 120;
                      Angle = (((Angle_I_L1_to_U_L1 + Angle_I_L2_to_U_L2 + Angle_I_L3_to_U_L3) / 3) - 180);
              
                      CosPhi = Math.cos(Angle * (Math.PI / 180));
                      SinPhi = Math.sin(Angle * (Math.PI / 180));
              
                      DlvPower = Voltage * Current * CosPhi * Math.sqrt(3) / 1000;
                      DlvReactivePower = Voltage * Current * SinPhi * Math.sqrt(3) / 1000;
              
                      setState(path + '.info.MeterOwnerNumber', MeterOwnerNumber)
                      setState(path + '.info.Firmware', Firmware)
                      setState(path + '.info.Error', Error)
              
                      setState(path + '.Current', Math.round(Current*10)/10);
                      setState(path + '.CurrentL1', CurrentL1);
                      setState(path + '.CurrentL2', CurrentL2);
                      setState(path + '.CurrentL3', CurrentL3);
              
                      setState(path + '.Voltage', Math.round(Voltage*100)/100);
                      setState(path + '.VoltageL1', VoltageL1);
                      setState(path + '.VoltageL2', VoltageL2);
                      setState(path + '.VoltageL3', VoltageL3);
              
                      setState(path + '.Frequency', Frequency);
                      setState(path + '.cosPhi', CosPhi);
                      setState(path + '.sinPhi', SinPhi);
              
                      setState(path + '.DRW1.Energy', DrwEnergy);
                      setState(path + '.DRW1.Power', Math.round(DrwPower*10)/10);
                      setState(path + '.DRW1.ReactiveEnergy', DrwReactiveEnergy);
                      setState(path + '.DRW1.ReactivePower', Math.round(DrwReactivePower*10)/10);
              
                      setState(path + '.DLV1.Energy', DlvEnergy);
                      setState(path + '.DLV1.Power', Math.round (DlvPower * 10)/10);
                      setState(path + '.DLV1.ReactiveEnergy', DlvReactiveEnergy);
                      setState(path + '.DLV1.ReactivePower', Math.round(DlvReactivePower*10)/10);
              
                  }, 1000);
              });
              

              Das sieht dann im Ergebnis so aus:
              2022-12-11_11-27-40_objects_-stocking–_Mozilla_Firefox.png

              Das hier waren meine finalen Einstellungen mit welchen es dann schlussendlich funktioniert hat.
              2022-12-11_11-45-37_instances_-stocking–_Mozilla_Firefox.png

              robert.ke 1 Reply Last reply Reply Quote 2
              • robert.ke
                robert.ke @Michael Uray last edited by robert.ke

                Hallo zusammen,

                ich habe auch einen Landis+Gyr E650 Zähler und habe auch den Adapter mit den Settings von euch auf "grün". Seitdem erhalte ich eine ganze Menge an Objekten:

                Objekte.png
                ... die Liste ist noch länger.

                Adapter bleibt grün - leider fehlt oder finde ich die relevanten Objekte bzgl. der Momentanleistung in Watt/kWh nicht.
                Auch das Script von @Michael-Uray hat keine wirkliche Hilfe gebracht:

                Objekte_Script.png

                ein paar Werte sind also da, aber auch hier die relevanten nicht.

                Hat jemand eine Idee, was ich beim Zähler-Auslesen übersehen habe?

                Michael Uray 1 Reply Last reply Reply Quote 0
                • Michael Uray
                  Michael Uray @robert.ke last edited by Michael Uray

                  @robert-ke

                  Ich sehe gerade, dass es hier in dem Script noch einen Fehler gibt, denn DlvPower wird zwar berechnet, DrwPower aber nicht. Dennoch müsste in DlvPower ein Wert stehen, welchen ich bei dir aber nicht sehe.

                  Die Leistung selbst wird vom Zähler nicht geliefert, deswegen hatte ich sie damals aus Spannung, Strom und Leistungsfaktor berechnet.

                  Was liefert dir denn der Zähler bei folgenden Werten?

                      CurrentL1 = getState('smartmeter.0.1-0:31_7.value').val * CtFactor;
                      CurrentL2 = getState('smartmeter.0.1-0:51_7.value').val * CtFactor;
                      CurrentL3 = getState('smartmeter.0.1-0:71_7.value').val * CtFactor;
                  
                      VoltageL1 = getState('smartmeter.0.1-0:32_7.value').val * VtFactor;
                      VoltageL2 = getState('smartmeter.0.1-0:52_7.value').val * VtFactor;
                      VoltageL3 = getState('smartmeter.0.1-0:72_7.value').val * VtFactor;
                  
                      Angle_I_L1_to_U_L1 = getState('smartmeter.0.1-0:81_7_4.value').val;
                      Angle_I_L2_to_U_L1 = getState('smartmeter.0.1-0:81_7_5.value').val;
                      Angle_I_L3_to_U_L1 = getState('smartmeter.0.1-0:81_7_6.value').val;
                  

                  CtFactor und VtFactor ist bei dir auf 1 zu setzen, falls du keine Strom- oder Spannungswandler haben solltest, was nur bei sehr großen Leistungen üblich ist.

                  robert.ke 1 Reply Last reply Reply Quote 0
                  • robert.ke
                    robert.ke @Michael Uray last edited by

                    @michael-uray

                    das ist wohl mein Problem: Alle von dir genannten 9 Objekte sind nicht vorhanden, sagt auch die Objekt-Suche:
                    bbd8190c-111c-4fd8-a987-f4c35c52b9b1-image.png

                    Deswegen kann die Berechnung deines Skripts auch nicht stattfinden.

                    Ich vermute, da passt beim auslesen des Zählers was nicht.
                    Den Faktor für die Stromwandler brauche ich, wir haben Wandler mit Verhältnis 50 im Einsatz 😉

                    1 Reply Last reply Reply Quote 0
                    • Michael Uray
                      Michael Uray last edited by

                      @robert-ke

                      Was bringt denn eine Suche nach "_7" für Objekte?

                      Kannst du vielleicht andere Objekte ausmachen, welche Strom, Spannung und Phasenwinkel vom Zähler beinhalten?

                      robert.ke Michael Uray 2 Replies Last reply Reply Quote 0
                      • robert.ke
                        robert.ke @Michael Uray last edited by

                        @michael-uray

                        genau ein Objekt:
                        77091eec-9cb2-4f41-8357-d0e175b15bb3-image.png

                        Hier eine komplette Übersicht der Objekte:
                        6d4098cc-d830-495d-848d-88318091c058-image.png
                        9b599b9e-62aa-4864-9974-b46189998951-image.png
                        02f27d3e-28ca-47a8-9cf3-a10bc8ec49da-image.png
                        b04d9e0d-6efc-4c00-8cc7-1c7e2bf58312-image.png
                        b3b8b559-ea0e-4ada-a965-519bdd374cc2-image.png
                        ac2da9a2-531e-47d1-84e3-e7441f562000-image.png
                        0964e761-c4bf-49a6-87c1-4dca49e0a7a4-image.png

                        Ganz viel Zählerstände, Maximus aber irgendwie nichts brauchbares. Vielen Dank für die Mithilfe!

                        1 Reply Last reply Reply Quote 0
                        • Michael Uray
                          Michael Uray @Michael Uray last edited by

                          @robert-ke
                          Was liefert dein Zähler denn eigentlich an Daten zurück, wenn du dich mit einem seriellen Terminal (Baudrate 300, 7 Daten-Bits, 1 Stop-Bit, Parität: gerade/even) auf ihn verbindest und "/?!" an ihn schickst?

                          robert.ke 1 Reply Last reply Reply Quote 0
                          • robert.ke
                            robert.ke @Michael Uray last edited by

                            @michael-uray

                            Da bin ich jetzt nicht so fit - aber ich habs auf die schnelle probiert:
                            bf6a02fd-c84f-4b8a-9e0f-590e4605e5ab-image.png
                            ca6991ae-2aba-46b1-aae8-3fc816ab0f0d-image.png

                            Der Lesekopf steckt aktuell noch an einem Raspberry PI dran - um zu prüfen ob wir mit dem Zähler überhaupt zum Ziel kommen.

                            Die Verbindung müsste schon stimmen, aber er zeigt nach dem Connected nichts weiter an und eingaben sind auch keine Möglich.

                            Michael Uray 2 Replies Last reply Reply Quote 0
                            • Michael Uray
                              Michael Uray @robert.ke last edited by Michael Uray

                              @robert-ke

                              Gib dann einmal "/?!" (ohne ") ein und drücke die Eingabetaste. Es wird dir nicht angezeigt was du eingibst, das ist normal, aber es sollte danach eine Antwort vom Zähler kommen.

                              (der SmartMeter Adapter muss gestoppt sein, da sonst die serielle Schnittstelle blockiert wird)

                              1 Reply Last reply Reply Quote 0
                              • Michael Uray
                                Michael Uray @robert.ke last edited by Michael Uray

                                @robert-ke sagte in Smartmeter mit Landis+Gyr E650:

                                um zu prüfen ob wir mit dem Zähler überhaupt zum Ziel kommen

                                Was ist denn eigentlich das Ziel? Was willst du denn mit dem aktuellen Leistungswert machen?
                                Benötigst du diesen nur für eine Aufzeichnung und kann er auch langsamer übermittelt werden, oder benötigst du ihn für eine Netzleistungsregelung und er muss recht schnell aktualisiert werden?

                                robert.ke 1 Reply Last reply Reply Quote 0
                                • robert.ke
                                  robert.ke @Michael Uray last edited by

                                  @michael-uray

                                  Die Eingaben hab ich schon versucht - kommt leider nichts. Der Smartmeter Adapter ist natürlich aus, sonst krieg ich keinen Connect. Alternativ kann ich den Adapter laufen lassen und via Screen zuschauen - aber das ist auch nicht zielführend.

                                  Das Ziel: Ja, Netzleistungsregelung. Somit wäre schon gut, wenn die Daten halbwegs rasch ankommen würden - wobei ich mit 1-3 Minuten leben kann. Wir schalten Final BHKW's ein oder aus und div. Verbraucher (E-Heizstäbe und div. andere Verbraucher)

                                  Die S0 Ausgänge würde der Energieversorger per Optokoppler rauslegen. Einen für Bezug und einen für Einspeisung. Aber Impulse zählen ist irgendwie oldschool.... daher der bis dato vergebliche Versuch direkt vom Zähler Werte zu bekommen mit denen man arbeiten kann.

                                  Michael Uray 1 Reply Last reply Reply Quote 0
                                  • Michael Uray
                                    Michael Uray @robert.ke last edited by

                                    @robert-ke

                                    Ist dein Keyboard im Terminal eventuell auf EN eingestellt?
                                    Kannst du /?! ohne Probleme im Terminal auf der Kommandozeile eingeben, oder kommen da andere Zeichen?

                                    robert.ke 1 Reply Last reply Reply Quote 0
                                    • robert.ke
                                      robert.ke @Michael Uray last edited by

                                      @michael-uray

                                      ja klar, alles ganz normal auf Deutsch:

                                      9c83914c-ed6e-4cf1-8a79-34e629d7dac7-image.png

                                      Michael Uray 1 Reply Last reply Reply Quote 0
                                      • Michael Uray
                                        Michael Uray @robert.ke last edited by

                                        @robert-ke
                                        Hier fehlen jetzt aber die tio Angaben zu Daten- und Stopbits sowie zur Parität.

                                        robert.ke 1 Reply Last reply Reply Quote 0
                                        • robert.ke
                                          robert.ke @Michael Uray last edited by

                                          @michael-uray

                                          ja klar, ich habe nur schon alles Mögliche durchprobiert - jetzt wieder mit den Angaben, ist aber immer das gleiche:

                                          faa1be02-9be1-4d83-ad96-5cdf64944c48-image.png

                                          Ich kann hinschicken was ich will, es tut sich nichts! - Wobei die Schnittstelle sicher passt, lasse ich den Smartmeter Adapter laufen kommt:

                                          a017918b-fcbc-4e14-8c97-b72953226e00-image.png

                                          Michael Uray 1 Reply Last reply Reply Quote 0
                                          • Michael Uray
                                            Michael Uray @robert.ke last edited by

                                            @robert-ke
                                            Seltsam, was sagt denn der Log welche Schnittstellen-Daten verwendet werden, wenn man den Adapter im Debug Mode betreibt?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            788
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            8
                                            56
                                            5942
                                            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