Hallo zusammen,
ich betreibe einen ESP32-basierten Gaszähler mit Reed-Kontakt (0.1 m³ pro Impuls) und ESPHome.
Die Hardware läuft grundsätzlich stabil, aber es scheint ein Problem mit Doppelimpulsen / Prellung zu geben.
Die LED am ESP zeigt dabei kurze Mehrfachblinks, was auf mehrere Impulse pro Magnetdurchgang hindeutet.
Ich vermute daher Kontaktprellen oder eine zu kurze Entprellzeit in ESPHome.
Hier die Yaml Definitonen:
Der reed contact zählt auf einem Itron Gaszähler (s. Foto)
ich betreibe einen ESP32-basierten Gaszähler mit Reed-Kontakt (0.1 m³ pro Impuls) und ESPHome.
Die Hardware läuft grundsätzlich stabil, aber es scheint ein Problem mit Doppelimpulsen / Prellung zu geben.
- Board: ESP32-DevKitC
- GPIO: 27 (Reed-Kontakt, Pull-Up aktiviert)
- Sensor: Standard-Reedkontakt (NO), direkt am mechanischen Gaszähler (Itron/Elster)
- ESPHome-Version: aktuelle Release (Oktober 2025)
- Home Assistant: VM auf Unraid (HAOS Image)
- WLAN: stabil
- Zählerlogik: klassischer GPIO-Binary-Sensor mit +0.1 m³ pro Impuls
- Kalibrierung: physischer Zähler = 53330.790 m³, Rohwert = 2.8 → Offset = 53327.990 m³
Die LED am ESP zeigt dabei kurze Mehrfachblinks, was auf mehrere Impulse pro Magnetdurchgang hindeutet.
Ich vermute daher Kontaktprellen oder eine zu kurze Entprellzeit in ESPHome.
- Gibt es bekannte Probleme mit GPIO 27 (Reed-Noise, Störungen, Flankenrauschen) beim ESP32?
- Welche Filterstrategien haben sich bewährt (delayed_on/off, debounce, on_press + millis())?
- Welcher Mindestabstand zwischen gültigen Impulsen ist für typische Haushaltsgaszähler realistisch?
- Hat jemand eine funktionierende Beispielkonfiguration für 0.1 m³-Impulse ohne Doppelzählungen?
Hier die Yaml Definitonen:
Code:
substitutions:
device_name: gaszaehler
friendly_name: "Gaszähler"
esphome:
name: ${device_name}
platform: ESP32
board: esp32dev
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
binary_sensor:
- platform: gpio
name: "${friendly_name} Impuls"
id: gas_reed
pin:
number: GPIO27
mode: INPUT_PULLUP
filters:
- delayed_on: 10ms
- delayed_off: 10ms
on_press:
then:
- lambda: |-
id(gas_total_m3).publish_state(id(gas_total_m3).state + 0.1);
sensor:
- platform: template
name: "${friendly_name} Gesamt m³"
id: gas_total_m3
unit_of_measurement: "m³"
accuracy_decimals: 3
update_interval: never
Der reed contact zählt auf einem Itron Gaszähler (s. Foto)
Anhänge
Zuletzt bearbeitet: