Home Assistant: Digitalen Stromzähler mit ESPHome auslesen
Für unser Smart Home möchten wir den aktuellen Stromverbrauch aufzeichnen. Dafür bietet sich, wie auch in meinem Artikel über die Digitalisierung des Gaszählers, Home Assistant an. In dieser mächtigen Software lassen sich Automatisierungen für das Haus erstellen, aber auch Sensoren einlesen und protokollieren. Das möchten wir mit unserem digitalen Stromzähler machen. Was wir zusätzlich noch benötigen, ist ein ESP8266, sozusagen die Home Assistant Außenstelle, die die Daten an die Zentrale weitergibt. Also, legen wir los!
Hardware: ESP8266 und TCRT5000 zum Auslesen des Stromzählers
Die Hardware lässt sich sehr günstig im Internet erwerben. Zwingend erforderlich sind folgende Bauteile:
- ESP8266 oder ESP32, ich verwende gerne den Wemos D1 Mini
- TCRT5000, ein Infrarotdiode zum Auslesen des Gaszählers
- Litzen oder Jumperkabel
Nicht zwingend erforderlich, aber für den dauerhaften Einsatz gut geeignet sind folgende Bauteile
- Lochrasterplatine
- Schraubbare Pins um die Kabel zum TCRT5000 mit dem Wemos zu verbinden
- Female Pins zum Auflösten auf eine Lochrasterplatine und zum Stecken auf die Pins
Den TCRT5000 muss man vorher noch präparieren. Man erkennt ja, dass dort zwei Dioden verbaut sind, eine helle und eine dunkle. Die hellere sendet ein IR-Licht aus, das die zweite Diode wieder lesen soll. Das kann beispielsweise für eine Lichtschranke verwendet werden. In unserem Fall stört die helle Diode, daher müssen wir sie entfernen. Entweder löten wir die ganze Diode aus, oder wir entfernen den Vorwiderstand. Zweiteres geht deutlich schneller. Dazu einfach den Lötkolben an den SMD-Widerstand halten, dann kann man ihn etwas verschieben.
Die Verdrahtung findet nach folgendem Schaltplan statt. Wir verwenden keinen Pullup-Widerstand, da dieser bereits auf dem TCRT5000 vorhanden ist. Es wird die Spannungsversorgung über VCC und GND hergestellt und der D0-Pin des TRCT5000 wird mit D2 (GPIO4) des Wemos D1 Minis verbunden.
Installation am Stromzähler
Die digitalen Stromzähler, hier im Beispiel von EMH, haben fast immer eine Schnittstelle für den Kunden. Manchmal muss man sie von seinem Netzbetreiber freischalten lassen. In meinem Fall war sie glücklicherweise ohne Freischaltung verfügbar.
In der Regel ist dort eine blinkende LED verbaut. Das Blinklicht ist allerdings im Infrarotbereich, für das menschliche Auge also nicht sichtbar. Mit manchen Handy- oder Digitalkameras kann man es aber sichtbar machen, wenn deren Sensoren noch keinen IR-Filter verbaut haben.
Ich habe mir also aus etwas Schaumstoff und Klebeband einen kleinen Halter gebaut. Den Lesekopf des TCRT5000 habe ich dann unmittelbar vor der blinkenden Diode des Stromzählers platziert. Das Potentiometer des TCRT5000 habe ich mit einem kleinen Schraubendreher so lange verdreht, bis die Output-LED gleichmäßig geblinkt hat.
ESPHome installieren und Home Assistant konfigurieren
Die ausführliche Beschreibung, wie man ESPHome auf den Microcontroller bekommt, habe ich bereits beim Gaszähler beschrieben. Die Konfigurationsdatei für den ESP8266 sieht dann im zweiten Abschnitt, also nach dem „captive_portal“ folgendermaßen aus. Beim Gaszähler habe ich den binary_sensor verwendet. Aus Gründen, die ich nicht verstehe, funktioniert das Setup hier aber nicht. Darum verwende ich nun den Pulse_meter, der wiederum am Gaszähler nicht funktioniert.
# Voher kommt der ganze Kopf der Datei, was der Wizard generiert # [...] sensor: # Stromzähler als Pulse Meter - platform: pulse_meter name: "Stromverbrauch" pin: number: GPIO4 mode: INPUT_PULLUP unit_of_measurement: "kW" accuracy_decimals: 3 timeout: 2 min filters: # Filter outliers - median: window_size: 3 send_every: 1 send_first_at: 1 # Convert pulses/min to kW bei 10000Imp/kWh - multiply: 0.006 total: name: "Stromzähler" unit_of_measurement: "kWh" accuracy_decimals: 3 filters: - multiply: 0.0001
Diesen Code flasht man auf den ESP8266. Gegebenenfalls müssen die Konstanten verändert werden. Das hängt vom Stromzähler ab, wie viele Impulse er ausgibt und in welcher Einheit das umgerechnet werden kann. Der Pulse-Counter hat als Rohsignal „Impulse pro Minute“, bringt bei mir also die Einheit „kWh/min“.
Nebenrechnung: Ich habe einen Verbraucher, der 1.000 Watt = 1 kW verbraucht. Wenn der Verbraucher eine Stunde läuft, verbrauche ich 1 kWh Energie. Der Stromzähler blinkt also 10.000 mal innerhalb dieser Stunde bzw. 166,6 mal pro Minute (siehe Aufdruck). Also muss ich die Pulse/min mit 60/10.000 multiplizieren, also mit 0,006 um wieder auf 1 kW zu kommen. Daher kommt die Konstante in meinem Beispiel.
Im Home Assistant braucht man ebenfalls eine neue Konfiguration. Man bearbeitet dort die configuration.yaml oder, noch besser, die sensor.yaml und ergänzt dort folgende Zeilen:
- platform: template sensors: stromverbrauch_in_kwh: friendly_name: "Elektrische Energie in kWh" value_template: > {% if states('sensor.stromzahler') | float == 0 %} {{ states('sensor.stromverbrauch_in_kwh') }} {% else %} {{ states('sensor.stromzahler') | float }} {% endif %} unit_of_measurement: kWh device_class: energy attribute_templates: state_class: total_increasing
Damit haben wir sozusagen offiziell einen Stromzähler implementiert. Dieser kann wiederum im Energie-Dashboard angezeigt werden.
Eines Morgens habe ich mal ein paar Geräte nacheinander angesteckt und deren Stromverbrauch angesehen.
Schreibe einen Kommentar