Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. Anleitung - Gaszähler mit NodeMCU, ESPeasy

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    331

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.5k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.5k

Anleitung - Gaszähler mit NodeMCU, ESPeasy

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
gasleitungblocklyeasyespnodemcuesp8266mqtt
19 Beiträge 8 Kommentatoren 21.3k Aufrufe 18 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • oberfraggerO oberfragger

    Hallo,

    aufgrund des Forumseintrages hatte ich mir vorgenommen, meinen Gaszähler abzulesen. Leider war ich vom Know-How noch etwas vom Level entfernt, den Eintrag zu verstehen. Nun ist das Ganze "fertig" und ich habe mir sowie vorgenommen Einsteigerfreundliche Anleitungen zu schreiben (Irrtümer vorbehalten). Vorneweg: Für viele aus dem Forum ist dieser Beitrag vielleicht langweilig, aber vielleicht kann ich da jemanden mal mit helfen.

    Für mich war es der erste richtige Kontakt mit den NodeMCUs und dem ESP8266...

    Zusammenfassung: Eigentlich gar nicht so schwer, für die Teilprobleme gibts immer Hilfe
    Zeuitlicher Aufwand: Gar nicht so viel, wenn man schon mal was mit dem 8266 gemacht hat
    Kostenpunkt: Sehr gering (je nach Reed-Kontakt)
    Die einzelnen Positionen:
    Kabel die an den Pin-Out vom NodeMCU passen, oder halt anlöten
    1 NodeMCU - ca. 4,50 Euro (bei Ali ca. 2 Euro, dafür längerer Versand, Gearbest ca. 4,50 Euro dafür ca. 2 Wochen und aus D ab ca. 6 Euro)
    1 Pull-Up-Widerstand 10 KOhm - ca. 10 Cent (wenn an GPIO-14/D5 dann nicht notwendig)
    1 Leuchtdiode - ca. 20 Cent (nicht zwingend notwendig, signalisiert mir den Pulse)
    1 Widerstand 1kOhm für die Leuchdiode - ca. 10 cent
    Spannungsversorgung für den NodeMCU - habe ein MicroUSB-Kabel einfach an meinen Raspi geschlossen. Tut ansonsten aber ein rumfliegendes USB-Netzteil.
    Reed-Kontakt - 28 Euro bei Ebay.

    Habe mich für den passenden entschieden, damit ich unter der Gasbalge nicht rumfummeln muss und "Installationsfehler" reduzieren kann. Sieht auch schöner aus. Das Teil kann einfach unter die Gasbalge "geklickt" werden. Die Kabel werden im Gehäuse einfach nur mittels vorhandener Lüsterklemme festgeschraubt.
    8ea6c0c5-7871-4037-baee-97af1e803777-image.png

    1. Schritt - Flashen des NodeMCUs
      Dieser Schritt hat bei mir am längsten gedauert. Aber nur weil ich mich damit nicht so auskannte.
      Hier führen bekanntlich viele Wege nach Rom

    Ich habe leider etliche Zeit verschwendet, da nirgend deutlich auf die beiden Köpfe auf dem NodeMCU hingewiesen hat - Reset und Flash. Erst nachdem ichd as rausgefunden habe, hat es bei mir zuverlässig funktioniert. Sprich: Flashvorgang am PC starten, Flash-Taste gedrückt halten und kurz reset drücken! (Update- das ist bei Variante B nicht notwendig) Damit fährt die NodeMCU direkt im Flash-Modus hoch und die Programme funktionieren.

    Verkabelung des NodeMCU zum flashen

    a) Flashen via FTDI
    Hierfür benötigt man 4 female-female Kabel, 1 Mini-Usb-Kabel für den FTDI.
    Was bei mit nicht funktioniert hat- den FTDI-Jumper auf 3,3V zu setzen. Da hat Windows das Gerät immer nicht erkannt. Deshalb hab ich den Jumper wie auf dem Bild so gelassen wie er war.
    VCC - 5v
    GND - GND
    RX - TX
    TX - RX

    7075bbde-c3ba-49b4-8173-ff56939863bf-image.png

    b) Flashen direkt via MicroUSB-Kabel

    Ist von der verkabelung am einfachsten, Stolperstein ist allerdings das Micro-USB-Kabel. Nachdem ich wusste wie es geht, habe ich noch einmal wild rumprobiert und im Haushalt nur 1 Kabel gefunden mit welches dieses möglich war.
    Einfach die CP210x USB to UART Bridge VCP Drivers installieren und NodeMCU am MicroUSB-Kabel anschließen.

    Windows erkennt die Geräte und weist diesen oftmals Com3 oder 4 zu. bitte im Gerätemanager überprüfen damit man weiss, über welchen Com-Port kommuniziert wird.

    Sobald man also die Verkabelung wie in a) oder b) vorgenommen hat, kann man mit dem flashen beginnen.

    Flashen und download der Firmware

    ESPeasy Download
    Auf das entsprechende Release klicken (ja...den Link hatte ich echt immer übersehen) , runterladen und entpacken (aktuell ESPEasy_mega-20191208.zip). Im Hauptordner befinden sich gleich 2 Flash-Tools. Zum einden der ESP.Easy.Flasher.exe und zum anderen FlashESP8266.exe. Der Easyflasher hats bei mir auch nicht getan. Am einfachsten war FlashESP8266.exe.

    Dazu im Ordner bin die richtige Datei raussuchen (ESP_Easy_mega-20191208_normal_ESP8266_4M1M.bin) und in den Hauptordner kopieren. Dann FlashESP8266.exe starten und man erhält folgendes Bild.
    feb867ad-3dea-46ca-91e5-aeff7ea82d95-image.png

    Jetzt einfach auf "Flash" drücken und wie oben beschrieben- den "Flash"-Knopf gedrückt halten und einmal kurz auf "Reset" drücken. Dann startet der Flash-Vorgang auch schon recht schnell und das Programm bestätigt idealerweise mit "Flash erfolgreich". Für mich hat es hiermit am besten funktioniert.

    Der ESPEasyFlasher sieht so aus.
    99cd699f-cc7e-451d-a3d7-349cab1def61-image.png Irgendwie hat das nie so richtig geklappt, die Zeit zum erfolgreichen flashen zählte immer nicht runter.

    NodeMCU Flash Tool
    Das ganze ist auch hier beschrieben. Das NodeMCU-Flasher Tool runterladen (rechts oben, grüner Button, download) und starten. Unter Config kann man mittels Zahnrad das richtige .bin-File wählen und unter Operation "Flash(F)". Das hat bei mir recht lange gedauert f73db9bc-bcd2-48d7-ac6c-935de34b8a78-image.png

    Alternativ kann man auch Kompilieren & flashen mittels Arduino-Umgebung
    Dieser Schritt war bei mir recht aufwändig. Habe die entsprechenden Files dafür gefunden, aber es nie geschafft den NodeMCU zu flashen. Ständig wurden Bibliotheken nicht gefunden etc. Da es fertige .bin-Files gibt, ist dieses eher zu aufwändig. Deshalb beschreibe ich das nicht näher.

    Wie gesagt- viele Wege führen nach Rom und man kann über viele Wege das NODEMCU flashen. Der schwierigste Teil ist somit bereits beendet.

    Mit ESPeasy auf dem NodeMCU verbinden.
    Nach dem erfolgreichen Flashvorgang versorgt man die NODEMCU mit Strom (beispielsweise Netzteil+Micro-USB-Kabel). Die NodeMCU bootet und spannt ein Passwortgeschütztes WLAN auf. Mit diesem WLAN verbinden und als Passwort "configesp" eingeben. In dem nun erscheinenden Fenster trägt man die Daten des eigenen WLANs ein und startet das Gerät neu.
    bd4acc8e-c8dd-48f2-833b-54bd60b68160-image.png
    Nach dem Neustart verbindet sich das Gerät mit dem eingegebenen WLAN. Die entsprechende IP kann man beispielsweise über die Oberfläche seines Routers ermitteln.

    Jetzt gehts mit dem Verkabeln weiter:
    Die eine Seite des Reed-Kontaktes habe ich an GPIO14 geschlossen und die andere an GND darüber.
    b2897994-70bc-42dc-b88c-104abc1d7949-image.png Zusätzlich habe ich den 10kOhm Widerstand mit GPIO14 und der 3,3V Spannung verbunden. Gemäß @simatec ist dieser vermutlich garnicht notwendig. Siehe auch das Schaltbild. Damit ist die Wesentliche Verkabelung bereits erledigt!

    Da ich den Pulse mittels zusätzlicher LED signalisieren wollte, habe ich die +Seite der LED an D6/ GPIO12 und die andere Seite an GND geschlossen. Dazwischen noch den 1kOhm Widerstand. Seite ist egal. Ich hab den auf die GND-Seite geschlossen.
    441aee7d-90b6-4477-94b3-8460eebe3128-image.png

    Jetzt noch den Reed-Kontakt unter die Gasbalge klemmen (siehe Bild oben) und die NodeMCU mit Spannung versorgen.

    ESPeasy konfiguieren
    Aus der Config-Seite habe ich einen Unit-Name gesetzt und als Nummer die "1" gewählt. Der Unit-Name taucht dann später in MQTT auf. Unter "Tools" dann den Haken bei "Rules" machen und idealerweise den NTP-Hostname konfigurierern. Muss nicht, ist aber "schöner".
    8d2713e8-6a14-4afe-91f2-c79cb4498b9a-image.png

    Jetzt den PulseCounter unter Devices eintragen (add Device generic PulseCounter). Ich habe die folgenden Settings gewählt.
    5231891a-f0a2-499c-903e-0c47fcf0cb91-image.png

    Am wichtigsten ist das "enabled" und GPIO14 - Pulse. Für die values noch sprechende Namen vergeben und 0-Nachkommastellen auswählen. Als Interval habe ich 30 Sekunden gewählt, da die Differenz immer nach dieser Zeiteinheit zurück gesetzt wird. Anhand dieser zähle ich dann später den Gaszähler im ioBroker hoch. Das Ganze natürlich immer via submit an den NodeMCU übertragen.

    Als letztes im NodeMCU noch unter Controller MQTT einrichten. Wichtig ist die Portnummer. Ich habe ein paar Sonoffs unter 1883 bereits eingerichtet. Deshalb habe ich mich nun für den Port 1888 entschieden. IP vom ioBroker und die Login-Credentials auf dem ioBroker eintargen. Ganz unten noch auf "enabled" setzen und submitten.
    6a547572-e7b5-40bd-b00b-d74dfe34a4e2-image.png

    Mittels Leuchtdiode wollte ich mir ja den Pulse anzeigen lassen. Außerdem habe ich noch als "Heartbeat" die Onboard-Led alle 10 Sekunden blinken lassen. Das ganze macht man unter "Rules".

    on System#Boot do
     Monitor GPIO,14 //GPIO 14 -Reed-Kontakt überprüfen
      gpio,2,1	 //BoardLED anschalten	
      timerSet,1,10  //Timer 1 auf 10 Sekunden setzen
    endon
    
     on GPIO#14=1 do
      GPIO,12,0  //LED definitiv deaktivieren
     endon
    
     on GPIO#14=0 do
      GPIO,12,1  //LED einschalten
      Delay,3000 //3 Sekunden Pause
      GPIO,12,0  //Leb abschalten
     endon
    
    On Rules#Timer=1 do
     gpio,2,0     //BoardLED abschalten
     timerSet,2,1 //Timer 2 auf 1 Sekunde setzen
    endon
    
    On Rules#Timer=2 do  
     gpio,2,1     //BoardLED anschalten
     timerSet,1,10
    endon
    

    Das Abschalten der LED nach Zeit X ist wichtig falls der Gaszähler mal auf der "0" stehen bleibt. Dann würde die Leuchtdiode die ganze Zeit leuchten. Wenn man keine extra Leuchtdiode sonder die interne Diode nutzen möchte (GPIO2) dann einfach die ganzen Timer/ Regeln mit GPIO2 löschen und GPIO12 auf GPIO2 ändern.

    Jetzt gehts in den ioBroker
    Im ioBroker den MQTT-Server/Client-Adapter installieren. Die gerade gewählte Portnummer und die festgelegten Credentials aus dem letzten Schritt eintragen.
    29a93740-20d4-45cb-b86f-d83937e82ef6-image.png

    Hierdurch erscheint unter den Objekten bereits der Gaszähler.
    8364a8c5-24ff-4c5b-a390-335ce35ad0ed-image.png
    Da nach einem Stromverlust alle Werte genullt werden, müssen diese im ioBroker gespeichert werden. Dafür habe ich dann einen eigenen Datenpunkt angelegt. Das sind die wichtigsten Weret des DP.

        "role": "value",
        "type": "number",
        "unit": "m³",
        "read": true,
        "write": true,
        "desc": "Manuell erzeugt",
    

    Zusätzlich habe ich für spätere Verfeinerung dann noch weitere DP bzgl. der Kosten etc. angelegt. Das ist im ursprünglichen Forumsbeitrag von @h1ob und @GeorgS haber viel umfänglicher beschrieben.

    Jetzt muss der eigene DP noch via Script aktualisiert werden. Ich habe mir überlegt, dass bei der Aktualisierung der Diffenz der eigene Zähler sofort hochgezählt wird. Sollte dann der NodeMCU neu starten, wurde diese Veränderung ja bereits übertragen. Mein Blockly sieht dann so aus:
    491264a4-9ee2-43c1-819b-6a7a92a43694-image.png Das Script ist dann folgendes.

    on({id: 'mqtt.0.ESP_Easy_GAS.Gaszaehler.Differenz', change: "gt"}, function (obj) {
      var value = obj.state.val;
      var oldValue = obj.oldState.val;
      setState("0_userdata.0.Gaszaehler.Zaehlerstand"/*Zaehlerstand*/, Math.round((getState("0_userdata.0.Gaszaehler.Zaehlerstand").val + 0.01)*100)/100);
    });
    

    Das Runden ist wichtig da die Operationen sonst manchmal krumme Werte ergeben.
    Achtung - das ist noch fehlerhaft bzw. der Zählerstand ist mit dem ioBroker-Zähler auseinander gelaufen. Ist ja zum Glück nur das Script bzw. die Eisnetlung auf dem ESP. Prinzipiell funktioniert das ja.Update folgt.

    Demnächst werde ich mich noch um ein vernünftiges Gehäuse kümmern und vor allem die monitäre Berechnung vernünftig machen. Dann vermutlich noch einen DHT22 anklemmen damit ich parallel die Temperatur und Luftfeuchtigkeit aus dem HW-Raum via MQTT habe.

    Auf diesem Weg- vielen Dank für die Idee und die Unterstützung von @SBorg, @h1ob und @GeorgS .

    Ich hoffe ich habe grobe Fehler weggelassen und vor allem anderen Anfängern geholfen bzw. gaanz Anfängerfreundlich dokumentiert.

    Falls Ihr Fehler findet oder Ergänzungen habt, bitte Kommentieren.

    simatecS Offline
    simatecS Offline
    simatec
    Developer Most Active
    schrieb am zuletzt editiert von
    #4

    @oberfragger
    Sehr schöne Anleitung ...
    Hier nur ein kleiner Hinweis, wie ich es aufgebaut habe.
    Und zwar hängt mein Reed Kontakt direkt an D5 (GPIO-14) und GND.
    Somit ist kein Widerstand dazwischen nötig.

    • Besuche meine Github Seite
    • Beitrag hat geholfen oder willst du mich unterstützen
    • HowTo Restore ioBroker
    oberfraggerO 1 Antwort Letzte Antwort
    0
    • oberfraggerO oberfragger

      Hallo,

      aufgrund des Forumseintrages hatte ich mir vorgenommen, meinen Gaszähler abzulesen. Leider war ich vom Know-How noch etwas vom Level entfernt, den Eintrag zu verstehen. Nun ist das Ganze "fertig" und ich habe mir sowie vorgenommen Einsteigerfreundliche Anleitungen zu schreiben (Irrtümer vorbehalten). Vorneweg: Für viele aus dem Forum ist dieser Beitrag vielleicht langweilig, aber vielleicht kann ich da jemanden mal mit helfen.

      Für mich war es der erste richtige Kontakt mit den NodeMCUs und dem ESP8266...

      Zusammenfassung: Eigentlich gar nicht so schwer, für die Teilprobleme gibts immer Hilfe
      Zeuitlicher Aufwand: Gar nicht so viel, wenn man schon mal was mit dem 8266 gemacht hat
      Kostenpunkt: Sehr gering (je nach Reed-Kontakt)
      Die einzelnen Positionen:
      Kabel die an den Pin-Out vom NodeMCU passen, oder halt anlöten
      1 NodeMCU - ca. 4,50 Euro (bei Ali ca. 2 Euro, dafür längerer Versand, Gearbest ca. 4,50 Euro dafür ca. 2 Wochen und aus D ab ca. 6 Euro)
      1 Pull-Up-Widerstand 10 KOhm - ca. 10 Cent (wenn an GPIO-14/D5 dann nicht notwendig)
      1 Leuchtdiode - ca. 20 Cent (nicht zwingend notwendig, signalisiert mir den Pulse)
      1 Widerstand 1kOhm für die Leuchdiode - ca. 10 cent
      Spannungsversorgung für den NodeMCU - habe ein MicroUSB-Kabel einfach an meinen Raspi geschlossen. Tut ansonsten aber ein rumfliegendes USB-Netzteil.
      Reed-Kontakt - 28 Euro bei Ebay.

      Habe mich für den passenden entschieden, damit ich unter der Gasbalge nicht rumfummeln muss und "Installationsfehler" reduzieren kann. Sieht auch schöner aus. Das Teil kann einfach unter die Gasbalge "geklickt" werden. Die Kabel werden im Gehäuse einfach nur mittels vorhandener Lüsterklemme festgeschraubt.
      8ea6c0c5-7871-4037-baee-97af1e803777-image.png

      1. Schritt - Flashen des NodeMCUs
        Dieser Schritt hat bei mir am längsten gedauert. Aber nur weil ich mich damit nicht so auskannte.
        Hier führen bekanntlich viele Wege nach Rom

      Ich habe leider etliche Zeit verschwendet, da nirgend deutlich auf die beiden Köpfe auf dem NodeMCU hingewiesen hat - Reset und Flash. Erst nachdem ichd as rausgefunden habe, hat es bei mir zuverlässig funktioniert. Sprich: Flashvorgang am PC starten, Flash-Taste gedrückt halten und kurz reset drücken! (Update- das ist bei Variante B nicht notwendig) Damit fährt die NodeMCU direkt im Flash-Modus hoch und die Programme funktionieren.

      Verkabelung des NodeMCU zum flashen

      a) Flashen via FTDI
      Hierfür benötigt man 4 female-female Kabel, 1 Mini-Usb-Kabel für den FTDI.
      Was bei mit nicht funktioniert hat- den FTDI-Jumper auf 3,3V zu setzen. Da hat Windows das Gerät immer nicht erkannt. Deshalb hab ich den Jumper wie auf dem Bild so gelassen wie er war.
      VCC - 5v
      GND - GND
      RX - TX
      TX - RX

      7075bbde-c3ba-49b4-8173-ff56939863bf-image.png

      b) Flashen direkt via MicroUSB-Kabel

      Ist von der verkabelung am einfachsten, Stolperstein ist allerdings das Micro-USB-Kabel. Nachdem ich wusste wie es geht, habe ich noch einmal wild rumprobiert und im Haushalt nur 1 Kabel gefunden mit welches dieses möglich war.
      Einfach die CP210x USB to UART Bridge VCP Drivers installieren und NodeMCU am MicroUSB-Kabel anschließen.

      Windows erkennt die Geräte und weist diesen oftmals Com3 oder 4 zu. bitte im Gerätemanager überprüfen damit man weiss, über welchen Com-Port kommuniziert wird.

      Sobald man also die Verkabelung wie in a) oder b) vorgenommen hat, kann man mit dem flashen beginnen.

      Flashen und download der Firmware

      ESPeasy Download
      Auf das entsprechende Release klicken (ja...den Link hatte ich echt immer übersehen) , runterladen und entpacken (aktuell ESPEasy_mega-20191208.zip). Im Hauptordner befinden sich gleich 2 Flash-Tools. Zum einden der ESP.Easy.Flasher.exe und zum anderen FlashESP8266.exe. Der Easyflasher hats bei mir auch nicht getan. Am einfachsten war FlashESP8266.exe.

      Dazu im Ordner bin die richtige Datei raussuchen (ESP_Easy_mega-20191208_normal_ESP8266_4M1M.bin) und in den Hauptordner kopieren. Dann FlashESP8266.exe starten und man erhält folgendes Bild.
      feb867ad-3dea-46ca-91e5-aeff7ea82d95-image.png

      Jetzt einfach auf "Flash" drücken und wie oben beschrieben- den "Flash"-Knopf gedrückt halten und einmal kurz auf "Reset" drücken. Dann startet der Flash-Vorgang auch schon recht schnell und das Programm bestätigt idealerweise mit "Flash erfolgreich". Für mich hat es hiermit am besten funktioniert.

      Der ESPEasyFlasher sieht so aus.
      99cd699f-cc7e-451d-a3d7-349cab1def61-image.png Irgendwie hat das nie so richtig geklappt, die Zeit zum erfolgreichen flashen zählte immer nicht runter.

      NodeMCU Flash Tool
      Das ganze ist auch hier beschrieben. Das NodeMCU-Flasher Tool runterladen (rechts oben, grüner Button, download) und starten. Unter Config kann man mittels Zahnrad das richtige .bin-File wählen und unter Operation "Flash(F)". Das hat bei mir recht lange gedauert f73db9bc-bcd2-48d7-ac6c-935de34b8a78-image.png

      Alternativ kann man auch Kompilieren & flashen mittels Arduino-Umgebung
      Dieser Schritt war bei mir recht aufwändig. Habe die entsprechenden Files dafür gefunden, aber es nie geschafft den NodeMCU zu flashen. Ständig wurden Bibliotheken nicht gefunden etc. Da es fertige .bin-Files gibt, ist dieses eher zu aufwändig. Deshalb beschreibe ich das nicht näher.

      Wie gesagt- viele Wege führen nach Rom und man kann über viele Wege das NODEMCU flashen. Der schwierigste Teil ist somit bereits beendet.

      Mit ESPeasy auf dem NodeMCU verbinden.
      Nach dem erfolgreichen Flashvorgang versorgt man die NODEMCU mit Strom (beispielsweise Netzteil+Micro-USB-Kabel). Die NodeMCU bootet und spannt ein Passwortgeschütztes WLAN auf. Mit diesem WLAN verbinden und als Passwort "configesp" eingeben. In dem nun erscheinenden Fenster trägt man die Daten des eigenen WLANs ein und startet das Gerät neu.
      bd4acc8e-c8dd-48f2-833b-54bd60b68160-image.png
      Nach dem Neustart verbindet sich das Gerät mit dem eingegebenen WLAN. Die entsprechende IP kann man beispielsweise über die Oberfläche seines Routers ermitteln.

      Jetzt gehts mit dem Verkabeln weiter:
      Die eine Seite des Reed-Kontaktes habe ich an GPIO14 geschlossen und die andere an GND darüber.
      b2897994-70bc-42dc-b88c-104abc1d7949-image.png Zusätzlich habe ich den 10kOhm Widerstand mit GPIO14 und der 3,3V Spannung verbunden. Gemäß @simatec ist dieser vermutlich garnicht notwendig. Siehe auch das Schaltbild. Damit ist die Wesentliche Verkabelung bereits erledigt!

      Da ich den Pulse mittels zusätzlicher LED signalisieren wollte, habe ich die +Seite der LED an D6/ GPIO12 und die andere Seite an GND geschlossen. Dazwischen noch den 1kOhm Widerstand. Seite ist egal. Ich hab den auf die GND-Seite geschlossen.
      441aee7d-90b6-4477-94b3-8460eebe3128-image.png

      Jetzt noch den Reed-Kontakt unter die Gasbalge klemmen (siehe Bild oben) und die NodeMCU mit Spannung versorgen.

      ESPeasy konfiguieren
      Aus der Config-Seite habe ich einen Unit-Name gesetzt und als Nummer die "1" gewählt. Der Unit-Name taucht dann später in MQTT auf. Unter "Tools" dann den Haken bei "Rules" machen und idealerweise den NTP-Hostname konfigurierern. Muss nicht, ist aber "schöner".
      8d2713e8-6a14-4afe-91f2-c79cb4498b9a-image.png

      Jetzt den PulseCounter unter Devices eintragen (add Device generic PulseCounter). Ich habe die folgenden Settings gewählt.
      5231891a-f0a2-499c-903e-0c47fcf0cb91-image.png

      Am wichtigsten ist das "enabled" und GPIO14 - Pulse. Für die values noch sprechende Namen vergeben und 0-Nachkommastellen auswählen. Als Interval habe ich 30 Sekunden gewählt, da die Differenz immer nach dieser Zeiteinheit zurück gesetzt wird. Anhand dieser zähle ich dann später den Gaszähler im ioBroker hoch. Das Ganze natürlich immer via submit an den NodeMCU übertragen.

      Als letztes im NodeMCU noch unter Controller MQTT einrichten. Wichtig ist die Portnummer. Ich habe ein paar Sonoffs unter 1883 bereits eingerichtet. Deshalb habe ich mich nun für den Port 1888 entschieden. IP vom ioBroker und die Login-Credentials auf dem ioBroker eintargen. Ganz unten noch auf "enabled" setzen und submitten.
      6a547572-e7b5-40bd-b00b-d74dfe34a4e2-image.png

      Mittels Leuchtdiode wollte ich mir ja den Pulse anzeigen lassen. Außerdem habe ich noch als "Heartbeat" die Onboard-Led alle 10 Sekunden blinken lassen. Das ganze macht man unter "Rules".

      on System#Boot do
       Monitor GPIO,14 //GPIO 14 -Reed-Kontakt überprüfen
        gpio,2,1	 //BoardLED anschalten	
        timerSet,1,10  //Timer 1 auf 10 Sekunden setzen
      endon
      
       on GPIO#14=1 do
        GPIO,12,0  //LED definitiv deaktivieren
       endon
      
       on GPIO#14=0 do
        GPIO,12,1  //LED einschalten
        Delay,3000 //3 Sekunden Pause
        GPIO,12,0  //Leb abschalten
       endon
      
      On Rules#Timer=1 do
       gpio,2,0     //BoardLED abschalten
       timerSet,2,1 //Timer 2 auf 1 Sekunde setzen
      endon
      
      On Rules#Timer=2 do  
       gpio,2,1     //BoardLED anschalten
       timerSet,1,10
      endon
      

      Das Abschalten der LED nach Zeit X ist wichtig falls der Gaszähler mal auf der "0" stehen bleibt. Dann würde die Leuchtdiode die ganze Zeit leuchten. Wenn man keine extra Leuchtdiode sonder die interne Diode nutzen möchte (GPIO2) dann einfach die ganzen Timer/ Regeln mit GPIO2 löschen und GPIO12 auf GPIO2 ändern.

      Jetzt gehts in den ioBroker
      Im ioBroker den MQTT-Server/Client-Adapter installieren. Die gerade gewählte Portnummer und die festgelegten Credentials aus dem letzten Schritt eintragen.
      29a93740-20d4-45cb-b86f-d83937e82ef6-image.png

      Hierdurch erscheint unter den Objekten bereits der Gaszähler.
      8364a8c5-24ff-4c5b-a390-335ce35ad0ed-image.png
      Da nach einem Stromverlust alle Werte genullt werden, müssen diese im ioBroker gespeichert werden. Dafür habe ich dann einen eigenen Datenpunkt angelegt. Das sind die wichtigsten Weret des DP.

          "role": "value",
          "type": "number",
          "unit": "m³",
          "read": true,
          "write": true,
          "desc": "Manuell erzeugt",
      

      Zusätzlich habe ich für spätere Verfeinerung dann noch weitere DP bzgl. der Kosten etc. angelegt. Das ist im ursprünglichen Forumsbeitrag von @h1ob und @GeorgS haber viel umfänglicher beschrieben.

      Jetzt muss der eigene DP noch via Script aktualisiert werden. Ich habe mir überlegt, dass bei der Aktualisierung der Diffenz der eigene Zähler sofort hochgezählt wird. Sollte dann der NodeMCU neu starten, wurde diese Veränderung ja bereits übertragen. Mein Blockly sieht dann so aus:
      491264a4-9ee2-43c1-819b-6a7a92a43694-image.png Das Script ist dann folgendes.

      on({id: 'mqtt.0.ESP_Easy_GAS.Gaszaehler.Differenz', change: "gt"}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        setState("0_userdata.0.Gaszaehler.Zaehlerstand"/*Zaehlerstand*/, Math.round((getState("0_userdata.0.Gaszaehler.Zaehlerstand").val + 0.01)*100)/100);
      });
      

      Das Runden ist wichtig da die Operationen sonst manchmal krumme Werte ergeben.
      Achtung - das ist noch fehlerhaft bzw. der Zählerstand ist mit dem ioBroker-Zähler auseinander gelaufen. Ist ja zum Glück nur das Script bzw. die Eisnetlung auf dem ESP. Prinzipiell funktioniert das ja.Update folgt.

      Demnächst werde ich mich noch um ein vernünftiges Gehäuse kümmern und vor allem die monitäre Berechnung vernünftig machen. Dann vermutlich noch einen DHT22 anklemmen damit ich parallel die Temperatur und Luftfeuchtigkeit aus dem HW-Raum via MQTT habe.

      Auf diesem Weg- vielen Dank für die Idee und die Unterstützung von @SBorg, @h1ob und @GeorgS .

      Ich hoffe ich habe grobe Fehler weggelassen und vor allem anderen Anfängern geholfen bzw. gaanz Anfängerfreundlich dokumentiert.

      Falls Ihr Fehler findet oder Ergänzungen habt, bitte Kommentieren.

      B Offline
      B Offline
      Baerny
      schrieb am zuletzt editiert von
      #5

      @oberfragger sagte in Anleitung - Gaszähler mit NodeMCU, ESPeasy:

      Reed-Kontakt - 28 Euro bei Ebay.

      Hallo, ich finde nur Reed Kontakte für über 50,00 Euro, hast du evtl. mal einen Link für mich.
      Baerny

      CCU 2 | Intel NUC mit Proxmox

      simatecS oberfraggerO 2 Antworten Letzte Antwort
      0
      • B Baerny

        @oberfragger sagte in Anleitung - Gaszähler mit NodeMCU, ESPeasy:

        Reed-Kontakt - 28 Euro bei Ebay.

        Hallo, ich finde nur Reed Kontakte für über 50,00 Euro, hast du evtl. mal einen Link für mich.
        Baerny

        simatecS Offline
        simatecS Offline
        simatec
        Developer Most Active
        schrieb am zuletzt editiert von
        #6

        @Baerny

        Hier bei Amazon zum Beispiel ein 5er Set

        sourcingmap® 5 stück Adhesived Sicherheit Tür Fenster Magnetkontakt Reed-schalter KEIN https://www.amazon.de/dp/B00PZMG980/ref=cm_sw_r_cp_api_i_8zpcEbT3CBPZJ

        • Besuche meine Github Seite
        • Beitrag hat geholfen oder willst du mich unterstützen
        • HowTo Restore ioBroker
        1 Antwort Letzte Antwort
        0
        • B Baerny

          @oberfragger sagte in Anleitung - Gaszähler mit NodeMCU, ESPeasy:

          Reed-Kontakt - 28 Euro bei Ebay.

          Hallo, ich finde nur Reed Kontakte für über 50,00 Euro, hast du evtl. mal einen Link für mich.
          Baerny

          oberfraggerO Offline
          oberfraggerO Offline
          oberfragger
          schrieb am zuletzt editiert von
          #7

          @Baerny Ich hab bei diesem Franzosen gekauft. Schneller Versand und das Teil passt ohne Bastelei dirket an meinen Gaszähler.
          https://www.ebay.de/itm/Sonde-Reed-IN-Z62-transmetteur-dimpulsions-cpt-gaz-G4-G6/312788728480?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2060353.m1438.l2649

          1 Antwort Letzte Antwort
          0
          • simatecS simatec

            @oberfragger
            Sehr schöne Anleitung ...
            Hier nur ein kleiner Hinweis, wie ich es aufgebaut habe.
            Und zwar hängt mein Reed Kontakt direkt an D5 (GPIO-14) und GND.
            Somit ist kein Widerstand dazwischen nötig.

            oberfraggerO Offline
            oberfraggerO Offline
            oberfragger
            schrieb am zuletzt editiert von oberfragger
            #8

            @simatec Das mag sein. Bin kein Profi.
            Ist an D5 ein interner Widerstand dran oder warum...? Ich hatte nach dem Löten davon gelesen...
            Habe das oben kurz ergänzt.

            SBorgS 1 Antwort Letzte Antwort
            0
            • oberfraggerO oberfragger

              @simatec Das mag sein. Bin kein Profi.
              Ist an D5 ein interner Widerstand dran oder warum...? Ich hatte nach dem Löten davon gelesen...
              Habe das oben kurz ergänzt.

              SBorgS Offline
              SBorgS Offline
              SBorg
              Forum Testing Most Active
              schrieb am zuletzt editiert von
              #9

              @oberfragger In den ESPs sind prinzipiell PullUp-Widerstände verbaut. Diese müssen aber extra im Sketch aktiviert sein. Dazu müsste man im Sketch von ESPEasy nachsehen ob sie dort gesetzt wurden oder nicht.
              Der PullUp schadet jedenfalls nicht, zumindest besser als keiner (was aber bei dieser Schaltung funktioniert). Würde der Sensor bspw. einen High-Impuls liefern, muss man einen PullUp nutzen. Sonst ist das Verhalten mehr Glückssache als sonst was und das einschalten des Kühlschrankes löst uU. einen Impuls aus.

              LG SBorg ( SBorg auf GitHub)
              Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

              simatecS 1 Antwort Letzte Antwort
              1
              • SBorgS SBorg

                @oberfragger In den ESPs sind prinzipiell PullUp-Widerstände verbaut. Diese müssen aber extra im Sketch aktiviert sein. Dazu müsste man im Sketch von ESPEasy nachsehen ob sie dort gesetzt wurden oder nicht.
                Der PullUp schadet jedenfalls nicht, zumindest besser als keiner (was aber bei dieser Schaltung funktioniert). Würde der Sensor bspw. einen High-Impuls liefern, muss man einen PullUp nutzen. Sonst ist das Verhalten mehr Glückssache als sonst was und das einschalten des Kühlschrankes löst uU. einen Impuls aus.

                simatecS Offline
                simatecS Offline
                simatec
                Developer Most Active
                schrieb am zuletzt editiert von
                #10

                @SBorg
                Bin mir da auch nicht 100% sicher aber glaube die sind aktiv.
                Die Frage ist aber generell, ob du bei einer Verdrahtung gegen Erde das brauchst.
                Bei mir geht es auf D5 und GND und da gibt es keinerlei falsche Werte

                • Besuche meine Github Seite
                • Beitrag hat geholfen oder willst du mich unterstützen
                • HowTo Restore ioBroker
                1 Antwort Letzte Antwort
                0
                • opossumO Offline
                  opossumO Offline
                  opossum
                  schrieb am zuletzt editiert von
                  #11

                  Hallo, @oberfragger ,

                  danke für Deine super Anleitung. Habe ich mit einem NodeMCU und einem IN-Z62 nachgebaut, funktioniert auch. Über MQTT kommen die Werte an. Nun ergeben sich bei mir Softwaremäßig aber Fragen. Ich hoffe, ich darf die hier stellen. Mein Ergebnis in iobroker sieht wie folgt aus:

                  93cc4e12-33b9-4a65-9ccd-12e61c3af10b-image.png

                  Es kommen also Werte für Absolut, Differenz und Zeit an. Diese Werte kann ich zur Zeit noch nicht deuten. Was besagt mir hier die 1 bei Absolut, die Differenz 0 sowie die Zeit. Ich würde natürlich meinen Verbrauch hier mittels eigenem Datenpunkt speichern.
                  Wärest Du bitte so nett und erklärst mir diese Werte? Was muss ich denn noch machen, um den Verbrauch, den die Gasuhr jetzt anzeigt, im iobroker mittels Script fortzuschreiben. Dabei geht es mir noch nicht um monetäre Berechnungen, das kommt dann später, wenn ich das ganze verstanden habe. Ich habe mir auch die verlinkten Beiträge bereits durchgelesen, aber so richtig schlau bin ich daraus noch nicht geworden. Gehe ich richtig, in der Annahme, dass hier die eingestellte Delayzeit mit einbezogen werden muss. Danke für Deine Hilfe.

                  https://schlepper-petersdorf.jimdofree.com/

                  M 1 Antwort Letzte Antwort
                  0
                  • opossumO opossum

                    Hallo, @oberfragger ,

                    danke für Deine super Anleitung. Habe ich mit einem NodeMCU und einem IN-Z62 nachgebaut, funktioniert auch. Über MQTT kommen die Werte an. Nun ergeben sich bei mir Softwaremäßig aber Fragen. Ich hoffe, ich darf die hier stellen. Mein Ergebnis in iobroker sieht wie folgt aus:

                    93cc4e12-33b9-4a65-9ccd-12e61c3af10b-image.png

                    Es kommen also Werte für Absolut, Differenz und Zeit an. Diese Werte kann ich zur Zeit noch nicht deuten. Was besagt mir hier die 1 bei Absolut, die Differenz 0 sowie die Zeit. Ich würde natürlich meinen Verbrauch hier mittels eigenem Datenpunkt speichern.
                    Wärest Du bitte so nett und erklärst mir diese Werte? Was muss ich denn noch machen, um den Verbrauch, den die Gasuhr jetzt anzeigt, im iobroker mittels Script fortzuschreiben. Dabei geht es mir noch nicht um monetäre Berechnungen, das kommt dann später, wenn ich das ganze verstanden habe. Ich habe mir auch die verlinkten Beiträge bereits durchgelesen, aber so richtig schlau bin ich daraus noch nicht geworden. Gehe ich richtig, in der Annahme, dass hier die eingestellte Delayzeit mit einbezogen werden muss. Danke für Deine Hilfe.

                    M Offline
                    M Offline
                    msiemers
                    schrieb am zuletzt editiert von
                    #12

                    @oberfragger

                    Kannst Du bitte einmal ein wenig genauer auf den Bereich ioBroker eingehen?
                    Ich habe die Hardware ohne Probleme nachgebaut bekommen. Ich komme aber mit den Einstellungen im ioBroker
                    nicht zurecht. Mein Ziel ist auf jeden Fall einen halbwegs aktuellen Zählerstand im ioBroker zu haben.

                    Danke!

                    1 Antwort Letzte Antwort
                    0
                    • oberfraggerO oberfragger

                      Hallo,

                      aufgrund des Forumseintrages hatte ich mir vorgenommen, meinen Gaszähler abzulesen. Leider war ich vom Know-How noch etwas vom Level entfernt, den Eintrag zu verstehen. Nun ist das Ganze "fertig" und ich habe mir sowie vorgenommen Einsteigerfreundliche Anleitungen zu schreiben (Irrtümer vorbehalten). Vorneweg: Für viele aus dem Forum ist dieser Beitrag vielleicht langweilig, aber vielleicht kann ich da jemanden mal mit helfen.

                      Für mich war es der erste richtige Kontakt mit den NodeMCUs und dem ESP8266...

                      Zusammenfassung: Eigentlich gar nicht so schwer, für die Teilprobleme gibts immer Hilfe
                      Zeuitlicher Aufwand: Gar nicht so viel, wenn man schon mal was mit dem 8266 gemacht hat
                      Kostenpunkt: Sehr gering (je nach Reed-Kontakt)
                      Die einzelnen Positionen:
                      Kabel die an den Pin-Out vom NodeMCU passen, oder halt anlöten
                      1 NodeMCU - ca. 4,50 Euro (bei Ali ca. 2 Euro, dafür längerer Versand, Gearbest ca. 4,50 Euro dafür ca. 2 Wochen und aus D ab ca. 6 Euro)
                      1 Pull-Up-Widerstand 10 KOhm - ca. 10 Cent (wenn an GPIO-14/D5 dann nicht notwendig)
                      1 Leuchtdiode - ca. 20 Cent (nicht zwingend notwendig, signalisiert mir den Pulse)
                      1 Widerstand 1kOhm für die Leuchdiode - ca. 10 cent
                      Spannungsversorgung für den NodeMCU - habe ein MicroUSB-Kabel einfach an meinen Raspi geschlossen. Tut ansonsten aber ein rumfliegendes USB-Netzteil.
                      Reed-Kontakt - 28 Euro bei Ebay.

                      Habe mich für den passenden entschieden, damit ich unter der Gasbalge nicht rumfummeln muss und "Installationsfehler" reduzieren kann. Sieht auch schöner aus. Das Teil kann einfach unter die Gasbalge "geklickt" werden. Die Kabel werden im Gehäuse einfach nur mittels vorhandener Lüsterklemme festgeschraubt.
                      8ea6c0c5-7871-4037-baee-97af1e803777-image.png

                      1. Schritt - Flashen des NodeMCUs
                        Dieser Schritt hat bei mir am längsten gedauert. Aber nur weil ich mich damit nicht so auskannte.
                        Hier führen bekanntlich viele Wege nach Rom

                      Ich habe leider etliche Zeit verschwendet, da nirgend deutlich auf die beiden Köpfe auf dem NodeMCU hingewiesen hat - Reset und Flash. Erst nachdem ichd as rausgefunden habe, hat es bei mir zuverlässig funktioniert. Sprich: Flashvorgang am PC starten, Flash-Taste gedrückt halten und kurz reset drücken! (Update- das ist bei Variante B nicht notwendig) Damit fährt die NodeMCU direkt im Flash-Modus hoch und die Programme funktionieren.

                      Verkabelung des NodeMCU zum flashen

                      a) Flashen via FTDI
                      Hierfür benötigt man 4 female-female Kabel, 1 Mini-Usb-Kabel für den FTDI.
                      Was bei mit nicht funktioniert hat- den FTDI-Jumper auf 3,3V zu setzen. Da hat Windows das Gerät immer nicht erkannt. Deshalb hab ich den Jumper wie auf dem Bild so gelassen wie er war.
                      VCC - 5v
                      GND - GND
                      RX - TX
                      TX - RX

                      7075bbde-c3ba-49b4-8173-ff56939863bf-image.png

                      b) Flashen direkt via MicroUSB-Kabel

                      Ist von der verkabelung am einfachsten, Stolperstein ist allerdings das Micro-USB-Kabel. Nachdem ich wusste wie es geht, habe ich noch einmal wild rumprobiert und im Haushalt nur 1 Kabel gefunden mit welches dieses möglich war.
                      Einfach die CP210x USB to UART Bridge VCP Drivers installieren und NodeMCU am MicroUSB-Kabel anschließen.

                      Windows erkennt die Geräte und weist diesen oftmals Com3 oder 4 zu. bitte im Gerätemanager überprüfen damit man weiss, über welchen Com-Port kommuniziert wird.

                      Sobald man also die Verkabelung wie in a) oder b) vorgenommen hat, kann man mit dem flashen beginnen.

                      Flashen und download der Firmware

                      ESPeasy Download
                      Auf das entsprechende Release klicken (ja...den Link hatte ich echt immer übersehen) , runterladen und entpacken (aktuell ESPEasy_mega-20191208.zip). Im Hauptordner befinden sich gleich 2 Flash-Tools. Zum einden der ESP.Easy.Flasher.exe und zum anderen FlashESP8266.exe. Der Easyflasher hats bei mir auch nicht getan. Am einfachsten war FlashESP8266.exe.

                      Dazu im Ordner bin die richtige Datei raussuchen (ESP_Easy_mega-20191208_normal_ESP8266_4M1M.bin) und in den Hauptordner kopieren. Dann FlashESP8266.exe starten und man erhält folgendes Bild.
                      feb867ad-3dea-46ca-91e5-aeff7ea82d95-image.png

                      Jetzt einfach auf "Flash" drücken und wie oben beschrieben- den "Flash"-Knopf gedrückt halten und einmal kurz auf "Reset" drücken. Dann startet der Flash-Vorgang auch schon recht schnell und das Programm bestätigt idealerweise mit "Flash erfolgreich". Für mich hat es hiermit am besten funktioniert.

                      Der ESPEasyFlasher sieht so aus.
                      99cd699f-cc7e-451d-a3d7-349cab1def61-image.png Irgendwie hat das nie so richtig geklappt, die Zeit zum erfolgreichen flashen zählte immer nicht runter.

                      NodeMCU Flash Tool
                      Das ganze ist auch hier beschrieben. Das NodeMCU-Flasher Tool runterladen (rechts oben, grüner Button, download) und starten. Unter Config kann man mittels Zahnrad das richtige .bin-File wählen und unter Operation "Flash(F)". Das hat bei mir recht lange gedauert f73db9bc-bcd2-48d7-ac6c-935de34b8a78-image.png

                      Alternativ kann man auch Kompilieren & flashen mittels Arduino-Umgebung
                      Dieser Schritt war bei mir recht aufwändig. Habe die entsprechenden Files dafür gefunden, aber es nie geschafft den NodeMCU zu flashen. Ständig wurden Bibliotheken nicht gefunden etc. Da es fertige .bin-Files gibt, ist dieses eher zu aufwändig. Deshalb beschreibe ich das nicht näher.

                      Wie gesagt- viele Wege führen nach Rom und man kann über viele Wege das NODEMCU flashen. Der schwierigste Teil ist somit bereits beendet.

                      Mit ESPeasy auf dem NodeMCU verbinden.
                      Nach dem erfolgreichen Flashvorgang versorgt man die NODEMCU mit Strom (beispielsweise Netzteil+Micro-USB-Kabel). Die NodeMCU bootet und spannt ein Passwortgeschütztes WLAN auf. Mit diesem WLAN verbinden und als Passwort "configesp" eingeben. In dem nun erscheinenden Fenster trägt man die Daten des eigenen WLANs ein und startet das Gerät neu.
                      bd4acc8e-c8dd-48f2-833b-54bd60b68160-image.png
                      Nach dem Neustart verbindet sich das Gerät mit dem eingegebenen WLAN. Die entsprechende IP kann man beispielsweise über die Oberfläche seines Routers ermitteln.

                      Jetzt gehts mit dem Verkabeln weiter:
                      Die eine Seite des Reed-Kontaktes habe ich an GPIO14 geschlossen und die andere an GND darüber.
                      b2897994-70bc-42dc-b88c-104abc1d7949-image.png Zusätzlich habe ich den 10kOhm Widerstand mit GPIO14 und der 3,3V Spannung verbunden. Gemäß @simatec ist dieser vermutlich garnicht notwendig. Siehe auch das Schaltbild. Damit ist die Wesentliche Verkabelung bereits erledigt!

                      Da ich den Pulse mittels zusätzlicher LED signalisieren wollte, habe ich die +Seite der LED an D6/ GPIO12 und die andere Seite an GND geschlossen. Dazwischen noch den 1kOhm Widerstand. Seite ist egal. Ich hab den auf die GND-Seite geschlossen.
                      441aee7d-90b6-4477-94b3-8460eebe3128-image.png

                      Jetzt noch den Reed-Kontakt unter die Gasbalge klemmen (siehe Bild oben) und die NodeMCU mit Spannung versorgen.

                      ESPeasy konfiguieren
                      Aus der Config-Seite habe ich einen Unit-Name gesetzt und als Nummer die "1" gewählt. Der Unit-Name taucht dann später in MQTT auf. Unter "Tools" dann den Haken bei "Rules" machen und idealerweise den NTP-Hostname konfigurierern. Muss nicht, ist aber "schöner".
                      8d2713e8-6a14-4afe-91f2-c79cb4498b9a-image.png

                      Jetzt den PulseCounter unter Devices eintragen (add Device generic PulseCounter). Ich habe die folgenden Settings gewählt.
                      5231891a-f0a2-499c-903e-0c47fcf0cb91-image.png

                      Am wichtigsten ist das "enabled" und GPIO14 - Pulse. Für die values noch sprechende Namen vergeben und 0-Nachkommastellen auswählen. Als Interval habe ich 30 Sekunden gewählt, da die Differenz immer nach dieser Zeiteinheit zurück gesetzt wird. Anhand dieser zähle ich dann später den Gaszähler im ioBroker hoch. Das Ganze natürlich immer via submit an den NodeMCU übertragen.

                      Als letztes im NodeMCU noch unter Controller MQTT einrichten. Wichtig ist die Portnummer. Ich habe ein paar Sonoffs unter 1883 bereits eingerichtet. Deshalb habe ich mich nun für den Port 1888 entschieden. IP vom ioBroker und die Login-Credentials auf dem ioBroker eintargen. Ganz unten noch auf "enabled" setzen und submitten.
                      6a547572-e7b5-40bd-b00b-d74dfe34a4e2-image.png

                      Mittels Leuchtdiode wollte ich mir ja den Pulse anzeigen lassen. Außerdem habe ich noch als "Heartbeat" die Onboard-Led alle 10 Sekunden blinken lassen. Das ganze macht man unter "Rules".

                      on System#Boot do
                       Monitor GPIO,14 //GPIO 14 -Reed-Kontakt überprüfen
                        gpio,2,1	 //BoardLED anschalten	
                        timerSet,1,10  //Timer 1 auf 10 Sekunden setzen
                      endon
                      
                       on GPIO#14=1 do
                        GPIO,12,0  //LED definitiv deaktivieren
                       endon
                      
                       on GPIO#14=0 do
                        GPIO,12,1  //LED einschalten
                        Delay,3000 //3 Sekunden Pause
                        GPIO,12,0  //Leb abschalten
                       endon
                      
                      On Rules#Timer=1 do
                       gpio,2,0     //BoardLED abschalten
                       timerSet,2,1 //Timer 2 auf 1 Sekunde setzen
                      endon
                      
                      On Rules#Timer=2 do  
                       gpio,2,1     //BoardLED anschalten
                       timerSet,1,10
                      endon
                      

                      Das Abschalten der LED nach Zeit X ist wichtig falls der Gaszähler mal auf der "0" stehen bleibt. Dann würde die Leuchtdiode die ganze Zeit leuchten. Wenn man keine extra Leuchtdiode sonder die interne Diode nutzen möchte (GPIO2) dann einfach die ganzen Timer/ Regeln mit GPIO2 löschen und GPIO12 auf GPIO2 ändern.

                      Jetzt gehts in den ioBroker
                      Im ioBroker den MQTT-Server/Client-Adapter installieren. Die gerade gewählte Portnummer und die festgelegten Credentials aus dem letzten Schritt eintragen.
                      29a93740-20d4-45cb-b86f-d83937e82ef6-image.png

                      Hierdurch erscheint unter den Objekten bereits der Gaszähler.
                      8364a8c5-24ff-4c5b-a390-335ce35ad0ed-image.png
                      Da nach einem Stromverlust alle Werte genullt werden, müssen diese im ioBroker gespeichert werden. Dafür habe ich dann einen eigenen Datenpunkt angelegt. Das sind die wichtigsten Weret des DP.

                          "role": "value",
                          "type": "number",
                          "unit": "m³",
                          "read": true,
                          "write": true,
                          "desc": "Manuell erzeugt",
                      

                      Zusätzlich habe ich für spätere Verfeinerung dann noch weitere DP bzgl. der Kosten etc. angelegt. Das ist im ursprünglichen Forumsbeitrag von @h1ob und @GeorgS haber viel umfänglicher beschrieben.

                      Jetzt muss der eigene DP noch via Script aktualisiert werden. Ich habe mir überlegt, dass bei der Aktualisierung der Diffenz der eigene Zähler sofort hochgezählt wird. Sollte dann der NodeMCU neu starten, wurde diese Veränderung ja bereits übertragen. Mein Blockly sieht dann so aus:
                      491264a4-9ee2-43c1-819b-6a7a92a43694-image.png Das Script ist dann folgendes.

                      on({id: 'mqtt.0.ESP_Easy_GAS.Gaszaehler.Differenz', change: "gt"}, function (obj) {
                        var value = obj.state.val;
                        var oldValue = obj.oldState.val;
                        setState("0_userdata.0.Gaszaehler.Zaehlerstand"/*Zaehlerstand*/, Math.round((getState("0_userdata.0.Gaszaehler.Zaehlerstand").val + 0.01)*100)/100);
                      });
                      

                      Das Runden ist wichtig da die Operationen sonst manchmal krumme Werte ergeben.
                      Achtung - das ist noch fehlerhaft bzw. der Zählerstand ist mit dem ioBroker-Zähler auseinander gelaufen. Ist ja zum Glück nur das Script bzw. die Eisnetlung auf dem ESP. Prinzipiell funktioniert das ja.Update folgt.

                      Demnächst werde ich mich noch um ein vernünftiges Gehäuse kümmern und vor allem die monitäre Berechnung vernünftig machen. Dann vermutlich noch einen DHT22 anklemmen damit ich parallel die Temperatur und Luftfeuchtigkeit aus dem HW-Raum via MQTT habe.

                      Auf diesem Weg- vielen Dank für die Idee und die Unterstützung von @SBorg, @h1ob und @GeorgS .

                      Ich hoffe ich habe grobe Fehler weggelassen und vor allem anderen Anfängern geholfen bzw. gaanz Anfängerfreundlich dokumentiert.

                      Falls Ihr Fehler findet oder Ergänzungen habt, bitte Kommentieren.

                      M Offline
                      M Offline
                      msiemers
                      schrieb am zuletzt editiert von
                      #13

                      @oberfragger

                      Kannst Du bitte einmal ein wenig genauer auf den Bereich ioBroker eingehen?
                      Ich habe die Hardware ohne Probleme nachgebaut bekommen. Ich komme aber mit den Einstellungen im ioBroker
                      nicht zurecht. Mein Ziel ist auf jeden Fall einen halbwegs aktuellen Zählerstand im ioBroker zu haben.

                      Danke!

                      oberfraggerO 1 Antwort Letzte Antwort
                      0
                      • M msiemers

                        @oberfragger

                        Kannst Du bitte einmal ein wenig genauer auf den Bereich ioBroker eingehen?
                        Ich habe die Hardware ohne Probleme nachgebaut bekommen. Ich komme aber mit den Einstellungen im ioBroker
                        nicht zurecht. Mein Ziel ist auf jeden Fall einen halbwegs aktuellen Zählerstand im ioBroker zu haben.

                        Danke!

                        oberfraggerO Offline
                        oberfraggerO Offline
                        oberfragger
                        schrieb am zuletzt editiert von
                        #14

                        @msiemers
                        Hi, ich muss gestehen...
                        ich habe abgebrochen. Irgendwie habe ich das auch nicht hinbekommen. Die Zählerstände sind immer auseinander gelaufen... und dann habe ich plötzlich entdeckt, dass ich aus dem Viessmann Adapter die Zählerstände bzw. verbräuche recht gut rausbekomme.
                        Ich denke mit ein bisschen Hilfe asu dem Forum ist das sicher machbar.
                        Sorry.

                        P 1 Antwort Letzte Antwort
                        0
                        • oberfraggerO oberfragger

                          @msiemers
                          Hi, ich muss gestehen...
                          ich habe abgebrochen. Irgendwie habe ich das auch nicht hinbekommen. Die Zählerstände sind immer auseinander gelaufen... und dann habe ich plötzlich entdeckt, dass ich aus dem Viessmann Adapter die Zählerstände bzw. verbräuche recht gut rausbekomme.
                          Ich denke mit ein bisschen Hilfe asu dem Forum ist das sicher machbar.
                          Sorry.

                          P Offline
                          P Offline
                          puppet1912
                          schrieb am zuletzt editiert von
                          #15

                          @oberfragger auch wenn es bei dir schon ein Jahr her ist, aber ich konnte mit Hilfe deiner Anleitung ganz gute Erfolge erzielen.

                          Bei mir laufen die Zählerstände absolut synchron und auch wenn der Balken mal genauso stehen bleibt das der Reed-Kontakt dauerhaft true ist, wird nur ein Impuls gezählt.

                          In deine Einstellungen scheinst du Mode Type = Rising zu verwenden.
                          Mit Mode Type = PULSE High habe ich keinerlei Probleme.

                          Für dich vll nicht mehr interessant, aber für andere eventuell.

                          Beste Grüße

                          ioBroker 4.0.23 - Debian Bullseye unter Proxmox auf IntelNuc7i5BNK

                          StuebiS oberfraggerO 2 Antworten Letzte Antwort
                          2
                          • P puppet1912

                            @oberfragger auch wenn es bei dir schon ein Jahr her ist, aber ich konnte mit Hilfe deiner Anleitung ganz gute Erfolge erzielen.

                            Bei mir laufen die Zählerstände absolut synchron und auch wenn der Balken mal genauso stehen bleibt das der Reed-Kontakt dauerhaft true ist, wird nur ein Impuls gezählt.

                            In deine Einstellungen scheinst du Mode Type = Rising zu verwenden.
                            Mit Mode Type = PULSE High habe ich keinerlei Probleme.

                            Für dich vll nicht mehr interessant, aber für andere eventuell.

                            Beste Grüße

                            StuebiS Offline
                            StuebiS Offline
                            Stuebi
                            schrieb am zuletzt editiert von
                            #16

                            @puppet1912 sagte in Anleitung - Gaszähler mit NodeMCU, ESPeasy:

                            @oberfragger auch wenn es bei dir schon ein Jahr her ist, aber ich konnte mit Hilfe deiner Anleitung ganz gute Erfolge erzielen.

                            Bei mir laufen die Zählerstände absolut synchron und auch wenn der Balken mal genauso stehen bleibt das der Reed-Kontakt dauerhaft true ist, wird nur ein Impuls gezählt.

                            In deine Einstellungen scheinst du Mode Type = Rising zu verwenden.
                            Mit Mode Type = PULSE High habe ich keinerlei Probleme.

                            Für dich vll nicht mehr interessant, aber für andere eventuell.

                            Beste Grüße

                            Danke für den Tipp. Was hast Du als "Debounce Time (mSec)" bei Dir eingestellt? Vielleicht kannst Du ja ein Screenshot von Deinen kompletten Einstellungen einstellen?
                            VG

                            ioBroker auf Synology DS216+II im Docker Container

                            P 1 Antwort Letzte Antwort
                            0
                            • StuebiS Stuebi

                              @puppet1912 sagte in Anleitung - Gaszähler mit NodeMCU, ESPeasy:

                              @oberfragger auch wenn es bei dir schon ein Jahr her ist, aber ich konnte mit Hilfe deiner Anleitung ganz gute Erfolge erzielen.

                              Bei mir laufen die Zählerstände absolut synchron und auch wenn der Balken mal genauso stehen bleibt das der Reed-Kontakt dauerhaft true ist, wird nur ein Impuls gezählt.

                              In deine Einstellungen scheinst du Mode Type = Rising zu verwenden.
                              Mit Mode Type = PULSE High habe ich keinerlei Probleme.

                              Für dich vll nicht mehr interessant, aber für andere eventuell.

                              Beste Grüße

                              Danke für den Tipp. Was hast Du als "Debounce Time (mSec)" bei Dir eingestellt? Vielleicht kannst Du ja ein Screenshot von Deinen kompletten Einstellungen einstellen?
                              VG

                              P Offline
                              P Offline
                              puppet1912
                              schrieb am zuletzt editiert von
                              #17

                              @stuebi

                              Ich habe eine Debounce Time von 1mSec eingestellt. Passt mit meinem Zähler und dem IN-Z62 sehr gut.

                              Meine Parameter sind folgende: Pulsecount.JPG

                              Grüße

                              ioBroker 4.0.23 - Debian Bullseye unter Proxmox auf IntelNuc7i5BNK

                              StuebiS 1 Antwort Letzte Antwort
                              0
                              • P puppet1912

                                @stuebi

                                Ich habe eine Debounce Time von 1mSec eingestellt. Passt mit meinem Zähler und dem IN-Z62 sehr gut.

                                Meine Parameter sind folgende: Pulsecount.JPG

                                Grüße

                                StuebiS Offline
                                StuebiS Offline
                                Stuebi
                                schrieb am zuletzt editiert von
                                #18

                                @puppet1912 , klasse Danke! Ich versuche es einmal aus, ob das mir genauer als Type = Rising ist

                                ioBroker auf Synology DS216+II im Docker Container

                                1 Antwort Letzte Antwort
                                0
                                • P puppet1912

                                  @oberfragger auch wenn es bei dir schon ein Jahr her ist, aber ich konnte mit Hilfe deiner Anleitung ganz gute Erfolge erzielen.

                                  Bei mir laufen die Zählerstände absolut synchron und auch wenn der Balken mal genauso stehen bleibt das der Reed-Kontakt dauerhaft true ist, wird nur ein Impuls gezählt.

                                  In deine Einstellungen scheinst du Mode Type = Rising zu verwenden.
                                  Mit Mode Type = PULSE High habe ich keinerlei Probleme.

                                  Für dich vll nicht mehr interessant, aber für andere eventuell.

                                  Beste Grüße

                                  oberfraggerO Offline
                                  oberfraggerO Offline
                                  oberfragger
                                  schrieb am zuletzt editiert von
                                  #19

                                  @puppet1912 said in Anleitung - Gaszähler mit NodeMCU, ESPeasy:

                                  @oberfragger auch wenn es bei dir schon ein Jahr her ist, aber ich konnte mit Hilfe deiner Anleitung ganz gute Erfolge erzielen.

                                  Bei mir laufen die Zählerstände absolut synchron und auch wenn der Balken mal genauso stehen bleibt das der Reed-Kontakt dauerhaft true ist, wird nur ein Impuls gezählt.

                                  In deine Einstellungen scheinst du Mode Type = Rising zu verwenden.
                                  Mit Mode Type = PULSE High habe ich keinerlei Probleme.

                                  Für dich vll nicht mehr interessant, aber für andere eventuell.

                                  Beste Grüße

                                  Danke für die Info.
                                  Da ich jetzt nen 3D-Drucker und vor allem mehr ERfahrung habe...werde ich wohl demnächst mal eine Halterung für die ESP32-Cam bauen und das ganze digital auslesen.

                                  Siehe hier: https://forum.iobroker.net/topic/36622/wasserzähler-version-2-all-in-device/1733?_=1636369848684

                                  1 Antwort Letzte Antwort
                                  1
                                  Antworten
                                  • In einem neuen Thema antworten
                                  Anmelden zum Antworten
                                  • Älteste zuerst
                                  • Neuste zuerst
                                  • Meiste Stimmen


                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  375

                                  Online

                                  32.5k

                                  Benutzer

                                  81.7k

                                  Themen

                                  1.3m

                                  Beiträge
                                  Community
                                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                  ioBroker Community 2014-2025
                                  logo
                                  • Anmelden

                                  • Du hast noch kein Konto? Registrieren

                                  • Anmelden oder registrieren, um zu suchen
                                  • Erster Beitrag
                                    Letzter Beitrag
                                  0
                                  • Home
                                  • Aktuell
                                  • Tags
                                  • Ungelesen 0
                                  • Kategorien
                                  • Unreplied
                                  • Beliebt
                                  • GitHub
                                  • Docu
                                  • Hilfe