Mit der Hilfe eines ESP8266 und eines Magnetschalters ( Reed Sensor ) kann am Gaszähler ( G4 RF1) über den Internen Magneten der aktuelle Verbrauch abgelesen werden ( 1 Imp = 0.1m³ ). Eingebunden ist das ganze wie bereits beim digitalen Stromzähler in Home Assistant ( HASSIO ). Dort kann man sich die Verbrauchswerte für die unterschiedliche Zeiten (Tag, Woche, Monat, Jahr) anzeigen lassen.

Mein erstes Problem bestand darin das ich mittels eines normalen WeMos D1 keinen Empfang im Heizraum hatte. Daraufhin habe ich den WeMos D1 Mini Pro mittels externer Antenne ausprobiert, mit Erfolg. Die Signalstärke ist ausreichend um die Daten über Wlan zu senden.

NEUE LÖSUNG MIT AQARA TÜR FENSTERSENSOR

Benötigte Hardware

Benötigte Software

3D Gehäuse Tinkercad

Aufbau

In meinem Fall habe ich mir bei Thingiverse ein passendes Case für den WeMos D1 Mini Pro geholt und mittels Tinkercad auf mein entworfenes Case gesetzt. Somit kann jede beliebige ESP8266 Platine mit der Magnetsensor Grundplatte verbunden werden.

KY-025 Magnetschalter Anschlussplan

Beim Magnetschalter muss man sehr auf das Glasröhrchen achten. Ich habe das Glasröhrchen mit dem Reed Kontakt leicht nach unten gebogen damit es bündig mit dem Auslass am gedruckten Gehäuse abschließt.

  • WeMos 5V —-> + KY-025
  • WeMos GND –> – KY-025
  • WeMos D5 —-> A0 KY-025

Gaszähler Typ G4 RF1

G4 RF1 von Actaris ESP8266

Bei meinem Gaszähler handelt es sich um das Model G4 RF1 von Actaris.

Das Model G4 RF1 von Pipersberg ist baugleich soweit ich weiß. Daher sollte das Case für den Sensor auch hier passen.

ESP Home Sensor config.yaml

Hier hatte ich zu Beginn Probleme beim Kompilieren der Software. Ich hatte unter board den d1_mini_pro stehen welcher normal über 16MB Speicher verfügt. Bei meiner Bestellung habe ich übersehen das mein WeMos D1 Mini Pro mit nur 4 MB bestückt ist. Daher musste ich die Software für einen normalen d1_mini kompilieren.

esphome:
  name: gas

# d1 mini pro but only with 4MB -> d1_mini
esp8266:
  board: d1_mini 

sensor:
  - platform: pulse_counter
    pin: 
      number: D5
      mode: INPUT_PULLUP
    name: "Gasverbrauch"
    state_class: total_increasing
    device_class: gas
    update_interval : 60s
    filters:
      - lambda: |-
          static float total_value = 0.0;
          total_value += x * 0.1;
          return total_value;
    unit_of_measurement: "m³"
    accuracy_decimals: 2
    icon: 'mdi:fire' 
    id: gasverbrauch

time:
  - platform: sntp
    id: my_time    

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:
  password: "xxxxxxxxxxxxxxxxxxxxxxxxxx"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Gas Fallback Hotspot"
    password: "xxxxxxxxxxxx"

captive_portal:

Hassio /config/configuration.yaml

......

utility_meter:
  gasverbrauch_daily:
    source: sensor.gasverbrauch
    cycle: daily
  gasverbrauch_weekly:  
    source: sensor.gasverbrauch
    cycle: weekly
  gasverbrauch_monthly:
    source: sensor.gasverbrauch
    cycle: monthly
  gasverbrauch_yearly:
    source: sensor.gasverbrauch
    cycle: yearly 

......

Home Assistant grafische Darstellung

