Wie wir einen handelsüblichen Gaszähler mit Hilfe eines zigbee Tür- und Fensterkontakts smart machen haben wir bereits beschrieben und erfolgreich getestet. In diesem Artikel möchten wir einen weiteren Weg beschreiben, der einen WEMOS D1 mini und einen Reed-Kontakt einsetzt. Identisch mit der Fenster-Kontakt-Lösung registriert der Reed-Kontakt den Null-Durchlauf des Gaszählers mit eingebautem Magnet.

Die Idee: Wir flashen den WEMOS D1 mini mit Tasmota, nutzen die Pinouts des WEMOS, um den Reed-Kontakt an Ground und z.B. D7 anzuschließen. D7 ist als Zähler konfiguriert und jedes Mal, wenn der Reed-Kontakt schließt, wird in Tasmota ein interner Zähler hochgezählt. Diesen Wert übertragen wir per MQTT an ioBroker und berechnen den Zählerstand, jeder Durchlauf entspricht 0,01qm Gas.

Update 09/2023 Gegen eine Spende können wir anbieten, eine für Elster-Gaszähler vorgesehene 3D-Druck-Halterung (siehe https://www.thingiverse.com/thing:5175961) für den Reed-Kontakt und Wemos zu drucken.

ESPHome WemosD1 mit Halterung an Gaszähler

ESPHome WemosD1 mit Halterung an Gaszähler

Bei Interesse gerne an 3d@smarthomejetzt.de schreiben.

Was benötigen wir dafür:


Unsere Empfehlungen


Fangen wir an, Schritt 1: WEMOS D1 mini mit Tasmota flashen

Der WEMOS D1 mini ist perfekt für Einsteiger, lässt er sich doch mit einem normalen Micro-USB-Kabel flashen. Umständliches Verkabeln mit den Pinouts ist hier nicht notwendig. Wir laden Tasmotizer herunter, starten das Programm und wählen bei Release „tasmota.bin“ aus. So stellen wir sicher, dass die Firmware mit dem letzten Release-Stand von Github auf dem WEMOS D1 mini geflasht wird.

Wir stecken den WEMOS D1 mini per USB an, wählen den USB-Port aus und starten den Flashvorgang, sollte dies nicht auf Anhieb funktionieren, einfach nochmals versuchen. Die Zeit zwischen dem Anstecken und dem Flashen darf nicht zu lange sein.

Tasmotizer für WEMOS D1

Tasmotizer für WEMOS D1

Tasmotizer für WEMOS D1 flashing

Tasmotizer für WEMOS D1 flashing

Tasmotizer für WEMOS D1 Flash erfolgreich

Tasmotizer für WEMOS D1 Flash erfolgreich

Ist Tasmota erfolgreich auf dem WEMOS D1 mini geflasht, können wir das device neu starten. Der WEMOS D1 mini startet ein eigenes WLAN, mit dem wir uns im nächsten Schritt verbinden müssen, um die WLAN-Konfiguration unseres eigenen WLANs vornehmen zu können.

Mit WLAN des WEMOS mit Tasmota verbinden

Mit WLAN des WEMOS mit Tasmota verbinden

Das WLAN heißt üblicherweise „tasmota-######-####“ und lässt sich ohne Passworteingabe verbinden. Nach erfolgreicher Verbindung sollte sich unter Windows automatisch der Standardbrowser öffnen und die Tasmota-Startseite aufgerufen werden. Ist dies nicht der Fall, im Browser der eigenen Wahl die IP 192.168.4.1 aufrufen.

Startseite Tasmota nach dem Flashen

Startseite Tasmota nach dem Flashen

Tasmota zeigt die verfügbaren WLANs und wir wählen das korrekte WLAN aus, tragen das WLAN-Passwort ein und klicken auf „save“. Im Anschluss wird der WEMOS D1 mini neu gestartet und bei erfolgreichem Verbinden mit dem eigenen WLAN können wir Tasmota mit der zugewiesenen IP aufrufen (diese könnt ihr in der Router-Konfiguration einsehen).

Startseite Tasmota mit WLAN

Startseite Tasmota mit WLAN

Im nächsten Schritt konfigurieren wir Tasmota so, dass wir an einem der Pinouts den Reed-Kontakt installieren können und ein Schließen des Reed-Kontakts in Tasmota hochgezählt wird. Hierzu klicken wir auf Configuration > Configure Module. Wir wählen im Dropdown „Generic 0“ aus und setzen D7 GPIO13 auf Counter mit dem Index 1.

Tasmota Konfiguration der Pinouts für Zähler

Tasmota Konfiguration der Pinouts für Zähler

Wir klicken auf „save“, Tasmota startet neu und folgende Startseite erwartet uns:

Tasmota mit konfiguriertem Zähler auf D7

Tasmota mit konfiguriertem Zähler auf D7

Verbinden wir nun D7 und GND mit einem Kabel bzw. nutzen den Reed-Kontakt und einen Magneten, sollte der Counter1 hochzählen. Wir merken schnell, dass zu viele Impulse gezählt werden. Abhilfe schafft hier die Definition eines timeouts zwischen zwei Triggern, die ein Hochzählen auslösen sollen, der Befehl in Tasmota heißt CounterDebounce und kann mit der Angabe von Millisekunden eingerichtet werden. Wir setzen CounterDebounce auf 500 Millisekunden.

Zähler Debounce in Tasmota einstellen

Zähler Debounce in Tasmota einstellen

Jetzt sollte der Zähler mit jedem Schließen von D7 und GND korrekt hochzählen.

Immer wieder wir empfohlen, zusätzlich zur Verbindung des Reed-Kontakts mit D7 und GND noch einen Widerstand von D7 auf 3,3V zu legen. Die Theorie dahinter besagt, dass der Zustand des D7 (auf Spannung oder auf GND) sporadisch wechseln kann, weswegen man den Pinout mit Hilfe eines Widerstands auf Spannung, an den 3,3V-Pinout legt:

Schaltplan WMOS D1 Mini für Tasmota Zähler mit Reed Kontakt

Schaltplan WMOS D1 Mini für Tasmota Zähler mit Reed Kontakt

Wir können also nun den mit dem WEMOS D1 mini verbundenen Reed-Kontakt am Gaszähler installieren, hierfür entweder die Aussparung nutzen oder den Reed-Kontakt direkt über die letzte Zahl der Kommastellen auf das Display „kleben“.

Aussparung für Reed Kontakt in Gaszähler

Aussparung für Reed Kontakt in Gaszähler

Die wesentlichen Schritte haben wir bereits hinter uns, auf Basis des Reed-Kontakts zählt Tasmota die 0-Durchläufe des Zählers mit, ein Durch lauf entspricht bei drei Nachkommastellen genau 0,01 qm Gas. Wir müssen also im nächsten Schritt den Zählerstand ab Aktivierung unseres Reed-Kontakts mit Anzahl Counter * 0,01 addieren und erhalten den aktuellen Zählerstand.

Wir übertragen den aktuellen Zählerstand von Tasmota an ioBroker mit der eingebauten MQTT-Funktion von Tasmota. Hierzu benötigen wir zunächst einen installierten Sonoff-Adapter im ioBroker. Die Konfiguration ist trivial, wir müssen lediglich einen Nutzer und ein Passwort definieren (und uns den Port merken). Diese Daten geben wir im MQTT-Menü (Configuration > Configure MQTT) unseres WEMOS D1 mini ein:

MQTT für ioBroker konfigurieren

MQTT für ioBroker konfigurieren

Mit „save“ speichern und aktivieren wir die Konfiguration. Wir wechseln in die Protokoll-Ansicht in ioBroker und können die Registrierung des WEMOS in ioBroker beobachten:

WEMOS D1 per MQTT an ioBroker anmelden

WEMOS D1 per MQTT an ioBroker anmelden

Der Sonoff-Adapter speichert alle empfangenen Werte in den Objekten unter dem Sonoff-Adapter-Knoten:

ioBroker Objekte des WEMOS D1 Tasmota MQTT

ioBroker Objekte des WEMOS D1 Tasmota MQTT

Wer die Werte aufmerksam beobachtet wird feststellen, dass nur alle 5 Minuten die Werte per MQTT von Tasmota an ioBroker übertragen werden. Dies ist die Standard-Einstellung von Tasmota, bei Bedarf kann das MQTT-Übertragungsintervall mit dem Befehl TelePeriod in Sekunden definiert werden:

MQTT Sendeintervall in Tasmota anpassen

MQTT Sendeintervall in Tasmota anpassen

Mit TelePeriod sendet der WEMOS D1 mini alle 60 Sekunden den Zählerstand an ioBroker.

Müssen wir im letzten Schritt „nur“ noch die Berechnung auf Basis der gezählten Impulse in ioBroker umsetzen. Hierzu legen wir ein neues Blockly-Script an. Wir erzeugen einen neuen Datenpunkt für den Zählerstand und mit jedem Update des Tasmota-Counters, multiplizieren wir diesen mit 0,01 und addieren den Zählerstand bei Aktivierung des Scripts:

Blockly Script für Zählerstand mit WEMOS D1

Blockly Script für Zählerstand mit WEMOS D1

Nach Aktivierung des Scripts wird der aktuelle Zählerstand im angelegten Objekt gespeichert:

ioBroker Zählerstand in den Objekten

ioBroker Zählerstand in den Objekten

Auf Basis des stetig aktualisierten Zählerstands lässt sich mit unserem Script oder dem Sourceanalytix-Adapter der Gasverbrauch aufzeichnen und auswerten.