Ich bin seit Tagen dran und wollte mir unter Anleitung der verschiedenen bereits hier existierenden Anleitungen einen ESP32 und ein CC1101 einen Empfänger für meine Wasseruhr bauen. Bisher bin ich aber immer am Flashen meines aktuellen ESP32 Dev Kit V4 Moduls von AZ Delivery gescheitert. Die in den verschiedenen Beiträgen gepostete YAML Files konnte ich bisher nicht erfolgreich zum Laufen bringen. Der Vorgang brach meist bereits nach wenigen Sekunden mit Fehlermeldungen, die mich auch nicht weitergebracht haben, ab. Wer kann mir helfen, bzw. wer hat das bereits erfolgreich umgesetzt und kann mir eine YAML posten, die ich übernehmen und anpassen kann? Ich habe ESPHome bereits mit einigen Sensoren in HA laufen, bin also nicht ganz unerfahren mit dem Umgang und der Programmierung der ESP Module. Mit dem Wasserzähler bin ich jetzt am Ende meiner Möglichkeiten.
Poste bitte deine Config und die Fehlermeldungen.
@Jugi57: woher hast du den zugangscode? oder ist das ein privater zähler?
Danke für die Rückmeldung! Nein, ich habe keinen Zugangscode, ich habe die Seriennummer verwendet, die Anzahl der Stellen passt. Der Zähler ist von der Stadt und nicht privat. Bisher habe ich meine Versuche anhand dieses Posts aufgebaut, nur dass mein Zähler von Diehl ist und nicht von Qundis: Qundis digitaler Wasserzähler
Mein Hauptproblem ist vermutlich, dass ich die YAML Files nicht korrekt auf meinen ESP32 übertragen bekomme. Wenn ich das mal geschafft habe, denke ich dass ich weiterkommen werde. Ich habe es immer wieder mit verschiedenen Setups und Files probiert, leider ohne Erfolg. Auch die verschiedenen YAML Files aus diesem Beitrag habe ich ausprobiert, aber auch bei den Files bin ich schon bei der Übertragung an den ESP32 gescheitert. Ich verwende bisher nur den ESPHome Builder im HA für meine Versuche. Gibt es andere Vorschläge? Sollte ich besser einen Raspi aufsetzen und ESP Home darauf installieren und meine Versuche damit fortsetzen? Ich bin absoluter Anfänger in Sachen Softwareentwicklung.
Danke für die Rückmeldung! Hier meine YAML, die ich verwende und die Fehlermeldung, die ich beim Übertragen mit ESPHome bekomme. Der ESP32 ist per USB Kabel direkt am HA-NUC angeschlossen. Das Konditionieren des ESP32 hat einwandfrei funktioniert.
esphome:
name: esp-32-test
friendly_name: ESP-32 Test
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "**"
ota:
- platform: esphome
password: "**"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Esp-32-Test Fallback Hotspot"
password: "jy7YCXz7p05P"
captive_portal:
web_server:
port: 80
external_components:
- source: github://SzczepanLeon/esphome-components@main
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
log_unknown: false
sensor:
- platform: wmbus
meter_id: 0x14080571 #die Seriennummer meines Zählers
type: qwater
add_prefix: true
mode: C1
total_water_m3:
name: "Kaltwasser"
id: "coldwater"
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: cold_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/Sofia
servers:
- 0.pool.ntp.org
- 1.pool.ntp.org
- 2.pool.ntp.org
text_sensor:
- platform: version
name: "ESPHome Version"
- platform: template
name: "Kaltwasserzähler Letztes Update"
id: cold_water_last_update
#status_led:
# pin:
# number: GPIO2
# inverted: false
Hallo, ich hab den gleichen Zähler und hab auch so meine Experimente gemacht, aber keinen Erfolg gehabt. Meine Frage wäre, woher weist Du das die Daten ausgelesen werden können mit der Seriennummer? So weit ich weis ist dafür eine extra PIN notwendig die die Versorge nicht rausgeben. Wenn das so funktionieren sollte wäre ich natürlich auch daran interessiert.
Das hier habe ich zum testen versucht aber auch keinen Erfolg gehabt.
https://github.com/zibous/ha-watermeter
Allerdings bin ich nicht mehr so auf dem laufenden mit Programmierung.
Hallo, ich bin jetzt wenigstens ein klein wenig weitergekommen, nachdem ich den ESP32 direkt am HA-NUC per Kabel angeschlossen habe und die Pinout Konfiguration zum C1101 noch einmal angepasst hatte. Die YAML wurde übertragen, ich bekam aber eine Fehlermeldung bei den spezifischen Parametern des Qundis Zählers, die in der von mir kopierten Test YAML drin waren. Ich habe jetzt folgende YAML übertragen können:
esphome:
name: esp-32-test
friendly_name: ESP-32 Test
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "**"
ota:
- platform: esphome
password: "**"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Esp-32-Test Fallback Hotspot"
password: "j**"
captive_portal:
web_server:
port: 80
external_components:
- source: github://SzczepanLeon/esphome-components@main
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
# log_unknown: false
sensor:
- platform: wmbus
meter_id: 0x14080571
# type: qwater
# add_prefix: true
# mode: C1
# 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: cold_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/Sofia
servers:
- 0.pool.ntp.org
- 1.pool.ntp.org
- 2.pool.ntp.org
text_sensor:
- platform: version
name: "ESPHome Version"
- platform: template
name: "Kaltwasserzähler Letztes Update"
id: cold_water_last_update
Hier das ausgegebene Protokoll:
[09:58:57][C][wifi:441]: Hostname: 'esp-32-test'
[09:58:57][C][wifi:443]: Signal strength: -31 dB ▂▄▆█
[09:58:57][C][wifi:447]: Channel: 6
[09:58:57][C][wifi:448]: Subnet: 255.255.255.0
[09:58:57][C][wifi:449]: Gateway: 192.168.***.*
[09:58:57][C][wifi:450]: DNS1: 192.168.***.*
[09:58:57][C][wifi:451]: DNS2: 0.0.0.0
[09:58:57][C][logger:177]: Logger:
[09:58:57][C][logger:178]: Max Level: DEBUG
[09:58:57][C][logger:179]: Initial Level: DEBUG
[09:58:57][C][logger:181]: Log Baud Rate: 115200
[09:58:57][C][logger:182]: Hardware UART: UART0
[09:58:57][D][sntp:067]: Synchronized time: 2025-03-05 10:58:57
[09:58:57][C][template.text_sensor:020]: Template Sensor 'Kaltwasserzähler Letztes Update'
[09:58:57][C][version.text_sensor:021]: Version Text Sensor 'ESPHome Version'
[09:58:57][C][version.text_sensor:021]: Icon: 'mdi:new-box'
[09:58:57][C][captive_portal:089]: Captive Portal:
[09:58:57][C][web_server:153]: Web Server:
[09:58:57][C][web_server:154]: Address: esp-32-test.local:80
[09:58:57][C][sntp:042]: SNTP Time:
[09:58:57][C][sntp:045]: Server 0: '0.pool.ntp.org'
[09:58:57][C][sntp:045]: Server 1: '1.pool.ntp.org'
[09:58:57][C][sntp:045]: Server 2: '2.pool.ntp.org'
[09:58:57][C][mdns:116]: mDNS:
[09:58:57][C][mdns:117]: Hostname: esp-32-test
[09:58:57][C][esphome.ota:073]: Over-The-Air updates:
[09:58:57][C][esphome.ota:074]: Address: esp-32-test.local:3232
[09:58:57][C][esphome.ota:075]: Version: 2
[09:58:57][C][esphome.ota:078]: Password configured
[09:58:57][C][safe_mode:018]: Safe Mode:
[09:58:57][C][safe_mode:020]: Boot considered successful after 60 seconds
[09:58:57][C][safe_mode:021]: Invoke after 10 boot attempts
[09:58:57][C][safe_mode:023]: Remain in safe mode for 300 seconds
[09:58:57][C][api:140]: API Server:
[09:58:57][C][api:141]: Address: esp-32-test.local:6053
[09:58:57][C][api:143]: Using noise encryption: YES
[09:58:57][C][wmbus:338]: wM-Bus v4.1.4-1.17.1-b8f4a945:
[09:58:57][C][wmbus:356]: Chip ID: 402B0E86E694
[09:58:57][C][wmbus:358]: CC1101 frequency: 868.950 MHz
[09:58:57][C][wmbus:359]: CC1101 SPI bus:
[09:58:57][E][wmbus:361]: Check connection to CC1101!
[09:58:57][C][wmbus:363]: MOSI Pin: GPIO23
[09:58:57][C][wmbus:364]: MISO Pin: GPIO19
[09:58:57][C][wmbus:365]: CLK Pin: GPIO18
[09:58:57][C][wmbus:366]: CS Pin: GPIO5
[09:58:57][C][wmbus:367]: GDO0 Pin: GPIO16
[09:58:57][C][wmbus:368]: GDO2 Pin: GPIO17
[09:58:57][C][wmbus:374]: Available drivers: unknown
[09:58:57][C][wmbus:388]: Meter:
[09:58:57][C][wmbus:389]: ID: 336070001 [0x14080571]
[09:58:57][C][wmbus:390]: Type: auto detect
[09:58:57][C][wmbus:391]: Key: ''
[09:58:57][E][component:082]: Component wmbus is marked FAILED
[09:58:58][D][api:103]: Accepted 192.168.***.**
[09:58:58][W][component:170]: Component api cleared Warning flag
[09:58:58][D][api.connection:1446]: Home Assistant 2025.2.5 (192.168.178.70): Connected successfully
[09:59:34][I][safe_mode:041]: Boot seems successful; resetting boot loop counter
[09:59:34][D][esp32.preferences:114]: Saving 1 preferences to flash...
[09:59:34][D][esp32.preferences:143]: Saving 1 preferences to flash: 0 cached, 1 written, 0 failed
Für mich bedeutet das, dass die Verbindung zwischen HA und dem ESP32 steht. Auch die Verbindung zum CC1101 Funkmodul steht. Mir meiner als Key eingegebenen Seriennummer, die auf dem IZAR Zähler steht, bin ich nicht sicher, ob das so stimmt. Ich habe noch keinen Plan, wie ich weitermachen soll, bleibe aber dran. Vlt. habe ich ja Mitstreiter, die noch weitere Ideen haben und selbst an einer Lösung interessiert sind.
VG
by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)
Hi, also bei mir kommt im Log folgende Zeile:
[11:04:45][C][wmbus:374]: Available drivers: unknown
[11:04:45][C][wmbus:388]: Meter:
[11:04:45][C][wmbus:389]: ID: 537035542 [0x20028316]
[11:04:45][C][wmbus:390]: Type: auto detect
[11:04:45][C][wmbus:391]: Key: ''
Das würde ja bedeuten, das dort der Key oder besser die PIN vom Betreiber fehlt und deshalb die Werte nicht auftauchen. Bei der ID: scheint es auch nicht mit der Seriennummer der Wasseruhr zu stimmen denn da wird ein anderer Wert angezeigt als ich dort eingetragen hab, eventuell muss ich den Wert aus dem Log übernehmen und dann neu installieren.
Hi, bei mir kommt auch an der Stelle, wo ich die Seriennummer eingetragen habe, eine andere ID im Log zurück. Einen Key habe ich nicht. Ich habe aber immer noch die Vermutung, dass mein CC1101 keine Verbindung zum ESP32 hat und es nicht funktionieren kann. Ich habe gerade mal OHNE das CC1101 Modul kompiliert und bekomme die gleichen Daten im Log zurück, wie wenn das Board angeschlossen ist. Ich habe im Moment keine Ahnung, wie ich weitermachen soll.
In meinem Log sieht das jetzt so aus:
[11:51:59][C][safe_mode:020]: Boot considered successful after 60 seconds
[11:51:59][C][safe_mode:021]: Invoke after 10 boot attempts
[11:51:59][C][safe_mode:023]: Remain in safe mode for 300 seconds
[11:51:59][C][api:140]: API Server:
[11:51:59][C][api:141]: Address: watermeter.local:6053
[11:51:59][C][api:143]: Using noise encryption: YES
[11:51:59][C][wmbus:338]: wM-Bus v4.1.4-1.17.1-b8f4a945:
[11:51:59][C][wmbus:356]: Chip ID: 58D448A8CC84
[11:51:59][C][wmbus:358]: CC1101 frequency: 868.950 MHz
[11:51:59][C][wmbus:359]: CC1101 SPI bus:
[11:51:59][C][wmbus:363]: MOSI Pin: GPIO23
[11:51:59][C][wmbus:364]: MISO Pin: GPIO19
[11:51:59][C][wmbus:365]: CLK Pin: GPIO18
[11:51:59][C][wmbus:366]: CS Pin: GPIO5
[11:51:59][C][wmbus:367]: GDO0 Pin: GPIO16
[11:51:59][C][wmbus:368]: GDO2 Pin: GPIO17
[11:51:59][C][wmbus:374]: Available drivers: unknown
[11:51:59][C][wmbus:388]: Meter:
[11:51:59][C][wmbus:389]: ID: 922965314 [0x37035542]
[11:51:59][C][wmbus:390]: Type: auto detect
[11:51:59][C][wmbus:391]: Key: ''
Bis auf den Key scheint wohl alles so zu funktionieren. Die Gemeinde wollte mir eigentlich Bescheid geben wegen dem Key, mal abwarten.
hast du es mal mit dem type “izar” probiert?
Hi, ich bin in der Zwischenzeit mit viel Trial and Error fast am Ziel angekommen. Hier meine YAML für den ESP32 mit CC1101
esphome:
name: esp-32-test
friendly_name: ESP-32 Test
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
id: appslogger
level: debug
api:
encryption:
key: "*****************"
ota:
- platform: esphome
password: "*********"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "**************"
password: "**************"
captive_portal:
web_server:
port: 80
external_components:
- source: github://SzczepanLeon/esphome-components@main
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: 0x57675018
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/Sofia
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
#status_led:
# pin:
# number: GPIO2
# inverted: false
Entscheidend war diese Zeile, die in einem anderen Post mit anderem Ziel angegeben war
external_components:
- source: github://SzczepanLeon/esphome-components@main
components: [wmbus]
Außerdem habe ich den Hinweis aus dem Github Beitrag GitHub - SzczepanLeon/esphome-components befolgt und folgende Zeilen im Code ergänzt
wmbus:
all_drivers: True
log_all: True
Ich habe dann zunächst den Sensor ganz weggelassen und neu compiliert. Ich konnte im Protokoll dann die fehlenden Informationen für den richtigen Treiber und die ID-Nr. herauskopieren und in den Code einfügen. Danach neu compilieren und jetzt bekomme ich folgende Infos:
[15:13:59][I][wmbus:104]: izar [0x57675018] RSSI: -81dBm T: 1944A511780718506757A2511F00134889FC7B4ED6B310A3429C (26) T1 A
[15:13:59][D][meters.cpp:1987]: (meter) created ESPHome izar 57675018 not-encrypted
[15:13:59][D][meters.cpp:911]: (meter) ESPHome(0) izar handling telegram from 57675018.M=DME.V=78.T=07
[15:13:59][D][sensor:094]: 'Wasser': Sending state 743.84998 m³ with 3 decimals of accuracy
[15:13:59][D][text_sensor:064]: 'Wasserzähler Letztes Update': Sending state '2025-03-05 16:13:59'
Damit habe ich den wichtigsten Wert, nämlich den aktuellen Zählerstand und die dazu nötige Zeit für eine Karte in Home Assistant. Aus dem langen String an Hex-Werten wird sich sicherlich noch mehr herausarbeiten lassen, aber das mache ich mal am Wochenende.
Danke für jede Unterstützung, das Forum ist Klasse und ich kann wirklich nur staunen, wie schnell man Hilfe und Antworten bekommen. Weiter so!
Viele Grüße
Jürgen
Eins möchte ich noch ergänzen, letztendlich zum Ziel geführt hat mich der Umstand, dass ich die Fehlermeldungen direkt in https://www.perplexity.ai/
eingegeben habe und mir hier die nötigen Informationen zur Korrektur meiner YAML Zeilen gegeben wurden. Ich kann diese KI wirklich nur empfehlen.
Super das funktioniert bei mir auch, nur ist bei mir jetzt irgendwas passiert so das ich in den Geräten & Diensten kein ESP Home mehr drin hab und es nicht mehr hinbekomme.
@Jugi57 also hat es mit der seriennummer vom zähler wirklich fuktioniert?
Ich denke nicht, dass die Seriennummer des Zählers hier entscheidend ist. Es kann vermutlich auch irgendeine 8 stellige Nummer sein, nur die 0x muss vorangestellt sein. Nach dem compilieren gibt der Log dann eine ganz andere Nummer beginnend mit 0x aus. Ich habe auch keinen Key oder sonstwas von der SS tadt bekommen. Na CC hdem ich mich immer weiter vorgetastet hatte und den Fehlerlog in die AI Perplexity e ii betragen hatte, kam ich dann irgendwie zum Erfolg. Du kannst mir gerne Mal deine YAML schicken, ich schaue mir das an und versuche gerne zu helfen.
Viele Grüße
Jürgen
@Jugi57 also folgende hardware bei mir hydrus 171a (auch von diehl gruppe)
Muss mir jetzt noch ein entsprechendes CC1101 besorgen.
Hi, zu diesem Zähler kann ich leider nichts sagen. Keine Ahnung, ob der ähnliche Werte und Protokolle sendet, wie mein alter analoger Diehl mit IZAR Aufsatz. Viel Glück!
Ja, interessanterweise funktioniert das mit der Seriennummer, aber die ist glaub ich gar nicht so interessant. Bisher hies es immer das man eine PIN vom Versorger braucht, aber das ist wohl nicht der Fall, denn mit einem ESP32 und dem CC1101, werden die Werte richtig angezeigt. Der Dank gilt speziell Jugi57, der hat das rausgefunden und ich hab das bei mir schon laufen.
Bist du mit dem verschwundenen ESPHome weitergekommen?
Ja, der Fehler saß wie immer vor dem PC. Wenn man einen ESP anglernt hat gibt man dem ja einen Namen. Das war men Fehler bei dem Eintrag Host, kommt einfach nur der name des Moduls rein, das war allles. Der Zähler liefert die Daten die ich brauche. Ich will nur dem Gesamtstand wissen, alles andere ist für mich uninteressant.