18 thoughts on “ESP8266 – Gaszähler auslesen

  1. Ein Hinweis: ich würde beim KY-025 den digitalen Ausgang DO nutzen (dessen Hysterese auch per Poti eingestellt werden kann), AO hat keine Hysterese und meldet potentiell zu viele Impulse.

    • Hey Ralf,

      vielen Dank für deinen Hinweis. Ich hatte vorher den KY-024 verbaut und einige Probleme.
      Ich werde mir das ganze mal anschauen und dann meinen Blogpost korrigieren.

      Grüße
      Simon

      • Hallo Simon,
        zunächst Danke für das passende Case!
        Hat sich durch die Nutzung vom digitalen Ausgang eine Änderung/Verbesserung ergeben?

        Gruß
        Michael

  2. Hallo,

    tolles Projekt! Kannst du noch das genutzte Gehäuse zu thingiverse verlinken?

    Vielen Dank und Gruß

    Stephan

  3. Hi Simon,
    erst einmal Danke für deinen Blog Eintrag. Das ist genau das, was ich suche.
    Was meiner Meinung nach nicht zusammen passt, sind deine Fotos mit dem 3D model.
    Hast du vielleicht weitere Bilder die zeigen wie es zusammen gepuzzelt ist?

    Mein ursprünglicher Plan war Sensor und ESP einzeln zu verpacken, da ich einen Reed Sensor von itron (https://mysmartshop.de/products/itron-impulsgeber-fur-itron-balgengaszahler-g10-g40) bestellt habe.
    Der KY-025 ist natürlich viel billiger, daher werde ich auch den nehmen und der originale geht zurück.

    Grüße
    Stefan

  4. Hi Simon,

    auch von mir vielen Dank für deine “Anleitung”.
    Auch von mir die Frage ob du uns dein 3D-Modell mit Case zukommen lassen kannst? Ich würd es mir ja selbst bauen, doch dein 3D-Modell ist seltsamerweise in einer riesigen Größe.

    Vielen Dank
    Justin

  5. Hallo Simon,
    kann man das mit den Impulsen nicht mit 2 Hall-Sensoren, die in einem Abstand voneinder liegen, regeln?
    Nur dann zählen, wenn beide passiert sind. Das würde auch das Problem

    Gruß Niko

    • Hi Niko,

      müsste man mal ausprobieren.
      Mir fehlt aktuell die Zeit mich dem Thema anzunehmen.
      Ich behalte die Idee aber im Hinterkopf / bzw. steht ja jetzt im Blog comment 😉

      Grüße
      Simon

  6. Hallo Simon,

    leider bekomme ich das ganze auf meinem raspberry nicht compiliert ;-(
    Ist es dir möglich die .bin zur Verfügung zu stellen?
    Ich bräuchte allerdings mit 0,01 pro Impuls nicht 0,1.

    Tino

    • Hi Tino,

      kannst du das .bin file nicht mittels Home Assistant kompilieren?
      Gehe mal dazu unter ESPHome -> New Device -> (Beispielname: Gaszähler)
      Hier kannst du dann meinen Code einfügen (Edit).
      Danach auf Install klicken -> Plugin to this Computer (ESP an den Raspberry Pi hängen)
      Anweisungen folgen.
      Sobald der ESP einmal geflashed ist kannst du das ganze über OTA updaten.

      Ich installiere meine ESPs immer über mein Terminal am MacBook:
      sudo python esptool.py –port /dev/tty.usbserial-025AA1CE write_flash 0x00000 gas.bin

      Grüße
      Simon

  7. Hallo Simon,

    leider lässt sich auf dem Raspberry mit Hass.io nicht kompilieren.
    Versucht man das, hängt sich die ganze Geschichte auf. Das Problem haben wohl alle Raspberry Nutzer mit Home Assistant.
    Ich dachte zuerst dass es am schwachbrüstigen RPi3 liegt, aber auch mit dem 4er gehts einfach nicht.
    Sobald man in ESPHome etwas kompiliert, crashed das ganze Teil und es hilft nur ein Neustart.
    Ich habe mir inzwischen schon ESPHome auf meinem Ubuntu und einem Windwowsrechner installiert. Mit der Bedienung über die Konsole habe ich aber noch so eine Probleme. Die Dukumentation ist da nicht gerade selbsterklärend. Werde mich da wohl durchwühlen müssen, welche Schritte ich machen muss, um das unter Windows zu kompilieren. Bis zum Erstellen der “gaszaehler.yaml” bin ich schon gekommen. Wenn ich dann die .bin habe bekomme ich die schon übertragen.

    Tino

    • Hey Tino,
      ich habe mir damals ein boot Image mittels Balena Etcher erstellt und das lief auf Anhieb.
      Hier findest du die Anleitung dazu vielleicht kommst du damit weiter.

      Grüße
      Simon

    • Ja, das ist korrekt, solange man den 3er mit 1GB RAM hat. Um ESP Home zu kompilieren braucht man min. einen RPi mit 2 GB besser 4GB und auch empfehlenswert die 64Bit Version dann zu nutzen.
      Damit sollte es klappen und hat es bei mir auch…

  8. Hallo Simon,

    wirklich tolles Projekt! Bin gerade dabei das nachzubauen. Eine Frage hätte ich zum 3D Modell. Kann es sein, dass das für den WeMos D1 Mini Pro zu klein ist? Meiner passt nicht in das gedruckte Gehäuse.

    Gruß
    Alex

    • Moin Alex,
      wenn ich es richtig verstanden habe hast meine CAD Daten gedruckt. Dabei handelt es sich nur um den unteren Teil. Einfach beim Thingiverse ein Gehäuse aussuchen und in Tinkercad zu meinem File importieren. Dann musst du die beiden nur noch aufeinander setzen.
      Ich hatte bisher noch keine Zeit ein komplettes Case zu designen.

      Grüße
      Simon

  9. Tolles Projekt!

    Ich als Laie der wirklich noch nie sowas gemacht hat, habs mal ausprobiert.
    Hab einen Honeywell BK-G4MT Zähler.

    Leider passt das script wohl aber nicht bei mir 🙁

    Statt 0,87m³ hat er 17,00m³ gezählt.
    Hast du da vielleicht eine Idee?

    • Hey Scholli,
      was mir da auf die Schnelle einfällt ist das dein Gaszähler wahrscheinlich bei 1 imp=0.01 stehe hat.
      Das sollte dann auch im Code unter lambda angepasst werden:
      filters:
      – lambda: |-
      static float total_value = 0.0;
      total_value += x * 0.01;
      return total_value;

      Dadurch sollte ein deutlich geringerer Wert herauskommen wobei der dann anhand deiner Zahlen dann zu niedrig wäre.
      Was du mal machen kannst, schauen ob die LED am Reedkontakt bei jeder Umdrehung aufleuchtet.
      Ich hatte noch Probleme bei WLAN Abbrüchen da hat er die alten Werte zu den neuen addiert was dann zu falschen Ergebnissen gekommen ist.
      Grüße
      Simon

Leave a Reply

Your email address will not be published.