Licznik wody KAMSTRUP Multical21

Mogę pomóc, poproszę aktualny YAML i spróbuję otworzyć Twój przypadek. Mam bardzo podobną płytkę ESP32D0WDQ6 (revision 1) i CC1101 na zielonym, kwadratowym PCB i ESPHome w Linux.

cezary@Lenovo ~/esphome [SIGINT]> esptool.py --port /dev/ttyUSB0 --baud 115200 flash_id

esptool.py v2.8
Serial port /dev/ttyUSB0
Connecting........__
Detecting chip type... ESP32
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 08:3a:f2:b8:9b:9c
Uploading stub...
Running stub...
Stub running...
Manufacturer: 5e
Device: 4016
Detected flash size: 4MB
Hard resetting via RTS pin...
cezary@Lenovo ~/esphome> 

Dzięki za pomoc, załączam plik YAML.
multical21_v1.zip (993 bajty)
W kolejnej wersji zmieniłem pinout po sugestiach @szopen na:

wmbus:
  mosi_pin: GPIO23
  miso_pin: GPIO19
  clk_pin:  GPIO18
  cs_pin:   GPIO5
  gdo0_pin: GPIO4
  gdo2_pin: GPIO15
  all_drivers: True
  log_all: True
  sync_mode: True

ale nic się nie zmieniło.

Usiadłem do tego Twojego YAML i pierwsze co walidator wywala w web UI, to brak koniecznego dla wmbus komponentu time. Ok, dopisałem…


Ale co to? Dostałem plik, który niby się kompiluje z CC1101 pod esp-idf? Jakim cudem to skompilowałeś??? Może pomylił pliki… :thinking:


OK, zmieniam na

 framework:
    type: arduino

Zmieniłem też kolejność GPIO pod CC1101 w kodzie yaml, tak aby było czytelnie patrząc od góry na grafikę i było trudniej o pomyłkę podczas podłączania przewodów.

Na razie ignoruję ostrzeżenia o użyciu GPIO15 oraz GPIO5.

WARNING GPIO15 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
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

Leci kompilacja i nie wygląda to źle, jest 93% zajętości pamięci. Logger bez dopiski ustawienia poziomu czyli DEBUG (default).


Wgrywam po kablu przez ESP-Flasher:

Kończy się tym samym co u ciebie:

[21:59:01.462][D][mbus:035]: Received T1 A frame
[21:59:04.183][D][sntp:100]: Synchronized time: 2026-01-16 21:59:04
[21:59:32.790][I][safe_mode:042]: Boot seems successful; resetting boot loop counter
[21:59:32.800][D][esp32.preferences:149]: Writing 1 items: 0 cached, 1 written, 0 failed

C.D.N.

Jeśli się je użyje w kontekście magistrali SPI na jednym z 2 dostępnych dla usera kontrolerów SPI to jest wszystko OK (bo domyślne układy pinów SPI nie stwarzają konfliktów z bootloaderem).
Ostrzeżenia są zawsze generowane, gdy w konfiguracji jest użyty jakikolwiek pin bootstrapu niezależnie od kontekstu w jakim jest użyty.
Tak, że tutaj jest OK. (późniejsza analiza, gdy miałem więcej czasu wykazała, że obie konfiguracje pinów dla SPI były OK, jedynie omijałbym GPIO2 na tej płytce).

W esp-idf tego na 100% się nie da skompilować… bo komponent w tej wersji (v4) jest dedykowany dla arduino.

Usuniętym fragment:

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

O co w sumie prosił @szopen a mi wydawało się oczywiste, że od tego trzeba zacząć. Usunąć wszystko co nie potrzebne na czas testów.

