Smartmeter Stromzähler ESPHome und SML für Homeassistant auslesen

Da aktuell die meisten Projekte zum Auslesen von Stromzählern mit dem SML-Protokoll und ESP32/ ESP8266 aus Tasmota beruhen, hier mal meine Erfolgreiche Implementation mit ESPHome.

Ich habe mir die TTL-Version des Volkszählers auf eBay besorgt und mit einem Wemos D1 mini verbunden. Ground und Spannung kommen an die 5V und Ground vom ESP RX und TX-Leitungen des Volkszählers über kreuz an die RX/TX-Pins des ESP.

Hier sind meine YAML-Einstellungen um den Stromzähler auszulesen.

uart:
  id: uart_bus
  tx_pin: 1
  rx_pin: 3
  baud_rate: 9600
  debug:

sml:
  id: mysml
  uart_id: uart_bus

sensor:
  - platform: sml
    name: "Total energy"
    sml_id: mysml
    obis_code: "1-0:1.8.0"
    unit_of_measurement: kWh
    accuracy_decimals: 0
    device_class: energy
    state_class: total_increasing
    filters:
      - throttle_average: 60s

Ich habe beim Suchen ein Beispiel gefunden, was die UART-Baudrate auf 300 hatte. Damit kamen im Debug-Log des ESP zwar ständig UART-Daten, aber keine dekodierten SML-Daten. Toll war aber, dass man sehen konnte, dass der Zähler etwas sendet. Beim Abnehmen des Sensors vom Zähler ist das UART-Log sofort ruhig geworden. Nach dem Umstellen auf 9600 Baud dekodierte er dann sofort die UART-Daten zu SML. Dann kann man auch sehen, welche OBIS-Codes der Zähler sendet. Das sieht dann bei mir so aus:

[16:40:14][D][sml:065]: OBIS info:
[16:40:14][D][sml:071]:   (0a014546521901d94a67) 1-0:96.50.1 [0x12345]
[16:40:14][D][sml:071]:   (0a014546521901d94a67) 1-0:96.1.0 [0x013124234]
[16:40:14][D][sml:071]:   (0a014546521901d94a67) 1-0:1.8.0 [0x31ba]
[16:40:14][D][sml:071]:   (0a014546521901d94a67) 1-0:0.2.0 [0x31234345]
[16:40:14][D][sml:071]:   (0a014546521901d94a67) 1-0:96.90.2 [0xa90a]
[16:40:14][D][sml:071]:   (0a014546521901d94a67) 1-0:97.97.0 [0x0000]
[16:40:14][D][sml:071]:   (0a014546521901d94a67) 1-0:96.50.1 [0x12345677898]

Mit dieser Info kann man dann auf der Tasmota-SML-Seite nachschauen, ob die einzelnen OBIS-Werte nützlich sind. Leider gibt mein Zähler nicht die aktuelle Wirkleistung aus. Hier muss ich mir wohl noch die PIN meines Zählers von meiner Netzgesellschaft holen.

Mein ESP8266 hängt aktuell an einer Powerbank, da ich keine Steckdose in der Nähe des Zählers habe. Mal sehen wie lange das hält.

Update

Nach einer Woche kam jetzt die PIN für meinen Stromzähler. Durch das aktivieren des erweiterten Modus bei meinem Stromzähler tauchte nun auch die aktuelle Wirkleistung auf. Das ist echt toll. Auch der Zählerstand hat plötzlich drei Nachkommastellen. Das führte dazu, dass ich nach der Umstellung die Wert nochmal anpassen musste.

uart:
  id: uart_bus
  tx_pin: 1
  rx_pin: 3
  baud_rate: 9600
  debug:

sml:
  id: mysml
  uart_id: uart_bus

sensor:
  - platform: sml
    name: "Total energy"
    sml_id: mysml
    obis_code: "1-0:1.8.0"
    unit_of_measurement: kWh
    accuracy_decimals: 3
    device_class: energy
    state_class: total_increasing
    filters:
      - multiply: 0.0001
      - throttle_average: 300s
  - platform: sml
    name: "Current Power"
    sml_id: mysml
    obis_code: "1-0:16.7.0"
    unit_of_measurement: W
    accuracy_decimals: 0
    device_class: power
    state_class: measurement
  - platform: sml
    name: "Current Voltage"
    sml_id: mysml
    obis_code: "1-0:32.7.0"
    unit_of_measurement: V
    accuracy_decimals: 1
    device_class: voltage
    state_class: measurement    
    filters:
      - multiply: 0.1
  - platform: sml
    name: "Current Current"
    sml_id: mysml
    obis_code: "1-0:31.7.0"
    unit_of_measurement: A
    accuracy_decimals: 2
    device_class: current
    state_class: measurement    
    filters:
      - multiply: 0.01
  - platform: sml
    name: "Current Frequency"
    sml_id: mysml
    obis_code: "1-0:14.7.0"
    unit_of_measurement: Hz
    accuracy_decimals: 3
    device_class: frequency
    state_class: measurement    
    filters:
      - multiply: 0.1

