Smart Meter auslesen mit Tasmota & ESPHome

Wie mache ich meinen digitalen Stromzähler smart?

Heute zeige ich euch, wie ihr euren digitalen Stromzähler mit Home Assistant smart machen könnt. Warum ist das wichtig? Indem ihr euren Stromverbrauch versteht und optimiert, könnt ihr nicht nur Geld sparen, sondern auch euren ökologischen Fußabdruck reduzieren. In diesem Artikel stelle ich euch drei verschiedene Methoden vor, mit denen ihr euren digitalen Stromzähler in ein smartes Gerät verwandeln könnt.

1. Lösung: Infrarot-Lesekopf selbst bauen

Einführung in die Methode

Eine der kostengünstigsten und flexibelsten Methoden ist der Bau eines eigenen Infrarot-Lesekopfs. Diese Methode erfordert ein wenig technisches Geschick und einige Werkzeuge, aber die Ergebnisse sind beeindruckend.

Materialliste und Werkzeug

IR Modul Link : https://amzn.to/4bQYqJi *

ESP8266 https://amzn.to/4btlfmx *

Netzteil: https://amzn.to/3USrYz5 *

Jumper Wire https://amzn.to/4buv7wh *

Kabel Set https://amzn.to/4bsHb16 *

*Sämtliche mit „*“ markierten Links hängen mit Amazon Partnerprogrammen zusammen. Sie dienen dir als potentiellen Käufer als Orientierung und verweisen explizit auf bestimmte Produkte. Sofern diese Links genutzt werden, kann im Falle einer Kaufentscheidung eine Provision an mich ausgeschüttet werden. Bei einem Kauf über diese Links fallen natürlich keine Mehrkosten an. Danke!!

Schritt-für-Schritt-Anleitung zum Bau und zur Installation
Infrarot-LED und Fototransistor Erklärung

Die Infrarot-LED sendet ein Signal, das vom Fototransistor empfangen wird. Wenn der Zähler eine Impuls-LED hat, sendet diese einen Lichtimpuls, den der Fototransistor detektiert.

Verkabelung und Löten
  1. Lötet die Infrarot-LED an den Fototransistor und verbindet diese mit einem Widerstand. Der Fototransistor oder LED (bin mir bis heute nicht ganz sicher) wird entgegen der normalen Richtung betrieben. Durch den Widerstand wird die LED aufgeladen und kann Lichtimpulse empfangen und messen. Bitte beachte also die Polung der LED.
  2. Verbinde die LED-Widerstands-Kombination mit dem ESP8266, wobei der Fototransistor als Eingang fungiert.
Einbau des Lesekopfs

Montiert den Lesekopf an euren Stromzähler. Hier empfiehlt sich die Nutzung eines doppelseitigen Klebebands oder eines 3D-gedruckten Gehäuses.

Einrichtung in Home Assistant
Einbinden des ESP8266
  1. Flash ESPHome auf den ESP8266. –> Code IR Puls Counter https://github.com/thealkly/SmartMeter-PulsCounter/tree/main 
  2. Konfiguriert die YAML-Datei für ESPHome, um die Daten des Fototransistors zu lesen und in Home Assistant zu integrieren.
Test und Fehlerbehebung

Nach dem Flashen und der Konfiguration könnt ihr den ESP8266 starten und die Daten in Home Assistant anzeigen lassen. Sollte etwas nicht funktionieren, überprüft die Verbindungen und die Konfiguration.

Vorteile und Nachteile dieser Methode

Vorteile:

  • Kostengünstig
  • Flexibel und anpassbar

Nachteile:

  • Erfordert technisches Geschick
  • Fehleranfällig wenn z.b. der IR Lesekopf mal ein paar Impulse nicht erkennt.
  • Manuelle Arbeit nötig für die Kalibrierung.

Nutzung der Smart Meter Language (SML)

Einführung in die Methode

Viele moderne Stromzähler unterstützen die Smart Meter Language (SML), die detaillierte Daten über den Stromverbrauch liefert.

Beschreibung der SML und wie sie funktioniert

SML ist ein Kommunikationsprotokoll, das Daten über eine Infrarotschnittstelle oder andere Kanäle sendet.