Na razie bez zmian, cisza w odczytach:
Usuwam całą sekcję sensor i ponownie kompiluję. Dodaję szczegółowe logowanie VERBOSE i pomimo, że wszystko wygląda dobrze, to odczytów brak. W logach widać, że jest jakiś problem z CC1101.
ESP32 wchodzi w pętlę inicjalizacji CC1101, przełącza piny na SPI, a digitalRead IO 19 is not set as GPIO pojawia się w kółko aż do task_wdt na loopTask CPU1.
Wpadłem na pomysł żeby zmienić idąc za dokumentacją:
sync_mode (Optional ): Receive telegram in one loop. Defaults to False, ale to też nic nie zmienia.
Nie będę rozbierał swojego urządzenia, które jest na podobnych komponentach i działa. Podejrzewam na ten moment wadliwą płytkę z CC1101, którą mam jedynie dostępną do tych testów.
Przyjrzałem się tej zielonej płytce i znalazłem zworę lutowniczą. Usunąłem ją ale to tez nie pomogło. Poddaję się… prawdopodobnie te płytki z Ali z CC1101 są tragicznej jakości i trzeba mieć szczęście aby trafić działającą.

EDIT:
Postanowiłem na koniec spróbować ustawień takie jak mam na drugim swoim urządzeniu i o dziwo działa to bez problemu, na tym samym sprzęcie przy takiej konfiguracji:

# Enable logging
logger:

wmbus:
  mosi_pin: GPIO23   # OK
  clk_pin: GPIO18    # OK  
  miso_pin: GPIO19   # OK
  gdo2_pin: GPIO16   # ZMIENIONY z GPIO15
  gdo0_pin: GPIO4    # OK
  cs_pin: GPIO17     # ZMIENIONY z GPIO5
  
  frequency: 868.950
  sync_mode: false
  log_all: false
  all_drivers: false

sensor:
  - platform: wmbus
    meter_id: 0x214146dc
    type: izar
    sensors:
      - name: "Woda dom"
        field: "total"
        accuracy_decimals: 3
        unit_of_measurement: "m³"
        device_class: "water"
        state_class: "total_increasing"
        icon: "mdi:water"
        
      - name: "Woda dom - ostatni miesiąc"
        field: "last_month_total"
        accuracy_decimals: 3
        unit_of_measurement: "m³"
        device_class: "water"
        icon: "mdi:water"
        
      - name: "IZAR_dom - RSSI"
        field: "rssi"
        accuracy_decimals: 0
        unit_of_measurement: "dBm"
        device_class: "signal_strength"
        state_class: "measurement"
        entity_category: "diagnostic"

Wszystko niby szczególiki, ale widzę, że w takim razie ani GPIO15 ani GPIO5 tym razem nie były użyte jako piny CS SPI… czyli zupełnie nie zostało zrealizowane nic co sugerowałem… (wręcz jakieś opaczne ruchy…)
czasem nie mam już siły… gdo2 ani gdo0 nie należą do magistrali SPI i w dodatku muszą być dla nich użyte “normalne” piny (czyli takie bez żadnych ograniczeń co do funkcji)

1 polubienie

Zmieniłem również piny GPIO (zanim odkryłem zworkę na płytce), teraz włączyłem jedynie all_drivers: true, kompiluję na nowo i działa.

