Wasserzähler smart machen

Hi, ich hab mal wieder eine Idee und wollte mal fragen, ob das schon einer umgesetzt hat. Auf einer Webseite hab ich die Anleitung dafür gefunden und muss erst mal sehen wie das mit einem ESP so funktioniert. Der Sensor der verwendet wird ist dieser hier:
Home-Assistant-Contador-Agua-ESPHome-01
Die Wasseruhr die bei mir eingebaut ist, ist diese:
Home-Assistant-Contador-Agua-ESPHome-02
Also nicht besonderes. Auf der Seite, die auch auf den Fotos ist sieht das eigentlich ganz einfach aus. Auf einer anderen Seite hab ich sogar was gefunden, wo das mit einem Aqara Fenterkontakt funktionieren soll. Getestet hab ich beides noch nicht. Die Alternative für meinen Zähler wäre das Aufsatzmodul mit potentialfreiem Kontakt von Diehl, ist halt ein wenig teuer für ein Experiment. Vielleicht hat ja schon jemand einige Erfahrungen mit den verschiedenen Teilen gemacht und möchte das teilen.

Schau Die mal den Digitizer an Zähhler mit einer esp32cam Modul.
Funktioniert zuverlässig und besser als impulse Zählen.
Es gibt auch einen Tread in diesem Forum musst Du mal Suchen.

Gruss

Danke für die Hinweise, aber die ganze Sache mit Kameramodul und so ist doch sehr schwierig mit der richtigen Ausrichtung. Ich weis auch noch nicht was die demnächst für eine Wasseruhr einbauen. Wenn es der gleiche Typ bleibt, wäre es einfach, da gibt es von Diehl ein Modul was auf den Zähler aufgesetzt wird und da wird auch nur der Impuls gezählt. Mal abwarten.

Das mit der Auslesung per Kamera dürfte ein wenig problematisch werden, denn der Kreis der sich dreht bei der Wasserabnahme, hat eine Lupe und die überdeckt das rechte Feld.


Das ist mein originaler Zähler und da sieht man das es wohl kritisch werden könnte. Vielleicht hat hier ja jemand den gleichen Zähler und hat damit ERfahrung ob es funktioniert oder nicht.
Die Halterung ist nicht das Problem, ich hab einen 3D Drucker, damit kann ich mir dann schon das passende drucken, oder auch noch selbst erstellen.

Hab das genau wie oben beschrieben im Einsatz. Also ESP mit induktivem Sensor als Impulszähler. Einfache Installation und läuft ohne Probleme. Bin zufrieden. :wink:

Genau ( Cyble Sensor V2), das ist die am besten funktionierende Methode einen sauberen Zählimpuls zu bekommen, so habe ich das auch hier gemacht, gezählt wird der Impuls dann mit einem ShellyPlusUni, läuft hervorragend und auf den Liter genau :+1:

Das mit dem Gaszähler hab ich schon länger laufen, allerdings mit einem Aqara Kontakt und einem gedrucktem Teil für die genaue Positionierung.

Den Pulsgeber von Diehl, wollte ich auch schon verwenden. Da gibt es einen der nur die 2 Leitungen für den potentialfreien Kontakt hat. Den kann man im Ausland so für ca. 60,- € kaufen. Aber vielleicht probier ich es doch mit der Selbstauvariante, muss halt nur wieder da Strom hinbekommen. Den passenden Halter hab ich mir schon mal gedruckt.
Heir noch ein Link wo man den günstig bekommt:
https://www.sklep.witpol.com.pl/pl/p/Impulsator-Izar-Pulse-do-wodomierza-Diehl%2C-Altair/6440

Ich persönlich hab mit so einem Sensor nur gute Erfahrungen gemacht.

Mit AI on the edge wiederum hatte ich nur schlechte Erfahrungen und kann dir nicht dazu raten. Ich hab damit einige Tage, wenn nicht sogar Wochen verbraten und kein zufriedenstellendes Ergebnis bekommen…
Das ist halt sehr von den Bedingungen abhängig.

Ich hab jetzt schon ein paar Jahre einen Proximity Sensor fürs Wasser im Einsatz und der funktioniert einwandfrei.
Zudem ist der auch deutlich einfacher zu installieren. Ich hab den einfach mit doppelseitigem Klebeband an die richtige Stelle auf dem Zähler geklebt.

Ich hab damals keinen Sensor gefunden, der mit 5V funktioniert. Hab deshalb halt noch nen step-up converter benötigt.

Hallo,
wir haben zu Hause einen etwas anderen Zähler.

Dieser hat anscheinend schon eine Halterung für einen Aufsatz. Ich weiß nur nicht welcher dass ist und ob man diesen in HA einbinden kann.

Hat jemand ne Idee?

Danke :slight_smile:

EDIT:
Ich glaube, dass das die dafür vorgesehenen Aufsätze sind.
https://de.itron.com/de/categories/water-meters-modules

Hab nur keine Ahnung welcher der richtige ist ?!?
Dann gibt es wohl noch diesen

Diehl hat dafür einen passenden Aufsatz: IZAR MBUS COMPACT i | Diehl Metering

ansonsten kannst du den Impuls auch mit einem eigenen Sensor abfragen, hier findest du ein paar Beispiele: Erfassung mechanischer Wasserzähler (induktiver Sensor + ESP8266 )

1 „Gefällt mir“

Ich glaube der hier schon mal besprochen wurde funktioniert dafür. Ich verwende den auch.
https://community.simon42.com/t/analoge-strom-gas-wasserzaehler-mit-ai-on-the-edge-home-assistant-digitalisieren/4140/35
läuft bei mir schon sehr lange ohne Abweichungen.
Genau der mit HomeWizzard ist der der ohne Probleme sich in HA integrieren lässt.

1 „Gefällt mir“

Ich verwende als Impulsgeber einen Näherungssensor (M18 8mm DC 5V NPN LJ18A3-8-Z/BX-5V) in Kombination mit einem ESP32 Supermini. Da der Näherungssensor mit 5 Volt betrieben wird, habe ich eine Schutzschaltung mit einer Diode eingebaut. Zusätzlich habe ich den verwendeten GPIO5 des ESP32 mit einem 33-kOhm-Widerstand auf die 3,3-Volt-Spannung gezogen.

Den ESP32 habe ich in ESPHome als Wasserzähler konfiguriert, was bei mir einwandfrei funktioniert. Anfangs habe ich versucht, den Sensor mit der Konfiguration - platform: pulse_counter zu betreiben. Dies erwies sich jedoch als nicht zuverlässig, weshalb ich nun - platform: gpio verwende. Nach einer Laufzeit von etwa sechs Wochen konnte ich keine Abweichungen zwischen meiner Messung und dem Zählerstand


Anbei meine Konfiguration:
ohne Display


```substitutions:
  devicename: "smart-wasserzahler"
  long_devicename: "Smart Wasserzähler"
  pcb_version: "2024-12-19"

esphome:
  name: "${devicename}"
  name_add_mac_suffix: false
  comment: "${long_devicename} ${pcb_version}"
  platformio_options:
    board_build.flash_mode: dio

esp32:
  board: esp32-c3-devkitm-1
  variant: ESP32C3
  framework:
    type: esp-idf

# Aktiviert das Loggen
logger:

# Aktiviert die Home Assistant API
api:
  encryption:
    key: "="

  services:
    - service: set_total_pulses
      variables:
        new_value: int
      then:
        - lambda: |-
            id(total_pulses) = new_value;
            ESP_LOGD("Service", "Neuer Zählerstand: %d", id(total_pulses));


# Ermöglicht OTA-Updates
ota:
  - platform: esphome
    password: ""

# WLAN-Konfiguration
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Optional manuelle IP
  manual_ip:
    static_ip: 
    gateway: 
    subnet: 255.255.255.0
  reboot_timeout: 0s # Neustart warten, wenn kein WLAN, 0s ist ausgeschaltet

  ap:
    ssid: "${long_devicename} hotspot"
    password: ""

# Webserver hinzufügen
web_server:
  port: 80    

# Fallback-Hotspot für Konfigurationsfehler
captive_portal:

globals:
  - id: total_pulses
    type: int
    restore_value: false  # Speichern im Flash deaktiviert, wenn nicht notwendig
    initial_value: '298'  # Startwert des Zählers (Ganzzahl)
  - id: imp_ratio
    type: float
    restore_value: false  # Keine Notwendigkeit, die Impulsrate zu speichern
    initial_value: '0.001'  # Impulsrate vom Wasserzähler (0.001 Liter pro Impuls)

binary_sensor:
  - platform: gpio
    id: internal_pulse_counter
    pin:
      number: GPIO5
      # mode: INPUT_PULLUP  # GPIO5 als Eingang mit Pullup-Widerstand, ohne mode-Attribut, wird standardmäßig der Pin als reiner Eingang ohne Pullup- oder Pulldown-Widerstand konfiguriert.
      inverted: true  # Signal invertieren test 21.12.2024
    name: "Impuls"
    # Diese Filter sorgen dafür, dass der Sensor zuverlässig arbeitet und nur gültige Impulse erkennt
    filters:     
      - delayed_on: 100ms  # Test mit 100ms  Debouncing, der Impuls muss mindestens 50ms dauern, um als gültig zu zählen
      - delayed_off: 400ms  # Test mit 500ms Nach dem Impuls muss eine Pause von mindestens 100ms folgen
    on_press:
      then:
        - lambda: 'id(total_pulses) += 1; ESP_LOGD("Wasserzähler", "Aktueller Zählerstand: %d", id(total_pulses));'
        - switch.turn_on: status_led  # Schaltet die LED ein, wenn ein Impuls empfangen wird
        - delay: 200ms  # LED bleibt 200ms an
        - switch.turn_off: status_led  # Schaltet die LED wieder aus

# Status-LED auf GPIO8
switch:
  - platform: gpio
    id: status_led
    name: "Status LED"
    pin: GPIO8
    inverted: true  # true Umgekehrte Logik: Ein (LOW) bedeutet "an", aus (HIGH) bedeutet "aus"

# Sensoren
sensor:
  # Uptime-Sensor (Betriebszeit)
  - platform: uptime
    name: "${long_devicename} Betriebszeit"
    id: uptime_seconds
    update_interval: 30s

  # WLAN-Signalstärke
  - platform: wifi_signal
    name: "${long_devicename} WLAN-Signal"
    update_interval: 60s

  # Sensor für Wasserverbrauch
  - platform: template
    name: "Wasserverbrauch"
    id: wasser_verbrauch_liter
    device_class: water
    unit_of_measurement: "Liter"
    state_class: "total_increasing"
    icon: "mdi:water"
    accuracy_decimals: 0
    lambda: |-
      return id(total_pulses);  
    # Berechnung in Litern (Anzahl der Impulse)

  - platform: template
    name: "Wasserverbrauch gesamt"
    id: wasser_verbrauch_total
    device_class: energy
    unit_of_measurement: "m³"
    state_class: "total_increasing"
    icon: "mdi:water"
    accuracy_decimals: 3
    lambda: |-
      return id(total_pulses) * id(imp_ratio);  
    # Umrechnung von Litern zu m³

So heute ist mein Wasserzähler von HomeWizard gekommen. Einbauen und Integration in HA war super einfach. Noch paar Sensoren und Helfe zusätzlich erstellt