Schritte zur Freischaltung und Nutzung der SML-Daten
Kontaktaufnahme mit dem Netzbetreiber

Erkundigt euch bei eurem Netzbetreiber, ob euer Zähler SML unterstützt und wie ihr die Schnittstelle freischalten könnt. Bei mir musste ich kurz anrufen.

Eingabe des Freischaltcodes

Nach Erhalt des Codes könnt ihr die SML-Daten freischalten und auslesen.

2. Lösung: Fertiger Lesekopf mit Tasmota

Einführung in die Methode

Diese Methode richtet sich an diejenigen, die eine Plug-and-Play-Lösung bevorzugen und nicht löten oder basteln möchten.

Ein fertiger Lesekopf kann einfach online gekauft werden. Dieser wird dann mit Tasmota geflasht, um die Daten per MQTT an Home Assistant zu senden.

Hardware Empfehlung:

Tasmota Lesekopf: https://amzn.to/3WOuCsp *

Netzteil: https://amzn.to/3KcyMTc *

Konfiguration in Tasmota und Home Assistant
Einbinden des Lesekopfs in das Wi-Fi-Netzwerk
  1. Verbindet den Lesekopf mit eurem Wi-Fi.
  2. Öffnet die Tasmota-Oberfläche im Browser.
Konfiguration über die Tasmota-Oberfläche
  1. Konfiguriert MQTT in Tasmota, um die Daten an Home Assistant zu senden. Das zeige ich dir hier genau Tasmota einrichten
  2. Stellt die relevanten Parameter ein, wie die Anzahl der Impulse pro kWh. Richte dich hier an Doku https://tasmota.github.io/docs/Smart-Meter-Interface/
  3. bei meinem Smart meter war es folgende Einstellung, die geklappt hat
>D
>B
->sensor53 r
>M 1
+1,3,s,0,9600,Main
1,77070100100700ff@1,Power,W,Power,0
1,77070100010800FF@1000,Counter,kWh,Energy,3
#


Für alle die mehr wissen wollen, Erklärung der einzelnen Teile:

  • >D steht für „define“. Hier wird definiert, dass das folgende Skript ein neues Gerät beschreibt. Es signalisiert Tasmota, dass ein neues Skript gestartet wird.
  • >B steht für „begin“. Dies ist der Beginn des Skripts.
  • ->sensor53 r gibt an, dass Sensor53 verwendet wird und dass die Daten gelesen („r“ für read) werden sollen.
  • M 1 wieviele Smart Meter ausgelesen werden.
  • +1,3,s,0,9600,Main ist eine Konfigurationszeile, die die Verbindungseinstellungen beschreibt.
    • 1: Smart Meter
    • 3: Angabe über den Port
    • s: welche Art von Schnittstelle – SML binary smart message coding
    • 0: Anzahl der Stoppbits.
    • 9600: Baudrate, mit der die Daten übertragen werden.
    • Main: Name des Geräts oder der Konfiguration.
1,77070100100700ff@1,Power,W,Power,0
  • 1,77070100100700ff@1,Power,W,Power,0 ist eine spezifische Datenzeile, die beschreibt, welche Daten ausgelesen und wie sie interpretiert werden sollen.
    • 1: Kanalnummer.
    • 77070100100700ff: Obis-Code, der die spezifische Datenart bezeichnet (hier: momentane Leistung).
    • @1: Gibt an, wie die Daten skaliert werden sollen (1-fach hier, also keine Skalierung).
    • Power: Name des Sensors in Tasmota. So heißt er auch in Home Assistant
    • W: Einheit der Messgröße (Watt).
    • Power: Name des Wertes, der in Tasmota gespeichert wird.
    • 0: Gibt an, dass keine weiteren Berechnungen oder Anpassungen notwendig sind.

Optimierung mehr Sensorwerte pro Zeit:

Dazu gehe in Console und Tippe “ TelePeriod 5 “ ein. Hinweis, manche haben berichtet, dass trotzdem nur alle 10 Sekunden ein Update kommt.

Optimierung mehr Sensorwerte pro Zeit:
  • Wenn du das Skript aus der Dokumentation von Tasmota übernimmst, achte darauf die Werte „Power“ und „Energy“ zu benennen. Somit erkennt Home Assistant direkt das und ordnet die richtige Einheit dazu