[01:13:10.145][C][sntp:059]: SNTP Time:
[01:13:10.145][C][sntp:062]:   Server 0: '0.pool.ntp.org'
[01:13:10.145][C][sntp:062]:   Server 1: '1.pool.ntp.org'
[01:13:10.157][C][sntp:062]:   Server 2: '2.pool.ntp.org'
[01:13:10.157][C][time:029]: Timezone: 'CET-1CEST,M3.5.0,M10.5.0/3'
[01:13:10.157][C][esphome.ota:092]: Over-The-Air updates:
[01:13:10.157][C][esphome.ota:092]:   Address: multical21.local:3232
[01:13:10.157][C][esphome.ota:092]:   Version: 2
[01:13:10.158][C][esphome.ota:099]:   Password configured
[01:13:10.158][C][safe_mode:018]: Safe Mode:
[01:13:10.158][C][safe_mode:018]:   Successful after: 60s
[01:13:10.158][C][safe_mode:018]:   Invoke after: 10 attempts
[01:13:10.158][C][safe_mode:018]:   Duration: 300s
[01:13:10.161][C][api:211]: Server:
[01:13:10.161][C][api:211]:   Address: multical21.local:6053
[01:13:10.161][C][api:211]:   Listen backlog: 4
[01:13:10.161][C][api:211]:   Max connections: 8
[01:13:10.169][C][api:218]:   Noise encryption: YES
[01:13:10.173][C][mdns:177]: mDNS:
[01:13:10.173][C][mdns:177]:   Hostname: multical21
[01:13:10.181][C][wmbus:413]: wM-Bus v4.2.1-1.17.1-b8f4a945:
[01:13:10.182][C][wmbus:431]:   Chip ID: 4C0436B267AC
[01:13:10.186][C][wmbus:433]:   CC1101 frequency: 868.950 MHz
[01:13:10.189][C][wmbus:434]:   CC1101 SPI bus:
[01:13:10.200][C][wmbus:438]:     MOSI Pin: GPIO23
[01:13:10.202][C][wmbus:439]:     MISO Pin: GPIO19
[01:13:10.204][C][wmbus:440]:     CLK Pin:  GPIO18
[01:13:10.210][C][wmbus:441]:     CS Pin:   GPIO17
[01:13:10.211][C][wmbus:442]:     GDO0 Pin: GPIO4
[01:13:10.220][C][wmbus:443]:     GDO2 Pin: GPIO16
[01:13:10.223][C][wmbus:449]:   Available drivers: wme5, weh_07, watertech, waterstarm, vario451mid, vario451, vario411, unknown, unismart, ultrimis, ultraheat, tsd2, topaseskr, supercom587, sontex868, sharky774, sharky, sensostar, rfmtx1, rfmamb, qwater, qualcosonic, qsmoke, qheat_55_us, qheat, qcaloric, q400, pollucomf, piigth, omnipower, nemo, munia, multical21, mkradio4a, mkradio4, mkradio3, minomess, microclima, lse_08, lse_07_17, lansenth, lansensm, lansenrp, lansenpu, lansendw, kampress, kamheat, izar, iwm
[01:13:10.276][C][wmbus:463]:   Meter:
[01:13:10.276][C][wmbus:464]:     ID: 557926108 [0x214146DC]
[01:13:10.281][C][wmbus:465]:     Type: izar
[01:13:10.283][C][wmbus:466]:     Key: ''
[01:13:10.285][C][wmbus:468]:     Field: 'last_month_total'
[01:13:10.294][C][wmbus:017]:      Name: 'Woda dom - ostatni miesiąc'
[01:13:10.294][C][wmbus:017]:        State Class: ''
[01:13:10.294][C][wmbus:017]:        Unit of Measurement: 'm³'
[01:13:10.294][C][wmbus:017]:        Accuracy Decimals: 3
[01:13:10.294][C][wmbus:027]:        Device Class: 'water'
[01:13:10.304][C][wmbus:031]:        Icon: 'mdi:water'
[01:13:10.305][C][wmbus:468]:     Field: 'rssi'
[01:13:10.306][C][wmbus:017]:      Name: 'IZAR_dom - RSSI'
[01:13:10.306][C][wmbus:017]:        State Class: 'measurement'
[01:13:10.306][C][wmbus:017]:        Unit of Measurement: 'dBm'
[01:13:10.306][C][wmbus:017]:        Accuracy Decimals: 0
[01:13:10.323][C][wmbus:027]:        Device Class: 'signal_strength'
[01:13:10.324][C][wmbus:468]:     Field: 'total'
[01:13:10.339][C][wmbus:017]:      Name: 'Woda dom'
[01:13:10.339][C][wmbus:017]:        State Class: 'total_increasing'
[01:13:10.339][C][wmbus:017]:        Unit of Measurement: 'm³'
[01:13:10.339][C][wmbus:017]:        Accuracy Decimals: 3
[01:13:10.345][C][wmbus:027]:        Device Class: 'water'
[01:13:10.354][C][wmbus:031]:        Icon: 'mdi:water'
[01:13:10.355][C][wmbus:463]:   Meter:
[01:13:10.364][C][wmbus:464]:     ID: 561908465 [0x217E0AF1]
[01:13:10.374][C][wmbus:465]:     Type: izar
[01:13:10.376][C][wmbus:466]:     Key: ''
[01:13:10.381][C][wmbus:468]:     Field: 'last_month_total'
[01:13:10.381][C][wmbus:017]:      Name: 'Woda ogród - ostatni miesiąc'
[01:13:10.381][C][wmbus:017]:        State Class: ''
[01:13:10.381][C][wmbus:017]:        Unit of Measurement: 'm³'
[01:13:10.381][C][wmbus:017]:        Accuracy Decimals: 3
[01:13:10.385][C][wmbus:027]:        Device Class: 'water'
[01:13:10.395][C][wmbus:031]:        Icon: 'mdi:water'
[01:13:10.396][C][wmbus:468]:     Field: 'rssi'
[01:13:10.397][C][wmbus:017]:      Name: 'Woda ogród - RSSI'
[01:13:10.397][C][wmbus:017]:        State Class: 'measurement'
[01:13:10.397][C][wmbus:017]:        Unit of Measurement: 'dBm'
[01:13:10.397][C][wmbus:017]:        Accuracy Decimals: 0
[01:13:10.416][C][wmbus:027]:        Device Class: 'signal_strength'
[01:13:10.425][C][wmbus:468]:     Field: 'total'
[01:13:10.427][C][wmbus:017]:      Name: 'Woda ogród'
[01:13:10.427][C][wmbus:017]:        State Class: 'total_increasing'
[01:13:10.427][C][wmbus:017]:        Unit of Measurement: 'm³'
[01:13:10.427][C][wmbus:017]:        Accuracy Decimals: 3
[01:13:10.454][C][wmbus:027]:        Device Class: 'water'
[01:13:10.454][C][wmbus:031]:        Icon: 'mdi:water'
[01:13:19.126][D][mbus:035]: Received T1 A frame
[01:13:19.133][I][wmbus:094]: Using selected driver izar (detected driver was izar)
[01:13:19.135][I][wmbus:100]: izar [0x214146dc] RSSI: -49dBm T: 2944304CDC464121CC01A2410800137512AAE0B93D8F0DEFC4B93E50E7DB46AB14F5EEFA7AB6056DC4BC (42) T1 A
[01:13:19.142][D][meters.cpp:1985]: (meter) created ESPHome izar 214146dc not-encrypted
[01:13:19.146][D][meters.cpp:909]: (meter) ESPHome(0) izar  handling telegram from 214146dc.M=SAP.V=00.T=07
[01:13:19.159][D][sensor:135]: 'Woda dom - ostatni miesiąc': Sending state 484.45700 m³ with 3 decimals of accuracy
[01:13:19.159][D][sensor:135]: 'IZAR_dom - RSSI': Sending state -49.00000 dBm with 0 decimals of accuracy
[01:13:19.161][D][sensor:135]: 'Woda dom': Sending state 488.25800 m³ with 3 decimals of accuracy
[01:13:28.032][D][mbus:035]: Received T1 A frame
[01:13:28.038][I][wmbus:094]: Using selected driver izar (detected driver was izar)
[01:13:28.039][I][wmbus:100]: izar [0x214146dc] RSSI: -49dBm T: 2944304CDC464121CC01A251080013750585A9121C5CD434DDBB3E47C892ED8AC72C35E378054EDB121E (42) T1 A
[01:13:28.048][D][meters.cpp:1985]: (meter) created ESPHome izar 214146dc not-encrypted
[01:13:28.057][D][meters.cpp:909]: (meter) ESPHome(0) izar  handling telegram from 214146dc.M=SAP.V=00.T=07
[01:13:28.062][D][sensor:135]: 'Woda dom - ostatni miesiąc': Sending state 484.45700 m³ with 3 decimals of accuracy
[01:13:28.063][D][sensor:135]: 'IZAR_dom - RSSI': Sending state -49.00000 dBm with 0 decimals of accuracy
[01:13:28.067][D][sensor:135]: 'Woda dom': Sending state 488.25800 m³ with 3 decimals of accuracy
[01:13:28.071][I][safe_mode:042]: Boot seems successful; resetting boot loop counter
[01:13:28.079][D][esp32.preferences:149]: Writing 1 items: 0 cached, 1 written, 0 failed

