Pipersberg Ultrimis V1.5 Wasserzähler über esphome auslesen

Moin,

ich bin neu hier habt ein bisschen Nachsicht mit mir. :slight_smile:

Ich habe vor einigen Monaten einen Pipersberg Ultrimis V1.5 Ul4-190-DN20 Wasserzähler vom Versorger eingebaut bekommen. Der Techniker war ziemlich nett und hat mir erzählt, dass das Auslesen des Wasserzählers kein Problem sei und ich !keinen! Key brauche. Nur die MeterID die auf den Geräte steht.

Hatte dann ein ESP32 Board hier rumliegen und bin mit Claude, Mistral und co auf die Reise gegangen. Habe mir ein CC1101 Board besorgt und mir über die verschiedene KIs mehrere YAMLs für esphome mit wmbus basteln wollen. Fazit dieses Versuchs.. keine KI hat es hinbekommen mir eine auch nur im Ansatz funktionierende YAML zu erstellen. Die meisten sind beim kompilieren gescheitert, andere haben nichts geloggt.

Danach habe ich mich selbst dran gesetzt und mir über das Template ( esphome-components/ESP32-C3_SuperMini_CC1101.yaml at main · SzczepanLeon/esphome-components · GitHub ) eine laufende YAML gebastelt die zumindest Daten empfängt und den ESP32 auch in Homeassistant. Hätte ich gleich am Anfang mal machen sollen. Hätte viel Zeit gespart. Allerdings bekomme ich nur rohe Datenpakete vom Wasserzähler.

[18:56:05.018][D][wmbusmeters:351]: raw packet "27BF40FB9A7DD3E9" [18:56:24.343][D][packet:097]: Have data from radio (8 bytes) [18:56:24.349][D][wmbusmeters:351]: raw packet "8F268A0CD89BC8D4" [18:56:34.897][D][packet:097]: Have data from radio (8 bytes) [18:56:34.903][D][wmbusmeters:351]: raw packet "E041E4D400CE6D01" [18:56:58.134][D][packet:097]: Have data from radio (8 bytes) [18:56:58.139][D][wmbusmeters:351]: raw packet "02D71B539F94FF4A" [18:57:21.284][D][packet:097]: Have data from radio (8 bytes) [18:57:21.289][D][wmbusmeters:351]: raw packet "0008D549AD95BAAF"

Habe dann nochmal ins Handbuch des Wasserzählers geschaut und dort rausbekommen, dass es für jeden Wasserzähler einen eigenen AES-Key gibt, den ich eventuell vielleicht möglicherweise bei meinem Versorger erfahre. Werde das am Montag mal abchecken.

Meine Frage dahingehend ist, ob jemand von euch einen solchen Zähler erfolgreich eingebunden hat. Gibt hier im Forum einen Beitrag dazu, aber da wird nur auf ein Auslesen mit Kamera verwiesen. Modernen digitalen Wasserzähler Pipersberg auslesen?

Hier noch die aktuelle YAML. Eventuell liegt es auch einfach nur an einer fehlerhaften Config im bereich wmbus_meter und sensor.

Vielen Dank für eure Unterstützung.

# ESP32-C3 Super Mini + CC1101 v2.0 (E07-M1101D-SMA) wM-Bus Reader
# Tested with Kamstrup MULTICAL 21 water meter (wM-Bus Mode C1, 868.95 MHz)
#
# CC1101 v2.0 Blue Board Pinout (E07-M1101D)
# Pin  Label      ESP32-C3 Super Mini    Function
# 1    GND        GND                    Ground
# 2    VCC        3V3                    Power (3.3V)
# 3    GDO0       GPIO3                  Interrupt (IRQ)
# 4    CSN        GPIO4                  SPI Chip Select
# 5    SCK        GPIO5                  SPI Clock
# 6    MOSI       GPIO6                  SPI Data -> CC1101
# 7    MISO/GDO1  GPIO7                  SPI Data <- CC1101
# 8    GDO2       n/c                    Unused
#
# Note: GPIO0-4, 3V3, GND, and 5V are on the left side of the board.
# GPIO5-10, 20, and 21 are on the right side.

substitutions:
  name: water-meter
  friendly_name: Water Meter

esphome:
  name: ${name}
  friendly_name: ${friendly_name}
  name_add_mac_suffix: false

esp32:
  board: az-delivery-devkit-v4
  framework:
    type: esp-idf

logger:
  level: DEBUG

time:
  - platform: homeassistant

api:

ota:
  - platform: esphome
    password: !secret ota_password