Vorteile und Nachteile dieser Methode

Vorteile:

  • Einfach zu installieren
  • Keine technischen Kenntnisse erforderlich

Nachteile:

  • Höhere Kosten als Eigenbau
  • Weniger flexibel

Lösung 3 Bau eines eigenen SML-Lesekopfs

Materialliste und Werkzeug

IR Modul Link : https://amzn.to/4bQYqJi *

ESP8266 https://amzn.to/4btlfmx *

Netzteil: https://amzn.to/3USrYz5 *

Jumper Wire https://amzn.to/4buv7wh *

3D Druck Gehäuse: https://www.thingiverse.com/thing:6616141

Schritt-für-Schritt-Anleitung zum Bau und zur Installation

Einrichtung in Home Assistant

Bitte nutze analog den IR Sensor, den ich am Anfang des Artikels beschrieben habe. Wichtig checke, dass du ihn am richtigen Pin im ESP anschließt und der richtige ESP in ESPHome Auswählst.

Einbinden des ESP8266 oder ESP32
  1. Flash ESPHome auf den Mikrocontroller.
  2. Konfiguriert die YAML-Datei für ESPHome. In meinem Beispiel ein ESP8266, Wemos D1 Mini https://amzn.to/4btlfmx *
  3. Falls du ein anderes Board nimmst, musst du „d1_mini“ enstprechend ändern, damit du weiter unten im Code z.B. D7 als Input Pin verwenden kannst.
Code für Home Assistant und ESPHome

Code: https://github.com/thealkly/ESPHome-SML-IR-LED/tree/main 

Inspiriert von Inspiriert von https://wiki.volkszaehler.org/hardware/controllers/esp8266-ir-lesekopf

Bitte passe zum einen die Server ID an, das ist der erste Teil nach SML:084 in meinem Beispiel Screenshot ist es verpixelt.

Überprüfe dann, welche OBIS Codes dein Smart Meter sendet. In meinem Fall nur 1-0:1.8.0 , 1-0:1.8.1, 1-0:1.8.2 1-0:16.7.0

[10:21:54][D][sml:084]:   (050SERVERID1111) 1-0:0.0.9 [ZÄHLERID o.ä.]
[10:21:54][D][sml:084]:   (050SERVERID1111) 1-0:1.8.0 [0x0008b3767b]
[10:21:54][D][sml:084]:   (050SERVERID1111) 1-0:1.8.1 [0x0000000000]
[10:21:54][D][sml:084]:   (050SERVERID1111) 1-0:1.8.2 [0x0008b3767b]
[10:21:54][D][sml:084]:   (050SERVERID1111) 1-0:16.7.0 [0x00006cea]

Das ergibt dan in ESPHome folgende konfiguration. Bitte nutze den Github link, dort passe ich bei Änderungungen oder Fehler den Code an.  https://github.com/thealkly/ESPHome-SML-IR-LED/tree/main 

text_sensor:
  - platform: sml
    name: "ED100l"
    sml_id: mysml
    server_id: "SERVERID"
    obis_code: "129-129:199.130.3"
    format: text
sensor:
  - platform: sml
    name: "SM_Total energy bought"
    sml_id: mysml
    obis_code: "1-0:1.8.0"
    unit_of_measurement: kWh
    accuracy_decimals: 4
    device_class: energy
    state_class: total_increasing
    filters:
      - multiply: 0.0001
  - platform: sml
    name: "SM_Total energy bought-1.8.2"
    sml_id: mysml
    obis_code: "1-0:1.8.2"
    unit_of_measurement: kWh
    accuracy_decimals: 4
    device_class: energy
    state_class: total_increasing
    filters:
      - multiply: 0.0001

  - platform: sml
    name: "Current load"
    sml_id: mysml
    obis_code: "1-0:16.7.0"
    unit_of_measurement: W
    accuracy_decimals: 0
    device_class: energy
    filters:
      - multiply: 0.1

Vorteile und Nachteile dieser Methode

Vorteile:

  • Sehr genau und detailliert
  • Vollautomatisch
  • viele Updates, alle 2-4 Sekunden kommen neue Werte in Home Assistant an

