Zum Inhalt springen
SONOYA.com
Raspberry Pi & Linux

Stromzähler in Home Assistant mit IR-Lesekopf auslesen

Digitalen Stromzähler per IR-Lesekopf und Tasmota in Home Assistant einbinden: PIN freischalten, SML-Script, MQTT und Energie-Dashboard mit Einspeisung.

Von

Blitz-Symbol auf farbigem Verlauf für das Auslesen eines digitalen Stromzählers mit IR-Lesekopf in Home Assistant

Steckdosen mit Messfunktion zeigen Dir, was einzelne Geräte verbrauchen, aber nie den ganzen Haushalt. Die echte Zahl steht im Keller auf dem digitalen Stromzähler, und der hat vorne eine optische Schnittstelle, die seine Messwerte als Infrarot-Lichtsignal ausgibt. Mit einem IR-Lesekopf für rund 25 bis 40 Euro holst Du diese Werte in Home Assistant: Netzbezug, Einspeisung und die aktuelle Leistung in Watt, sekundengenau und ganz ohne Cloud.

Diese Anleitung führt Dich vom Brief mit der PIN bis zum fertigen Energie-Dashboard. Sie nutzt einen WLAN-Lesekopf mit vorinstalliertem Tasmota, weil das ohne Löten und ohne eigene Firmware auskommt. Die Menüpfade beziehen sich auf Home Assistant 2026.11.

Welchen Zähler Du hast

In deutschen Haushalten hängen heute fast überall digitale Zähler. Zwei Arten sind wichtig:

  • Die moderne Messeinrichtung (mME) ist ein digitaler Zähler ohne Kommunikationsmodul. Sie zeigt die Werte nur am Display und gibt sie über die optische Schnittstelle aus. Das ist der Normalfall und genau der Fall für diese Anleitung.
  • Das intelligente Messsystem (iMSys) ist eine moderne Messeinrichtung mit zusätzlichem Smart-Meter-Gateway, das die Daten an den Messstellenbetreiber funkt. Die optische Schnittstelle am Zähler funktioniert trotzdem, der Lesekopf klappt also auch hier.

Die Schnittstelle erkennst Du an einem kleinen runden Feld mit zwei Leuchtdioden auf der Frontseite, meist oben in der Mitte und mit einem Metallring drumherum. An diesem Ring hält später der Magnet des Lesekopfs. Notier Dir außerdem Hersteller und Typ vom Typenschild, etwa ISKRA MT631, eBZ DD3, DZG DWS7410 oder EMH eHZ. Diese Angabe brauchst Du gleich für das Script.

Die PIN: ohne sie siehst Du fast nichts

Ab Werk geben die meisten Zähler über die Schnittstelle nur den Zählerstand ohne Nachkommastellen aus, die aktuelle Leistung fehlt. Erst mit der PIN schaltest Du die sogenannten erweiterten Daten frei. Die PIN bekommst Du vom Messstellenbetreiber, nicht vom Stromanbieter. Wer das ist, steht auf Deiner Jahresabrechnung, meist ist es der örtliche Netzbetreiber. Auf dessen Website gibt es in der Regel ein Formular, in das Du Deine Zählernummer einträgst, oft ist die Anfrage kostenlos und die PIN kommt per Brief.

Eingegeben wird die PIN mit einer Taschenlampe, die Du auf das Lichtsensor-Feld am Zähler richtest. Bei den meisten Modellen läuft es so ab:

  1. Einmal kurz anleuchten, bis im Display PIN mit vier Nullen erscheint.
  2. Für die erste Ziffer so oft kurz hintereinander anleuchten, bis die richtige Zahl steht, dann drei Sekunden warten. Die Anzeige springt zur nächsten Stelle.
  3. Die übrigen drei Ziffern genauso eingeben. Nach der letzten zeigt das Display die erweiterten Werte.
  4. Im Menü durch kurzes Anleuchten bis PIN on blättern und mit langem Leuchten auf PIN off stellen, damit die Werte nach einem Stromausfall nicht wieder verschwinden.
  5. Genauso den Punkt InF off suchen und auf InF on stellen. Erst damit gibt der Zähler die erweiterten Daten auch über die Schnittstelle aus.

Die genaue Bedienung unterscheidet sich je nach Hersteller, die Bedienungsanleitung Deines Modells findest Du auf der Website des Herstellers oder Messstellenbetreibers. Der fünfte Schritt ist der, der am häufigsten vergessen wird. Wenn später im Lesekopf nur der Zählerstand ankommt, aber keine Leistung, fehlt fast immer InF on.

