Zum Inhalt springen
Gassensor Gaszähler Hassio Home Assistant Arduino Esphome NodeMCU Einrichtung

Gaszähler auslesen mit ESP Home und Hassio (Home Assistant)

    In diesem Tutorial zeige ich dir, wie ich unseren Gaszähler per Home Assistant auslese. Ich hatte – unvorhergesehener Weise – Glück, dass der Gaszähler bereits für das digitale Auslesen vorbereitet war. Wenn auf deinem Gaszähler irgendwo sowas wie 1imp = 0,01m3 steht, würde das dort auch klappen.

    Gassensor Gaszähler Hassio Home Assistant Arduino Esphome NodeMCU

    Sensor: Metrix Impulsnehmer NI-3 für Metrix & Apator-Gaszähler

    Viele Gaszähler haben in einem der Drehrädchen einen Magneten integriert, der sich beim Gasverbrauch mitdreht. Ich habe ein paar Versuche mit einem normalen Magnetkontakt unternommen, mich am Ende aber für einen passenden Sensor entschieden.

    Gassensor Gaszähler Hassio Home Assistant Arduino Esphome NodeMCU Sensor Gassensor
    Magnetsensor zum Auslesen der Impulse des Gaszählers

    Beim Sensor handelt es sich um den Metrix Impulsnehmer NI-3 für Metrix & Apator-Gaszähler und er hat ca. 35 Euro gekostet. Um ihn am Gaszähler anzubringen wird es aber spannend. Hierzu muss aus dem aktuellen Gaszähler eine Abdeckkappe mit einer Zange rausgebrochen werden. Wie man das genau macht, ist im Datenblatt des Sensors gezeigt. Danach lässt sich der Sensor wie erwartet einfach in den Gaszähler einklicken und sieht aus, wie dafür gemacht.


    Sieh dir jetzt meinen neuen Arduino-Videokurs an: Jetzt ansehen!


    Hier hab ich das gute Stück gekauft: mySmartShop.de

    Der Sensor verfügt über vier Anschlusskabel: Zwei für einen öffnenden Kontakt, zwei für einen schließenden. Die beiden schließenden hab ich zum Auslesen verwendet.

    Elektronik

    Gassensor Gaszähler Hassio Home Assistant Arduino Esphome NodeMCU Schaltplan

    Die Schaltung ist relativ übersichtlich. An ein D1 Mini ESP-Board wird der Magnetsensor mit dem GND und dem D3 (GPIO0) verbunden. Ich habe ihn über Schraubklemmen angeschlossen. Es bietet sich an, gleich noch einen Temperatursensor in dem Raum zu haben, der ist allerdings optional. Ich habe mich für einen DS18B20 entschieden und ihn mit 5V, GND und dem Pin D2 (GPIO4) verbunden. Zusätzlich werde ich die LED vom D1 Mini (eigentlich vom ESP8266-Modul) verwenden. Sie ist intern am Pin D4 (GPIO2) angeschlossen und wird bei jedem Magnetimpuls aufleuchten.

    Bauteile

    Code und Installation

    Um das Programm auf das D1 zu übertragen, kann man es im einfachsten Fall per USB-Kabel an das Raspberry Pi anschließen. Gehe nun in Home Assistant auf ESP Home und klicke auf + New Device.

    Vergib hier einen Namen, z.B. Gaszaehler und wähle unter Pick Specific Board das Wemos D1 and Wemos D1 Mini aus.

    Gassensor Gaszähler Hassio Home Assistant Arduino Esphome NodeMCU Setup

    Klicke auf Install und wähle hier Plug into the computer running ESPhome Dashboard.

    Nun wird das Programm compiliert und auf das D1 übertragen. Dabei wird auch ein OTA-Key generiert. OTA steht für Over-The-Air und ermöglicht es nach der ersten Konfiguration, neue Änderungen per Wifi zu übertragen.

    Am Ende der Übertragung wird ein Status generiert. Hier kannst du Signalstärken und Hardware prüfen. Das automatisch erzeugte Programm sieht jetzt ungefähr so aus:

    esphome:
      name: gaszaehler
    
    esp8266:
      board: d1_mini
    
    # Enable logging
    logger:
    
    # Enable Home Assistant API
    api:
    
    ota:
      password: "#################################"
    
    wifi:
      ssid: !secret wifi_ssid
      password: !secret wifi_password
    
      # Enable fallback hotspot (captive portal) in case wifi connection fails
      ap:
        ssid: "Gaszaehler Fallback Hotspot"
        password: "#################"
    
    captive_portal:
    

    Jetzt kannst du das D1 an seine finale Position bringen und den Magnetsensor vom Gaszähler anschließen. Ich habe meines per USB-Netzteil versorgt.

    Danach füge den folgenden Code unter captive_portal: ein.

    globals:
      - id: total_pulses
        type: int
        restore_value: false
        initial_value: '0'  # hier kann der Gaszählerstand initialisiert werden
    
    dallas:
      - pin: GPIO4
        
    binary_sensor:
      - platform: gpio
        id: internal_pulse_counter
        pin:
          number: GPIO0
          mode: INPUT_PULLUP
        name: "Live-Impuls"
        filters:
          - delayed_on: 10ms
        on_press:
          then:
            - lambda: id(total_pulses) += 1;
            - output.turn_off: led  # optional: für eine LED, die den Gaszählerpuls visualisiert
        on_release:
          then:
            - output.turn_on: led  # optional: für eine LED, die den Gaszählerpuls visualisiert
            
    sensor:
      - platform: dallas
        address: 0xd23c01d607bc1228
        name: "Temperatur_Teekueche" 
      - platform: template
        name: "Gasverbrauch"
        device_class: gas
        unit_of_measurement: "m³"
        state_class: "total_increasing"
        icon: "mdi:fire"
        accuracy_decimals: 2
        lambda: |-
          return id(total_pulses) * 0.01;
    
    # Optional: Diese LED soll blinken, sobald ein Signal vom Gaszähler erkannt wird
    output:
      - platform: gpio
        pin: GPIO2
        id: 'led'
        inverted: true

    Klicke nun unten rechts auf Install und wähle Wirelessly. Der Code wird erneut compiliert und dann per Wifi (OTA) auf das Board übertragen. Es startet automatisch neu und zeigt nach kurzer Zeit den Status an.

    Einrichtung in Home Assistant

    Jetzt wollen die Daten erstmal im Home Assistant Dashboard anzeigen lassen. Klicke dazu in der Home Assistant Sidebar auf Einstellungen und wähle Geräte und Dienste. Suche nach der Gaszähler-Karte und klicke auf Konfigurieren. Nun taucht ein Gaszähler-Eintrag auf der Karte ESPHome auf.

    Gassensor Gaszähler Hassio Home Assistant Arduino Esphome NodeMCU Karte erstellen

    Klicke nun auf den Link 1 Gerät. Auf der Unterseite findest du eine Dashboard-Karte mit drei Einträgen. Klicke auf Zum Dashboard Hinzufügen. Nun sollte die Gaszähler-Karte im Dashboard auftauchen.

    Gassensor Gaszähler Hassio Home Assistant Arduino Esphome NodeMCU Karte

    Ab jetzt sollten auch die erfassten Daten in der InfluxDB für das Grafana-Dashboard gespeichert werden. Hier sieht mal also erst was, wenn auch ein paar Daten angekommen sind. Konfigurieren wir mal ein Dashboard in Grafana.

    Gassensor Gaszähler Hassio Home Assistant Arduino Esphome NodeMCU Dashboard

    Klicke auf Grafana in der Seitenleiste von Home Assistant (Hassio, dann im Grafana-Menü auf das Plus-Zeichen und dann auf Create. Klicke auf Add a new Panel.

    Der obere Teil ist noch leer, denn wir müssen hier eine Datenquelle aus der InfluxDB zuweisen. Klicke also in der unteren Hälfte in der ersten Zeile auf das + hinter dem WHERE-Selektor und wähle entity_id. Es öffnet sich die select tag value Auswahl. Hier musst du den Namen des Sensors des Gaszähler-ESPs eingeben. In unserem Fall also gasverbrauch. Die Autovervollständigung sollte den Namen auch vorschlagen.

    Nun wähle weiter vorn bei select measurement Qubikmeter aus. Jetzt solltest du schon die ersten Einträge im Grafen oben sehen (das setzt voraus, dass schon Daten aus dem Gaszähler abzulesen waren – kann also sein, dass man hier erst ein paar Stunden abwarten muss).

    Die Gaszählermessung ist inkrementell. Das heißt, der Wert erhöht sich, je mehr Gas man verbraucht. Um den Verbrauch pro Stunde (oder auch pro Tag) anzuzeigen, musst du in der Zeile SELECT auf das Plus klicken und difference hinzufügen. Jetzt sieht man im Grafen eine zeitliche Abfolge.

    Nun kannst du unter ALIAS in der untersten Zeile noch einen Namen für deinen Grafen vergeben. Er wird in der Legende eingeblendet.

    Jetzt kannst du die Anzeige noch im rechten Seitenmenü nach deinen Wünschen stylen. Ich schlage vor, eine Fill opacity hinzuzufügen. Dadurch wird der Bereich unter dem Grafen gefüllt. Unter Line Interpolation habe ich Step after (das letzte Icon) ausgewählt. Es verbindet die Punkte nachziehend.

    Jetzt kannst du mit Save speichern und dann auf Apply drücken (beides oben rechts). Nun wird dir der Graf im Dashboard als Panel angezeigt. Du kannst das Panel an der unteren rechten Ecke mit der Maus anfassen und über die Breite ziehen. Drücke dann aber wieder oben auf Speichern (Diskettensymbol). Den angezeigten Zeitbereich kannst du übrigens auch oben rechts einstellen.

    So, das waren viele Einstellungen. Ich habe sie mal hier als animiertes Gif zusammengefasst.

    Gassensor Gaszähler Hassio Home Assistant Arduino Esphome NodeMCU Einrichtung

    Ich hoffe, das hat dir geholfen. Ich habe noch ein weiteres Panel mit dem Verbrauch pro Tag oben drüber erstellt. So lässt sich ein leichterer Überblick erschaffen.

    Ich habe die Daten mit meinem echten Zählerstand abgeglichen und habe eine Abweichung von ca. 8%. Das ist für mich genau genug. Wenn du mehr willst, müsstest du die Formel im ESPHome etwas anpassen.

    Und jetzt viel Spaß beim Nachbauen und Energiesparen :-)


    Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book »Arduino Projekte Volume 1« an!

    • Die beliebtesten Arduino-Projekte von StartHardware
    • Inklusive Schaltplan, Beschreibung und Code
    • Arduino-Schnellstart-Kapitel
    • Kompakter Programmierkurs


    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

     

    Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.