Muss doch nochmal etwas fragen daich nicht so bewandert bin mit ESP32.
Hast Du versucht noch mehr Daten auszulesen? Ist zwar nicht so interessant zu wissen wie der Momentane Verbrauch ist, aber es gibt ja noch einige die es vielleicht auch versuchen wollen. Ich hab eine YAML Datei gefunden, aber damit funktioniert es nicht. Hier ist mal ein Link der vielleicht ein paar interessante Ansätze hat:
https://github.com/zibous/ha-watermeter
Die hatte ich auch schon gefunden und ausprobiert. Leider im ersten Ansatz auch ohne Erfolg. Wenn ich mal wieder Zeit habe, werde ich mich damit nochmals beschäftigen.
Ich muss dieses Thema noch einmal aufgreifen, weil seit dem ESPHome Update auf Version 2025.5 mein Wasserzähler keine Daten mehr liefert und es offensichtlich Probleme bereits beim Compilieren der YAML gibt. Ich bekomme immer die Fehlermeldung mit dem Bezug auf die "external_components:
- source: github://SzczepanLeon/esphome-components@main
components: [wmbus]"
Bei dem Anbieter SzczepanLeon/esphome-components hat sich scheinbar einiges geändert und kann daher in der vorliegenden YAML nicht mehr eingebaut werden. Meine Kenntnisse reichen aber bei weitem nicht aus, um mich da zurechtzufinden und mit dem neu angebotenen Code eine Lösung zu bauen. Kann mir vielleicht irgendjemand hier im Forum helfen? Ich bin bisher mit keiner Suchmaschine oder KI fündig geworden und brauche Hilfe. Wie sieht es bei den Mitgliedern des Forums aus, die diese Lösung erfolgreich umgesetzt haben? Gab es hier auch Probleme und hat jemand eine Idee, was ich noch anstellen kann, damit ich meinen Wasserverbrauch wieder auslesen kann?
eigentlich ganz einfach, ändere deine Zeile
github://SzczepanLeon/esphome-components@main
in
github://SzczepanLeon/esphome-components@version_4
das steht gleich auf der ersten Seite im Repository, dass man mit einem CC1101 auf den Branch version_4 wechseln soll.
Vielen Dank für’s teilen deiner yaml, die hat mir sehr gut weitergeholfen ![]()
eine Sache noch:
Die Reihenfolge im yaml ist entscheidend, ich musste den time Block vor den wmbus Block schieben, ansonsten hat er immer gemeint, er würde den “driver” nicht finden oder “unknown CI field [8C]”.
Damit klappt es mit einem Diehl Hydrus auch mit AES Key
by HarryP: Zusammenführung Doppelpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)
Vielen Dank für die Rückmeldung. Nachdem ich den Eintrag in meiner YAML übernommen hatte, kam auch wieder ein Protokoll vom ESP32 was so aussieht:
“[I][wmbus:106]: Unknown! [0x71766077] RSSI: -96dBm T: 1944A511780777607671A2111F00137E63D095A029EC88A576C1 (26) T1 A”
In http kann man diesen String eintragen und bekommt folgende Ausgabe:
Auto driver : izar
Similar driver : unknown 00/00
Using driver : izar 00/00
000 : 19 length (25 bytes)
001 : 44 dll-c (from meter SND_NR)
002 : a511 dll-mfct (DME)
004 : 77607671 dll-id (71766077)
008 : 78 dll-version
009 : 07 dll-type (Water meter)
010 : a2 tpl-ci-field (Mfct specific)
011 C?: 111F00137E63D095A029EC88A576C1 mfct specific
{
"_":"telegram",
"media":"water",
"meter":"izar",
"name":"",
"id":"71766077",
"last_month_total_m3":3.857,
"remaining_battery_life_y":15.5,
"total_m3":5.128,
"transmit_period_s":8,
"current_alarms":"no_alarm",
"last_month_measure_date":"2025-05-31",
"previous_alarms":"no_alarm",
"timestamp":"2025-06-05T15:07:37Z"
Da stehen auch entsprechende Werte meines Zählers drin, aber wie bekomme ich die in mein HA?
Leider gibt mein Sensor in Home Assistant keine Werte mehr aus. Ich komme nicht drauf, wo mein Fehler liegt, bzw. was sich gegenüber der vorherigen Version geändert hat. Das YAML File ist bis auf die Änderung der URL exakt die gleiche Ausführung. Um sicher zu gehen, hatte ich noch einmal die in meinem Beitrag verwendeten Codezeilen und der geänderten URL neu kompiliert, aber leider ohne Erfolg. Hat jemand noch eine Idee, der ebenfalls diesen Zähler einsetzt?
Hi, ich hatte auch das Problem. Wenn Du den ESP neu programmierst sollte der Fehler weg sein. Meine Datei für den Sensor ist nur abgespeckt, aber sollte etwa so aussehen:
#-------------------------------------------------------------------------------
# Wasseruhr
#-------------------------------------------------------------------------------
template:
- sensor:
- unique_id: wasserverbrauch
name: Wasserzähler
unit_of_measurement: m³
state_class: total_increasing
device_class: water
state: "{{ (182.466 + states.sensor.watermeter_wasserverbrauch_insgesamt.state |float) }}"
Das war die Datei die ich in meinem extra Ordner drin hab für die Wasseruhr. (wasseruhr.yaml) dann sollte nach einem Neustart der Sensor auch wieder auftauchen.
Grüß Euch!
Hab ich das jetzt korrekt verstanden? So ist es möglich die Daten des Zählers OHNE key auszulesen?
Hallo, nachdem ich mit viel Geduld und unzähligen Neustarts meinen ESP32 wieder zum Laufen gebracht habe, kann ich deine Frage hier bestätigen, die Daten kommen OHNE einen Key ins Home Assistant. Ich kann aber nur für meinen Diehl Wasserzähler mit IZAR RC 868 Funkmodul sprechen. Die einzigen bekannten Werte sind die Frequenz und die Seriennummer, die ich in der YAML als ID unter “meter_id: 0xseriennummer” eingetragen habe.
Nachdem dann irgendwann alles korrekt gepasst hatte, kamen tatsächlich die Werte für den Zählerstand des Wasserzählers ins HA und werden seitdem in meinen Template Sensoren auch aktualisiert. Ich erfasse damit den Gesamtstand, den täglichen Verbrauch und protokolliere nebenbei auch die Monatsdaten im Hintergrund.
Wie hast Du den täglichen Verbrauch eingetragen? Bei mir hab ich bis jetzt nur den Gesamtverbrauch. Für die einzelnen Monate hab ich eine Excell Tabelle in die ich die Werte eintrage um einen Überblick zu haben und noch etwas von dem alten Gehirn zu nutzen.
Ja das ist kein Problem das mit einem ESP32 auszulesen. Ich kann aber nur den Gesamtverbrauch auslesen. Du musst erst den ESP normal anlernen aus HA raus und dann über Edit den Code unter captive einfügen:
web_server:
port: 80
external_components:
- source: github://SzczepanLeon/esphome-components@version_4
components: [wmbus]
wmbus:
mosi_pin: GPIO23 # D23 auf ESP32
miso_pin: GPIO19 # D19 auf ESP32
clk_pin: GPIO18 # D18 auf ESP32
cs_pin: GPIO5 # D5 auf ESP32
gdo0_pin: GPIO16 # RX2 auf ESP32
gdo2_pin: GPIO17 # TX2 auf ESP32
# led_pin: GPIO2
all_drivers: True
log_all: True
sensor:
- platform: wmbus
meter_id: 0xXXXXXXXXX #Zählernummer von Dir eintragen
type: izar # Specify the meter type
key: "" # Add encryption key if required
sensors:
- name: "Wasser"
id: water
field: "total"
unit_of_measurement: "m³"
state_class: "total_increasing"
device_class: "water"
accuracy_decimals: 3
icon: "mdi:water"
on_value:
then:
- text_sensor.template.publish:
id: water_last_update
state: !lambda 'return id(sntp_time).now().strftime("%Y-%m-%d %H:%M:%S");'
time:
- platform: sntp
id: sntp_time
timezone: Europe/Berlin
servers:
- 0.pool.ntp.org
- 1.pool.ntp.org
- 2.pool.ntp.org
text_sensor:
- platform: version
name: "ESPHome Version"
- platform: template
name: "Wasserzähler Letztes Update"
id: water_last_update
Dann sollte noch entweder in der configuration.yaml oder in einer extra yaml-Datei der Code für die Wasseruhr drin sein.
Wenn du den Gesamtverbrauch “Wasser” in m³ hast und der sich bei jeder Wasserentnahme verändert, dann legst du dir zuerst mit den Helfern entsprechende Zähler an, die den Verbrauch pro Stunde/ pro Tag/ pro Monat/ pro Jahr ausgeben.
Basierend auf diesen Werten kannst du dann Templates für die Zähler in Liter erstellen, hier ein Beispiel für den Tagesverbrauch, der sich um 0:00 Uhr zurücksetzt. Ich habe diesen Sensor im Ordner “Templates” erstellt, so dass ich die Bezeichnung “Templates” nicht jedem Sensor zuweisen muss.
- sensor:
- name: "Taeglicher Wasserverbrauch in Liter"
unit_of_measurement: "L"
device_class: water
state_class: total_increasing
state: >
{{ (states('sensor.wasserverbrauch_pro_tag') | float(default=0.0) * 1000) | int }}
Falls du dann noch andere Sensoren erstellen möchtest, lass deiner Kreativität freien Lauf. Bei Fragen einfach melden, ich helfe gerne
Hallo,
wie wertet ihr das dann aus?
Würde gerne bei mir auch den Wasserzähler auslesen.
Hätte halt gerne eine Auswertung/Benachrichtigung auf meinen Smartphone.
Wie habt ihr dies umgesetzt?
Wäre es möglich, dass du eine Anleitung für diese Anwendung schreibst?
Mach mal ein Foto von deinem Zähler. Vielleicht kann man dann mehr sagen und helfen.
Ich hab mich einfach dazu entschieden einen seperaten Wasserzähler mit einem Impulsausgang in Reihe zu hängen. Das ganze wird dann mit einem shelly uni plus ausgewertet. So muss ich auch nach einem Zählertausch nix mehr rumbasteln.
Ist wohl der selbe wie deiner.
Ist ein Diehl mit einem IZAR RC 868 | R4
Hier findest du die Anleitung für die ersten Schritte ha-watermeter/docs/d1Mini868Mhz.png at master · zibous/ha-watermeter · GitHub
Damit habe ich vor zwei Jahren begonnen und vor ca. 6 Monaten dann erste Erfolge gehabt. Mittlerweile läuft mein Zähler fehlerlos seit April, nachdem ein Zählerwechsel mir zu schaffen machte und liefert zuverlässig Daten.
Bau die die Hardware auf und wir können uns über den nächsten Schritt unterhalten.
So sieht dann ein einzelner Post vom ESP32 bei mir aus, den ich in Home Asssistant dann auswerte und mit entsprechend erstellten Template Sensoren in Tages-/Monats- und Jahresverbrauchswerte umrechne
[21:41:04][D][mbus:035]: Received T1 A frame
[21:41:04][I][wmbus:094]: Using selected driver izar (detected driver was izar)
[21:41:04][I][wmbus:106]: izar [0x71766077] RSSI: -72dBm T: 1944A511780777607671A2311F00137EB5D606F6567C3B1345C7 (26) T1 A
[21:41:04][D][meters.cpp:1989]: (meter) created ESPHome izar 71766077 not-encrypted
[21:41:04][D][meters.cpp:913]: (meter) ESPHome(0) izar handling telegram from 71766077.M=DME.V=78.T=07
[21:41:04][D][sensor:094]: ‘Wasser’: Sending state 19.69600 m³ with 3 decimals of accuracy
[21:41:04][D][text_sensor:064]: ‘Wasserzähler Letztes Update’: Sending state ‘2025-07-14 21:41:04’
Also ich habe mir nun
WEMOS D1 Mini Pro 4M
CC1101 Drahtlose Modul
bestellt und zugesendet bekommen.
Habe auch schon ein Blink programm geschrieben. Aber wie bekomme ich die YAML in die Adruino IDE?
Zusammengelötet habe ich das schon wie bei deinem Link.
Aber gibt es da auch wo eine Step by Step Anleitung?
Die Anleitung, nach der ich meinen Wasserzähler aufgebaut habe, findest Du hier https://github.com/SzczepanLeon/esphome-components/tree/version_4
Ich habe den ESP32 mit ESPHome Builder auf den ESP32 geflasht. Eine Schritt für Schritt Anleitung kann ich dir leider nicht liefern, ich habe mich mit viel Trial and Error und der Hilfe von der Perplexity AI https://www.perplexity.ai/ bis zum Ziel herangetastet. Ich kann nicht programmieren und verstehe auch viel von dem Kauderwelsch auf Github nicht.
Installiere den ESPHome Builder auf HA als Addon und schließe den ESP32 per USB an deinem HA Server an. Dann kannst du nach entsprechender Anleitung in ESPHome Builder vorgehen.
Aber Achtung! Es gibt einen Post, nach dem die ESP32 Geräte und dem IZAR YAML mit dem Release 7.x nicht mehr funktionieren.
Ich habe es bisher vermieden, den funktionierenden ESP32 upzudaten. Der läuft immer noch mit 6.3.
So, muss den alten Tread mal wieder rauskramen. Da es bei ESPHome Builder ein paar Updates gab ist es nicht mehr möglich den Wasserzähler auszulesen. Im Moment versuch ich mal wieder in meinem Testsystem rauszufinden woran es liegt, aber das ist nicht so einfach da ich kein so großer Programmierer bin. Im Log stehen nach der Neuinstallation des ESP ein paar Sachen drin die ich nicht verstehe. Nach dem compilieren und dem Neustart sieht das am Ende so aus:
Compiling .pioenvs/wasseruhr/src/esphome/components/wmbus/dvparser.cpp.o
Compiling .pioenvs/wasseruhr/src/esphome/components/wmbus/formula.cpp.o
Compiling .pioenvs/wasseruhr/src/esphome/components/wmbus/manufacturer_specificities.cpp.o
Compiling .pioenvs/wasseruhr/src/esphome/components/wmbus/mbus.cpp.o
Compiling .pioenvs/wasseruhr/src/esphome/components/wmbus/meters.cpp.o
Compiling .pioenvs/wasseruhr/src/esphome/components/wmbus/rf_cc1101.cpp.o
Compiling .pioenvs/wasseruhr/src/esphome/components/wmbus/translatebits.cpp.o
In file included from src/esphome/components/wmbus/rf_cc1101.h:9,
from src/esphome/components/wmbus/rf_cc1101.cpp:1:
src/esphome/components/wmbus/cc1101_rf_settings.h:3:10: fatal error: ELECHOUSE_CC1101_SRC_DRV.h: No such file or directory
****************************************************************************************
* Looking for ELECHOUSE_CC1101_SRC_DRV.h dependency? Check our library registry!
*
* CLI > platformio lib search "header:ELECHOUSE_CC1101_SRC_DRV.h"
* Web > https://registry.platformio.org/search?q=header:%1B%5Bm%1B%5BKELECHOUSE_CC1101_SRC_DRV.h
*
****************************************************************************************
3 | #include <ELECHOUSE_CC1101_SRC_DRV.h>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
*** [.pioenvs/wasseruhr/src/esphome/components/wmbus/rf_cc1101.cpp.o] Error 1
========================= [FAILED] Took 633.41 seconds =========================
Das was bei der Installation hinzgefügt wurde ist das hier:
web_server:
port: 80
external_components:
- source: github://SzczepanLeon/esphome-components@version_4
components: [wmbus]
wmbus:
mosi_pin: GPIO23 # D23 auf ESP32
miso_pin: GPIO19 # D19 auf ESP32
clk_pin: GPIO18 # D18 auf ESP32
cs_pin: GPIO05 # D5 auf ESP32
gdo0_pin: GPIO16 # RX2 auf ESP32
gdo2_pin: GPIO17 # TX2 auf ESP32
# led_pin: GPIO2
all_drivers: True
log_all: True
sensor:
- platform: wmbus
meter_id: 0x20028316
type: izar # Specify the meter type
key: "" # Add encryption key if required
sensors:
- name: "Wasser"
id: water
field: "total"
unit_of_measurement: "m³"
state_class: "total_increasing"
device_class: "water"
accuracy_decimals: 3
icon: "mdi:water"
on_value:
then:
- text_sensor.template.publish:
id: water_last_update
state: !lambda 'return id(sntp_time).now().strftime("%Y-%m-%d %H:%M:%S");'
time:
- platform: sntp
id: sntp_time
timezone: Europe/Berlin
servers:
- 0.pool.ntp.org
- 1.pool.ntp.org
- 2.pool.ntp.org
text_sensor:
- platform: version
name: "ESPHome Version"
- platform: template
name: "Wasserzähler Letztes Update"
id: water_last_update
Das kommt hinter captive rein. Bisher hat auch die Auslesung der Wasseruhr, Izar, so funktioniert, nur jetzt nach dem Update nicht mehr.
Nachdem ich nochmal alles versucht hab, alte Version von ESPHome Builder vom Backup geladen und noch einmal alles installiert steht diese Fehlermeldung im Log und ich weis nicht was ich damit anfangen soll:
INFO ESPHome 2026.3.2
INFO Reading configuration /config/esphome/wasseruhr.yaml...
WARNING GPIO5 is a strapping PIN and should only be used for I/O with care.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
See https://esphome.io/guides/faq/#why-am-i-getting-a-warning-about-strapping-pins
INFO Generating C++ source...
INFO Setting CONFIG_LWIP_MAX_SOCKETS to 17 (TCP=11 [api=3, captive_portal=3, web_server=5], UDP=3 [captive_portal=1, mdns=2], TCP_LISTEN=3 [api=1, ota=1, web_server_base=1])
INFO Compiling app... Build path: /data/build/wasseruhr
Processing wasseruhr (board: esp32dev; framework: espidf; platform: https://github.com/pioarduino/platform-espressif32/releases/download/55.03.37/platform-espressif32.zip)
--------------------------------------------------------------------------------
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
- contrib-piohome @ 3.4.4
- framework-espidf @ 3.50503.0 (5.5.3)
- tool-cmake @ 4.0.3
- tool-esp-rom-elfs @ 2024.10.11
- tool-esptoolpy @ 5.1.2
- tool-ninja @ 1.13.1
- tool-scons @ 4.40801.0 (4.8.1)
- toolchain-xtensa-esp-elf @ 14.2.0+20251107
Warning: the 'src_filter' option cannot be used with ESP-IDF. Select source files to build in the project CMakeLists.txt file.
Reading CMake configuration...
Library Manager: Installing SPI
Warning! Could not find the package with 'SPI' requirements
Library Manager: Installing SPI
Warning! Could not find the package with 'SPI' requirements
Dependency Graph
|-- noise-c @ 0.1.11
Compiling .pioenvs/wasseruhr/src/esphome/components/wmbus/rf_cc1101.cpp.o
Compiling .pioenvs/wasseruhr/src/esphome/components/wmbus/units.cpp.o
Compiling .pioenvs/wasseruhr/src/esphome/components/wmbus/utils.cpp.o
Compiling .pioenvs/wasseruhr/src/esphome/components/wmbus/utils_my.cpp.o
In file included from src/esphome/components/wmbus/rf_cc1101.h:9,
from src/esphome/components/wmbus/rf_cc1101.cpp:1:
src/esphome/components/wmbus/cc1101_rf_settings.h:3:10: fatal error: ELECHOUSE_CC1101_SRC_DRV.h: No such file or directory
****************************************************************************************
* Looking for ELECHOUSE_CC1101_SRC_DRV.h dependency? Check our library registry!
*
* CLI > platformio lib search "header:ELECHOUSE_CC1101_SRC_DRV.h"
* Web > https://registry.platformio.org/search?q=header:%1B%5Bm%1B%5BKELECHOUSE_CC1101_SRC_DRV.h
*
****************************************************************************************
3 | #include <ELECHOUSE_CC1101_SRC_DRV.h>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
*** [.pioenvs/wasseruhr/src/esphome/components/wmbus/rf_cc1101.cpp.o] Error 1
========================= [FAILED] Took 23.71 seconds =========================
Vielleicht ist ja doch noch jemand der sich mit ESP32 gut auskennt.
Jetzt hab ich einen neuen Fehler bei der Programmierung des ESP32 für das Auslesen.
UnknownPackageError: Could not find the package with 'LSatan/SmartRC-CC1101-Driver-Lib @ 2.5.7' requirements
Den Fehler hatte ich noch nicht. Das ganze erscheint erst seit kurzem wenn man mit ESPHome unter Home Assistant den ESP für die Wasseruhr programmieren will. Leider hab ich nicht mehr eine ganz alte Version von ESPHome um das nochmal zu testen, geht auch glaub ich gar nicht zurück zu gehen in den Versionen, ausser man hat ein altes Backup, meins ist das älteste 3 Wochen und da trat der Fehler schon auf.
Eine andere Möglichkeit den Zähler auszulesen gibt es wohl nicht, da jetzt auf dem Zähler der Funkring angebracht wurde und man so die Zahlen kaum erkennen kann, also Kameramodul geht nicht.
