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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.2k

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

Anleitung - Gaszähler mit NodeMCU, ESPeasy

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
gasleitungblocklyeasyespnodemcuesp8266mqtt
19 Beiträge 8 Kommentatoren 21.1k 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 Offline
    oberfraggerO Offline
    oberfragger
    schrieb am zuletzt editiert von oberfragger
    #1

    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.

    SBorgS simatecS B M 4 Antworten Letzte Antwort
    11
    • 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.

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

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

      Wenn man keine extra Leuchtdiode sonder die interne Diode nutzen möchte (GPIO2) dann einfach die ganzen Timer/ Regeln mit GPIO2 löschen und GPIO14 auf GPIO2 ändern.

      Das müsste aber GPIO12 lauten, denn 14 ist der Reed-Kontakt, 12 die Zusatz-LED ;)
      Aber sehr schön und ausführlich beschrieben :)

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

      oberfraggerO 1 Antwort Letzte Antwort
      0
      • SBorgS SBorg

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

        Wenn man keine extra Leuchtdiode sonder die interne Diode nutzen möchte (GPIO2) dann einfach die ganzen Timer/ Regeln mit GPIO2 löschen und GPIO14 auf GPIO2 ändern.

        Das müsste aber GPIO12 lauten, denn 14 ist der Reed-Kontakt, 12 die Zusatz-LED ;)
        Aber sehr schön und ausführlich beschrieben :)

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

        @SBorg Ist geändert. Nach der ganzen Doku hab ich den Wald vor lauter Bäumen nicht mehr gesehen. Danke für die Blumen!

        Und ja- sehr ausführlich, sollte ja auch echt Anfängertauglich sein- mir fehlten irgendwie an jedem Schritt immer Kleinigkeiten, so dass ich zu Beginn dachte.. mein Gott- sicher voll schwierig. Wenn man bei vielen Einträgen anfängt mitzulesen, fehlt einem ohne das Ganze mal gemacht zu haben wirklich der Durchblick.

        Ich hoffe dass mit solchen Einträgen anderen Anfängern die Scheu genommen wird...

        1 Antwort Letzte Antwort
        1
        • 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

                                        866

                                        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