Der Lesekopf

Für den Einstieg empfehle ich einen IR-Lesekopf mit WLAN und vorinstalliertem Tasmota (Affiliate Link). Diese Geräte stecken einen ESP-Mikrocontroller und die Infrarot-Optik in ein kleines Gehäuse, haften per Magnet am Zähler und brauchen nur ein USB-Netzteil. Achte beim Kauf darauf, dass Tasmota mit Scripting und Smart Meter Interface vorinstalliert ist. Die Standard-Firmware von der Tasmota-Website enthält diese Funktion nicht, eine passende Version müsstest Du sonst selbst kompilieren.

Im Zählerschrank ist selten eine Steckdose. Ein langes USB-Kabel durch die Tür reicht meistens, die Stromaufnahme des Lesekopfs ist winzig. Prüf vorher auch, ob das WLAN im Keller noch ankommt, am einfachsten mit dem Handy direkt vor dem Zählerschrank.

Schritt 1: Tasmota ins WLAN bringen

Steck den Lesekopf ans Netzteil. Er öffnet ein eigenes WLAN mit einem Namen wie tasmota-XXXXXX. Verbinde Dich mit dem Handy damit, die Einrichtungsseite öffnet sich automatisch oder unter http://192.168.4.1. Wähle dort Dein WLAN, gib das Passwort ein und speichere. Der Lesekopf startet neu und holt sich eine Adresse aus Deinem Netz, die Du in der Geräteliste Deines Routers findest.

Öffne diese Adresse im Browser. Du siehst die Tasmota-Oberfläche, vorerst noch ohne Messwerte. Setz den Kopf jetzt mit dem Magneten auf die Schnittstelle des Zählers. Die Optik muss genau mittig sitzen, das Kabel zeigt meist nach unten.

Schritt 2: Das SML-Script eintragen

Moderne Messeinrichtungen senden ihre Daten im Format SML (Smart Message Language), jeder Wert hat dabei eine feste Kennzahl nach dem OBIS-Standard. Für Dich sind drei interessant: 1.8.0 ist der Zählerstand für den Bezug aus dem Netz, 2.8.0 die Einspeisung, etwa von einem Balkonkraftwerk, und 16.7.0 die aktuelle Leistung.

Geh in Tasmota auf Tools > Edit Script, setz den Haken bei Script enable und füge dieses Script ein:

Code
>D
>B
=>sensor53 r
>M 1
+1,3,s,0,9600,SML
1,77070100010800ff@1000,Bezug,kWh,Total_in,3
1,77070100020800ff@1000,Einspeisung,kWh,Total_out,3
1,77070100100700ff@1,Leistung,W,Power_cur,0
#

Speichere mit Save. Der Abschnitt >B setzt beim Start den Zählertreiber zurück, >M 1 sagt, dass ein Zähler angeschlossen ist. Die Zeile mit dem Pluszeichen beschreibt die Verbindung: Zähler Nummer 1, Empfang auf GPIO 3, Format SML, Geschwindigkeit 9600 Baud, und SML ist das Präfix, unter dem die Werte später in Home Assistant auftauchen. Die drei Zeilen danach übersetzen je eine OBIS-Kennzahl in einen Messwert. @1000 teilt den Rohwert in Wattstunden durch 1000 und macht daraus Kilowattstunden.

GPIO 3 ist der Empfangs-Pin bei den meisten fertigen Leseköpfen. Steht in der Anleitung Deines Modells ein anderer, ändere die 3 entsprechend. Das Script passt zu den meisten SML-Zählern, darunter Iskra MT631 und MT175, DZG DWS7410 und eBZ DD3 in der SML-Variante. Einige ältere Zähler wie manche eBZ-DD3-Ausführungen senden stattdessen Klartext nach dem OBIS-ASCII-Verfahren mit 9600 Baud im Format 7E1. Für sie enthält die Tasmota-Doku zum Smart Meter Interface eigene Beispiel-Scripts, dort findest Du Deinen Zähler meist direkt per Suche nach dem Modellnamen.

Nach wenigen Sekunden erscheinen auf der Startseite von Tasmota die drei Werte. Vergleich den Bezug mit dem Display am Zähler: Er muss bis auf die Nachkommastellen übereinstimmen.

Schritt 3: Verbindung zu Home Assistant über MQTT

