Wie viel Strom verbraucht das Haus gerade? Läuft nachts noch ein größerer Verbraucher? Und wie stark verändert sich der Verbrauch, wenn Wärmepumpe, Waschmaschine oder Backofen eingeschaltet werden? Wer einen digitalen Stromzähler besitzt, kann viele dieser Informationen direkt auslesen und in Home Assistant darstellen.
Dafür braucht es häufig keinen teuren Energiemesser im Sicherungskasten. Viele moderne Stromzähler besitzen bereits eine optische Schnittstelle. Mit einem ESP32, einem passenden IR-Lesekopf und ESPHome lassen sich die dort ausgegebenen Daten lokal erfassen.
In dieser Anleitung schauen wir uns an, wie das grundsätzlich funktioniert, welche Hardware benötigt wird und wie die Werte anschließend in Home Assistant landen.
Hinweis: Dieser Artikel enthält Affiliate-Links. Bei einem Kauf über einen gekennzeichneten Link erhalte ich eine kleine Provision. Für dich bleibt der Preis unverändert.
Welche Stromzähler lassen sich mit dem ESP32 auslesen?
Als Erstes solltest du dir deinen Stromzähler genauer ansehen. Viele digitale Stromzähler besitzen auf der Vorderseite eine optische Schnittstelle. Häufig erkennt man sie an zwei kleinen runden Öffnungen beziehungsweise einem optischen Sende- und Empfangsbereich.
In Deutschland geben viele dieser Zähler ihre Daten über SML, Smart Message Language, aus. ESPHome besitzt dafür eine eigene SML-Komponente.
Es gibt allerdings verschiedene Zählermodelle und Protokolle. Prüfe deshalb vor dem Kauf eines Lesekopfes die genaue Typenbezeichnung deines Stromzählers. Auch Baudrate und ausgegebene Messwerte können sich unterscheiden.
[Bild-Platzhalter: Digitaler Stromzähler mit markierter optischer Schnittstelle]
Welche Werte kann ich auslesen?
Welche Informationen tatsächlich ausgegeben werden, hängt vom jeweiligen Stromzähler und dessen Konfiguration ab. Typische Werte sind:
- aktueller Stromverbrauch in Watt
- Gesamtverbrauch in kWh
- Einspeisung in kWh
- aktuelle Einspeiseleistung
- Zählernummer
- teilweise weitere Werte des Zählers
Gerade die aktuelle Leistung ist für Home Assistant interessant. Statt nur einmal im Monat auf den Zählerstand zu schauen, sieht man damit nahezu live, wie sich der Stromverbrauch verändert.
Was benötigen wir?
Für den Aufbau braucht es nur wenige Komponenten:
- ESP32 Development Board
- passenden optischen IR-Lesekopf für den Stromzähler
- USB-Netzteil
- USB-Kabel
- optional ein kleines Gehäuse für den ESP32
ESP32 Development Boards:
ESP32 Boards bei Amazon ansehen*
IR-Lesekopf für digitale Stromzähler:
IR-Leseköpfe für Stromzähler bei Amazon ansehen*
Beim Lesekopf würde ich nicht einfach irgendein Modell bestellen. Kontrolliere vorher, ob der Adapter zu deinem Zähler und zur gewünschten UART-Anbindung des ESP32 passt.
Wie funktioniert das Auslesen?
Der ESP32 verändert nichts am Stromzähler. Er liest lediglich die Daten mit, die der Zähler über seine optische Schnittstelle ausgibt.
Bei vielen SML-Zählern wird regelmäßig ein Datentelegramm übertragen. Der Lesekopf empfängt dieses Signal und gibt es über eine serielle Verbindung an den ESP32 weiter. ESPHome zerlegt anschließend das SML-Telegramm und stellt die gewünschten Werte als Sensoren bereit.
Damit bleibt die gesamte Auswertung lokal. Für die Übertragung der Messwerte vom ESP32 zu Home Assistant wird kein Cloud-Dienst benötigt.
IR-Lesekopf am Stromzähler befestigen
Viele fertige Leseköpfe besitzen einen Magneten und können direkt auf der optischen Schnittstelle des Zählers befestigt werden. Dadurch lässt sich der Sensor bei Bedarf jederzeit wieder entfernen.
Achte darauf, dass Sender beziehungsweise Empfänger des Lesekopfes genau über der optischen Schnittstelle sitzen. Schon eine ungünstige Position kann dazu führen, dass keine oder nur fehlerhafte Daten empfangen werden.
Der große Vorteil dieser Lösung ist, dass der Zähler selbst nicht geöffnet werden muss. An plombierten Bereichen oder an der Netzverdrahtung wird nichts verändert.
Wichtiger Hinweis zum Zählerschrank
Bei diesem Projekt arbeiten wir ausschließlich mit der von außen zugänglichen optischen Schnittstelle des Stromzählers. Öffne keine plombierten Bereiche des Zählerschranks und arbeite nicht an Leitungen mit Netzspannung. Arbeiten an der elektrischen Anlage gehören in die Hände einer Elektrofachkraft.
IR-Lesekopf mit dem ESP32 verbinden
Für SML verwendet ESPHome eine UART-Schnittstelle. Welche Pins benötigt werden, hängt vom verwendeten Lesekopf ab.
Bei einem einfachen UART-Lesekopf könnte der Aufbau beispielsweise so aussehen:
| Lesekopf | ESP32 |
|---|---|
| VCC | je nach Modul 3,3 V oder 5 V |
| GND | GND |
| TX | GPIO16 (RX) |
Die Versorgungsspannung solltest du unbedingt anhand der technischen Daten deines Lesekopfes kontrollieren. Nicht jedes Modul arbeitet mit der gleichen Spannung.
[Bild-Platzhalter: Schaltplan ESP32 mit UART-IR-Lesekopf am digitalen Stromzähler]
SML in ESPHome einrichten
ESPHome unterstützt SML direkt. Zunächst richten wir die serielle Schnittstelle ein.
uart:
id: uart_bus
rx_pin: GPIO16
baud_rate: 9600
sml:
id: mysml
uart_id: uart_bus
9600 Baud ist bei vielen SML-Zählern üblich, aber nicht universell. Abhängig vom Stromzähler können andere UART-Einstellungen erforderlich sein. Wenn keine gültigen Daten ankommen oder ESPHome Prüfsummenfehler meldet, solltest du deshalb zuerst die Schnittstellenparameter deines Zählers kontrollieren.
OBIS-Codes des Stromzählers herausfinden
Jetzt kommt der interessanteste Teil. Die einzelnen Messwerte innerhalb eines SML-Telegramms werden über sogenannte OBIS-Codes identifiziert.
Typische Codes können beispielsweise so aussehen:
| OBIS-Code | häufige Bedeutung |
|---|---|
| 1-0:1.8.0 | bezogene Energie / Zählerstand |
| 1-0:2.8.0 | eingespeiste Energie |
| 1-0:16.7.0 | aktuelle Wirkleistung |
Die tatsächlich vorhandenen Codes solltest du immer anhand der Daten deines eigenen Zählers ermitteln. ESPHome kann die empfangenen SML-Daten im Debug-Log anzeigen. Dadurch lässt sich erkennen, welche OBIS-Werte übertragen werden.
[Bild-Platzhalter: ESPHome-Log mit erkannten SML- und OBIS-Werten]
Aktuelle Leistung in ESPHome anzeigen
Wenn dein Zähler die aktuelle Wirkleistung beispielsweise über 1-0:16.7.0 bereitstellt, kann daraus ein ESPHome-Sensor erstellt werden.
sensor:
- platform: sml
name: "Aktuelle Leistung"
sml_id: mysml
obis_code: "1-0:16.7.0"
unit_of_measurement: "W"
accuracy_decimals: 0
device_class: power
state_class: measurement
Nach dem Flashen des ESP32 steht dieser Sensor über die ESPHome-Integration in Home Assistant zur Verfügung.
Zählerstand auslesen
Interessant ist natürlich auch der eigentliche Energieverbrauch. Dafür wird bei vielen Zählern der OBIS-Code 1-0:1.8.0 verwendet.
sensor:
- platform: sml
name: "Stromzähler Bezug"
sml_id: mysml
obis_code: "1-0:1.8.0"
unit_of_measurement: "kWh"
accuracy_decimals: 3
device_class: energy
state_class: total_increasing
Je nach Zähler kann zusätzlich ein Umrechnungsfaktor notwendig sein. Vergleiche deshalb den in ESPHome angezeigten Wert mit dem Display des Stromzählers, bevor du die Daten dauerhaft verwendest.
PV-Einspeisung auslesen
Wer eine Photovoltaikanlage besitzt, bekommt eventuell noch einen weiteren interessanten Wert. Viele Zweirichtungszähler führen die ins Netz eingespeiste Energie separat.
Dafür wird häufig der OBIS-Code 1-0:2.8.0 verwendet. Ob dein Zähler diesen Wert über die optische Schnittstelle ausgibt, musst du am konkreten Gerät prüfen.
Damit können in Home Assistant Netzbezug und Einspeisung getrennt dargestellt werden.
Stromzähler in Home Assistant integrieren
Ist der ESP32 bereits über ESPHome mit Home Assistant verbunden, erscheinen die angelegten Sensoren automatisch als Entitäten.
Damit kannst du aktuelle Leistung und Zählerstände auf einem Dashboard darstellen oder für Automationen verwenden.
[Bild-Platzhalter: Home-Assistant-Dashboard mit aktuellem Stromverbrauch, Netzbezug und Zählerstand]
Daten im Home Assistant Energy Dashboard nutzen
Besonders interessant wird der Aufbau zusammen mit dem Energie-Dashboard von Home Assistant. Ein korrekt konfigurierter Energiezähler kann dort als Netzbezug verwendet werden.
Besitzt du einen Zweirichtungszähler und kannst auch die Einspeisung erfassen, lässt sich diese ebenfalls hinterlegen. Home Assistant kann daraus langfristige Statistiken über deinen Energieverbrauch erstellen.
Wichtig sind dafür korrekt konfigurierte Einheiten, Device Classes und State Classes. Beim Gesamtverbrauch sollte der Sensor beispielsweise als fortlaufender Energiezähler behandelt werden.
Was bringt die aktuelle Leistung?
Den Zählerstand einmal täglich zu erfassen ist nett. Für Automationen finde ich die aktuelle Leistung allerdings deutlich spannender.
Damit kannst du beispielsweise erkennen, wann größere Verbraucher eingeschaltet werden oder wie hoch die Grundlast des Hauses nachts ist.
- Grundverbrauch des Hauses kontrollieren
- hohe Last erkennen
- Verbrauch im Home-Assistant-Dashboard darstellen
- Benachrichtigung bei ungewöhnlich hohem Verbrauch
- PV-Einspeisung überwachen
- Verbrauch über Tage, Monate und Jahre vergleichen
Alternative: Stromzähler mit Impuls-LED auslesen
Nicht jeder Stromzähler liefert nutzbare SML-Daten. Viele elektronische Zähler besitzen aber eine blinkende LED, deren Impulse proportional zum Energieverbrauch sind.
Auf dem Zähler steht dann beispielsweise 1000 Imp/kWh oder 10.000 Imp/kWh. Mit einem Fototransistor oder geeigneten optischen Sensor können diese Lichtimpulse vom ESP32 gezählt werden.
ESPHome besitzt dafür den pulse_meter-Sensor. Aus der Zeit zwischen den Impulsen kann die aktuelle Leistung berechnet werden. Zusätzlich lässt sich die Gesamtzahl der Impulse erfassen.
Die Umrechnung hängt von der auf deinem Stromzähler angegebenen Impulskonstante ab. Werte aus Beispielkonfigurationen solltest du deshalb nicht ungeprüft übernehmen.
SML oder Impulse zählen?
| SML | Impuls-LED | |
|---|---|---|
| Aktuelle Leistung | häufig direkt verfügbar | wird berechnet |
| Zählerstand | häufig direkt verfügbar | muss aus Impulsen berechnet werden |
| Einspeisung | je nach Zähler möglich | nicht immer unterscheidbar |
| Hardware | IR-Lesekopf | optischer Impulssensor |
| ESPHome | SML-Komponente | Pulse Meter |
Wenn mein Stromzähler SML unterstützt, würde ich diese Variante bevorzugen. Man erhält damit normalerweise wesentlich mehr Informationen direkt vom Zähler.
Brauche ich die PIN des Stromzählers?
Das hängt vom Zähler und Messstellenbetreiber ab. Bei manchen modernen Messeinrichtungen sind zusätzliche Informationen zunächst gesperrt und müssen über eine PIN freigeschaltet werden.
Wenn über die optische Schnittstelle nur wenige Daten ankommen, lohnt sich deshalb ein Blick in die Anleitung des Zählers beziehungsweise auf die Internetseite deines Messstellenbetreibers. Dort erfährst du auch, wie eine eventuell benötigte PIN angefordert und am Zähler eingegeben wird.
ESP32 bekommt im Zählerschrank kein WLAN
Das ist in der Praxis wahrscheinlich eines der häufigsten Probleme bei diesem Projekt. Ein Zählerschrank aus Metall ist für WLAN alles andere als ideal.
Ich würde deshalb zuerst testen, ob der ESP32 am vorgesehenen Standort eine stabile Verbindung bekommt. Falls nicht, kann der ESP32 außerhalb des Metallschranks montiert und der Lesekopf über ein geeignetes Kabel zum Zähler geführt werden.
Ein ESP32-Board mit Anschluss für eine externe WLAN-Antenne kann bei schwierigen Einbausituationen ebenfalls interessant sein.
ESP32 mit externer Antenne bei Amazon ansehen*
Weitere ESP32-Projekte für Home Assistant
Der Stromzähler ist nur eine von vielen Möglichkeiten, einen ESP32 als günstigen Sensor für Home Assistant einzusetzen. Weitere Projekte findest du in meiner ESP8266- und ESP32-Übersicht.
Wenn du mit ESPHome weitermachen möchtest, passen auch mein ESP32 Präsenzmelder mit LD2410 und die ESP32 IR-Fernbedienung für Home Assistant gut dazu.
Fazit: Stromverbrauch lokal mit ESP32 erfassen
Ein ESP32 am digitalen Stromzähler ist für mich eines der interessantesten ESPHome-Projekte überhaupt. Statt zusätzliche Messgeräte in der Elektroverteilung zu installieren, nutzen wir einfach die Daten, die der vorhandene Stromzähler ohnehin bereitstellt.
Wenn der Zähler SML über seine optische Schnittstelle ausgibt, ist der Aufbau überschaubar. ESP32 und IR-Lesekopf reichen für viele Installationen bereits aus. Danach stehen Zählerstand und häufig auch die aktuelle Leistung direkt in Home Assistant zur Verfügung.
Besonders nützlich wird das Ganze zusammen mit dem Energy Dashboard. Dadurch entwickelt sich das kleine ESP32-Projekt schnell zu einer dauerhaften Energieüberwachung für das gesamte Haus.
* Affiliate-Link: Bei einem Kauf über einen gekennzeichneten Link erhalte ich eine Provision. Für dich bleibt der Preis unverändert.