7 thoughts on “Smartmeter Stromzähler ESPHome und SML für Homeassistant auslesen”

  1. Wie lange hält der ESP an der Powerbank und wieviel Wh hat die? Welches Modell benutzt du? Hab aktuell Probleme das meine Powerbank bei zu niedrigen Verbrauch einfach aus geht.

    1. Ich habe jetzt 3 Powerbanks getestet. Einmal ein Board mit zwei 16850-Zellen. Damit hielt die Kiste 2 Tage. Dann hatte ich eine mehr als 4 Jahre alte Powerbank, auf der was von 45Wh draufstand. Die läuft ca. 4-5 Tage. Ich habe mir jetzt eine neue gekauft, die 30000mAh hat, keine Ahnung wieviel Wh. Die läuft jetzt seit 4 Tage und ist noch bei 60%. Hier hoffe ich auf mehr als eine Woche Laufzeit. Allerdings ist sie mir am ersten Tag auch zweimal nach unter 2h wieder ausgegangen. Seit ich den USB-Port gewechselt habe läuft sie durch. Ist aber aktuell der erste Entladezyklus und ich hoffe, dass sie bei der zweiten Runde nicht wieder abschaltet. Mit mehr als einer Woche Laufzeit würde ich es dann ok finden. Aktuell nutze ich einen esp8266. Angeblich soll ein esp32 ein wenig sparsamer sein. Der Deepsleep würde sicher auch noch etwas bringen. Allerdings bekomme ich seit der Eingabe der PIN in den Stromzähler die aktuelle Wirkleistung im Sekundentakt raus. Das ist schon echt nett. Da kann man Geräte an und ausschalten und sieht sofort die Wirkung.

      1. Es gibt für die Hutschienen DC Netzteile auf 5V bzw 12V. Da lässt sich relativ elegant eine USB Stromversorgung realisieren. Ist so bei mir umgesetzt, da die Haustürklingel sowieso eine 12V DC Versorgung hatte, dann konnte ich den ESP einfach damit versorgen.

  2. Hi, kannst du vll mir weiter helfen. Soweit war alles gut, jetzt habe ich pin bekommen, aber in log sehe ich keine neue obis, nur noch 3 neue Zeilen mit langen uart Code. Wird dieser nicht dekoriert?

    1. Hallo Artur,
      Siehst Du noch die Basis-Obis-Codes?
      In meinem Log sehe ich sml-Zeilen mit den OBIS-Codes und zusätzlich den uart debug.
      Falls Du nur UART siehst, könnte die Baud-Rate falsch sein. Das hatte ich auch am Anfang und dann kam kein sml mehr aus dem Log.
      Mein Stromzähler wollte auch nach Eingabe der PIN noch, dass ich eine Option in seinem Menü umstelle. Erst danach zeigt er er mehr an.

      1. Hi, ich sehe nur obis die vor dem pin waren, nach dem pin sehe ich noch dazu 3 uart Einträge.
        Welche Option meinst du?
        Übrigens ich habe einfach ais deinem Beispiel obis für momentane Leistung genommen und es geht obwohl ich dieses obis nicht in log sehe. Habe momentan baud-rate aif 9600.
        Es läuft ja, wie es aussieht liefer mein zähler nur gesammt Leistung, momentane und das wars, an ja noch Leistung dir In und Out, auch Gesamt
        Komisch ist dass es nicht in sml gekodiert wird. Du schreibst auch dass man auf tasmota Seite zu sml obis was nachlesen kann. Hast du auch link bitte?
        Danke
        Mit freundlichen Grüßen
        Artur

        1. Nach der PIN-Eingabe konnte ich detaillierte Werte im Zähler mit dem 1-Tasten-Interface durchklicken. Am Ende der Werte gab dann auch zwei verstellbare Optionen. Einmal das aktivieren der detaillierten Ausgabe am SML-Interface und als zweites die Deaktivierung der PIN.
          Die erwähnte Doku zu dem OBIS-Werten hatte ich von dieser Tasmota-Webseite: https://tasmota.github.io/docs/Smart-Meter-Interface/
          Dort findest Du auf der rechten Seite die bekannten Zähler.

Leave a Reply to Jonas Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.