Hallo in die Runde! Ich habe einen Digitalen Wasserzähler (Multical 21) den ich leider nicht per wmbus auslesen kann, da mir die Wasserwerke den Verschlüsselungskey nicht ausgeben wollen. Ich könnte für 250€ nen USB wmbus Adapter kaufen der auf meinen Zähler „gebrandet“ ist, das ists mir aber nicht wert.
Da ich noch eine Impulsadapter (TCRT5000) und Wemos D1 liegen. Konnte anhand der Unterlagen vom Zähler rausfinden das er über die IR Schnittstelle Impulse rausgibt ( 1 Impuls - 0,1L)
Wie kann ich die daten nun mit den vorhandenen mitteln und Tasmota (?) abfragen und dann per MQTT an Homeassistant schicken um dort den Wasserverbrauch zu Monitoren? Hat das jemand schon umgesetzt?
Danke für den Input!
2 „Gefällt mir“
Plathai
21. Dezember 2024 um 16:53
2
Du fragtest nach einer Lösung mit Tasmota. Da du die Daten jedoch an Home Assistant senden möchtest, habe ich mich entschieden, meine ESPHome-Lösung vorzustellen. Ergänzend möchte ich erwähnen, dass ich zunächst versucht habe, den Sensor mit - platform: pulse_counter zu betreiben. Dies funktionierte jedoch nur mäßig, weshalb ich nun - platform: gpio verwende
Ich verwende als Impulsgeber einen Näherungssensor (M18 8mm DC 5V NPN LJ18A3-8-Z/BX-5V) zusammen mit einem ESP32 Supermini. Da der Näherungssensor mit 5 Volt betrieben wird, habe ich eine kleine Schutzschaltung (Diode) eingebaut. Zusätzlich habe ich den verwendeten GPIO5 des ESP32 mit einem 33-kOhm-Widerstand auf die 3,3-Volt-Spannung gezogen.
Den ESP habe ich in ESPHome als Wasserzähler konfiguriert, was bei mir tadellos funktioniert. Nach einer Laufzeit von etwa 4 Wochen konnte ich keine Abweichung zwischen meiner Messung und dem Zählerstand feststellen.
Anbei meine Konfiguration:
tippe oder füge den Code hier ein
```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³
1 „Gefällt mir“
Wolfi
21. Dezember 2024 um 17:25
3
So ist es mir auch gegangen. (Kein Key erkalten)
Dann habe ich auf ESP32 Cam umgestellt .
Funktioniert super.
" Digitizer - AI on the edge - watermeter"
Gruss
1 „Gefällt mir“
Wolfi
21. Dezember 2024 um 18:10
4
Wenn Du es per Tasmota erfassen willst siehe:
So habe ich meinen Gaszähler eingebunden. Impulse Zählen.
Allerdings magnetisch (Reed Kontakt)
Und hier der script dazu:
2 „Gefällt mir“
jay
22. Januar 2026 um 14:40
5
Was genau hat denn nicht geklappt?
Wie genau hast du die verschaltet und was genau soll die tun?
Der Elko sitzt nur zwischen 5V und Masse, oder?
jay
22. Januar 2026 um 14:42
6
Auf welchem Pin sitzt der Reed? 10?
Kümmert sich sensor53 automagisch um Entprellung und Fehlzählung?
Wolfi
22. Januar 2026 um 15:43
7
Steht doch im script.
Pull UP Widerstand nicht vergessen.
Meter Definition
+<M>,<rxGPIO>,<type>,<flag>,<parameter>,<jsonPrefix>{,<txGPIO>,<txPeriod>,<cmdTelegram>}
Siehe SML Sprache.
Neue Tasmota Script!!!
Zur INFO Beitrag von ottelo
Moin zusammen. Wollte mal den alten Thread wieder reaktivieren. Ich habe neue Tasmota Images (15.2.0) auf github veröffentlicht und alle Scripte stark überarbeitet. Man kann die Scripte nun direkt in Tasmota auswählen, ebenfalls den Stromzähler! Es ist nicht mehr notwendig, das Script per Hand herunterzuladen, anzupassen und auf den ESP zu übertragen.
Als Info für Neulinge:
Ich biete ja Tasmota Scripte für Stromzähler Leseköpfe an, die den Shelly oder EcoTracker em…
jay
22. Januar 2026 um 16:02
8
Wolfi:
Steht doch im script.
Wenn man die Legende zu den Variablen kennt, bestimmt.
Wolfi:
Meter Definition
Diese Zeile kann ich aber in deinem #2 nicht entdecken?
Wolfi
22. Januar 2026 um 16:09
9
Dein Bild zeigt nicht den ganzen script da geht es unten noch weiter.
Gruss
jay
22. Januar 2026 um 18:25
10
Mein Bild?
Das ist DEIN Bild!
Ich hab mich schon gewundert, dass das so einfach sein soll.
jay
23. Januar 2026 um 17:03
11
Wie stellst du eigentlich sicher, dass die Zählerwerte nicht verloren sind, sobald der esp einmal rebootet?
@jay
Die gelieferten Werte in eine Variable schreiben.
Wolfi
24. Januar 2026 um 09:19
13
Beim Tasmota gehen die werte nicht verloren! (ESP8266 mini)
Bleiben erhalten.
jay
25. Januar 2026 um 21:44
14
Ohne weitere Erklärung nutzt mir das nix.
Was ich machen will ist ja klar, aber wie bringe ich HA das bei?
jay
25. Januar 2026 um 21:46
15
Die gehn nur dann nicht verloren, wenn sie regelmäßig ins Flash geschrieben werden.
Das würde ich aber gerne vermeiden, da der Zähler ja lange zeit funktionieren soll (10 Jahre plus).
Das Speichern würde ich gern in HA erledigen.
@jay
Sorry aber da kann ich dir leider nicht weiter helfen.
In HA verwende ich keine extra Angelegten Variablen.
Ich benutze auch noch Homematic und Cux-D und
da ist es ein Kinderspiel sowas an zu legen.
Wolfi
26. Januar 2026 um 20:49
17
Ja dann erst recht Tasmota.
Mein Esp8266 mini erfasst jetzt schon 8 Jahre mein Gaszähler früher sogar Gas und Wasser zusammen . Mit dem selben ESP8266! Habe in dieser Zeit nur einmal ein Versions Update gemacht.
Mit HA über MQTT bzw, Tasmota verbunden Statistik usw.
Monatliche Zählerstände erfasse ich zusätzlich in einem File.
Gruss
1 „Gefällt mir“
jay
26. Januar 2026 um 21:19
18
Schön.
Würdest du mir deine Config schicken? Gerne als PM.
Wolfi
30. Januar 2026 um 16:32
19
@jay
Du meinst den Tasmota SML script?