Komponent wM-Bus do ESPHome (SzczepanLeon) wersja 4.x - wątek ogólny

Odebrałeś jakiś telegram, tylko go nie widać (następna linijka?)
Może za niski poziom logowania, ale pamiętam, że wskutek zmian w wersjach frameworka arduino używanego przez esphome były problemy z wysokimi poziomami logowania w v4…

Z tego co pamiętam na 100% nie możesz mieć zdefiniowanych sensorów (być może wtedy nie widać właśnie treści telegramów, o ile nie masz właściwych id liczników nie możesz definiować sensorów).
Pamiętaj, że nakładki mogą nadawać ekstremalnie rzadko lub wcale poza godzinami pracy inkasentów (jeśli dostawca takie właśnie używa, a są one raczej większością tego co jest w użyciu).

nasłuch robiłem z sensorami zahaszowanymi , więc chyba nie są brane te linijki pod uwagę.
a nasłuch robiłem tylko z tym

Jak prawidłowo zamieszczać YAML, inny kod lub logi w postach na forum
wstaw całą konfigurację a nie kawałek
mało co pamiętam, ale dokumentacja jest raczej OK jeśli chodzi o v4

w sumie dziwne bo podobno we frameworku arduino nie sposób skompilować v4 ze wszystkimi driverami (nie mieści się we flashu)

przed chwilą to wrzuciłem:

esphome:
  name: water-meter
  friendly_name: water meter

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "I50izzxOxnVwKGvReQclm8sZVwGYmPSC+pFi+Zl3oW4="

ota:
  - platform: esphome
    password: "8f19cd0d7454f4ff81328d779c748eb0"

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Water-Meter Fallback Hotspot"
    password: "TkJJASEEPHZa"

captive_portal:
  
time:
  - platform: sntp
    id: time_sntp

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

wmbus:
  mosi_pin: GPIO23   # zielony
  miso_pin: GPIO19   # fiolet
  clk_pin:  GPIO18   # niebieski
  cs_pin:   GPIO15   # czarny
  gdo0_pin: GPIO4    # biały
  gdo2_pin: GPIO27   # szary


  frequency: 868.950
  all_drivers: True
  sync_mode: False
  log_all: True

#sensor:
#  - platform: wmbus
#    type: izar         # Większość nowych apatorów w pl to defacto Izar
#  - platform: wmbus
#    type: apator162    # Zostawiamy dla pewności

    
# add driver to compile list (will be available for autodetect), don't create sensor
#  - platform: wmbus
#    type: itron

# add sensor with defined type (driver will be also added to compile list)
#  - platform: wmbus
#    meter_id: 0x03161991
#    type: apator162
#    key: "00000000000000000000000000000000"
#    sensors:
#      - name: "licznik zimnej wody RSSi"
#        field: "rssi"
#        accuracy_decimals: 0
#        unit_of_measurement: "dBm"
#        device_class: "signal_strength"
#        state_class: "measurement"
#        entity_category: "diagnostic"
#      - name: "licznik zimnej wody"
#        field: "total"
#        accuracy_decimals: 3
#        unit_of_measurement: "m³"
#        device_class: "water"
#        state_class: "total_increasing"
#        icon: "mdi:water"
        
#  - platform: wmbus
#    meter_id: 70667543
#    type: apator162
#    key: "00000000000000000000000000000000"
#    sensors:
#      - name: "licznik goracej wody wody RSSi"
#        field: "rssi"
#        accuracy_decimals: 0
#        unit_of_measurement: "dBm"
#        device_class: "signal_strength"
#        state_class: "measurement"
#        entity_category: "diagnostic"
#      - name: "licznik goracej wody"
#        field: "total"
#        accuracy_decimals: 3
#        unit_of_measurement: "m³"
#        device_class: "water"
#        state_class: "total_increasing"
#        icon: "mdi:water"

przestawiłem kompa by mi się nie usypiał i ustawię od rana na nasłuch. Przed południem powinien coś wyłapać.

Uruchamiam podobny zestaw i wczoraj spotkałem się z taką sytuacją, że już po 18 otrzymywałem informację o obiorze ramki T1 bez surowych danych. Dzisiaj na rano (po 7) zalogowałem się i sypało mi ramkami z całej klatki. Z pewnością administrator ustawił zakres godzin w których one są nadawane w celu wydłużenia czasu życia baterii.

