Qundis digitaler Wasserzähler

Meine Zähler laufen im C Modus, das kann man auch im digitalen Display ablesen, siehe: https://qundis.de/fileadmin/user_upload/01_Produkte/03_Qwater_Wasserzähler/02_PDF/01_DE/QUNDIS_Datenblatt_Qwater_5.5_Elektronischer_Wasserzähler_Messkapsel_2017_dt.pdf

Bei mir steht da dann FC und bei dir vermutlich FS?

Wenn du in keinem Mehrfamilienhaus wohnst und die Zähler zentral abgelesen werden, würde ich versuchen den Modus auf C umzustellen, in der offiziellen WMBUS Doku finde ich leider keine Info, was bei S Modus eingestellt werden muss: GitHub - SzczepanLeon/esphome-components

Es sieht jedenfalls ganz so aus, als wäre dein ESP inkl. der Antenne richtig verkabelt, sonst würdest du nicht die Rauchmelder erfolgreich auslesen können:
https://wmbusmeters.org/analyze/3E44934452114247231A7801FD086081027C034955230082026CFFFF81037C034C41230082036CFFFF03FD17000000326CFFFF046D3809183802FDAC7E0F00

Bei mir kommt im C-Modus alle zwei Minuten der aktuelle Wasserstand der Wasserzähler.

Sorry weiter kann ich dir hier leider nicht helfen. Wenn du noch irgendwelche Infos von mir benötigst, schreib hier gerne - schreib gerne auch deine Lösung (könnte ja auch für andere interessant sein).

Hab grad nochmal die technischen Details die ich dir im PDF auch nochmal ran gehängt habe, gelesen und gesehen das zwischen S und C Modus ein unterschied in den MHz ist, das solltest du via frequency parameter einstellen:
Frequenzband

  • S-Mode 868,3 MHz
  • C-Mode 868,95 MHz

Default ist 868,95 im Modul eingestellt:

Ja, genau bei mir steht FS.

Habe heute auch schon gesehen, dass es einen Frequenzunterschied zwischen C und S Modus gibt. Diesen habe ich inzwischen eingestellt und den ESP neu aufgesetzt und jetzt läuft dieser seit ca. 1h. Bisher kein einziges Telegramm, aber im ungünstigsten Fall könnte es ja sein dass man fast 8 Stunden warten müsste, sofern ich die Doku richtig verstanden habe (alle 4 Stunden ein Telegramm).

Den C Modus kann ich denke ich nicht einstellen, da ja sonst mein Zähler nicht mehr mit den anderen Zählern abgelesen werden kann, welche sich auch alle im FS Modus befinden.

Danke dir nochmals für deine Hilfe, sofern ich Fortschritte mache werde ich hier noch ein Update zur Lösung posten.

:crayon:by HarryP: Zusammenführung Doppelpost (bitte “bearbeiten” Funktion nutzen)

Guten Morgen :slight_smile:
Seit dem Update ESPHome auf 9.0/9.1 habe ich bim Versuch ein Update des
ESP32 zum Wasserzähler einen Fehler:

Hatte jemand schon einen ähnlichen Fehler und kann mir bei der Behebung helfen?
Beste Grüße, AndiFidi

Hallo AndiFidi

hast du eine Lösung für ESPHome 9.1 erhalten ? Ich kämpfe auch gerade mit den roten Zeilen.

Gruß, Andreas

Hallo Andreas, nein leider nicht.
Ich komme auch überhaupt nicht drauf was falsch sein könnte.

Vielleicht weiss @meloneA wie man das lösen kann, er hatte mir damals auch sehr geholfen.

Gruß, AndiFidi

habt Ihr schon folgendes probiert?

Hi Melone,
jetzt sind die roten Fehlermeldungen weg, aber folgende Fehlermeldungen neu:

ERROR Error while reading config: Invalid YAML syntax:

while parsing a block mapping
  in "/config/esphome/esp-h2o.yaml", line 220, column 5
expected <block end>, but found '<block mapping start>'
  in "/config/esphome/esp-h2o.yaml", line 225, column 7

Zeile 220 wäre die Zeile mit ‘sensor:’
Zeile 225 die Zeile mit ‘meter_id: ${wmid}’

sensor:
  - platform: wmbus
    # Meter ID (usually from sticker). Can be specified as decimal or hex.
    # only hex is working for my watermeter !
    # see: https://github.com/SzczepanLeon/esphome-components/issues/6
    # edit watermeterid in the secrets file
      meter_id: ${wmid}
      type: qwater
      add_prefix: true
      mode: C1

Kann da aber keinen Fehler erkennen

Hab das Problem gefunden:

So war es vorher (mit Fehlermeldung);

external_components:
- source: github://SzczepanLeon/esphome-components@3.2.3
    components: [wmbus]

Und so funktioniert es:

external_components:
- source: github://SzczepanLeon/esphome-components@3.2.3
  components: [wmbus]

YAML-Syntax :crazy_face:

Danke @meloneA

Vielen Dank, das hat geholfen. Mein Zähler wird gefunden und erhalte Telegramme. Jetzt muss ich nur noch warten, bis unsere Stadtwerke den Zähler-Schlüssel bekanntgeben. Ich bin auf Mitte 2025 vertröstet worden…

Moin, aber schonmal gut wenn es jetzt auch bei Dir wieder funktioniert.
Ich lese den Wasserzähler in der Wohnung aus, da wird kein Key benötigt.
Beste Grüße
AndiFidi

Moin, ich wollte mal fragen, ob jemand das qheat 5.5 einbinden konnte b.z.w die esp32 config dafür hat? Soweit funktioniert qwater bei mir warm und Kaltwasser danke erstmal dafür :slight_smile: würde mich freuen, wenn mir jemand dabei helfen kann.

Ich bekomme keine Information übermittel mit meiner Config. Könnte evtl. jemand helfen.

und wmb sieht so aus

übersehe ich was, auf den ersten Blick sind doch alle Daten enthalten?

ja, aber ich bekomme diesen log

Bekomme jetzt ein falschen wert :frowning:
Ich habe bemerkt, dass ich von der qheat 5.5 einmal pro Tag ein wert bekomme.

Guten Abend und frohes Neues zusammen.
Im Leerlauf zwischen den Jahren konnte ich endlich mal den Watermeter zusammenlöten und flashen. Bei mir kommt auch kein Wert an und ich bekomme die gleiche Fehlermeldung wie @LexXxuS.
Wasserzähler läuft im C-Modus.
Die Wasserzähler der Mitbewohner und Nachbarn empfange ich auch…

Gibt’s schon Lösungsansätze?

Besten Dank und Gruß
Florian

Hi,

vielleicht könnt ihr mir mit meiner Config weiterhelfen. Ich bekomme einfach keine Telegramme rein. Sehe genau nichts. Lqi und RSSI unter diagnostic bekomme ich allerdings Werte.

Vielleicht hat ja jemand einen Hinweis.

---
## ---------------------------------------------------------------------------
## WMBUS METER az-delivery-devkit-v4 + CC1101 for Diehl IZAR RC 868 I R4 PL
## Hardware: ESP32 240MHz, 520KB RAM, 4MB Flash
##
## This version shows all watermeters. Use this for the first test
##
##  1. uses the latest wmbusmeter component from GitHub
##  2. Optional uses syslog component
##
##  SYSLOG:  tail -f /var/log/syslog | grep "water-meter"
##
## ---------------------------------------------------------------------------
substitutions:

  ## Device settings
  device_name_short: "lorenz"
  device_description: "Wasserzähler QWater"
  projectname: "QWater.Watermeter"
  appversion: "2.0.7"

  ## Logger settings
  log_level: "DEBUG"
  log_wmbus: "DEBUG"
  log_baudrate: "0"

## ----------------------------------------------------------------
## APPLICATION ESPHOME
## ----------------------------------------------------------------
esphome:
  name: ${device_name_short}
  comment: ${device_description}
  name_add_mac_suffix: false
  project:
    name: ${projectname}
    version: ${appversion}
  build_path: ./build/${device_name_short}
  on_boot:
    priority: 200
    then:
      - globals.set:
          id: boot_counter
          value: !lambda "return id(boot_counter) += 1;"
      - logger.log:
          level: INFO
          tag: "system"
          format: "BOOTMESSAGE:${device_name_short} API is connected, Device ready!"
      - component.update: bootcounter
  on_shutdown:
    priority: 700
    then:
      - logger.log:
          level: ERROR
          tag: "system"
          format: "BOOTMESSAGE:${device_name_short} is down!"

## ----------------------------------------------------------------
## HARDWARE az-delivery-devkit-v4
##          ESP32 240MHz, 520KB RAM, 4MB Flash
## ----------------------------------------------------------------
esp32:
  board: az-delivery-devkit-v4
  framework:
    type: arduino

## ----------------------------------------------------------------
## EXTERNAL COMPONENTS
## ----------------------------------------------------------------
external_components:
  - source: github://SzczepanLeon/esphome-components@3.2.3
    refresh: 0s
    components: [wmbus]

## ----------------------------------------------------------------
## Global variables
## ----------------------------------------------------------------
globals:

  - id: boot_counter
    type: int
    restore_value: yes
    initial_value: "0"

  - id: last_value
    type: float
    restore_value: yes
    initial_value: "0.00"

  - id: alarm_error_text
    type: std::vector<std::string>
    restore_value: no
    initial_value: '{"no error", "general_alarm", "leakage", "meter_blocked", "back_flow", "underflow", "overflow", "submarine", "sensor_fraud", "mechanical_fraud"}'

## ---------------------------------------------------
## WIFI Settings
## ---------------------------------------------------
wifi:
  ssid: "aaa"
  password: "xxx"
    # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Lorenz Fallback Hotspot"
    password: "xxx"

## ---------------------------------------------------
## mDNS Component
## ---------------------------------------------------
mdns:
  disabled: false

## ---------------------------------------------------
## Captive Portal Component
## ---------------------------------------------------
captive_portal:

## ---------------------------------------------------
## LOGGER COMPONENT
## ---------------------------------------------------
logger:
  id: appslogger
  level: ${log_level}
  baud_rate: ${log_baudrate}
  logs:
    wmbus: ${log_wmbus}
    wMBus-lib: ${log_wmbus}

## ---------------------------------------------------
## DEBUG COMPONENT
## ---------------------------------------------------
debug:
  update_interval: 5s
  
## ---------------------------------------------------
## OTA COMPONENT
## ---------------------------------------------------
ota:
  - platform: esphome
    password: "asd"
    on_begin:
      then:
        - logger.log:
            format: "OTA Start"
            tag: "OTA"
            level: WARN
    on_progress:
      then:
        - logger.log:
            level: WARN
            tag: "OTA"
            format: "OTA progress %0.1f%%"
            args: ["x"]
    on_end:
      then:
        - logger.log:
            format: "OTA End"
            tag: "OTA"
            level: WARN
    on_error:
      then:
        - logger.log:
            format: "OTA update error %d"
            tag: "OTA"
            level: ERROR
            args: ["x"]

## ---------------------------------------------------
## Web Server Component
## ---------------------------------------------------
web_server:
  port: 80
  version: 3

## ---------------------------------------------------
## Home Assistant API COMPONENT
## ---------------------------------------------------
api:
  id: espapi_wmbus_esp32
  password: "asd"
  port: 6053
  reboot_timeout: 0s

## ---------------------------------------------------
## SNTP COMPONENT
## ---------------------------------------------------
time:
  - platform: sntp
    id: time_sntp
    timezone: Europe/Berlin
    servers:
      - 0.at.pool.ntp.org
      - 0.pool.ntp.org
      - 1.pool.ntp.org
    on_time_sync:
      then:
        - logger.log:
            tag: "system"
            level: INFO
            format: "Synchronized sntp clock"

## ---------------------------------------------------
## WMBUS COMPONENT
## ---------------------------------------------------
wmbus:
  mosi_pin: GPIO13  #D7  MOSI Attached to Hardware SPI controller MOSI SPI Interface
  miso_pin: GPIO12  #D6  MISO Attached to Hardware SPI controller MISO SPI Interface
  clk_pin: GPIO14   #D5  SCK  Attached to Hardware SPI controller CLK
  cs_pin: GPIO15    #D8  CSN  Attached to Hardware SPI controller, Controls Boot Mode; CS SPI Interface 10k Pull-Down, boot fails if pulled high !!!
  gdo0_pin: GPIO04  #D1  SDA  Clock output. High Impedance !
  gdo2_pin: GPIO05  #D2  SCL  FIFO status signals. High Impedance !

  # log_unknown (Optional): Show telegrams from not configured meters in log. Defaults to False
  log_unknown: true
  sync_mode: true

## ---------------------------------------------------
## SWITCHES
## ---------------------------------------------------
switch:
  - platform: template
    name: Device Boot Counter reset
    turn_on_action:
      then:
        - lambda: |-
            id(boot_counter) = 0;
            id(bootcounter).publish_state(id(boot_counter));
        - logger.log:
            level: WARN
            tag: "system"
            format: "${device_name_short} reset boot counter o.k!"
        - component.update: bootcounter

  - platform: safe_mode
    name: "Device Restart (Safe Mode)"

  - platform: restart
    name: "Restart"
    id: restart_switch

  - platform: factory_reset
    name: Device Restart Factory

## ---------------------------------------------------
## SENSORS
## ---------------------------------------------------
sensor:
  - platform: wmbus
    meter_id: "0x23369112"
    type: izar
    add_prefix: true
    mode: C1
    lqi:
      id: wmbus_cc1101_lqi_kaltwasser_oben
      name: "Kaltwasser CC1101 LQI Oben"
      unit_of_measurement: "lqi"
      entity_category: "diagnostic"
    rssi:
      id: wmbus_cc1101_rssi_kaltwasser_oben
      name: "Kaltwasser CC1101 RSSI Oben"
      unit_of_measurement: "%"
      entity_category: "diagnostic"
    total_water_m3:
      id: "waterdisplay_kaltwasser_oben"
      name: "Kaltwasseruhr Oben"
      unit_of_measurement: "m³"
      state_class: total_increasing
      device_class: "water"
      accuracy_decimals: 3
      on_value:
        then:
          - lambda: |-
              ESP_LOGI("wmbus", "Kaltwasser Oben Display value: %.3f, last value: %.3f", id(waterdisplay_kaltwasser_oben).state, id(last_value));
              id(last_value)=id(waterdisplay_kaltwasser_oben).state;
          - logger.log:
              level: INFO
              format: "Received value for Kaltwasser Oben: %.3f"
              args: [id(waterdisplay_kaltwasser_oben).state]

              
  - platform: wifi_signal
    id: wifi_signal_db
    update_interval: 60s
    internal: true
    disabled_by_default: true

  - platform: copy
    source_id: wifi_signal_db
    name: "Device WLAN Signal"
    filters:
      - lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
    unit_of_measurement: "%"
    entity_category: "diagnostic"

  - platform: template
    name: Device Boot counter
    id: bootcounter
    icon: mdi:counter
    accuracy_decimals: 0
    state_class: "measurement"
    entity_category: "diagnostic"
    lambda: return (id(boot_counter));

Guten Morgen zusammen.

Ich habe einen digitalen Wasserzähler von Diehl (Hydrus 2.0), den ich nicht korrekt ausgelesen bekomme. Nun überlege ich, ob es für mein EFH nicht auch gehen würde, wenn ich mir private, ungeeichte Zähler dahinter einbauen lasse, damit ich meine Messungen da machen kann.
Ich hatte an 2 Stück gedacht, einmal “Wasser komplett” direkt hinter dem Hausanschluss, und 1x “Warmwasser”, vor der Heizung.

Nun hatte ich Qundis gefunden, das wäre preislich akzeptabel, würde ich sagen. Wisst ihr, ob sich so ein Gefunke nachteilig auf meinen Diehl Wasserzähler von den städtischen Wasserwerken auswirkt?
(wobei ich nicht mal weiß, ob die das überhaupt per Funk erfassen, letztens sollte ich noch manuell auslesen)

Danke & Grüße,
Marcus

ich sehe da kein Problem, heute haben viele Systeme vergleichbare Lora Schnittstellen.

1 „Gefällt mir“

Hallo zusammen,

ich bekomme ein Telegram von Qundis Wärmezähler aber er kann da keine Werte lesen.

[19:30:33][V][mbus:062]: Frame: 41449344839201684637728392016893444604640000200C06851400004C0641110000426C1F3CCC080668130000C2086C3F3102FD170000326CFFFF046D24133432 (66) [without CRC]
[19:30:33][D][wmbus:097]: Using driver 'qheat' for ID [0x68019283] RSSI: -31 dBm LQI: 128 Frame: C1 A T: 41449344839201684637728392016893444604640000200C06851400004C0641110000426C1F3CCC080668130000C2086C3F3102FD170000326CFFFF046D24133432 (66)
[19:30:33][D][wmbus:161]: Can't get value(s) from telegram for ID [0x68019283]

der Qundis Wasserzähler funktioniert.

ich benutze - source: github://SzczepanLeon/esphome-components@3.2.3

    meter_id: "0x68019283"
    type: qheat
    add_prefix: false
    mode: C1
    # get the total watermter m3 from the wmbus telegram
    total_energy_consumption_kwh:
      name: "e_heatwwmeter display"
      id: "heatwwdisplay"
      unit_of_measurement: "kwh"
      state_class: total_increasing
      device_class: "energy"
      accuracy_decimals: 3
      icon: mdi:counter

Wäre für Vorschläge offen, danke