web_server:

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  output_power: 8.5dB
  reboot_timeout: 5min

external_components:
  - source: github://SzczepanLeon/esphome-components@main
    components: [wmbus_radio, wmbus_common, wmbus_meter]

# SPI Configuration for CC1101
spi:
  clk_pin: GPIO18
  mosi_pin: GPIO23
  miso_pin: GPIO19

# CC1101 Radio Configuration
# Note: CC1101 has no hardware reset pin - do not configure reset_pin
wmbus_radio:
  radio_type: CC1101
  cs_pin: GPIO17
  irq_pin: GPIO2
  frequency: 868.00MHz   # Optional. Range: 300–928 MHz. Default: 868.95 MHz
  on_frame:
    - then:
        - logger.log:
            format: "Frame received: RSSI=%ddBm, Mode=%s, Data=%s"
            args: [ 'frame->rssi()', 'toString(frame->link_mode())', 'frame->as_hex().c_str()' ]

# Uncomment and list only the drivers you need to save flash space
#wmbus_common:
#  drivers:
#    - multical21

# Define your water meter
wmbus_meter:
  - id: water_meter
    meter_id: !secret meter_serial_number
    type: ultrimis            # Change to match your meter type
   #  key: !secret meter_encryption_key
    mode:
      - C1
    on_telegram:
      - logger.log:
          format: "Telegram received from water meter"

sensor:
  # Water meter total consumption
  - platform: wmbus_meter
    parent_id: water_meter
    field: total_m3
    name: "Water Total Consumption"
    unit_of_measurement: "m³"
    device_class: water
    state_class: total_increasing
    accuracy_decimals: 3
    icon: "mdi:water"

  # Target/Last month reading
  - platform: wmbus_meter
    parent_id: water_meter
    field: target_m3
    name: "Water Target"
    unit_of_measurement: "m³"
    accuracy_decimals: 3
    icon: "mdi:counter"

  # Flow temperature
  - platform: wmbus_meter
    parent_id: water_meter
    field: flow_temperature_c
    name: "Water Temperature"
    unit_of_measurement: "°C"
    device_class: temperature
    accuracy_decimals: 1

  # External/Ambient temperature
  - platform: wmbus_meter
    parent_id: water_meter
    field: external_temperature_c
    name: "Meter Ambient Temperature"
    unit_of_measurement: "°C"
    device_class: temperature
    accuracy_decimals: 1

  # RSSI
  - platform: wmbus_meter
    parent_id: water_meter
    field: rssi_dbm
    name: "Water Meter RSSI"
    unit_of_measurement: "dBm"
    device_class: signal_strength
    state_class: measurement
    entity_category: diagnostic
    accuracy_decimals: 0
    icon: "mdi:signal"

  # WiFi signal strength
  - platform: wifi_signal
    name: "WiFi Signal dB"
    id: wifi_signal_db
    update_interval: 60s
    unit_of_measurement: "dBm"
    device_class: signal_strength
    state_class: measurement
    entity_category: diagnostic
    accuracy_decimals: 0

  - platform: uptime
    name: "Uptime"
    update_interval: 60s
    entity_category: diagnostic

text_sensor:
  - platform: wmbus_meter
    parent_id: water_meter
    field: current_alarms
    name: "Water Meter Alarms"

  - platform: wmbus_meter
    parent_id: water_meter
    field: status
    name: "Water Meter Status"

binary_sensor:
  - platform: status
    name: "ESP Status"
    entity_category: diagnostic

button:
  - platform: restart
    name: "Restart ESP"
    entity_category: diagnostic

Kurzes Update. Ich bekomme von dem Betreiber den AES Key. Mal sehen wie es danach weiter geht.

Ich habe ebenfalls als Wasserzähler einen Ultrimis, nachdem mein alter Wasserzähler (angebunden über LoraWAN, ich hatte seitens des Versorgers die entsprechenden Links) ausgefallen ist, montiert bekommen. Auf Nachfrage bei meinem Netzbetreibers bezüglich des Keys wurde mir gesagt, dass er nur LoraWAN kann und man hätte bei der Bestellung beim Hersteller angeben müssen, das er auch WMBus kann. Allerdings kommen über den WMBus auch Daten, die, außer der Zählernummer, auch verschüsselt sind. Bei meinem Netzbetreiber komme ich nicht weiter. Hat jemand noch eine Idee? Auslesen über eine Kamera ist keine Option, da ich es probiert habe und immer wieder falsche Daten übergeben wurden. Gruß Frank