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 Nathan Base
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:
- Einmal kurz anleuchten, bis im Display
PINmit vier Nullen erscheint. - 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.
- Die übrigen drei Ziffern genauso eingeben. Nach der letzten zeigt das Display die erweiterten Werte.
- Im Menü durch kurzes Anleuchten bis
PIN onblättern und mit langem Leuchten aufPIN offstellen, damit die Werte nach einem Stromausfall nicht wieder verschwinden. - Genauso den Punkt
InF offsuchen und aufInF onstellen. 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:
>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:
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: measurementGibt 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_inin 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 d1ein, 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 nichtkWh. 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:
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: measurementDen 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.
-
Raspberry Pi & LinuxBalkonkraftwerk in Home Assistant: Hoymiles mit OpenDTU
Hoymiles-Wechselrichter lokal auslesen: OpenDTU auf einem ESP32 einrichten, per MQTT in Home Assistant einbinden und Solarstrom gezielt nutzen.
Nathan Base -
Raspberry Pi & LinuxDynamischer Stromtarif in Home Assistant nutzen
Börsenstrompreise mit Nord Pool in Home Assistant holen, das günstigste Zeitfenster berechnen und Geräte automatisch in die billigen Stunden legen.
Nathan Base -
Raspberry Pi & LinuxZigbee in Home Assistant: ZHA oder Zigbee2MQTT?
ZHA oder Zigbee2MQTT für Home Assistant: konkrete Vor- und Nachteile aus der Community, bewertet, mit klarer Empfehlung und Einrichtung von ZHA.
Nathan Base -
Raspberry Pi & LinuxHome Assistant: Drucker automatisch abschalten und Strom sparen
Eine Steckdose mit Strommessung erkennt, wann der Drucker nur im Standby hängt, und Home Assistant schaltet ihn nach einer Stunde ab. Mit Automation.
Nathan Base -
Raspberry Pi & LinuxNode-RED auf dem Raspberry Pi installieren und absichern
Node-RED mit dem offiziellen Skript auf Raspberry Pi OS Trixie installieren, als Dienst starten, mit Passwort schützen und den ersten Flow bauen.
Nathan Base -
Raspberry Pi & LinuxHome Assistant: Automation löst nicht aus, Fehlersuche
Deine Home-Assistant-Automation tut nichts? Mit Traces findest Du die Ursache: Trigger, Bedingung, Modus Einzeln, nicht verfügbare Entität oder Zeitzone.
Nathan Base