Gaszähler mittels Reedkontakt einlesen

Ich möchte hier mal meinen Weg beschreiben, wie ich meinen Gaszähler mit Hilfe eines Reedkontaktes auslese.
Das ganze mache ich mittels ESPHome.
Ich hatte noch einige ESP8266 herumliegen und habe diese verwendet.
Genauso gut ist es aber auch mit einem (mini) möglich.
Wie man das Board programmiert, hat Simon ja schon in seinem Video beschrieben.
Dort könnt Ihr ja schauen.

Hier kurz der Schaltplan:

495-schaltung

Das ganze habe ich auf einer Universalrasterplatte verlötet und in ein Hutschinengehäuse
gepackt. Das Foto stammt noch vom Testaufbau.

496-gehaeuse

Im Verteilerschrank habe ich es an ein 5V Hutschienen Netzteil angeschlossen.
Man kann aber auch ein USB-Netzteil und ein anderes Gehäuse verwenden. Je nach Gegebenheit.

Dann gehts ans Programmieren mittels ESPHome.
Ich habe das Board über USB an meinen Rechner angeschlossen.
Wichtig ist in diesem Fall, dass man den Crome-Browser benutzt!

ESPHome aufgerufen und einem Klick auf "+ NEW DEWICE" ein neues Gerät ausgewählt.
Einen Namen vergeben. In meinem Fall "gaszähler-hwr".
Dann wählt man sein Device Type aus. In meinem Fall dann ESP8266 und klickt auf "INSTALL".
Dann erfolgt die Frage wo man installieren möchte. In meinem Fall, weil das Board am Rechner steckte, wählt man "Plug into this computer". Klick auf !Install" und das Programm "preparing download". Das dauert eine Weile. Wenn der Download abgeschlossen ist, Klick auf "1. Download project" und dann auf "2. Open ESPHome Web". Dort klickt man auf "CONNECT". Denn wählt man seine USB-Verbindung aus und klickt auf "Verbinden".
Im nächsten Bild auf "INSTALL". Hier wählt man dann die Datei aus, welche man vorher heruntergeladen hatte.

Nach der Installation klickt man bei ESPHome beim erstellten neuen Device auf "EDIT"
hier sieht man dann den folgenden Code:

esphome:
  name: rc522
  friendly_name: rc522

esp8266:
  board: nodemcuv2

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "++csSS/8nEMA41aOoib0+7L200hsykVBwkwy2EbLr7U="

ota:
  password: "c616c67d15ef391455b826c93b110dfe"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  manual_ip:
    static_ip: 192.168.178.76
    gateway: 192.168.178.1
    subnet: 255.255.255.0

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

captive_portal:

nach “captive_portal:” fügt man nun den folgenden Code ein:

globals:
  - id: total_pulses
    type: int
    restore_value: false
    initial_value: '11803'  # mit diesem Wert startet der Gaszählerstand
    
binary_sensor:
  - platform: gpio
    id: internal_pulse_counter
    pin:
      number: GPIO5
      mode: INPUT_PULLUP
    name: "Live-Impuls"
    filters:
      - delayed_on: 10ms
    on_press:
      then:
        - lambda: id(total_pulses) += 1;
        - output.turn_off: led  # für die LED, zur Anzeige des Schaltvorgangs
    on_release:
      then:
        - output.turn_on: led  # für die LED, zur Anzeige des Schaltvorgangs
        
sensor: 
  - platform: template
    name: "hwr-gasverbrauch"
    device_class: gas
    unit_of_measurement: "m³"
    state_class: "total_increasing"
    icon: "mdi:fire"
    accuracy_decimals: 3
    lambda: |-
      return id(total_pulses) * 0.1;
      
# Diese LED blinkt, wenn ein Signal vom Reedkontakt erkannt wird
output:
  - platform: gpio # Die interne LED auf dem Board
    pin: GPIO2
    id: 'led'
    inverted: true

in der Zeile: return id(total_pulses) * 0.1

müsst ihr den Wert je nach Eurem Zähler ändern.

Auf meinem stand 1 Impuls entspricht 0,1 m3.

Dann ein Klick auf "SAVE" und danach auf "INSTALL"
Nun könnt Ihr "Wirelessely" auswählen und weiter gehts hier bald.

Ich möchte jetzt Fussball schauen 😀

FORTSETZUNG (Hardware) folgt ...

6 „Gefällt mir“

Hallo Imany,

ja mega spannend und im Prinzip habe ich das gleiche vor und wurde auch von dem Video von Simon dazu inspiriert.

Danke für das Teilen des Codes. Ich habe ESPHome auf meinem ESP32 bereits installiert und versuche den Reed Kontakt am WE mal zum Laufen zu bekommen.

Nutzt du einen offiziellen Reed Kontakt oder einen Eigenbau?

Die Antwort kommt im Laufe des Tages 😊 im zweiten Teil.

Aber ja, ich habe einen "Eigenbau"

Ich nutze den Aquara Türsensor ohne Gehäuse - da spar ich mir sogar die Stromversorgung über Kabel