Jestem zbyt zmęczony aby trzeźwo ocenić przyczynę, ale obstawiam na problemy z płytką. Dawno się tyle nie namordowałem, w sumie mogłem zacząć od inspekcji pod mikroskopem. Miałem dawno temu kupione dwie szt z różnych źródeł na Ali. Jak się okazuje, za pierwszym razem trafiłem sprawną i działała od początku. Ta druga zrobiła mi za to piątkowy wieczór. Cóż, koledze @Sebastian2 organizowała chyba cały tydzień :joy:.
Proponuję zakup czegoś lepiej wykonanego na SX1276.

Dziękuję za pomoc…@angler @szopen. Sprawdziłem po d mikroskopem płytkę i nic podejrzanego nie widać. Zdobyłem w międzyczasie drugą i pozostaje mi tylko przelutować kabelki i sprawdzić jak wtedy będzie się cały układ zachowywać. Robiłem równolegle testy i dziwnym trafem raz udał mi wyłapać dwie ramki dla multical21…ale nie powtórzyło się to już ani razu…układ C1101 za każdym razem zachowywał się inaczej…tak jakby nie było stabilności. Czas na testy z drugą płytką i jeśli to nie zadziała to zgodnie z radą @angler “proponuję zakup czegoś lepiej wykonanego na SX1276”