Tasmota spricht mit Home Assistant über MQTT, einen schlanken Nachrichtendienst. Falls Du noch keinen MQTT-Server hast, installierst Du ihn in Home Assistant unter Einstellungen > Apps mit der App Mosquitto broker (bis Home Assistant 2026.1 hießen Apps noch Add-ons). Starte sie, Home Assistant bietet danach unter Einstellungen > Geräte & Dienste die Integration MQTT an, die Du mit Konfigurieren bestätigst.

Leg für den Lesekopf einen eigenen Home-Assistant-Benutzer an, etwa tasmota, unter Einstellungen > Personen > Benutzer. In Tasmota trägst Du unter Configuration > Configure MQTT die IP-Adresse Deines Home-Assistant-Servers als Host ein, Port 1883 sowie den eben angelegten Benutzer und dessen Passwort. Nach dem Speichern verbindet sich der Lesekopf, und Home Assistant meldet unter Einstellungen > Geräte & Dienste eine neu gefundene Integration Tasmota. Füge sie hinzu.

Im neuen Gerät stehen jetzt drei Sensoren, je nach Gerätename etwa sensor.lesekopf_sml_total_in, sensor.lesekopf_sml_total_out und sensor.lesekopf_sml_power_cur.

Schritt 4: Die Sensoren fürs Energie-Dashboard vorbereiten

Das Energie-Dashboard nimmt nur Sensoren an, die als Energie gekennzeichnet sind und einen stetig steigenden Zählerstand melden. Prüf das unter Entwicklerwerkzeuge > Zustände, indem Du nach total_in suchst. In der Spalte Attribute müssen device_class: energy, state_class: total_increasing und unit_of_measurement: kWh stehen.

Bei SML-Werten aus Tasmota fehlt state_class häufig, und dann taucht der Sensor im Dashboard nicht auf. Das ergänzt Du in der configuration.yaml, am einfachsten mit der App File editor. Pass die Sensornamen an Deine an:

Code
homeassistant:
  customize:
    sensor.lesekopf_sml_total_in:
      device_class: energy
      state_class: total_increasing
    sensor.lesekopf_sml_total_out:
      device_class: energy
      state_class: total_increasing
    sensor.lesekopf_sml_power_cur:
      device_class: power
      state_class: measurement

Gibt es in Deiner Datei schon einen Block homeassistant:, setz nur den Teil ab customize: darunter. Prüf die Konfiguration unter Entwicklerwerkzeuge > YAML > Konfiguration prüfen und starte Home Assistant danach neu. Die Attribute stehen jetzt in den Zuständen. Bis die Sensoren im Energie-Dashboard wählbar sind, kann es bis zu einer Stunde dauern, weil Home Assistant die Langzeitstatistik stündlich anlegt.

Schritt 5: Das Energie-Dashboard einrichten

Öffne Einstellungen > Dashboards > Energie. Im Abschnitt Stromnetz fügst Du eine Netzverbindung hinzu und wählst als Netzbezug den Sensor mit total_in. Hast Du eine PV-Anlage oder ein Balkonkraftwerk, wählst Du im selben Dialog total_out als Rückspeisung ins Netz.

Darunter legst Du die Kosten fest. Für einen normalen Tarif wählst Du einen festen Preis und trägst Deinen Arbeitspreis pro Kilowattstunde aus der Abrechnung ein, inklusive Mehrwertsteuer, etwa 0.32. Für die Einspeisung trägst Du die Vergütung ein, bei einem Balkonkraftwerk ohne Vergütung einfach 0. Wenn Du einen dynamischen Tarif hast, wählst Du statt des festen Preises die Entität, die den aktuellen Preis liefert.

Speichere. Das Dashboard füllt sich ab der nächsten vollen Stunde, die erste vernünftige Tagesansicht hast Du am nächsten Tag. Den Leistungssensor power_cur kannst Du zusätzlich als Leistungsquelle für das Stromnetz eintragen, wenn Deine Version das anbietet. Dann zeigt das Dashboard auch den aktuellen Momentanwert.

Schritt 6: Plausibilität prüfen

Die Zahlen sehen schnell richtig aus, auch wenn sie es nicht sind. Drei Kontrollen lohnen sich:

  • Zählerstand gegen Display. Lies abends den Zählerstand am Zähler ab und vergleiche ihn mit total_in in Home Assistant. Beide müssen auf mindestens eine Nachkommastelle übereinstimmen.
  • Tagesverbrauch gegen Bauchgefühl. Ein Zwei-Personen-Haushalt liegt grob bei 5 bis 9 kWh am Tag. Zeigt das Dashboard 900 kWh, stimmt der Teiler hinter dem @ im Script nicht.
  • Leistung beim Einschalten. Schalte den Wasserkocher ein. Die Leistung muss innerhalb weniger Sekunden um rund 2000 Watt steigen. Bei einem Zähler mit Einspeisung zeigen einige Modelle die Leistung beim Einspeisen als negative Zahl, das ist korrekt.