1 „Gefällt mir“

hallo imany,

ich habe das einmal nachgebaut, allerdings mit einem nodemcuv3. Und

initial_value: '40970.384' # mit diesem Wert startet der Gaszählerstand
eingetragen, die Werte des Zählers werden allerdings dann falsch dargestellt.
4098.600
Gibt es da eine Stellenbegrenzung?
Grüße aus Hamburg

Leider kann ich meine "Fortsetzung" nicht mehr oben dranhängen 🤔
Also hier gehts weiter:

So, nun mal weiter mit der Hardware:
Als Reedkontakt verwendete ich einen Tür- oder Fensterkontakt (gibts bei Amazon für ein paar Euro).
Mann kann nätürlich einen, speziell für den Zählertyp gelieferten Kontakt verwenden. Da liegt der Preis aber jenseits von 30€.

501-reed1


Bei meinen Tests am Gaszähler habe nicht immer ein Kontakt durch den Magneten erhalten. Also den Kontakt ausgebaut.

502-reed2


Hier erkennt man, wie klein das Teil eigentlich ist.

Nun kam ich dichter an den Magneten heran und ich hatte einen zuverlässigen Schaltvorgang.
Hier seht Ihr die Position bei meinem Zähler.

503-zaehler

Da ich einen Zähler mit einem Impuls pro 0,1 m3 habe, muss der Kontakt über die zweite Stelle hinter dem Komma.

Durch das Aufleuchten der LED auf dem ESP8266 kann ich jetzt nachverfolgen, wenn ein Schaltvorgang anliegt.

504-schrank

Bei meinem Zähler ist das immer dann, wenn die "7" im Fenster erscheint.
Wenn das alles zuverlässig läuft, geht zum Homeassitanten ...

Also zu
Einstellungen->Geräte&Dienste->Geräte und dann nach dem Namen des Gaszählers suchen.

Auf das gefundene Gerät klicken und unter Sensoren seht Ihr dann den aktuellen Gaszählerstand.
Wenn er nicht mit dem Zählerstand Eures Gaszählers übereinstimmt, dann den Wert in ESPHome mittels "EDIT" bei "initial_value" anpassen und dann "SAVE" und "INSTALL" (per Wirelessly" Aktualisieren. Nun noch ein Neustart des Homeassistanten.
Unter "LOGS" im ESPHome kann man dann schauen, wie gezählt wird.

Nun zu "Einstellungen" -> "Dashboards" -> "Energiedashboard" -> "Gasverbrauch" Gasquelle hinzufügen".
Fertig. Die Werte Eures Gaszählers erscheinen nun im Energie-Dashboard.

506-gasverbrauch

Über eine Entitätskarte gehts auch :-)

507-Bildschirmfoto-2023-02-24-um-15-31-47

Das wars.

Nun stürze ich mich auf das nächste interessante Thema mit ESPHome: RFID …

1 „Gefällt mir“

Es scheint so. Ich gebe bei mir: 11886
ein und es erscheint der Zählerstand 1188,6
Die letzten zwei Stellen werden ignoriert. Gebe ich mehr ein, funktioniert es auch nicht.

@imany

Es wird ja auch INT gesetzt, da liegt glaube ich das Problem, ich werde mal testen!

globals:
- id: total_pulses
type: int
restore_value: false
initial_value: '11803' # mit diesem Wert startet der Gaszählerstand

@imany

Vielen vielen Dank für das Teilen deiner Config hier! Ich konnte am WE meinen Gaszähler damit integrieren.

Ich nutze es auf einem Wroom ESP32 DevKit Board und habe einen originalen Reed Kontakt vom Gaszähler Hersteller. Ich nutze ESP Home.

Als Impuls erhalte ich 0,01 und die LED lasse ich nur leuchten wenn der Kontakt schaltet. Läuft super!!

517-2023-02-2710-59

@oderturm

Würdest Du Deine Config teilen? Ich habe auch den originalen Reedkontakt und einen Zähler mit 0,01 Genauigkeit. Habe aber immer noch Probleme mit dem Programmieren, entweder dauer Leuchten oder/ und die Werte stimmen nicht.

Grüße aus Hamburg

globals:
 - id: total_pulses
 type: int
 restore_value: false
 initial_value: '0' # mit diesem Wert startet der Gaszählerstand


binary_sensor:
 - platform: gpio
 id: internal_pulse_counter
 pin:
 number: GPIO5
 mode: INPUT_PULLUP
 name: "Live-Impuls"
 filters:
 - delayed_on: 10ms
 on_press:
 then:
 - lambda: id(total_pulses) += 1;
 - output.turn_off: led # für die LED, zur Anzeige des Schaltvorgangs
 on_release:
 then:
 - output.turn_on: led # für die LED, zur Anzeige des Schaltvorgangs


sensor: 
 - platform: template
 name: "hwr-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;