Nachteile:

  • Erfordert Freischaltung durch den Netzbetreiber
  • Etwas komplizierter in der Einrichtung, da man selbst den OBIS Code einrichten muss

Integration in Home Assistant und Nutzung des Energy Dashboards

Detaillierte Anleitung zur Einrichtung des Energy Dashboards in Home Assistant
  1. Öffnet Home Assistant und geht zu den Einstellungen.
  2. Fügt die Sensoren zum Energy Dashboard hinzu.

*Sämtliche mit „*“ markierten Links hängen mit Amazon Partnerprogrammen zusammen. Sie dienen dir als potentiellen Käufer als Orientierung und verweisen explizit auf bestimmte Produkte. Sofern diese Links genutzt werden, kann im Falle einer Kaufentscheidung eine Provision an mich ausgeschüttet werden. Bei einem Kauf über diese Links fallen natürlich keine Mehrkosten an. Danke!!

Fazit

Zusammenfassend lässt sich sagen, dass es mehrere Methoden gibt, um euren digitalen Stromzähler smart zu machen. Ob ihr nun eine kostengünstige Eigenbaulösung bevorzugt, eine fertige Plug-and-Play-Lösung sucht oder die detaillierten Daten der Smart Meter Language nutzen möchtet – für jeden ist etwas dabei. Ich hoffe, dieser Artikel hat euch geholfen und inspiriert, euren Stromverbrauch besser zu verstehen und zu optimieren.

Wenn ihr Fragen oder Anmerkungen habt, schreibt sie gerne in die Kommentare.

Viel Erfolg beim Basteln und Optimieren!

Alkly Dumme Dinge Smart machen

Alkly

Ich zeigt dir, wie du selber ohne Programmierkenntnisse und Herstellerunabhängig dein Zuhause mit selbst gebauter Smart Home-Technologie smart machen kannst.

Oh, hallo 👋
Schön, dich zu treffen.

DIY Smart Home leicht gemacht! Newsletter abonnieren und intelligente Lösungen entdecken!

Informationen dazu, wie ich mit deinen Daten umgehe, findest du in der Datenschutzerklärung. Du kannst dich jederzeit kostenfrei abmelden.

