ESPHome: Gaszähler mit einem ESP8266 auslesen und in HomeAssistant integrieren
Wer hat nicht auch das Ziel, in seiner SmartHome-Umgebung seinen Energieverbrauch aufzuzeichnen. Bei vielen Tüftlern ist das bereits selbstverständlich. Neben dem aktuellen Stromverbrauch ist es auch möglich, den Gasverbrauch mit einem ESP8266 auszulesen. Gerade jetzt ist es umso wichtiger, seinen tatsächlichen Verbrauch von Erdgas im Auge zu behalten und mögliche Optimierungen festzustellen.
Ein Gaszähler kann recht einfach ausgelesen werden. Hierzu braucht es keine teure Hardware, sofern Home Assistant schon eingerichtet ist und verwendet wird. Bei mir läuft HomeAssistant beispielsweise auf einem RaspberryPi, welcher in der Regel ebenfalls günstig gekauft werden kann.
Was zum Auslesen des Gaszählers benötigt wird
- Home Assistant sollte bereits auf einem RaspberryPiWerbung* oder ähnlichem installiert sein
- Einen Reed-Kontakt (mk 471 b)
- Einen ESP8266Werbung*
- 10k WiderstandWerbung*
- WAGO-KlemmenWerbung*
Falls nicht vorhanden, wird folgendes noch zusätzlich benötigt:
- LötkolbenWerbung*
- Jumper-KabelWerbung*
Sofern ihr meiner Anleitung folgt, benötigt ihr an eurem Gaszähler eine stabile WLAN-Verbindung.
Löten und Schaltung aufbauen
Ich möchte auch noch einmal ausdrücklich darauf hinweisen, dass ich kein Elektriker bin und keine Verantwortung für Fehler oder Ähnliches übernehmen werde.
Alle auf dieser Seite aufgeführten Tipps werden nach bestem Wissen gegeben. Trotzdem übernehme ich keinerlei Haftung bei Schäden im Zusammenhang mit der von mir vorgestellten Projekte.
Damit ihr es euch besser vorstellen und nachbauen könnt, habe ich euch meinen Schaltplan aufgezeichnet, so wie ich das Projekt realisiert habe.
Mit dem Pin 3V3 (3,3V) bin ich direkt auf den Reed-Kontakt und von D1 auf das andere Ende des Reed-Kontaktes. Leider hatte ich hier zunächst Störungen (kein Widerstand eingebaut) und musste daher einen Pulldown-Widerstand einbauen. Um dieses Störsignal zu entfernen, habe ich zwischen D1 und dem Reed-Kontakt einen 10k Widerstand auf Ground eingebaut. Dies hat die Störungen verhindert.
ESP2866 in HomeAssistant einbinden
Um den ESP2866 jetzt mit Home Assistant zu verbinden, solltet ihr am einfachsten den Mikrocontroller mit einem Mini-USB-Kabel an den RaspberryPi anschließen, auf dem bereits Home Assistant installiert ist.
In Home Assistant selbst installiert ihr euch zudem noch das Add-on „ESPHome“, mit dem ihr dann euren Controller programmiert.
Unter Home Assistant solltet ihr nun auf der linken Seite „ESPHome“ sehen, unter diesem Punkt könnt ihr einen neuen ESP8266 installieren. Zuvor solltet ihr jedoch in der oberen rechten Ecke auf „SECRETS“ gehen und eure WLAN-Informationen eintragen:
# Your Wi-Fi SSID and password wifi_ssid: " Wi-Fi SSID " wifi_password: "Passwort"
Habt ihr eure Informationen eingetragen, könnt ihr das Fenster über „SAVE“ wieder schließen. Jetzt fügt ihr über „NEW DEVICE“ in der rechten unteren Ecke ein neues Gerät hinzu.
Als Namen gebt ihr zum Beispiel „gaszaehler“ an und wählt im nächsten Schritt euer Gerät aus – beispielsweise den ESP8266.
Daraufhin werdet ihr gefragt, wie ihr das Gerät installieren möchtet. Ist der ESP8266 am RaspberryPi angeschlossen, wählt ihr bitte folgendes:
Nun sollte der ESP8266 auch schon unter ESPHome zu sehen sein. Ihr habt jetzt die Möglichkeit, den ESP wieder von eurem RaspberryPi zu trennen und an eine eigene Stromversorgung zu hängen. Über „EDIT“ habt ihr die Möglichkeit, den nötigen Code zu installieren.
Folgenden Code verwende ich, welcher direkt nach „captive_portal“ eingefügt werden kann:
globals: - id: total_pulses type: int restore_value: false initial_value: '0' binary_sensor: - platform: gpio id: internal_pulse_counter pin: number: GPIO5 mode: INPUT_PULLUP name: "Impuls" filters: - delayed_on: 10ms on_press: then: - lambda: id(total_pulses) += 1; sensor: - platform: template name: "Gasverbrauch" device_class: gas unit_of_measurement: "m³" state_class: "total_increasing" icon: "mdi:fire" accuracy_decimals: 2 lambda: |- return id(total_pulses) * 0.01; ESP_LOGD("Gaszähler TAG", "Pulse bisher: %d", id(total_pulses));
Bitte beachtet, dass ihr ggf. die Zeile total_value += x * 0.01; auf eurem Zähler anpassen müsst. Den Wert eures Zählers findet ihr in der Regel direkt auf dem Gehäuse – je nachdem wie viel ein Impuls bedeutet, das müsst ihr dort eintragen.
Habt ihr den Code eingetragen, speichert ihr diesen und geht noch einmal auf „INSTALL“ – hier wählt ihr die Wirelessly Installation.
Integration hinzufügen
Damit ihr endlich auch Daten beispielsweise in eurem Dashboard erhaltet, müsst ihr den ESP unter Einstellungen>Integrationen noch hinzufügen.
Normalerweise sollte dieser schon automatisch entdeckt werden. Sollte das nicht der Fall sein, bitte unten rechts auf „+INTEGRATION HINZUFÜGEN“.
Reed-Schalter am Gaszähler montieren
Ist alles fertig und der Zähler übermittelt euch Daten (kann mit einem Magneten getestet werden), müsst ihr den Reedkontakt noch an eurem Gaszähler anbringen. Er muss möglichst genau in der Kerbe des Gaszählers (von unten sichtbar) angebracht werden und direkt unter der letzten Ziffer vom Zählerstand. Das Rädchen der letzten Ziffer hat den Magneten, welcher den Impuls ausgibt.
Viel Spaß beim Ausprobieren!