Stromzähler auslesen
In meinem Hausanschlusskasten ist ein ‘smarter Stromzähler’ vom Typ MT 175 des slowenischen Herstellers Iskraemeco verbaut. Ich besitze also eine moderne Messeinrichtung (mMe), wie man auf Neudeutsch sagt. Der Zähler hat eine optische Infrarotschnittstelle nach DIN EN 62056-21. Auf dieser Schnittstelle stellt der Zähler das Smart Meter Language (SML) Protokoll zur Verfügung. Der Zähler hat also ideale Voraussetzungen um ihn in mein Smart Home einzubinden.
Das Bild oben ist schon etwas älter, inzwischen bin ich mit meinen verbrauchten Kilowattstunden fünfstellig. Bei der Suche nach Informationen, wie man einen Stromzähler entsprechend einbindet, bin ich schnell auf der Seite volkszaehler.org gelandet. Hier gibt es ein Wiki mit sehr viel Lesestoff, gerade die Grundlagen sind gut beschrieben.
Lesekopf + Wemos D1 mini
Ich habe mich für einen TTL-Lesekopf entschieden. die Bauanleitung findet man im Wiki unter IR-Schreib-Lesekopf-TTL-Ausgang. Ich bin allerdings den einfachen Weg gegangen, und habe mir den Lesekopf fertig zusammengebaut von Bitshake auf Amazon gekauft. Der Kopf hat einen Neodym-Magneten verbaut, mit dem man den Lesekopf an der vorgesehenen Stelle am Stromzähler befestigen kann.
Man man den Lesekopf auch fertig im Bundle mit einem vorgeflashten Wemos D1 mini bekommen. Der Wemos ist dann mit Tasmota geflasht. Ich setze bei der Firmware allerdings auf ESP Home.
Der Lesekopf kann mit Signalpegeln zwischen 3V und 5V umgehen. Je nachdem, ob man VCC mit 3,3V oder mit 5V beteiben möchte. Die Wemos Ein-/Ausgabe-Pins arbeiten mit 3,3V. Meine Verkabelung sieht so aus:
- Lesekopf VCC - Wemos Pin 3V3
- Lesekopf GND - Wemos Pin G
- Lesekopf TX - Wemos Pin D2 (GPIO4, RX-Pin in der Konfig)
- Lesekopf RX - nicht verdrahtet / konfiguriert
Als Spannungsversorgung dient ein altes Handy-Netzteil, welches direkt an die Micro-USB-B-Buchse des Wemos angeschlossen wird.
OBIS Kennzahlen
Die OBIS-Kennzahlen geben die Datenpunkte an, die der Zähler an seiner Schnittstelle ausgibt. Ohne die PIN werden nur wenige Datenpunkte über die Schnittstelle ausgegeben. Mein Stromzähler gibt folgende Daten aus:
Kennzahl | Beschreibung | Einheit |
---|---|---|
1-0:1.8.0 | Stromzählerstand Bezug Summe | kWh |
1-0:1.8.1 | Stromzählerstand Bezug Tarif 1 | kWh |
1-0:1.8.2 | Stromzählerstand Bezug Tarif 2 | kWh |
129-129:199.130.3 | Hersteller | |
129-129:199.130.5 | Public Key |
Mit der PIN würde der Zähler auch noch die momentane Leistung ausgeben. Eine Übersicht der Datenpunkte die der MT 175 findet man im Wiki auf Volkszaehler.org.
ESP Home
Um für selbstgebaute IOT-Komponenten eine Firmware zu erstellen und sie auf den ESP8266 zu flashen, ist bisher ESP Home meine erste Wahl. Ich benutze im Moment die Version 2025.7.1 in einem Docker Container. Der zu flashende ESP8266 sitzt auf einem entsprechenden Board, dass via USB mit dem Computer verbunden wird. Bei mir ist das meistens ist das ein Wemos D1 mini. Das erste Flashen erfolgt noch kabelgebunden. Weitere Änderungen können dann über ein OTA-Update erfolgen.
Auf den ESP Home Seiten findet man gute Beschreibungen zu den Themen SML und UART. Meine daraus entstandene Konfiguationsdatei sieht so aus:
1esphome:
2 name: stromzahler
3 friendly_name: Stromzähler
4
5esp8266:
6 board: d1_mini
7
8# Enable logging
9logger:
10
11# Enable Home Assistant API
12api:
13
14ota:
15 - platform: esphome
16 password: "123456789"
17
18wifi:
19 networks:
20 - ssid: !secret ssid
21 password: !secret password
22
23 manual_ip:
24 static_ip: 192.168.1.3
25 gateway: 192.168.1.1
26 subnet: 255.255.255.0
27 dns1: 192.168.1.1
28
29#captive_portal:
30uart:
31 id: uart_bus
32 rx_pin: GPIO4
33 baud_rate: 9600
34 data_bits: 8
35 parity: NONE
36 stop_bits: 1
37
38sml:
39 id: mysml
40 uart_id: uart_bus
41
42sensor:
43
44 - platform: sml
45 name: "Zahlerstand"
46 sml_id: mysml
47 server_id: !secret stromzahler_server_id
48 obis_code: "1-0:1.8.0"
49 unit_of_measurement: kWh
50 device_class: energy
51 state_class: total_increasing
Mein Lesekopf lief nicht gleich auf Anhieb. Ich hatte meinen Lesekopf nicht richtig ausgerichtet und daher keine Daten. Nachdem ich den Kopf etwas verdreht hatte, liefen die ersten Daten ein.
Der Stromzähler kann zwei verschieden Stromtarife verarbeiten. Diese Daten werden über die OBIS-Kennzahlen 1-0:1.8.1
und 1-0:1.8.2
zur Verfügung gestellt. Beide Tarife werden dann unter 1-0:1.8.0
aufsummiert ausgegeben. In meinem Fall haben 1-0:1.8.0
und 1-0:1.8.1
den gleichen Wert. Die OBIS-Kennzahl 1-0:1.8.2
liefert den Wert 0.
Unter 129-129:199.130.5
wird immer der Public Key ausgegeben, auch wenn man die Ausgabe nicht konfiguriert hat.
Home Assistant
Die gewonnenen Daten in Home Assistant einzuspielen ist dank der ESP Home Integration sehr einfach. Die Integration benötigt nur eine IP-Adresse und eine Portnummer. In der Konfigurationsdatei vergebe ich daher eine feste IP-Adresse. Home Assistant legt dann entsprechende Entitäten an.
Energy Dashboard
Über die Konfiguration des Energy Dashboards habe ich, unter Stromnetz > Netzbezug, die oben eingerichtete Entität Zahlerstand
hinzugefügt. Für den Strompreis habe ich einen Helfer vom Type ‘Zahlenwert-Eingabe’ eingerichtet. Hier hinterlege ich den Preis/kWh.
Home Assistant bekommt es gut hin die Daten optisch aufzubereiten. In der Grafik oben wird der Netzbezug blau dargestellt, der über die Balkonsolaranlage erzeuge Strom orange.
Der Lesekopf funktioniert technisch wunderbar. Die Daten laufen zuverlässig in Home Assistant ein. Der Stromzähler liefert bei jeder Abfrage den Endzählerstand und Home Assistant errechnet daraus die verbrauchte Energy in kWh. Den Zeitraum kann man für die Darstellung so anpassen wie man möchte. Meine Solaranlage liefert ebenfalls einen Gesamtzählerstand mit dem Ertrag in kWh. Dieser Zählerstand wird vom Wechselrichter erzeugt, wie genau er allerdings ist, ist fraglich. Ertrag der Solaranlage und Netzbezug werden gegeneinander verrechnet. Hier können natürlich auch fehlerhafte Werte entstehen, wenn erbrachte Solarenergie ins Netz eingespeist wird und dort verpufft.
Mein größtes Manko ist daher die fehlende Ausgabe der Momentanleistung (OBIS Kennzahl 1-0:16.7.0
). Diese wird nur mit PIN, die ich nicht habe, ausgegeben. Mein Netzanbieter sieht sich nicht in der Lage mir die PIN zuzustellen, auch nach mehrmaligem Mailverkehr. Die PIN kann auch durch eine Taste eingegeben werden. Nach mehreren Fehlversuchen erfolgt keine Sperrung. Mein Lösungsansatz wäre also die möglichen PINs über die Infrarotschnittstelle durchiterieren zu lassen. Aber das ist ein Projekt für den Winter…