# Diese LED blinkt, wenn ein Signal vom Reedkontakt erkannt wird
output:
 - platform: gpio # Die interne LED auf dem Board
 pin: GPIO2
 id: 'led'
 inverted: false

Also mache es ähnlich wie Klaus. Ich nutze den Telekom (Magenta) Fensterkontakt der kompatibel ist zur Fritz!Box (dect ule). Das anze ist extrem einfach , preiswert und drahtlos. Ich habe lediglich den Reedkontakt des Fensterkontaktes etwas anders platziert. Man könnte ihn auch durch einen anderen Reedkontakt , aber bei ging es so. Die Batterie hält mindestens 1,5 Jahre und kostet nur ein paar Cent.

Für schneller bekommt seine Gasuhr nicht smart , zumindest in meinem Fall

528-grafik

Zu dem initial_value noch mal folgender Gedanke.

Bei jedem ESP Home Update startet das ESP Board ja neu und setzt den Sensor zurück. Er wird also so oder so auseinander laufen mit dem Zählerstand. Man müsste ja jedes Mal seinen Gaszähler ablesen um den derzeitigen korrekten Wert zu setzen. Das ist doch blöd oder?

Das Energie Dashboard rechnet übrigens vollkommen korrekt auch bei Neustart der Boards. Da ich sowieso immer am 1. jedes Monats meine Daten analog ablese, kann man hier auch gleich mit HA vergleichen ob der Zähler richtig gerechnet hat.

Hallo, ich hatte für mein Home Assistant das auslesen des Gaszählers mittels Aquara-Sensor realisiert. Nach anfänglichen Startschwierigkeiten wegen schlechtem Funkempfang im Keller lief der Sensor jetzt eineinhalb Monate stabil durch. Nach der gestrigen Erweiterung meines Zigbee-Netzwerks um ein weiteres Gerät zählt HA die Impulse leider nicht mehr korrekt (zählt zu wenig). Kann es sein das Zigbee mit der Anzahl der Impulse jetzt überfordert ist? Falls ja, kann man den Sensor irgendwie priorisieren?

Ratlose Grüße, zany

Hallo zany,

ich habe ebenfalls meine Zähler mit einem Aquara-Sensor Aliexpress ausgelesen. Leider funktioniert das seit 2 Wochen nicht mehr.

Ich bin nach dieser Anleitung von gegangen: Youtube

Wenn ich den Türsensor Entität ansehe, werden die die Signale (einschalten, ausschalten) erfasst, aber im Dashboard „Energie“ wird kein Verbrauch mehr angezeigt. Hier wird gemeldet, dass eine „Entität nicht definiert“ ist (sensor.gaszahler_m3).

Ich vermute, dass ich einen Fehler im Helfer und/oder Template habe.

Also wie gesagt, es hat gelaufen und aus einem mir nicht erkennbaren Grund kann ich es nicht mehr im Dashboart anzeigen lassen.

Kannst du mir (unbeholfener Einsteiger in HASS) einen Tipp geben oder mir deine Konfiguration mitteilen?

Moin!
Ich habe schon X-Versuche gestartet meinen Gaszähler auszulesen. Mit Reedkontakt und auch mit Fensterreedkontakt - ich bekomme einfach keinen Magneten angezeigt. Eigentlich müsste der bei mir installierte Zähler auslesbar sein. (Itron G4 RF1) Hat jemand ähnliche Erfahrungen?

MfG - Bitfox

@Bitfox
Wenn du einen ESP32 zur Hand hast, kannst du ihn ja direkt mit HA über ESP Home konfigurieren. Dann habe ich meinen Reed Kontakt direkt auf das Board gesteckt (3,3 Volt). Dann die paar Zeilen Code die hier oben stehen. Und voila, es kamen Werte.

Vielleicht probierst du es noch mal neu. Ich habe es auch (zumindest gedanklich) monatelang versucht und dann war es doch so einfach. Den Reed Kontakt hatte ich schon ein Jahr rumliegen. Jetzt wo alles läuft, ärgere ich mich bissl, dass ich es nicht schon eher probiert habe.

Moin @Bitfox,
ich hatte es auch mit einem Reed zuerst versucht und nur instabile Ergebnisse erreichen können.
Die “empfindliche” Stelle des G4 RF1 liegt bei mir bei der “6”, dort sieht man den Magneten. Ich bin dann auf einem Hallsensor umgestiegen, schon besser.
Um die ganze Problematik mit “Datenabweichungen” im Offset nach Neustart/Reset/Update zu umgehen rüste ich derzeit auf AI-on-the-edge um.

Gruß Frank

Hallo @FrankS
Auf deinem Screenshot sieht man ja dass 1 Impuls = 0,1 m3 sind.
Bedeutet das nicht eher, dass der Magnet unter der 2. Nachkommastelle (die wo die Zahl 5 is) sein muss?

Hallo @oderturm,
ja, sieht alles merkwürdig aus und hätte ich auch in der 2. Nachkommastelle erwartet … aber man sieht auf meinem Bild den Magneten in der “6” glänzen.

Gruß
Frank