Den Zählerstand gegen das Display zu prüfen ist die wichtigste Kontrolle, denn ein falscher Faktor fällt im Dashboard sonst erst nach Tagen auf.

Wenn keine Werte ankommen

  • Gar keine Werte in Tasmota: Der Kopf sitzt nicht mittig auf der Schnittstelle, oder der GPIO stimmt nicht. Gib in der Tasmota-Konsole sensor53 d1 ein, dann zeigt Tasmota die rohen Daten vom Zähler. Läuft dort nichts durch, liegt es an Sitz oder Pin. Laufen Daten, aber das Script findet nichts, sendet Dein Zähler OBIS-ASCII statt SML.
  • Nur der Zählerstand, keine Leistung: Die erweiterten Daten sind nicht freigeschaltet. Gib die PIN noch einmal ein und stell InF on.
  • Werte springen wild: Einige Holley-Zähler vom Typ DTZ541 senden dieselbe Kennzahl mehrfach mit unterschiedlichen Werten. Die Tasmota-Doku hat für diesen Zähler ein eigenes Script, das das abfängt.
  • Sensor fehlt im Energie-Dashboard: Fast immer fehlt state_class: total_increasing, oder die Einheit ist nicht kWh. Nach der Korrektur eine Stunde warten.

ESPHome statt Tasmota

Wenn Du ohnehin ESPHome nutzt oder einen Lesekopf selbst mit einem ESP32 und einem Fototransistor baust, liest ESPHome SML direkt mit der Komponente sml. Der Vorteil: Du setzt Geräteklasse und Statusklasse gleich in der Konfiguration, ein customize ist nicht nötig. Der passende Ausschnitt sieht so aus:

Code
uart:
  id: uart_bus
  rx_pin: GPIO3
  baud_rate: 9600
  data_bits: 8
  parity: NONE
  stop_bits: 1

sml:
  id: mysml
  uart_id: uart_bus

sensor:
  - platform: sml
    name: "Netzbezug"
    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.001
  - platform: sml
    name: "Einspeisung"
    sml_id: mysml
    obis_code: "1-0:2.8.0"
    unit_of_measurement: kWh
    accuracy_decimals: 3
    device_class: energy
    state_class: total_increasing
    filters:
      - multiply: 0.001
  - platform: sml
    name: "Leistung"
    sml_id: mysml
    obis_code: "1-0:16.7.0"
    unit_of_measurement: W
    accuracy_decimals: 0
    device_class: power
    state_class: measurement

Den Faktor unter multiply prüfst Du wie oben gegen das Display, denn je nach Zähler kommt der Rohwert in Wattstunden oder in Zehntel-Wattstunden an. Die vollständige Beschreibung der Komponente steht in der ESPHome-Doku zu SML. Wie Du ESPHome grundsätzlich einrichtest und ein Gerät zum ersten Mal flashst, zeigt der Artikel Feinstaubsensor selbst bauen: PMS7003 mit ESPHome.

Hast Du einen alten Ferraris-Zähler mit Drehscheibe oder einen Zähler ohne aktive Schnittstelle, bleibt die blinkende Prüf-LED. Sie blinkt bei vielen digitalen Zählern 10.000-mal pro Kilowattstunde, ein Fotowiderstand davor und die ESPHome-Komponente pulse_meter liefern dann zumindest Verbrauch und Leistung. Einspeisung und exakter Zählerstand fehlen bei dieser Lösung allerdings.

Was Du jetzt damit machen kannst

Mit echten Verbrauchsdaten werden andere Automationen erst sinnvoll. Wenn Du ein Balkonkraftwerk betreibst, ergänzt der Artikel Balkonkraftwerk in Home Assistant: Hoymiles mit OpenDTU die Erzeugung, und das Dashboard zeigt Dir dann auch Deinen Eigenverbrauch. Mit einem dynamischen Tarif hilft Dir Dynamischer Stromtarif in Home Assistant nutzen, große Verbraucher in die billigen Stunden zu schieben, und der Zähler zeigt Dir anschließend schwarz auf weiß, ob es sich gelohnt hat.

Weiterlesen.