Zawsze ostatecznie pozostanie kupienie i sprawdzenie gotowego rozwiązania jakie oferuje @Mariusz_Woszczyński

Są i inni sprzedawcy, który oferują swoje rozwiązania - mam na myśli

(kim jest sprzedający masz w opisie)

Niedziela z lutownicą w rękach - nowa płytka przelutowana i mamy krok do przodu. W logach zatrzymuję się na:

INFO ESPHome 2025.12.6
INFO Reading configuration multical21.yaml...
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 Starting log output from 192.168.0.120 using esphome API
INFO Successfully resolved esp32-wmbus-sniffer @ 192.168.0.120 in 0.000s
WARNING Can't connect to ESPHome API for esp32-wmbus-sniffer @ 192.168.0.120: Error connecting to [AddrInfo(family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, proto=6, sockaddr=IPv4Sockaddr(address='192.168.0.120', port=6053))]: [Errno 113] Connect call failed ('192.168.0.120', 6053) (SocketAPIError)
INFO Trying to connect to esp32-wmbus-sniffer @ 192.168.0.120 in the background
INFO Successfully connected to esp32-wmbus-sniffer @ 192.168.0.120 in 0.121s
INFO Successful handshake with esp32-wmbus-sniffer @ 192.168.0.120 in 0.268s
[17:03:03.517][I][app:194]: ESPHome version 2025.12.6 compiled on Jan 18 2026, 15:41:44
[17:03:03.519][C][logger:261]: Logger:
[17:03:03.519][C][logger:261]:   Max Level: DEBUG
[17:03:03.519][C][logger:261]:   Initial Level: DEBUG
[17:03:03.520][C][logger:267]:   Log Baud Rate: 115200
[17:03:03.520][C][logger:267]:   Hardware UART: UART0
[17:03:03.520][C][logger:274]:   Task Log Buffer Size: 768
[17:03:03.520][C][wifi:1132]: WiFi:
[17:03:03.520][C][wifi:1132]:   Connected: YES
[17:03:03.520][C][wifi:897]:   Local MAC: 28:05:A5:6F:F2:F4
[17:03:03.520][C][wifi:904]:   IP Address: 192.168.0.120
[17:03:03.520][C][wifi:908]:   SSID: 'box4net'[redacted]
[17:03:03.520][C][wifi:908]:   BSSID: 48:A9:8A:F5:D0:27[redacted]
[17:03:03.520][C][wifi:908]:   Hostname: 'esp32-wmbus-sniffer'
[17:03:03.520][C][wifi:908]:   Signal strength: -49 dB ▂▄▆█
[17:03:03.520][C][wifi:908]:   Channel: 6
[17:03:03.520][C][wifi:908]:   Subnet: 255.255.255.0
[17:03:03.520][C][wifi:908]:   Gateway: 192.168.0.1
[17:03:03.520][C][wifi:908]:   DNS1: 192.168.0.1
[17:03:03.520][C][wifi:908]:   DNS2: 0.0.0.0
[17:03:03.521][C][sntp:059]: SNTP Time:
[17:03:03.533][C][sntp:062]:   Server 0: '0.pool.ntp.org'
[17:03:03.535][C][sntp:062]:   Server 1: '1.pool.ntp.org'
[17:03:03.539][C][sntp:062]:   Server 2: '2.pool.ntp.org'
[17:03:03.559][C][time:029]: Timezone: 'CET-1CEST,M3.5.0,M10.5.0/3'
[17:03:03.559][C][esphome.ota:092]: Over-The-Air updates:
[17:03:03.559][C][esphome.ota:092]:   Address: esp32-wmbus-sniffer.local:3232
[17:03:03.559][C][esphome.ota:092]:   Version: 2
[17:03:03.559][C][esphome.ota:099]:   Password configured
[17:03:03.559][C][safe_mode:018]: Safe Mode:
[17:03:03.559][C][safe_mode:018]:   Successful after: 60s
[17:03:03.559][C][safe_mode:018]:   Invoke after: 10 attempts
[17:03:03.559][C][safe_mode:018]:   Duration: 300s
[17:03:03.597][C][api:211]: Server:
[17:03:03.597][C][api:211]:   Address: esp32-wmbus-sniffer.local:6053
[17:03:03.597][C][api:211]:   Listen backlog: 4
[17:03:03.597][C][api:211]:   Max connections: 8
[17:03:03.597][C][api:218]:   Noise encryption: YES
[17:03:03.597][C][mdns:177]: mDNS:
[17:03:03.597][C][mdns:177]:   Hostname: esp32-wmbus-sniffer
[17:03:03.597][C][wmbus:413]: wM-Bus v4.2.1-1.17.1-b8f4a945:
[17:03:03.597][C][wmbus:431]:   Chip ID: F4F26FA50528
[17:03:03.617][C][wmbus:433]:   CC1101 frequency: 868.950 MHz
[17:03:03.617][C][wmbus:434]:   CC1101 SPI bus:
[17:03:03.617][C][wmbus:438]:     MOSI Pin: GPIO23
[17:03:03.617][C][wmbus:439]:     MISO Pin: GPIO19
[17:03:03.617][C][wmbus:440]:     CLK Pin:  GPIO18
[17:03:03.617][C][wmbus:441]:     CS Pin:   GPIO5
[17:03:03.627][C][wmbus:442]:     GDO0 Pin: GPIO4
[17:03:03.631][C][wmbus:443]:     GDO2 Pin: GPIO22
[17:03:03.632][C][wmbus:449]:   Available drivers: wme5, weh_07, watertech, waterstarm, vario451mid, vario451, vario411, unknown, unismart, ultrimis, ultraheat, tsd2, topaseskr, supercom587, sontex868, sharky774, sharky, sensostar, rfmtx1, rfmamb, qwater, qualcosonic, qsmoke, qheat_55_us, qheat, qcaloric, q400, pollucomf, piigth, omnipower, nemo, munia, multical21, mkradio4a, mkradio4, mkradio3, minomess, microclima, lse_08, lse_07_17, lansenth, lansensm, lansenrp, lansenpu, lansendw, kampress, kamheat, izar, iwm 
[17:03:04.794][D][sntp:100]: Synchronized time: 2026-01-18 17:03:04
[17:03:08.712][D][api:136]: Accept 192.168.0.254
[17:03:08.917][D][api.connection:1398]: Home Assistant 2026.1.1 (192.168.0.254) connected
[17:03:11.067][D][mbus:035]: Received T1 A frame
[17:03:31.548][I][safe_mode:042]: Boot seems successful; resetting boot loop counter
[17:03:31.548][D][esp32.preferences:149]: Writing 1 items: 0 cached, 1 written, 0 failed ```

Jedna ramka złapana nic dalej.
Config jaki został wgrany wmbus_sniffer.yaml (898 bajtów)

A jest zużycie wody? (kran odkręcony)
Generalnie to jest niedziela, a mnóstwo nakładek nie nadaje w weekendy wcale, ani w dni robocze poza godzinami pracy inkasentów, więc jeśli to była jakaś faktyczna ramka to zostaw do jutra. No chyba, że masz 100% pewności, że masz w zasięgu jakiekolwiek liczniki, które nadają systematycznie (czyli powiedzmy raz na 5 minut) bez względu na dzień i porę.

Teraz jest pewność, że przynajmniej radio CC1101 działa.
Poczekaj na kolejne ramki, możliwe, że do poniedziałku i wówczas dopisz sensor ze swoim kluczem w konfiguracji.

Mamy przełom…ale niestabilnie działa…o to co udało mi się złapać z eteru:

[20:42:06.062][W][component:333]: api set Warning flag: unspecified
[20:42:27.373][D][mbus:024]: Received C1 B frame
[20:42:27.387][I][wmbus:100]: multical21 [0x57199578] RSSI: -85dBm T: 23442D2C789519571B168D20A593A5D0205657E8E01FAD73E0ECA57BB7D24ED2A91844C6 (36) C1 B

ale później co chwilę mam:

[20:44:20.082][W][component:333]: api set Warning flag: unspecified
[20:52:49.005]\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff1 B frame
[20:52:49.009][D][crc:035]:     calculated: 0xF524, read: 0xA90C  !!!
[20:56:52.376]\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff168.0.254
[20:56:52.379][W][component:373]: api cleared Warning flag
[20:57:23.424]\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff 192.168.0.254 (192.168.0.254): Reading failed CONNECTION_CLOSED errno=128
[20:57:23.428][W][component:333]: api set Warning flag: unspecified
[20:57:28.084][D][mbus:035]: Received T1 A frame
[20:58:12.404]\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff1 B frame
[20:58:12.408][D][crc:035]:     calculated: 0x1D66, read: 0x1C66  !!!
[20:58:44.315]\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff168.0.254
[20:58:44.317][W][component:373]: api cleared Warning flag
[20:59:14.342][W][api.connection:1978]: 192.168.0.254 (192.168.0.254): Reading failed CONNECTION_CLOSED errno=128
[20:59:14.347][W][component:333]: api set Warning flag: unspecified
[21:00:06.321][D][mbus:024]: Received C1 B frame
[21:00:06.326][D][crc:035]:     calculated: 0x8585, read: 0xD0BF  !!!
[21:00:37.574]\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff168.0.254
[21:00:37.578][W][component:373]: api cleared Warning flag
[21:00:37.834][D][api.connection:1398]: Home Assistant 2026.1.1 (192.168.0.254) connected
[21:01:09.013][W][api.connection:1978]: Home Assistant 2026.1.1 (192.168.0.254): Reading failed CONNECTION_CLOSED errno=128
[21:01:09.018][W][component:333]: api set Warning flag: unspecified
[21:02:35.844][D][api:136]: Accept 192.168.0.254
[21:02:35.848][W][component:373]: api cleared Warning flag
[21:02:36.123][D][api.connection:1398]: Home Assistant 2026.1.1 (192.168.0.254) connected
[21:03:37.121]\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffHome Assistant 2026.1.1 (192.168.0.254) disconnected
[21:03:37.132][W][component:333]: api set Warning flag: unspecified
[21:04:01.669]\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff168.0.254
[21:04:01.672][W][component:373]: api cleared Warning flag
[21:04:02.218][D][api.connection:1398]: Home Assistant 2026.1.1 (192.168.0.254) connected
[21:05:12.926][D][api.connection:264]: Home Assistant 2026.1.1 (192.168.0.254) disconnected
[21:05:12.937][W][api.connection:1978]: Home Assistant 2026.1.1 (192.168.0.254): Reading failed CONNECTION_CLOSED errno=128
[21:05:12.941][W][component:333]: api set Warning flag: unspecified
[21:05:25.676]\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff168.0.254
[21:05:25.678][W][component:373]: api cleared Warning flag
[21:05:55.740][W][api.connection:1978]: 192.168.0.254 (192.168.0.254): Reading failed CONNECTION_CLOSED errno=128
[21:05:55.744][W][component:333]: api set Warning flag: unspecified
[21:06:30.040][D][api:136]: Accept 192.168.0.254
[21:06:30.043][W][component:373]: api cleared Warning flag

RSSI: -85dBm z tego licznika.
Czy to oznacza za słaby sygnał i dlatego CRC się nie zgadza?
To dlatego mam co chwilę połączenie z HA:

[21:00:37.834][D][api.connection:1398]: Home Assistant 2026.1.1 (192.168.0.254) connected
[21:01:09.013][W][api.connection:1978]: Home Assistant 2026.1.1 (192.168.0.254): Reading failed CONNECTION_CLOSED errno=128
[21:01:09.018][W][component:333]: api set Warning flag: unspecified
[21:02:35.844][D][api:136]: Accept 192.168.0.254
[21:02:35.848][W][component:373]: api cleared Warning flag
[21:02:36.123][D][api.connection:1398]: Home Assistant 2026.1.1 (192.168.0.254) connected
[21:03:37.121]\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffHome Assistant 2026.1.1 (192.168.0.254) disconnected
[21:03:37.132][W][component:333]: api set Warning flag: unspecified
[21:04:01.669]\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff168.0.254
[21:04:01.672][W][component:373]: api cleared Warning flag

Teraz czas na zmianę all_drivers: false i dopisanie sensora po swój multical21 z kluczem.

W tych logach to ja widzę problemy komunikacji sprzętu ESP z HA, może jesteś na granicy zasięgu WiFi, zamontuj w takim miejscu aby komunikacja z HA była stabilna.

Jeśli to nie problem zasięgu WiFi, to jest to prawdopodobnie problem z zasilaniem.

Oto co moim zdaniem musisz poprawić, żeby to ustabilizować:

1. Rozjechana częstotliwość (Błędy CRC)

Mimo sygnału -85dBm (który jest całkiem ok), masz błędy CRC. To klasyczny objaw tzw. płynącego kwarcu w tanich modułach CC1101.

  • Rozwiązanie: Musisz dopasować częstotliwość parametrem frequency_offset.
  • Zacznij od 4, potem testuj np. 10, -10, 15, -15. Szukaj momentu, w którym błędy CRC znikną, a ramki będą wpadać regularnie.

2. Zasilanie i krzaki w logach

Te znaki \xff\xff\xff oraz rozłączanie API (CONNECTION_CLOSED) to niemal na pewno problemy z prądem. ESP32 przy włączonym Wi-Fi i radiu ma spore skoki poboru mocy.

  • Rozwiązanie: * Podłącz ESP do mocnej ładowarki (min. 2A), nie z portu USB komputera.
    • Jeśli masz pod ręką, przylutuj kondensator (np. 470uF) między piny 3.3V i GND przy samym module CC1101.

3. Optymalizacja YAML

Twój procesor prawdopodobnie nie wyrabia z mieleniem wszystkich sterowników naraz, co też może powodować restarty API. Skoro znasz już ID swojego licznika (0x57199578), uprość konfig:

  level: INFO # Zmień z DEBUG na INFO, żeby odciążyć procesor

wmbus:
  mosi_pin: GPIO23
  miso_pin: GPIO19
  clk_pin:  GPIO18
  cs_pin:   GPIO5
  gdo0_pin: GPIO4
  gdo2_pin: GPIO22
  all_drivers: False  # wyłącz sprawdzanie wszystkiego tak jak pisał angler.
  frequency_offset: 4 # Tu szukaj stabilności (zacznij od 4)
  mode: C1

sensor:
  - platform: wmbus
    meter_id: 0x57199578
    type: multical21
    key: "9368D8464A53D2FBF953CD9A597F9889"
    sensors:
      - name: "Licznik Wody"
        field: "total"

Sprawdź ten kod no pisałem na szybko.

Jak coś nadal jest źle to daj znać.

Kolego @Allon - nie musisz wklejać na forum tego co tego co tam twój model AI wypluwa. Ale możesz nauczyć kolegę @Sebastian2 jak dobrze się posługiwać tym narzędziem, bo widzę, że masz już z tym doświadczenie. Jak zadawać pytania, budować właściwy kontekst.

1 polubienie

Może tez nie pomaga ustawiona opcja wifi fast_connect: true w kodzie YAML:

1 polubienie