4 Anmerkung zu “Smart Meter auslesen mit Tasmota & ESPHome

  1. Martin

    Hi Alkly,
    ich habe mir die Selbstbau Variante 3 erfolgreich gebaut. Leider komme ich noch nicht an meinen Momentanverbrauch. Ich benutze einen https: DZG_DVSB20.2
    //www.dzg.de/fileadmin/dzg/content/downloads/produkte-zaehler/dvsb/dzg_dvsb_Bedienungsanleitung.pdf

    Meine Yaml schaut in Auszügen wie folgt aus:
    „`
    esphome:
    name: smart-meter
    friendly_name: SMART-METER

    esp8266:
    board: d1_mini

    captive_portal:

    uart:
    id: uart_bus
    rx_pin:
    #D7 GPIO13 bei Wemos D1 Mini, other boars may use different Pin Layouts.
    number: D7
    inverted: false
    baud_rate: 9600
    data_bits: 8
    parity: NONE
    stop_bits: 1
    debug:

    sml:
    id: mysml
    uart_id: uart_bus

    text_sensor:
    – platform: sml
    name: „DZG_DVSB20.2“
    #Change to your Smart Meter Name
    sml_id: mysml
    server_id: „“
    #Change to your server ID as visiable fro the text debug console
    obis_code: „129-129:199.130.3“
    format: text

    sensor:
    – platform: sml
    name: „Bezug“
    sml_id: mysml
    obis_code: „1-0:1.8.0“
    unit_of_measurement: kWh
    accuracy_decimals: 4
    device_class: energy
    state_class: total_increasing
    filters:
    – multiply: 1
    – platform: sml
    name: „Lieferung“
    sml_id: mysml
    obis_code: „1-0:2.8.0“
    unit_of_measurement: kWh
    accuracy_decimals: 4
    device_class: energy
    state_class: total_increasing
    filters:
    – multiply: 0.0001
    – platform: sml
    sml_id: mysml
    obis_code: „1-0:1.7.0“
    unit_of_measurement: W
    accuracy_decimals: 0
    device_class: energy
    filters:
    – multiply: 0.1
    „`
    siehst du irgendwelche offensichtlichen Probleme welche es beschreiben das ich Bezug und Lieferung ausgegeben bekomme jedoch keinen Momentanverbrauch ?

    Antworten
    1. Alkly Autor des Beitrags

      Danke für dein Kommentar.
      Wichtig, bitte füge es als Code ein
      Dazu < code > ohne Leerzeichen davor und danach < /code >

      Was kommt bei der Log Datei raus? Also es kann sein, dass du einen anderen Obis Code nutzen musst.
      Dazu am besten schauen, welche Codes alles aus deinem Smart Meter raus kommen. Das hatte ich im Video gezeigt, wie man die Log Datei ausliest.
      Hier ein Bild von ESPHome, da müsstest du schauen, welche Codes bei dir stehen
      https://esphome.io/_images/sml-log.png

      Antworten
      1. Martin

        Hallo,
        vielen Dank für deine Antwort es liegt augenscheinlich an der Menge an Metriken die mir mein Smartmeter liefert. Diese scheint sich nicht mit den anzeigbaren Wert am SmartMeter zu decken. Offensichtlich kommt nur 1.8.0 und 2.8.0 raus.

        So schaut ein Loop Logs aus:

        [17:22:52][D][sensor:093]: ‚Bezug‘: Sending state 9211.00000 kWh with 4 decimals of accuracy
        [17:22:52][D][sensor:093]: ‚Lieferung‘: Sending state 0.00000 kWh with 4 decimals of accuracy
        [17:22:52][D][sml:078]: OBIS info:
        [17:22:52][D][sml:084]: (XXXX) 1-0:96.50.1 [0x445a47]
        [17:22:52][D][sml:084]: (XXXX) 1-0:96.1.0 [XXXX]
        [17:22:52][D][sml:084]: (XXXX) 1-0:1.8.0 [0x23fb]
        [17:22:52][D][sml:084]: (XXXX) 1-0:2.8.0 [0x00]
        [17:22:52][W][component:237]: Component sml took a long time for an operation (153 ms).
        [17:22:52][W][component:238]: Components should block for at most 30 ms.
        [17:22:52][D][uart_debug:114]: <<< 1E:52:03:53:23:FB:01:77:07:01:00:02:08:00:FF:01:72:62:01:65:02:5A:D1:08:62:1E:52:03:52:00:01:01:01:63:68:D1:00:76:05:21:6F:10:07:62:00:62:00:72:63:02:01:71:01:63:AA:95:00:00:1B:1B:1B:1B:1A:01:B0:E5
        [17:22:53][D][uart_debug:114]: <<< 1B:1B:1B:1B:01:01:01:01:76:05:22:6F:10:07:62:00:62:00:72:63:01:01:76:01:01:02:31:0B:0A:01:44:5A:47:00:02:71:E3:23:01:62:02:63:E8:E4:00:76:05:23:6F:10:07:62:00:62:00:72:63:07:01:77:01:0B:0A:01:44:5A:47:00:02:71:E3:23:07:01:00:62:0A:FF:FF:72:62:01:65:02:5A:D1:09:74:77:07:01:00:60:32:01:01:01:01:01:01:04:44:5A:47:01:77:07:01:00:60:01:00:FF:01:01:01:01:0B:0A:01:44:5A:47:00:02:71:E3:23:01:77:07:01:00:01:08:00:FF:64:1C:01:04:72:62:01:65:02:5A:D1:09:62

        Antworten
        1. Alkly Autor des Beitrags

          Guten Abend, ja der Fehler liegt vermutlich daran, dass kein Pin eingegeben worden ist?
          Die Ausgabe von dir sieht so aus, als wenn der Pin noch nicht deaktiviert worden ist. Dann liefert der Stromzähler keine Watt Angabe und eine sehr grobe kWh Ausgabe.
          Nach dem „Freischalten“ (Anrufen beim Netzbetreiber und Pin anfordern, eingeben und ggf Pin Abfrage deaktivieren) wird meist der kWH Wert auch mit Nachkommastellen ausgegeben.

          Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert