Lorenz Wasserzähler

Hallo,

ich bin in der ESP Thematik noch relativ neu, und habe 4 Wasserzähler in der Wohnung (2 für oben von der Firma Lorenz, 2 für unten von der Firma Qundis). Dank dieses super Threads habe ich es (mit leichten Anpassungen aufgrund der aktuellen ESP home Version) hinbekommen, die Qundis Zähler auszulesen:

An den Lorenz Zählern scheitere ich bisher, es werden keine Werte übermittelt. Ich habe mit dem Ableseservice gesprochen, alle Zähler senden im C1 Modus und sind nicht verschlüsselt.
Die Zähler sehen folgendermaßen aus:

Ich vermute, dass die Zähler ID jeweils die 8 Ziffern hinter dem DWZ00 sind, probiert habe ich es bereits jeweils mit und ohne 0x vor den Ziffern. Ebenfalls fraglich ist, ob “type: qwater” hier funktioniert, ich habe es (auch nach Konsulation von ChatGPT, was oftmals sehr hilfreich war) bereits mit “type: izar” probiert, dies hatte jedoch ebenfalls keinen Erfolg.

Ich füge hier mal meinen kompletten Code ein:

---
## ---------------------------------------------------------------------------
## 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: "esphome-wasserverbrauch"
  device_description: "Wasserzähler QWater"
  projectname: "QWater.Watermeter"
  appversion: "2.0.7"

  ## WMIDs for the water meters
  wmid_kaltwasser_unten: "0x14219340"
  wmid_warmwasser_unten: "0x14149456"
  wmid_kaltwasser_oben: "0x22315191"
  wmid_warmwasser_oben: "0x22337055"

  ## 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@main
    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: ""
  password: ""
  domain: ".local"

## ---------------------------------------------------
## 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}

## ---------------------------------------------------
## OTA COMPONENT
## ---------------------------------------------------
ota:
  - platform: esphome
    password: ""
    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
  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: GPIO23
  miso_pin: GPIO19
  clk_pin: GPIO18
  cs_pin: GPIO05
  gdo0_pin: GPIO16
  gdo2_pin: GPIO17
  log_unknown: false
  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:

  # Kaltwasserzähler unten
  - platform: wmbus
    meter_id: "0x14219340"
    type: qwater
    add_prefix: true
    mode: C1
    lqi:
      id: wmbus_cc1101_lqi_kaltwasser_unten
      name: "Kaltwasser CC1101 LQI Unten"
      unit_of_measurement: "lqi"
      entity_category: "diagnostic"
    rssi:
      id: wmbus_cc1101_rssi_kaltwasser_unten
      name: "Kaltwasser CC1101 RSSI Unten"
      unit_of_measurement: "%"
      entity_category: "diagnostic"
    total_water_m3:
      id: "waterdisplay_kaltwasser_unten"
      name: "Kaltwasseruhr Unten"
      unit_of_measurement: "m³"
      state_class: total_increasing
      device_class: "water"
      accuracy_decimals: 3
      on_value:
        then:
          - lambda: |-
              ESP_LOGI("wmbus", "Kaltwasser Unten Display value: %.3f, last value: %.3f", id(waterdisplay_kaltwasser_unten).state, id(last_value));
              id(last_value)=id(waterdisplay_kaltwasser_unten).state;
          - logger.log:
              level: INFO
              format: "Received value for Kaltwasser Unten: %.3f"
              args: [id(waterdisplay_kaltwasser_unten).state]

  # Warmwasserzähler unten
  - platform: wmbus
    meter_id: "0x14149456"
    type: qwater
    add_prefix: true
    mode: C1
    lqi:
      id: wmbus_cc1101_lqi_warmwasser_unten
      name: "Warmwasser CC1101 LQI Unten"
      unit_of_measurement: "lqi"
      entity_category: "diagnostic"
    rssi:
      id: wmbus_cc1101_rssi_warmwasser_unten
      name: "Warmwasser CC1101 RSSI Unten"
      unit_of_measurement: "%"
      entity_category: "diagnostic"
    total_water_m3:
      id: "waterdisplay_warmwasser_unten"
      name: "Warmwasseruhr Unten"
      unit_of_measurement: "m³"
      state_class: total_increasing
      device_class: "water"
      accuracy_decimals: 3
      on_value:
        then:
          - lambda: |-
              ESP_LOGI("wmbus", "Warmwasser Unten Display value: %.3f, last value: %.3f", id(waterdisplay_warmwasser_unten).state, id(last_value));
              id(last_value)=id(waterdisplay_warmwasser_unten).state;
          - logger.log:
              level: INFO
              format: "Received value for Warmwasser Unten: %.3f"
              args: [id(waterdisplay_warmwasser_unten).state]

  # Kaltwasserzähler oben
  - platform: wmbus
    meter_id: "0x22315191"
    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]

  # Warmwasserzähler oben
  - platform: wmbus
    meter_id: "0x22337055"
    type: izar
    add_prefix: true
    mode: C1
    lqi:
      id: wmbus_cc1101_lqi_warmwasser_oben
      name: "Warmwasser CC1101 LQI Oben"
      unit_of_measurement: "lqi"
      entity_category: "diagnostic"
    rssi:
      id: wmbus_cc1101_rssi_warmwasser_oben
      name: "Warmwasser CC1101 RSSI Oben"
      unit_of_measurement: "%"
      entity_category: "diagnostic"
    total_water_m3:
      id: "waterdisplay_warmwasser_oben"
      name: "Warmwasseruhr Oben"
      unit_of_measurement: "m³"
      state_class: total_increasing
      device_class: "water"
      accuracy_decimals: 3
      on_value:
        then:
          - lambda: |-
              ESP_LOGI("wmbus", "Warmwasser Oben Display value: %.3f, last value: %.3f", id(waterdisplay_warmwasser_oben).state, id(last_value));
              id(last_value)=id(waterdisplay_warmwasser_oben).state;
          - logger.log:
              level: INFO
              format: "Received value for Warmwasser Oben: %.3f"
              args: [id(waterdisplay_warmwasser_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));

