Licznik wody KAMSTRUP Multical21

/// mod edit - wątek został scalony niechronologicznie z treści OPa umieszczonych w różnych wątkach…

Cześć Wszystkim, potrzebuję pomocy w kwestii odczytu WM-Bus z licznika wody KAMSTRUP Multical21. Mam klucz szyfrujący ale nie chce mi to działać. Potrzebuję przykładowego działającego yaml. Będę wdzięczny za pomoc.

Jaki masz sprzęt, pokaż YAML i logi (bez skonfigurowanych sensorów!).

Moja płytka ESP32 + C1101.

Plik YAML:

esphome:
  name: licznikwoda
  friendly_name: licznikwoda

esp32:
  board: esp32dev
  framework:
    type: arduino

external_components:
  - source: github://SzczepanLeon/esphome-components@version_4
    refresh: 0d
    components: [ wmbus ]

# Enable logging
logger:
  level: DEBUG

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password


time:
  - platform: sntp
    id: my_time

wmbus:
  mosi_pin: GPIO13
  miso_pin: GPIO12
  clk_pin:  GPIO14
  cs_pin:   GPIO2
  gdo0_pin: GPIO5
  gdo2_pin: GPIO4
  all_drivers: False
  log_all: True
  sync_mode: True

#  mqtt:
#    broker: 192.168.0.254

  clients:
    - name: "wmbusmeters"
      ip_address: "192.168.0.254"
      port: 7227

sensor:
  - platform: wmbus
    type: multical21

  - platform: wmbus
    meter_id: 57199574
    type: multical21
    key: "mam_klucz_szyfrujący"
    sensors:
      - name: "Multical Cold Water Total"
        field: "total"
        unit_of_measurement: "m³"
        device_class: "water"
        state_class: "total_increasing"
        icon: "mdi:water"
      - name: "Multical RSSI"
        field: "rssi"
        unit_of_measurement: "dBm"
        device_class: "signal_strength"
        state_class: "measurement"
        entity_category: "diagnostic"
      - name: "Multical Cold Water Target"
        field: "target"
        accuracy_decimals: 3
        unit_of_measurement: "m³"
        device_class: "water"
        state_class: "total_increasing"
        icon: "mdi:water"

Podczas kompilacji mam taki dziwny błąd:

Compiling .pioenvs/licznikwoda/src/esphome/core/component_iterator.cpp.o
src/esphome/components/wmbus/wmbus.cpp:18:48: note: ‘#pragma message: Loop task stack increased.’
18 | #pragma message ( “Loop task stack increased.” )

A czemu ciągniesz ten temat równolegle w 2 wątkach?

Musiałby się wypowiedzieć jakiś aktywny użytkownik v4 (bo składnia YAML się zmieniała w tym komponencie co wersję i ja straciłem orientację).

Witam wszystkich, czy miał ktoś błędy przy kompilacji dla ESPHome w wersji 2025.7.5.
Wywala się w przy wmbus.cpp:
Compiling .pioenvs/licznikwoda/src/esphome/core/component_iterator.cpp.o
src/esphome/components/wmbus/wmbus.cpp:18:48: note: ‘#pragma message: Loop task stack increased.’
18 | #pragma message ( “Loop task stack increased.” )

Czy ktoś ma jakiś pomysł. Licznik to multical21.

Kompilowałem wczoraj wersję 4 na ESPHome 2025.12.2 i idzie bez problemu pod płytkę z CC1101 i ESP32 z 4MB Flash (już jest pod korek).

INFO ESPHome 2025.12.2
INFO Reading configuration /config/esphome/cc1101-v4.yaml...
INFO Updating https://github.com/SzczepanLeon/esphome-components.git@version_4
INFO Detected timezone 'Europe/Warsaw'
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 11 (registered: api=4, captive_portal=4, mdns=2, ota=1)
INFO Compiling app... Build path: /data/build/cc1101-v4
Processing cc1101-v4 (board: esp32dev; framework: arduino, espidf; platform: https://github.com/pioarduino/platform-espressif32/releases/download/55.03.31-2/platform-espressif32.zip)
--------------------------------------------------------------------------------
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
 - contrib-piohome @ 3.4.4 
 - framework-arduinoespressif32 @ 3.3.2 
 - framework-arduinoespressif32-libs @ 5.5.0+sha.129cd0d247 
 - framework-espidf @ 3.50501.0 (5.5.1) 
 - tool-cmake @ 4.0.3 
 - tool-esp-rom-elfs @ 2024.10.11 
 - tool-esptoolpy @ 5.1.0 
 - tool-mklittlefs @ 3.2.0 
 - tool-ninja @ 1.13.1 
 - tool-scons @ 4.40801.0 (4.8.1) 
 - toolchain-xtensa-esp-elf @ 14.2.0+20241119
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...
Dependency Graph
|-- Networking @ 3.3.2
|-- ESP32 Async UDP @ 3.3.2
|-- DNSServer @ 3.3.2
|-- WiFi @ 3.3.2
|-- ESPmDNS @ 3.3.2
|-- noise-c @ 0.1.10
|-- SPI @ 3.3.2
|-- SmartRC-CC1101-Driver-Lib @ 2.5.7
RAM:   [=         ]  14.0% (used 46036 bytes from 327680 bytes)
Flash: [==========]  97.6% (used 1790183 bytes from 1835008 bytes)
========================= [SUCCESS] Took 13.93 seconds =========================
INFO Successfully compiled program.

To sam już nie wiem co jest grane. Cofnąłem do wersji 2023.12.9 i też problemy. A możesz podać ten kawałek odpowiedzialny za komponemty, ja mam taki:

esp32:
  board: esp32dev
  framework:
    type: arduino

external_components:
  - source: github://SzczepanLeon/esphome-components@version_4
    components:
      - wmbus

Tak samo jak Ty (z małymi różnicami kosmetycznymi):

esp32:
  board: esp32dev
  framework:
    type: arduino

# External component version_4  (CC1101)
external_components:
  - source: github://SzczepanLeon/esphome-components@version_4
    refresh: 0d
    components: [ wmbus ]

Zacznij od Clean Bulid Files

Czyściłem śmieci.Spróbuję zainstalować wyższą wersję czyli jak masz Ty: ESPHome 2025.12.2.

Jeszcze jedno mi przyszło do głowy - ja puszczam z wiersza poleceń ale to nie powinno generować problemów (esphome run esp_test.yml --device /dev/ttyUSB0).

Jak masz uruchomione ESPHome? Jako AddOn w HAOS? Czy może inaczej…

Na osobnym komputerze niezależnym od HA.

To raczej dotyczy problemów z płytką niż samym ESPHome. Brakuje pamięci…


#pragma message ( "Loop task stack increased." )

Komponent wmbus automatycznie zwiększa rozmiar stosu (stack) dla głównej pętli FreeRTOS w ESP32, ponieważ dekodowanie ramek wM-Bus wymaga więcej pamięci niż standardowe operacje.

#if defined(USE_ESP32)
  #if !defined(CONFIG_FREERTOS_LOOP_TASK_STACK_SIZE) || CONFIG_FREERTOS_LOOP_TASK_STACK_SIZE < 16384
    #pragma message ( "Loop task stack increased." )
  #endif
#endif

Daj cały kod YAML, może za dużo tam wstawiłeś różność i brakuje zasobów do upchania całości. Zacznij kompilację od podstawowych funkcji.

Pytałem bardziej o rodzaj instalacji niż maszynę. To jest Windows? Kontener Dockera?

EDIT:
Kompilacja na świeżym kontenerze ESPHome 2025.12.6 w ZimaOS, ten sam YAML pod CC1101. Zajmuje mniej pamięci Flash:

Creating ESP32 image...
Successfully created ESP32 image.
Linking .pioenvs/cc1101-v4/firmware.elf
                            Memory Type Usage Summary                             
┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Memory Type/Section ┃ Used [bytes] ┃ Used [%] ┃ Remain [bytes] ┃ Total [bytes] ┃
┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ Flash Code          │       656060 │          │                │               │
│    .text            │       656060 │          │                │               │
│ Flash Data          │       140784 │          │                │               │
│    .rodata          │       140528 │          │                │               │
│    .appdesc         │          256 │          │                │               │
│ IRAM                │        83155 │    63.44 │          47917 │        131072 │
│    .text            │        82127 │    62.66 │                │               │
│    .vectors         │         1028 │     0.78 │                │               │
│ DRAM                │        34088 │    18.86 │         146648 │        180736 │
│    .bss             │        18224 │    10.08 │                │               │
│    .data            │        15864 │     8.78 │                │               │
└─────────────────────┴──────────────┴──────────┴────────────────┴───────────────┘
Total image size: 895863 bytes (.bin may be padded larger)
Note: The reported total sizes may be smaller than those in the technical reference manual due to reserved memory and application configuration. The total flash size available for the application is not included by default, as it cannot be reliably determined due to the presence of other data like the bootloader, partition table, and application partition size.
RAM:   [=         ]  10.4% (used 34088 bytes from 327680 bytes)
Flash: [=====     ]  48.8% (used 895607 bytes from 1835008 bytes)
Building .pioenvs/cc1101-v4/firmware.bin
Creating ESP32 image...
Successfully created ESP32 image.
merge_factory_bin([".pioenvs/cc1101-v4/firmware.bin"], [".pioenvs/cc1101-v4/firmware.elf"])
Info: bootloader.bin not found - skipping
Info: partition-table.bin not found - skipping
Info: ota_data_initial.bin not found - skipping
Info: cc1101-v4.bin not found - skipping
Using FLASH_EXTRA_IMAGES from PlatformIO environment
Merging binaries into /config/.esphome/build/cc1101-v4/.pioenvs/cc1101-v4/firmware.factory.bin
Merging binaries with esptool
SHA digest in image updated.
Wrote 0xeac10 bytes to file '/config/.esphome/build/cc1101-v4/.pioenvs/cc1101-v4/firmware.factory.bin', ready to flash to offset 0x0.
Successfully created /config/.esphome/build/cc1101-v4/.pioenvs/cc1101-v4/firmware.factory.bin
esp32_copy_ota_bin([".pioenvs/cc1101-v4/firmware.bin"], [".pioenvs/cc1101-v4/firmware.elf"])
Copied firmware to /config/.esphome/build/cc1101-v4/.pioenvs/cc1101-v4/firmware.ota.bin
======================== [SUCCESS] Took 184.08 seconds ========================
INFO Successfully compiled program.

ESPHome mam postawiony na Linuxie (może problem z Pythonem?)
Mój moduł to ESP-WROOM-32, SRAM 520 KB, Flash: 4 MB.

Można snuć domysły dalej, możesz też dostarczyć więcej informacji. Zamieść pełen kod YAML dla konfiguracji tego urządzenia, daj zdjęcie tej płytki (może niewłaściwie definiujesz board), daj pełne logi z przebiegu kompilacji. Przed jej wykonaniem proponuję usunięcie całego środowiska, tak aby pobrały się świeże, czyste biblioteki.

Oto mój plik:

esphome:
  name: licznikwoda
  friendly_name: licznikwoda

esp32:
  board: esp32dev
  framework:
    type: arduino

external_components:
  - source: github://SzczepanLeon/esphome-components@version_4
    refresh: 0d
    components: [ wmbus ]

# Enable logging
logger:
  level: DEBUG

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password


time:
  - platform: sntp
    id: my_time

wmbus:
  mosi_pin: GPIO13
  miso_pin: GPIO12
  clk_pin:  GPIO14
  cs_pin:   GPIO2
  gdo0_pin: GPIO5
  gdo2_pin: GPIO4
  all_drivers: False
  log_all: True
  sync_mode: True

#  mqtt:
#    broker: 192.168.0.254

  clients:
    - name: "wmbusmeters"
      ip_address: "192.168.0.254"
      port: 7227

sensor:
  - platform: wmbus
    type: multical21

  - platform: wmbus
    meter_id: 57199574
    type: multical21
    key: "000000000000" 
    sensors:
      - name: "Multical Cold Water Total"
        field: "total"
        unit_of_measurement: "m³"
        device_class: "water"
        state_class: "total_increasing"
        icon: "mdi:water"
      - name: "Multical RSSI"
        field: "rssi"
        unit_of_measurement: "dBm"
        device_class: "signal_strength"
        state_class: "measurement"
        entity_category: "diagnostic"
      - name: "Multical Cold Water Target"
        field: "target"
        accuracy_decimals: 3
        unit_of_measurement: "m³"
        device_class: "water"
        state_class: "total_increasing"
        icon: "mdi:water"

Moja płytka to
esp-wroom-32

Wysyłasz telegramy do obróbki w Dodatku wmbusmeters?

Kamstrup ma zakodowany payload. Muszę go jakoś rozszyfrować mają klucz szyfrujący.

Na moje oko klucz nie jest 12znakowy (boisz się publikować faktyczny? nie powinienem tak pisać, ale przecież to jest nieprawdopodobne by ktoś go użył)

Wyzerowałem klucz we wrzuconym stringu…otrzymany od operatora klucz to 9368D8464A53D2FBF953CD9A597F9889

Nie wiem gdzie mam odpowiadać, w tym temacie, czy może w tym, który założyłeś…
Skopiowałem w całości ten YAML, bez zmian (oprócz podania klucza prawidłowej długości) i uruchomiłem kompilację najpierw w kontenerze ESPHome w ZimaOS.


Z takim ostrzeżeniem:

Total image size: 1610843 bytes (.bin may be padded larger)
Note: The reported total sizes may be smaller than those in the technical reference manual due to reserved memory and application configuration. The total flash size available for the application is not included by default, as it cannot be reliably determined due to the presence of other data like the bootloader, partition table, and application partition size.

Z identycznym skutkiem kompilacja zakończona w AddOd ESPHome na HAOS.