Easymeter Stromzähler, neues Protokollformat SML V1.04

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Easymeter Stromzähler, neues Protokollformat SML V1.04

      Hallo Bascom-Freunde,

      in 2013 hatte ich mir einen neuen Stromzähler vom Typ Easymeter einbauen lassen, um einen genaueren Überblick über die Belastung der einzelnen Phasen sowie die zeitliche Auslastung und Leitungsverteilung zu erlangen.

      Seinerzeit hatte ich mit der Spezifikation einer D0-Schnittstelle via optischem Sensor(OD-201) alle interessierenden Daten dekodieren sowie übertragen und anzeigen können.

      Vor kurzem wurde im Zuge der 8-jährigen Garantie-Laufzeit mein Easymeter gegen einen baugleichen, Easymeter Q3AA1054 V10.09, vom Versorger ausgewechselt.

      Meine bisherige Dekodierung passt nun offenbar nicht mehr, da wohl ein neues Protokoll-Format, SML V1.04, auf der optischen D0-Schnittstelle vorliegt..

      Hat sich schon mal jemand mit diesem SML V1.04 Protokoll-Format befasst und kann eventuell Hinweise/Programmschnitzel zur Dekodierung beitragen?

      So müsste ich das "Rad" nicht neu konstruieren.

      Vielen Dank im Voraus

      Ulrich
    • Hallo Ulrich
      In Wikipedia findet sich unten ein Link, der auf die Spezifikation SML V1.04Spezifikation SML V1.04 hinweist.
      Ein Blick da rein sagt mir, dass das C-Ähnliche Strukturen für die Messages verwendet werden, deren Datentypen auch in C nicht alle bekannt sind.
      Zu erwähnen wäre da z.B Octet String oder SML_Time. Kannst ja mal reinschauen. Aber bis man da durchblickt - das wird dauern.

      Der einfachere Weg wäre vielleicht, wenn du das Signal einfach mal loggst und hier einstellst.
      Ich denke dann findet sich vielleicht schneller ein Dekodierungsweg als über die Spezifikation.
    • Habe das Ausgangssignal mal mit Hterm mitten drin beginnend aufgezeichnet; ob die 1B 1B 1B 1B 81 81 81 81 Folgen die Anfänge einer Sequenz sind? Irgendwie werde ich nicht ganz schlau aus der Geschichte;


      F5 29 02 FF C0 00 00 81 E2 00 72 63 87 81 77 81 8B 09 81 C5 53 59 11

      8D 0A 1B 8D 0A 18 00 F6 8B C5 53 59 41 50 93 00 0C F0 A0 E2 00 E2 00 72 63 87 81 77 81 8B 09 81 C5 53 59 11 8D 0A F0 A5 8B 09 81 C5 53 59 11 03 33 50 93 81 81 63 5C EB 00 F6 8B C5 53 59 41 50 93 00 0C F0 A6 E2 00 E2 00 8D 0A 7D 77 87 81 81 47 82 03 FF 81 81 81 81 84 C5 53 59 81 77 87 81 00 00 00 09 FF 81 81 81 81 81 77 87 81 00 24 87 00 FF 81 81 E2 1B D2 7E

      59 00 00 00 00 00 00 A0 24 81 77 87 81 00 B8 8D 0A 81 77 87 81 00 CC 87 00 FF 81 81 E2 1B D2 7E 59 00 00 00 00 00 00 E2 4D 81 77 87 81 81 47 8D 0A 81 77 87 81 00 90 87 00 FF 81 81 E2 1B D2 7E 59 00 00 00 00 00 00 B1 6A 81 77 87 81 00 24 8D 0A E2 00 E2 00 72 63 82 81 71 81 63 B7 7D 00 00 00 1B 1B 8D 0A BD 00 F6 8B C5 53 59 41 50 93 00 0C 71 21 E2 00 E2 00 72 63 87 81 77 81 8B 09 81 C5 53 59 11 03 F1 29 02 FF 0A 86 21 3F FE 69 80 E5 50 5F FC 1E 78 78 E8 C5 55 E2 5F D7 F0 6C D2 BB 81 77 87 81 00 00 8D 0A 81 8D 0A 81 77 87 81 00 CC 87 00 FF 81 81 E2 1B D2 7E 59 00 00 00 00 00 00 E1 47 81 77 87 81 81 47 82 8D 0A 81 77 87 81 00 90 87 00 FF 81 81 E2 1B D2 7E 59 00 00 00 00 00 00 B1 41 81 77 87 81 00 24 87 00 FF 81 81

      8D 0A F0 00 F6 8B C5 53 59 41 50 93 00 0C 71 C6 E2 00 E2 00 72 63 82 81 71 81 63 2B 72 00 00 00 8D 0A 81 77 87 81 00 90 87 00 FF 81 81 E2 1B D2

      7E 59 00 00 00 00 00 00 B1 ED 81 77 87 81 00 24 8D 0A AA 00 F6 8B C5 53 59 41 50 93 00 0C 71 63 E2 00 E2 00 72 63 87 81 77 81 8B 09 81 C5 53 59

      8D 0A 2B 00 F6 8B C5 53 59 41 50 93 00 0C 71 78 E2 00 E2 00 72 63 87 81 77 81 8B 09 81 C5 53 59 8D 0A E2 00 E2 00 72 63 87 81 77 81 8B 09 81 C5 53 59 11 03 8D 0A DE 81 77 87 81 00 90 87 00 FF 81 81 E2 1B D2 7E 59 00 00 00 00 00 00 21 B2 81 77 87 81 00 24 87 F5 29 02 08 52 00 77 42 6B 02 94 02 94 02 14 7A EF 47 67 42 F8 CE 43 FC 00 8C C6 FA 00 C6 94 02 92 FA

      FC 78 78 1B 1B 1B 1B 81 81 81 81 F6 8B C5 53 59 41 50 93 8D 0A 00 8D 0A 00 00 00 1B 1B 1B 1B 9A 82 2B 87 1B 1B 1B 1B 81 81 81 81 F6 8B C5 53 59 41 50 93 00 0C 71 5A 8D 0A 60 00 F6 8B C5 53 59 41 50 93 00 0C 72 06 E2 00 E2 00 72 63 82 81 71 81 63 C0 B8 00 00 00 1B 1B 1B 1B 9A 8D 0A E2 00 E2 00 72 63 81 81 F6 81 84 C5 53 59 88 C5 53 59 A6 05 72 8D 0A 8B 09 81 C5 53 59 11 03 33 50 93 81 81 63 F9 E7 00 F6 8B C5 53 59 41 50 93 00 0C 72 8E E2 8D 0A 81 77 87 81 81 47 82 05 FF 81 81 81 81 03 82 60 77 44 7D 95 50 77 47 B7 2E 27 30 DE 8B 1E 8D 0A 21 00 F6 8B C5 53 59 41 50 93 00 0C 72 18 E2 00 E2 00 72 63 82 81 71 81 63 D8 00 00 00 00 8D 0A 1B 1B 1B 1B 81 81 81 81 F6 8B C5 53 59 41 50 93 00 0C 8D 0A 72 A5 8B 09 81 C5 53 59 11 03 33 50 93 81 81 63 69 17 00 F6 8B C5 53 59 41 50 93 00 0C 72 A6 E2 F1 29 02 08 5A 00 77 42 6B 02 94 02 94 02 94 7A EF 47 67 42 F8 CE 25 FA 00 8C C6 FA F5 C6 94 02 92 FA 1E 78 3C 8B 1E AA 90 CF 95 27 11 06 A3

      A5 CF 6F F6 FF BD 8D 0A 00 8D 0A C9 81 77 87 81 00 90 87 00 FF 81 81 E2 1B D2 7E 59 00 00 00 00 00 00 21 93 81 77 87 81 00 24 8D 0A 81 77 87 81 00 24 87 00 FF 81 81 E2 1B D2 7E 59 00 00 00 00 00 00 90 B1 81 77 87 81 00 B8 87 00 FF 81 81 8D 0A 1B 1B 1B 1B 81 81 81 81 F6 8B C5 53 59 41 50 93 00 0C 72 E1 E2 00 E2 00 72 63 81 81 F6 81
    • Ich lese meinen Stromzähler mit SML-Protokoll zum Regeln meiner PV-Anlage mit Speicher seit ein paar Monaten aus.
      Mich interessiert dabei aber nur die aktuelle Leistungsaufnahme vom Netz.

      Guck mal in die Bedienungsanleitung zum Smartmeter, bei meinem war Seite 20 sehr aufschlußreich:
      heider-energie.de/attachments/…/165/Handbuch_Norax3D.pdf
      Dieselben Werte findest du dann in deinen aufgezeichneten Werten, z.B. 01 00 10 07 00 FF, danach folgt dann bspw. die aufgenommene Leistung.

      Ausschnitt aus Daten bei mir: 01 00 10 07 00 FF 01 01 62 1B 52 00 59 00 00 00 00 00 00 01 EE
      01 EE ist der Leistungswert als Zweierkomplement.

      1B1B1B1B war der Start der Daten, ich habe aber einfach nach der "langen" Sendepause mit der Aufzeichnung begonnen.

      Da die Anzahl der Werte immer gleich ist, lese ich nur die gewünschten Stellen ab Start.


      Quellcode

      1. Main:
      2. Do
      3. Do 'Warten auf
      4. If Rxd = 1 Then Incr Count Else Count = 0 'langes High per IR
      5. Loop Until Count > 50000 ' (Pausenerkennung)
      6. Count = 0 'Bytezähler zurücksetzen
      7. Timeout = 0 'Timeoutzähler zurücksetzen
      8. Do
      9. If Ischarwaiting() = 1 Then 'Byte empfangen
      10. Dummy = Inkey() 'Byte auslesen
      11. Incr Count 'Bytezähler erhöhen
      12. If Count = 196 Then 'Leistungswert 1 empfangen
      13. Power1 = Dummy
      14. Elseif Count = 197 Then 'Leistungswert 2 empfangen
      15. Power2 = Dummy
      16. Elseif Count = 220 Then 'Spannungswert 1 empfangen
      17. Volt1 = Dummy
      18. Elseif Count = 221 Then 'Spannungswert 2 empfangen
      19. Volt2 = Dummy
      20. End If
      21. End If
      22. Incr Timeout
      23. Loop Until Count = 221 Or Timeout > 65500 'Ende: Spannungswert 2 empfangen oder Timeout erreicht
      24. Count = 0
      25. If Timeout > 65500 Then 'Timeout wurde erreicht
      26. Power1 = 0 'Leistung auf 0 setzen
      27. Volt1 = 9999 'Spannung auf 9999 = Fehler
      28. Else 'Timeout nicht erreicht
      29. Power1 = Power1 * 256 'Leistung berechnen
      30. Power1 = Power1 + Power2
      31. Volt1 = Volt1 * 256 'Spannung berechnen
      32. Volt1 = Volt1 + Volt2
      33. End If
      34. Loop
      Alles anzeigen

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Tido ()

    • Habe das obige hex-daten Gebilde mal etwas arrangiert, da ich vermute, dass mit der 77 der Beginn einer Information gekennzeichnet ist.


      F5 29 02 FF C0 00 00 81 E2 00 72 63 87 81

      77 81 8B 09 81 C5 53 59 11

      8D 0A 1B 8D 0A 18 00 F6 8B C5 53 59 41 50 93 00 0C F0 A0 E2 00 E2 00 72 63 87 81

      77 81 8B 09 81 C5 53 59 11 8D 0A F0 A5 8B 09 81 C5 53 59 11 03 33 50 93 81 81 63 5C EB 00 F6 8B C5 53 59 41 50 93 00 0C F0 A6 E2 00 E2 00 8D 0A 7D

      77 87 81 81 47 82 03 FF 81 81 81 81 84 C5 53 59 81

      77 87 81 00 00 00 09 FF 81 81 81 81 81

      77 87 81 00 24 87 00 FF 81 81 E2 1B D2 7E 59 00 00 00 00 00 00 A0 24 81

      77 87 81 00 B8 8D 0A 81

      77 87 81 00 CC 87 00 FF 81 81 E2 1B D2 7E 59 00 00 00 00 00 00 E2 4D 81

      77 87 81 81 47 8D 0A 81

      77 87 81 00 90 87 00 FF 81 81 E2 1B D2 7E 59 00 00 00 00 00 00 B1 6A 81

      77 87 81 00 24 8D 0A E2 00 E2 00 72 63 82 81 71 81 63 B7 7D 00 00 00 1B 1B 8D 0A BD 00 F6 8B C5 53 59 41 50 93 00 0C 71 21 E2 00 E2 00 72 63 87 81


      77 81 8B 09 81 C5 53 59 11 03 F1 29 02 FF 0A 86 21 3F FE 69 80 E5 50 5F FC 1E 78 78 E8 C5 55 E2 5F D7 F0 6C D2 BB 81

      77 87 81 00 00 8D 0A 81 8D 0A 81

      77 87 81 00 CC 87 00 FF 81 81 E2 1B D2 7E 59 00 00 00 00 00 00 E1 47 81

      77 87 81 81 47 82 8D 0A 81

      77 87 81 00 90 87 00 FF 81 81 E2 1B D2 7E 59 00 00 00 00 00 00 B1 41 81

      77 87 81 00 24 87 00 FF 81 81 8D 0A F0 00 F6 8B C5 53 59 41 50 93 00 0C 71 C6 E2 00 E2 00 72 63 82 81 71 81 63 2B 72 00 00 00 8D 0A 81


      77 87 81 00 90 87 00 FF 81 81 E2 1B D2 7E 59 00 00 00 00 00 00 B1 ED 81

      77 87 81 00 24 8D 0A AA 00 F6 8B C5 53 59 41 50 93 00 0C 71 63 E2 00 E2 00 72 63 87 81

      77 81 8B 09 81 C5 53 59 8D 0A 2B 00 F6 8B C5 53 59 41 50 93 00 0C 71 78 E2 00 E2 00 72 63 87 81

      77 81 8B 09 81 C5 53 59 8D 0A E2 00 E2 00 72 63 87 81

      77 81 8B 09 81 C5 53 59 11 03 8D 0A DE 81

      77 87 81 00 90 87 00 FF 81 81 E2 1B D2 7E 59 00 00 00 00 00 00 21 B2 81

      77 87 81 00 24 87 F5 29 02 08 52 00

      77 42 6B 02 94 02 94 02 14 7A EF 47 67 42 F8 CE 43 FC 00 8C C6 FA 00 C6 94 02 92 FA FC 78 78


      1B 1B 1B 1B 81 81 81 81 F6 8B C5 53 59 41 50 93 8D 0A 00 8D 0A 00 00 00 1B 1B 1B 1B 9A 82 2B 87


      1B 1B 1B 1B 81 81 81 81 F6 8B C5 53 59 41 50 93 00 0C 71 5A 8D 0A 60 00 F6 8B C5 53 59 41 50 93 00 0C 72 06 E2 00 E2 00 72 63 82 81 71 81 63 C0 B8 00 00 00 1B 1B 1B 1B 9A 8D 0A E2 00 E2 00 72 63 81 81 F6 81 84 C5 53 59 88 C5 53 59 A6 05 72 8D 0A 8B 09 81 C5 53 59 11 03 33 50 93 81 81 63 F9 E7 00 F6 8B C5 53 59 41 50 93 00 0C 72 8E E2 8D 0A 81


      77 87 81 81 47 82 05 FF 81 81 81 81 03 82 60

      77 44 7D 95 50

      77 47 B7 2E 27 30 DE 8B 1E 8D 0A 21 00 F6 8B C5 53 59 41 50 93 00 0C 72 18 E2 00 E2 00 72 63 82 81 71 81 63 D8 00 00 00 00 8D 0A


      1B 1B 1B 1B 81 81 81 81 F6 8B C5 53 59 41 50 93 00 0C 8D 0A 72 A5 8B 09 81 C5 53 59 11 03 33 50 93 81 81 63 69 17 00 F6 8B C5 53 59 41 50 93 00 0C 72 A6 E2 F1 29 02 08 5A 00


      77 42 6B 02 94 02 94 02 94 7A EF 47 67 42 F8 CE 25 FA 00 8C C6 FA F5 C6 94 02 92 FA 1E 78 3C 8B 1E AA 90 CF 95 27 11 06 A3 A5 CF 6F F6 FF BD 8D 0A 00 8D 0A C9 81

      77 87 81 00 90 87 00 FF 81 81 E2 1B D2 7E 59 00 00 00 00 00 00 21 93 81


      77 87 81 00 24 8D 0A 81

      77 87 81 00 24 87 00 FF 81 81 E2 1B D2 7E 59 00 00 00 00 00 00 90 B1 81 77 87 81 00 B8 87 00 FF 81 81 8D 0A

      1B 1B 1B 1B 81 81 81 81 F6 8B C5 53 59 41 50 93 00 0C 72 E1 E2 00 E2 00 72 63 81 81 F6 81
    • Hallo Tido,

      besten Dank für deine Info;

      leider gibt es zu meinem Zähler nur auf Anforderung beim Hersteller easymeter.com die Protokoll-Informationen, welche easymeter aber nicht an Privatleute herausgibt. Habe deshalb ich schon mit dem Besitzer der Zähler, den Stadtwerken, Kontakt aufgenommen, und hoffe über sie an das genaue Protokoll-Format zu kommen.

      Auf eine längere Pause hin zwischen neuen Telegrammen muss ich noch mal überprüfen, war mir bisher nicht aufgefallen.
      Werde mir dein Norax-Handuch nun genauer ansehen.


      Gruß
      Ulrich
    • Das habe ich auch schon ;)

      Deshalb der Hinweis auf die Anleitung; in meiner standen die zu suchenden Sequenzen ja quasi drin.
      Evtl. bringt es dich weiter, wenn du nach konkreten Werten in der Aufzeichnung suchst. Also den aktuellen "Verbrauch" oder die Spannungen zum Auslesezeitpunkt notieren und dann in dern aufgezeichneten Daten danach "suchen" (Zweierkomplement!); evtl. stehen die Werte nach den "Nullen" (00 00 00).

      Ich meine mich zu erinnern, das mein Smartmeter "alle verfügbaren" Daten auch erst ausgegeben hat, nachdem ich die PIN-Abfrage deaktiviert hatte.
    • In der Zwischenzeit habe ich auch die Protokoll-Informationen für das Easymeter-Protokoll SML V1.04 von den Stadtwerken erhalten und konnte die entspechenden Daten korrekt einlesen sowie die einzelnen Werte berechnen.

      Als Beispiel ein Snapshot von einem für die Tests verwendeten OLED-Display, auf dem mit wL die Summe der Leistungen auf den Phasen und deren einzelne Leistungen mit P1 bis P3 dargestellt sind.
      Dateien
      • SnapShot-2.jpg

        (244,07 kB, 50 mal heruntergeladen, zuletzt: )
    • Für die Darstellung möglichst vieler Parameter aus dem SML V1.04 Telegramm, möchte ich gerne das ILI9486 mit dem Hkipnik Programm Uni-TFT-ILI9481-86-88.zip und der 16bit Erweiterung ILI948x_functions16.inc einsetzen.

      Dafür hatte ich mir dieses Shield zugelegt amazon.de/dp/B01N2N7LZA?tag=du…1&linkCode=osi&th=1&psc=1

      mit welchem das ILI9486 direkt auf den Arduino 2560 gesteckt werden kann.


      Leider hat mein ILI9486 den SD-Card Anschluß weit vom Rand auf der Lötseite angeordnet, dass man die SD-Card kaum bei gestecktem System entnehmen kann.


      Meine Frage deshalb, hat schon jemand einen solchen oder ähnlichen SD-Card Extender erfolgreich ausgetestet?

      amazon.de/dp/B01N2N7LZA?tag=du…1&linkCode=osi&th=1&psc=1


      Über eine Rückmeldung würde ich mich sehr freuen.
    • Für alle, die sich ebenfalls mit einer SD-Card Extension im Selbstbau beschäftigen wollen, oder auch diese fertigen Extension-Kabel einsetzen und ab und an Übertragungsfehler feststellen, könnte diese kleine Modifikation möglicherweise helfen.

      Es ist das grundsätzliche Problem bei allen Leitungen (Impedanzen) ohne definierten Abschluss- Widerstand. Dort kann diese Maßnahme behilflich sein.

      Sollte ein SD-Card Slot, wie bei mir hinter dem ILI9486-Board, schon vorhanden, kann man die Verlängerungsleitungen und die beiden Widerstände direkt an die Slot-Lötstellen anlöten.
      Dateien
    • Habe da noch ein Problem mit dem verwendeten OLED Display. Vieleicht hat noch jemand einen Tipp.

      reichelt.de/at/de/display-oled….html?&trstct=pos_1&nbc=1

      Das Display liefert nur dann eine korrekte Darstellung, wenn die Versorgungsspannung (Atmega und Display gemeinsam) gestartet wird.
      Wenn allerdings der Atmega-Reset-Taster bei zuvor eingeschalteter Versorgungsspannung betätigt wird, gibt es wirre Zeichen. Auch ein mehrmaliges Resetten verbessert die Lage nicht

      Als Mega2560 ist dieses Board im Einsatz:
      reichelt.de/at/de/arduino-komp….html?&trstct=pos_2&nbc=1

      Das Signal vom Reset-Taster ist ohne jegliches Prellen, auch kommt der RS-Reset am Display an. Kennt jemand dieses Problem bei solchen OLED's.

      Habe das OLED-Display schließlich gegen ein Standard LCD-Display getauscht, bei welchem dieser Reset-Effekt nicht auftritt.



      Der Minimal-Code ist im nachfolgenden Beispiel dargestellt

      BASCOM-Quellcode: OLED-Reset

      1. $regfile = "m2560def.dat"
      2. $crystal = 16000000
      3. $hwstack = 100
      4. $swstack = 150
      5. $framesize = 150
      6. $baud = 9600
      7. '$sim
      8. '*******************************************************************************
      9. 'Init the 20x4 OLED-Display /Anschlussbelegung beim Mega Pro gewählt
      10. '*******************************************************************************
      11. 'Initlcd
      12. Config Lcdpin = Pin , Db4 = Portk.2 , Db5 = Portk.3 , Db6 = Portk.0 , Db7 = Portk.1 , E = Portk.4 , Rs = Portk.6
      13. Config Lcd = 20 * 4
      14. Initlcd
      15. Cls
      16. Cursor Off
      17. Lcd "Hallo" 'testausgabe ob's funktioniert
      18. End
      Alles anzeigen