Von der Firma Lorenz selbst habe ich auf Anfrage zumindest ein Funkprotokoll bekommen, ich muss jedoch gestehen, dass dies zum aktuellen Zeitpunkt mein Verständnis übersteigt: Datenblatt_DigitalerFluegelradZaehler-2024-04-09-1.pdf - Google Drive

Eventuell gibt es hier ja schon jemanden, der Erfahrung mit dieser Art von Zählern hat oder zumindest Ideen, die mich der Lösung ein Stück näher bringen.

Vielen Dank schon einmal!

Grundsätzlich empfehle ich dir deine Konfiguration für die Testphase etwas zu verschlanken und erstmal alles unnötige zu entfernen.

Dann ist mir aufgefallen, dass du in deiner wmbus Konfiguration log_unknown: auf false gestellt hast, dies bedeutet, dass er unbekannte Geräte nicht mit loggt, dass wiederum würde ich nicht empfehlen, wenn du gerade noch auf der Suche nach deinen richtigen Zählern bist.

Mit den Telegram Messages kannst du unter https://wmbusmeters.org/ herausfinden, welchen Treiber du am besten benutzt.

Aber entscheidend an dieser Stelle könnte auch, wie in meiner Antwort im anderen Feed bereits geschrieben, die die Frequenz sein. Leider finde ich dazu keine Angaben in den bereitgestellten Datenblatt, wenn aber wirklich gar keine Messages von deinen Zählern kommen, dann deutet das stark darauf hin, dass die Messages unter einer anderen Frequenz versendet werden. Hierzu schreibt nach meinen Informationen der Standard OMS keine genauen Frequenzen vor, daher könnten diese abweichend sein. Siehe: Qundis digitaler Wasserzähler - #62 von syn_ack

Vielen Dank schonmal, das hat meinem Verständnis der Materie auf jeden Fall sehr auf die Sprünge geholfen. Das Ändern von log_unknown: auf “true” hat nun dazu geführt, dass ich weitere Telegramme empfange. Es kommen in kurzen Abständen Telegramme meiner Qundis Zähler, von Rauchmeldern und von der Klimaanlage meines Nachbarn, leider jedoch keine von den Lorenz Zählern. Ich habe jedenfalls nochmals bei der Firma Lorenz nach der Frequenz gefragt und mir wurde bestätigt, dass die Zähler auf 868,95 MHz senden. Hierzu ist zu erwähnen, dass im gesamten Mehrfamilienhaus nach Aussage des Ableseservice Lorenz Zähler verbaut wurden, nur in dem Untergeschoss meiner Wohnung nicht, da sie dort nicht hereingepasst haben und man daher auf Qundis ausgewichen ist. Da ich außer denen meiner Qundis Zähler keine weiteren Zählertelegramme empfange (auch von den Nachbarn nicht), muss das Problem wohl woanders liegen. Eventuell hat ja jemand noch eine Idee, ich werde auf jeden Fall jetzt erstmal das Log weiter kritisch beobachten, ggf. kommt ja in sehr großen Abständen mal was (nach Aussagen des Ableseservice sollte mindestens zwischen 6 und 18 Uhr stündlich was gesendet werden). Wenn ich hier sonst garnicht weiterkomme, werde ich mich wohl nochmal an den Ableseservice wenden müssen, was genau da für Einstellungen vorgenommen wurden, wobei ich es schon eigenartig fände, wenn nichtmal Telegramme auftauchen.

Vermutlich habe ich ein Brett vorm Kopf:
wie ändert man bei einem Lorenz (baugleiche = WaterstM = Engelmann etc.) Zähler den Modus von T1 auf C1?
Ich habe jetzt mehrfach gelesen, das könnte beim Auslesen helfen, da ich zwar Telegramme erhalte (= Hardware okay, Zähler-Nummern sind auch schon ermittelt) hier komme ich aber nicht weiter.
Lt Log sendet er derzeit im T1-Modus.
Danke für einen Schubs in die richtige Richtung!

@bjan1989 hast du erfolg gehabt? wir haben hier das gleiche thema… die zähler wurden gerade ausgetauscht -.-

Würde mich auch interessieren, ob hier jemand Erfolg mit den Lorenz Zählern hatte