1 polubienie

No niestety co wrzuciłem jest wyżej, a wypluło niewiele:

INFO ESPHome 2026.1.2
INFO Reading configuration /config/esphome/water-meter.yaml...
INFO Detected timezone 'Europe/Warsaw'
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
INFO Starting log output from water-meter.local using esphome API
INFO Successfully resolved water-meter.local in 0.235s
INFO Successfully connected to water-meter @ 192.168.0.76 in 0.006s
INFO Successful handshake with water-meter @ 192.168.0.76 in 0.097s
[06:04:34.549][I][app:206]: ESPHome version 2026.1.2 compiled on 2026-01-28 20:18:42 +0100
[06:04:34.549][I][app:213]: ESP32 Chip: ESP32 r3.1, 2 core(s)
[06:04:34.549][W][app:222]: Set minimum_chip_revision: "3.1" to reduce binary size
[06:04:34.550][C][logger:316]: Logger:
[06:04:34.550][C][logger:316]:   Max Level: DEBUG
[06:04:34.550][C][logger:316]:   Initial Level: DEBUG
[06:04:34.550][C][logger:322]:   Log Baud Rate: 115200
[06:04:34.550][C][logger:322]:   Hardware UART: UART0
[06:04:34.550][C][logger:332]:   Task Log Buffer Size: 768 bytes
[06:04:34.561][C][captive_portal:128]: Captive Portal:
[06:04:34.575][C][wifi:1304]: WiFi:
[06:04:34.575][C][wifi:1304]:   Local MAC: F0:24:F9:59:BE:EC
[06:04:34.575][C][wifi:1304]:   Connected: YES
[06:04:34.576][C][wifi:1037]:   IP Address: 192.168.0.76
[06:04:34.583][C][wifi:1048]:   SSID: [redacted]
[06:04:34.583][C][wifi:1048]:   BSSID: [redacted]
[06:04:34.583][C][wifi:1048]:   Hostname: 'water-meter'
[06:04:34.583][C][wifi:1048]:   Signal strength: -69 dB ▂▄▆█
[06:04:34.583][C][wifi:1048]:   Channel: 1
[06:04:34.583][C][wifi:1048]:   Subnet: 255.255.255.0
[06:04:34.583][C][wifi:1048]:   Gateway: 192.168.0.1
[06:04:34.583][C][wifi:1048]:   DNS1: 192.168.0.1
[06:04:34.583][C][wifi:1048]:   DNS2: 0.0.0.0
[06:04:34.592][C][sntp:059]: SNTP Time:
[06:04:34.592][C][sntp:062]:   Server 0: '0.pool.ntp.org'
[06:04:34.598][C][sntp:062]:   Server 1: '1.pool.ntp.org'
[06:04:34.610][C][sntp:062]:   Server 2: '2.pool.ntp.org'
[06:04:34.610][C][time:028]: Timezone: 'CET-1CEST,M3.5.0,M10.5.0/3'
[06:04:34.620][C][esphome.ota:075]: Over-The-Air updates:
[06:04:34.620][C][esphome.ota:075]:   Address: water-meter.local:3232
[06:04:34.620][C][esphome.ota:075]:   Version: 2
[06:04:34.630][C][esphome.ota:082]:   Password configured
[06:04:34.630][C][safe_mode:021]: Safe Mode:
[06:04:34.630][C][safe_mode:021]:   Successful after: 60s
[06:04:34.630][C][safe_mode:021]:   Invoke after: 10 attempts
[06:04:34.630][C][safe_mode:021]:   Duration: 300s
[06:04:34.637][C][safe_mode:038]:   Bootloader rollback: support unknown
[06:04:34.652][C][web_server.ota:231]: Web Server OTA
[06:04:34.653][C][api:221]: Server:
[06:04:34.653][C][api:221]:   Address: water-meter.local:6053
[06:04:34.653][C][api:221]:   Listen backlog: 4
[06:04:34.653][C][api:221]:   Max connections: 8
[06:04:34.663][C][api:228]:   Noise encryption: YES
[06:04:34.669][C][mdns:177]: mDNS:
[06:04:34.669][C][mdns:177]:   Hostname: water-meter
[06:04:34.670][C][wmbus:413]: wM-Bus v4.2.1-1.17.1-b8f4a945:
[06:04:34.675][C][wmbus:431]:   Chip ID: ECBE59F924F0
[06:04:34.679][C][wmbus:433]:   CC1101 frequency: 868.950 MHz
[06:04:34.680][C][wmbus:434]:   CC1101 SPI bus:
[06:04:34.685][C][wmbus:152]:     MOSI Pin: GPIO23
[06:04:34.685][C][wmbus:152]:     MISO Pin: GPIO19
[06:04:34.689][C][wmbus:152]:     CLK Pin:  GPIO18
[06:04:34.694][C][wmbus:152]:     CS Pin:   GPIO15
[06:04:34.699][C][wmbus:152]:     GDO0 Pin: GPIO4
[06:04:34.699][C][wmbus:152]:     GDO2 Pin: GPIO27
[06:04:34.710][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
[06:13:58.229][D][sntp:100]: Synchronized time: 2026-01-29 06:13:58
[06:28:58.275][D][sntp:100]: Synchronized time: 2026-01-29 06:28:58
[06:43:58.321][D][sntp:100]: Synchronized time: 2026-01-29 06:43:58
[06:58:58.573][D][sntp:100]: Synchronized time: 2026-01-29 06:58:58
[07:13:58.984][D][sntp:100]: Synchronized time: 2026-01-29 07:13:58
[07:28:59.031][D][sntp:100]: Synchronized time: 2026-01-29 07:28:59
[07:33:49.576][D][mbus:035]: Received T1 A frame
[07:43:59.087][D][sntp:100]: Synchronized time: 2026-01-29 07:43:59
[07:58:59.132][D][sntp:100]: Synchronized time: 2026-01-29 07:58:59
[08:13:59.164][D][sntp:100]: Synchronized time: 2026-01-29 08:13:59
[08:29:29.237][D][sntp:100]: Synchronized time: 2026-01-29 08:29:29
[08:44:29.283][D][sntp:100]: Synchronized time: 2026-01-29 08:44:29
[08:59:29.326][D][sntp:100]: Synchronized time: 2026-01-29 08:59:29
[09:14:29.584][D][sntp:100]: Synchronized time: 2026-01-29 09:14:29
[09:29:29.645][D][sntp:100]: Synchronized time: 2026-01-29 09:29:29
[09:44:29.696][D][sntp:100]: Synchronized time: 2026-01-29 09:44:29
[09:59:29.831][D][sntp:100]: Synchronized time: 2026-01-29 09:59:29
[10:14:29.882][D][sntp:100]: Synchronized time: 2026-01-29 10:14:29
[10:29:29.932][D][sntp:100]: Synchronized time: 2026-01-29 10:29:29
[10:45:45.015][D][sntp:100]: Synchronized time: 2026-01-29 10:45:44
[11:00:45.070][D][sntp:100]: Synchronized time: 2026-01-29 11:00:45
[11:15:45.145][D][sntp:100]: Synchronized time: 2026-01-29 11:15:45
[11:30:45.190][D][sntp:100]: Synchronized time: 2026-01-29 11:30:45
[11:46:15.397][D][sntp:100]: Synchronized time: 2026-01-29 11:46:15
[12:01:15.449][D][sntp:100]: Synchronized time: 2026-01-29 12:01:15
[12:17:30.523][D][sntp:100]: Synchronized time: 2026-01-29 12:17:30
[12:32:30.575][D][sntp:100]: Synchronized time: 2026-01-29 12:32:30
[12:47:30.631][D][sntp:100]: Synchronized time: 2026-01-29 12:47:30
[13:02:30.674][D][sntp:100]: Synchronized time: 2026-01-29 13:02:30
[13:17:30.721][D][sntp:100]: Synchronized time: 2026-01-29 13:17:30
[13:32:30.951][D][sntp:100]: Synchronized time: 2026-01-29 13:32:30
[13:47:31.003][D][sntp:100]: Synchronized time: 2026-01-29 13:47:30
[14:02:31.150][D][sntp:100]: Synchronized time: 2026-01-29 14:02:31
[14:17:31.203][D][sntp:100]: Synchronized time: 2026-01-29 14:17:31
[14:32:31.239][D][sntp:100]: Synchronized time: 2026-01-29 14:32:31
[14:47:31.282][D][sntp:100]: Synchronized time: 2026-01-29 14:47:31
[15:02:31.332][D][sntp:100]: Synchronized time: 2026-01-29 15:02:31
[15:17:31.369][D][sntp:100]: Synchronized time: 2026-01-29 15:17:31
[15:32:31.416][D][sntp:100]: Synchronized time: 2026-01-29 15:32:31
[15:47:31.469][D][sntp:100]: Synchronized time: 2026-01-29 15:47:31
[16:02:31.529][D][sntp:100]: Synchronized time: 2026-01-29 16:02:31

a w bloku 5-klatkowym powinno być więcej.
co jeszcze można zrobić?

A skompiluj ten wsad w starej wersji ESPHome (zobacz posty wyżej)

Możliw, że płytka ma wadę. Tak jak miałem to ja i parę innych osób w przypadku taniej PCB z PRC.

Potwierdzam. U mnie oba apatory162 mają id z naklejki. Numery wyglądają jak dziesiętne (same cyfry) ale jest to HEX. W moim przypadku musiałem dodać 0x0 z przodu. Prawdopodobnie po 0x musi być 8 znaków. Jeśli ID jest krótsze, to trzeba dodać z przodu zera.

@Piotr_zet1 Dzięki wielkie za konfigurację na esp-idf. Śmiga aż miło…

bylo juz tyle razy - nie trzeba zerami dobijac

# ESPHome 2025.12.7
esphome:
  name: test
  friendly_name: Test

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "xxx"

ota:
  - platform: esphome
    password: "xxx"

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Test Fallback Hotspot"
    password: "klHMKzhph1ok"

captive_portal:

time:
    platform: sntp
    id: time_sntp

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

wmbus:
  mosi_pin: GPIO23
  clk_pin: GPIO18
  miso_pin: GPIO19
  cs_pin: GPIO15
  gdo0_pin: GPIO4
  gdo2_pin: GPIO27

  frequency: 868.950

  all_drivers: False
  sync_mode: True
  log_all: True
  
sensor:
# add driver to compile list (will be available for autodetect), don't create sensor
  - platform: wmbus
    type: iwmtx5

  - platform: wmbus
    type: hydrocalm3

  - platform: wmbus
    type: apator162

  - platform: wmbus
    type: izar

Mam podobną sytuację. Przed wczoraj uruchomiłem w bólach zestaw ESP32-S3-devkit-N8R8 od Waveshare (z *MB flash) z CC1101. Ponieważ po kompilacji układ wpadał w bootloop zmieniłem źródło na: source: github://vitkuv/esphome-wmbus@version_4 i układ odczytywał czujniki ciepła BMETERS (ciepła i nakładki na liczniki wody) w moim bloku. Jednak działał niestabilnie tj potrafił zaliczyć resety.
Wczoraj po otrzymaniu płytki ESP32-devkit z Espressifa (czyli taki jaki jak w linku youtubowym który przytoczyłeś) i ślepym śledzeniu jego kroków skomplikowałem całość. Układ ruszył ale pokazywał mi tylko że odebrał ramkę T1 ale nie pokazywał surowej ramki. W tamtym momencie nie miałem skomplikowanej opcji, która analizowała ramkę. Jednak obok leżał pierwszy zestaw który oprócz wyświetlania T1 received pokazywał zawartość ramki która. po wklejeniu na https://wmbusmeters.org/ pokazywała mi rzeczywiste wartości.
Wspomnieć należy że ESP Home zainstalowałem w ubiegły piątek więc z automatu miałem najnowszą wersję. Zwolniłem tempo odtwarzania na youtube i dostrzegłem że ten gość kompilował na wersji 2025.12.2. Na stronie GitHub - khenderick/esphome-legacy-addons: ESPHome addons from previous versions. Just in case something isn't working with the new version znalazłem starsze wersje lecz nie nie 2025.12.2 a 2025.12.7. Dodałem ten link jako repozytorium, zainstalowałem poprzednią wersję ESP Home i skompilowałem kod ponownie dla płytki ESP32-devkit od Esprefifa (z 4MB flash) ale w źródłach podając link do SzczepanLeon v4 (tak jak na yooutubie). Ponieważ wczoraj było już po 22 urządzenie nie wysyłały ramek. Obudziłem się dziś po 6 i skompilowany wczoraj kod działa i wysyła ramki i pokazuje surowe dane bez problemu.
Jutro będę w drugim miejscu i sprawdzę odbiór danych z nakładek Apatora 16-2.
Obecny wersja programu to dla mnie skaner tego co mogę odczytać w mieszkaniu oraz w domu z nakładek Apator. Obawiałem się że administrator włączył szyfrowanie ramek i będę musiał go poprosić o klucz. Na szczęście poszedł po rozum do głowy i zostawił domyślną wartość (wg producenta nakładek BMETERS). Ma to sens bo za nakładki zapłaciłem ja jako właściciel mieszkania. Ok - obecnie zdalnie mogę odczytać liczniki wody i ciepła sąsiadów ale również mogę otworzyć szacht i odczytać ich liczniki wody tradycyjnie.
Odczyt wody stał się o tyle ważny w tym roku ponieważ od 1.01 opłata za wywóz śmieci w tym mieście jest uzależniona od ilości zużytych m3 wody (ciepła + zimna).

2 polubienia

OFF TOPIC:

Co? Jaki to ma sens?

Jak to mówią - na władzę nie poradzę. W założeniu miało to wyeliminować osoby które są w domu, produkują śmieci ale nie są zgłoszone do wywozu. Było mnóstwo kontrowersji wokół tego tematu ale temat i tak został klepnięty przez radnych i radę miasta.
Dodatkowo poróżniono ludzi na tych mieszkających w blokach i ci płacą za wywóz śmieci w zależności od ilości zużytej wody. Aktualnie jest to 12zł brutto za m3. Natomiast ludzie mieszkający w domku jednorodzinnym mają zryczałtowaną opłatę, jak dotychczas, 38zł brutto od osoby.
Najlepsze jest to, że w pierwszym półroczu 2026 bierze się zużycie wody za pierwsze półrocze 2025r. Więc jak ktoś w tym czasie wynajmował komuś mieszkanie kto zużywał duże ilości wody to obecnie płaci więcej za wywóz śmieci.
Polecam przejrzeć artykuły na tej stronie poświęcone temu tematowi.

u mnie tez ciągną za smieci według zuzycia wody.
tym sposobem sąsiad zbieracz wystawia przesortowany chłam w ilościach 3-6 240litrowych worów i płaci 1/4 tego co ja,
a ja mam rodzinę 4 osobową, a że mam kompostownik to czarnego/brązowego mam worek 40l tygodniowo i płacę 4 * tyle co on.
Ot tak to działa.

1 polubienie

Za radą @michal_k poszukałem starszego ESPHome skompilowałem na nim i alleluja… . Moja chińska płytka żyje i odbiera oba moje liczniki (m. in.).
Tak więc dla potomności: na pewno ESPHome 2025.12.7 jest dobre do kompilowania kodu na liczniki. Wielkie podziękowania dla @michal_k , ale też dla Was Koledzy @szopen , @Allon , @_Szczepan , @angler za zainteresowanie moim tematem.

2 polubienia

@Ryszard > …poszukałem starszego ESPHome skompilowałem na nim i alleluja…

Też o tym pisałem wyżej :wink: 3 dni siedziałem, dopiero postawiłem na dokerze wersję 2025.11 i ruszyło od strzała :wink:

1 polubienie

@_Szczepan pytanko mam. Lekarstwem na to, żeby działało jak wiadomo jest “nie ruszać”. Natomiast czasem trzeba ruszyć, jak np. dochodzi kwestia dodania licznika do konfiguracji. No i wyszedł problem z V4, na wersji ESPHome z czerwca 2025. Widzę, że zmieniłeś miesiąc temu coś w repo V4 (get_unit_of_measurement_ref()) i już nie kompiluje się na 2025.6.3. Jest opcja wymuszenia starszego brancha V4 (jak kiedyś np.@3.0.12), co by działał jak dawniej na starszych ESPHome?

Ja bym dal:

No tak ale jaki konkretnie ten branch do starego V4?
Podejrzewam że nie to co chat wymyślił, czyli a1b2c3d4e5… :slight_smile: