Cześć.
Zaczynam moją przygodę z ESP Home, na pierwszy ogień poszedł odczyt wodomierza z nakładką Apator 16-2. Udało mi się skonfigurować ESP32 C3 SuperMini z CC1101 (z zachowanym pinoutem) według YAMLA esphome-components/ESP32-C3_SuperMini_CC1101.yaml at main · SzczepanLeon/esphome-components · GitHub
Niestety, telegramy są interpretowane połowiczo przez ESP 32 - odczytywana jest pierwsza część w trybie T1 (id licznika, typ pomiaru, siła sygnału, itp), jednak nie pojawiają się informacje o zużyciu wody. Po wklejeniu telegramu do wmbusmeters.org pojawia się:
telegram=|3E4401067500240705077A150030852F2F_0F05B0D59A8900004385028772973956393901710B00102F9101007101C17601009D3F0100A0E7A2C704FFFF5B5E|
Auto driver : apator162
Similar driver : apator162 46/46
Using driver : apator162 00/00
000 : 3e length (62 bytes)
001 : 44 dll-c (from meter SND_NR)
002 : 0106 dll-mfct (APA)
004 : 75002407 dll-id (07240075)
008 : 05 dll-version
009 : 07 dll-type (Water meter)
010 : 7a tpl-ci-field (EN 13757-3 Application Layer (short tplh))
011 : 15 tpl-acc-field
012 : 00 tpl-sts-field (OK)
013 : 3085 tpl-cfg 8530 (bidirectional AES_CBC_IV nb=3 cntn=0 ra=0 hc=0 )
015 : 2f2f decrypt check bytes (OK)
017 C!: 0F manufacturer specific data 05B0D59A8900004385028772973956393901710B00102F9101007101C17601009D3F0100A0E7A2C704FFFF5B5E
decode(state = ambiguous
off = 0
xmlns:ixml = http://invisiblexml.org/NS)
{
‘0F’
status(off = 2) = 05B0D59A890000
days(off = 16) = 8502
woot_8x(off = 20) = 72973956393901710B00
total(dvk = 0413
off = 40) = 2F910100
woot_71(off = 48) = 01C17601009D3F0100
woot_A0(off = 66) = E7A2C704
checksum(off = 74) = FFFF5B5E
}
037 C!: *** 2F910100 (“total_m3”:102.703)
{
“_”:“telegram”,
“media”:“water”,
“meter”:“apator162”,
“name”:“”,
“id”:“07240075”,
“total_m3”:102.703,
“timestamp”:“2026-05-16T18:17:20Z”
}
Using: wmbusmeters: 2.0.0-409-g5e67939b
5e67939bcbb2c640c58387bf5d5ef1843beda875
W tej sekcji 037 są dane dotyczące zużycia wody, jednakże nie wiem, jak je odczytać przez ESP 32.
Przykładowy log z ESP32:
[20:50:26.230][D][wmbusmeters:351]: (wmbus) trimming frame A “3E44010689002407050709E57A700030853695BC63016A03E35E8A53131540AEC210F553CD73F2C41B721BAAA108A67463CD24A56939A6FEDAB16E9F12FFEAC07A177BBCE3A64126F2”
[20:50:26.240][D][wmbusmeters:351]: (wmbus) trimming frame A “3E44010689002407050709E57A700030853695BC63016A03E35E8A53131540AEC210F553CD73F2C41B721BAAA108A67463CD24A56939A6FEDAB16E9F12FFEAC07A177BBCE3A64126F2”
[20:50:26.255][D][wmbusmeters:351]: (wmbus) trimmed frame A “3E4401068900240705077A700030853695BC63016A03E35E8A5340AEC210F553CD73F2C41B721BAAA10863CD24A56939A6FEDAB16E9F12FFEAC07BBCE3A641”
[20:50:26.275][D][wmbusmeters:351]: (wmbus) checkWMBUSFrame “3E4401068900240705077A700030853695BC63016A03E35E8A5340AEC210F553CD73F2C41B721BAAA10863CD24A56939A6FEDAB16E9F12FFEAC07BBCE3A641”
[20:50:26.297][D][main:573]: Frame received: RSSI=-50dBm, Mode=T1, Data=3e4401068900240705077a700030853695bc63016a03e35e8a5340aec210f553cd73f2c41b721baaa10863cd24a56939a6fedab16e9f12ffeac07bbce3a641
[20:50:26.314][D][wmbusmeters:779]: (meter) apator162-07240089(0) apator162 handling telegram from 07240089.M=APA.V=05.T=07
[20:50:26.322][D][wmbusmeters:267]: (telegram) DLL L=3e C=44 (from meter SND_NR) M=0601 (APA) A=07240089 VER=05 TYPE=07 (Water meter) (driver apator162) DEV=MonitorWodyApator2 RSSI=-50
[20:50:26.346][D][wmbusmeters:322]: (telegram) TPL CI=7a
[20:50:26.346][D][wmbusmeters:326]: ACC=70 STS=00 CFG=8530 (bidirectional AES_CBC_IV nb=3 cntn=0 ra=0 hc=0)
[20:50:26.346][W][component:522]: wmbus_radio took a long time for an operation (147 ms), max is 30 ms
[20:50:26.460][S][sensor]: ‘Licznik Ogrodowy RSSI’ >> -50 dBm
Proszę o pomoc.
Masz szyfrowaną transmisje.
W logu masz:
CFG=8530 (bidirectional AES_CBC_IV ...)
czyli telegram Apatora 16-2 jest szyfrowany AES-CBC.
Wklej YAML
Tu jest mój YAML:
esphome:
name: monitorwodyapator2
friendly_name: MonitorWodyApator2
esp32:
board: esp32-c3-devkitm-1
framework:
type: esp-idf
logger:
hardware_uart: USB_CDC
level: DEBUG
time:
- platform: sntp
# Enable Home Assistant API
api:
encryption:
key: (…)
ota:
- platform: esphome
password: (…)
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Monitorwodyapator2"
password: (…)
captive_portal:
external_components:
- source: github://SzczepanLeon/esphome-components@main
components: [ wmbus_radio, wmbus_common, wmbus_meter ]
wmbus_common:
drivers:
- apator162
spi:
clk_pin: GPIO5 # SCK
mosi_pin: GPIO6 # MOSI
miso_pin: GPIO7 # MISO
wmbus_radio:
radio_type: CC1101
cs_pin: GPIO4
irq_pin: GPIO3
# frequency: 868.95MHz # 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()' ]
wmbus_meter:
# --- Licznik Główny ---
- id: apator_glowny
meter_id: 0x7240075
type: apator162
key: "0000000000000000"
mode:
- T1
# --- Licznik Ogrodowy ---
- id: apator_ogrodowy
meter_id: 0x7240089
type: apator162
key: "0000000000000000"
mode:
- T1
# Sekcja sensorów przekazująca stany do Home Assistant
sensor:
# --- SENSORY DLA LICZNIKA GŁÓWNEGO ---
- platform: wmbus_meter
parent_id: apator_glowny
field: total_m3
name: "Licznik Glowny Stan"
unit_of_measurement: "m³"
device_class: water
state_class: total_increasing
accuracy_decimals: 3
icon: "mdi:water"
- platform: wmbus_meter
parent_id: apator_glowny
field: rssi_dbm
name: "Licznik Glowny RSSI"
unit_of_measurement: "dBm"
device_class: signal_strength
state_class: measurement
entity_category: diagnostic
accuracy_decimals: 0
# --- SENSORY DLA LICZNIKA OGRODOWEGO ---
- platform: wmbus_meter
parent_id: apator_ogrodowy
field: total_m3
name: "Licznik Ogrodowy Stan"
unit_of_measurement: "m³"
device_class: water
state_class: total_increasing
accuracy_decimals: 3
icon: "mdi:water-pump"
- platform: wmbus_meter
parent_id: apator_ogrodowy
field: rssi_dbm
name: "Licznik Ogrodowy RSSI"
unit_of_measurement: "dBm"
device_class: signal_strength
state_class: measurement
entity_category: diagnostic
accuracy_decimals: 0
# --- SENSORY DIAGNOSTYCZNE MODUŁU ESP32-C3 ---
- platform: wifi_signal
name: "ESP WiFi Signal"
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: "ESP Uptime"
update_interval: 60s
entity_category: diagnostic
binary_sensor:
- platform: status
name: "ESP Status Połączenia"
entity_category: diagnostic
button:
- platform: restart
name: "Restart ESP"
entity_category: diagnostic
Zmienił się trochę log - skompilowałem jeszcze raz kod jak wyżej:
[21:30:59.214][D][packet:097]: Have data from radio (110 bytes)
[21:30:59.218][D][wmbusmeters:351]: raw packet "2F271C58D59AB2559639C5935995935A5C994E64CE5962D6B1934E6717232CD9936A99ACC5399CD1339AC537254F43A6CA5653A7496C9A55B4D0BB198EC599CA566CD0D9B296C4D995939935994B699D0BC8D3656B49A3C564F42F4C9CC967235A54F45A9B31B2369A693CA98F25"
[21:30:59.235][D][wmbusmeters:351]: (wmbus) trimming frame A "3E44010689002407050709E57A72003085125D4B31A76FA8D7A4C726D7497C2AE957FC98A90CC385B805E958C1AE98759525159365C3E1196CABD07C3CE4E04B097C0F8D8B6667EFBE"
[21:30:59.254][D][wmbusmeters:351]: (wmbus) trimming frame A "3E44010689002407050709E57A72003085125D4B31A76FA8D7A4C726D7497C2AE957FC98A90CC385B805E958C1AE98759525159365C3E1196CABD07C3CE4E04B097C0F8D8B6667EFBE"
[21:30:59.271][D][wmbusmeters:351]: (wmbus) trimmed frame A "3E4401068900240705077A72003085125D4B31A76FA8D7A4C7267C2AE957FC98A90CC385B805E958C1AE9525159365C3E1196CABD07C3CE4E04B0F8D8B6667"
[21:30:59.288][D][wmbusmeters:351]: (wmbus) checkWMBUSFrame "3E4401068900240705077A72003085125D4B31A76FA8D7A4C7267C2AE957FC98A90CC385B805E958C1AE9525159365C3E1196CABD07C3CE4E04B0F8D8B6667"
[21:30:59.305][D][main:573]: Frame received: RSSI=-48dBm, Mode=T1, Data=3e4401068900240705077a72003085125d4b31a76fa8d7a4c7267c2ae957fc98a90cc385b805e958c1ae9525159365c3e1196cabd07c3ce4e04b0f8d8b6667
[21:30:59.335][D][wmbusmeters:779]: (meter) apator162-07240089(0) apator162 handling telegram from 07240089.M=APA.V=05.T=07
[21:30:59.341][D][wmbusmeters:267]: (telegram) DLL L=3e C=44 (from meter SND_NR) M=0601 (APA) A=07240089 VER=05 TYPE=07 (Water meter) (driver apator162) DEV=MonitorWodyApator2 RSSI=-48
[21:30:59.347][D][wmbusmeters:351]: (TPL) AES CBC IV decrypting "125D4B31A76FA8D7A4C7267C2AE957FC98A90CC385B805E958C1AE9525159365C3E1196CABD07C3CE4E04B0F8D8B6667"
[21:30:59.371][D][wmbusmeters:357]: (TPL) decrypted "BF0721767EF0732A6260141F2F7F7CA26D3D088E1B34B1B0AA5530845EE7E8944925A87D990AEAB0F87062CDF034EB7D"
[21:30:59.377][D][wmbusmeters:322]: (telegram) TPL CI=7a
[21:30:59.381][D][wmbusmeters:326]: ACC=72 STS=00 CFG=8530 (bidirectional AES_CBC_IV nb=3 cntn=0 ra=0 hc=0)
[21:30:59.501][S][sensor]: 'Licznik Ogrodowy RSSI' >> -48 dBm
[21:31:22.481][S][sensor]: 'ESP WiFi Signal' >> -48 dBm
[21:31:23.492][S][sensor]: 'ESP Uptime' >> 365 s
[21:32:22.485][S][sensor]: 'ESP WiFi Signal' >> -48 dBm
[21:32:23.491][S][sensor]: 'ESP Uptime' >> 425 s
[21:33:22.486][S][sensor]: 'ESP WiFi Signal' >> -49 dBm
[21:33:23.505][S][sensor]: 'ESP Uptime' >> 485 s
A tu wmbusmeters po wklejeniu linijki [21:30:59.288][D][wmbusmeters:351]: (wmbus) checkWMBUSFrame “3E4401068900240705077A72003085125D4B31A76FA8D7A4C7267C2AE957FC98A90CC385B805E958C1AE9525159365C3E1196CABD07C3CE4E04B0F8D8B6667” z użyciem klucza 0000000000000000:
telegram=|3E4401068900240705077A720030852F2F_0F57B0D59A890000438102806C6D186D6D180105000010122700007101852600005F260000A0ADA2C704FFFF5024|
Auto driver : apator162
Similar driver : apator162 46/46
Using driver : apator162 00/00
000 : 3e length (62 bytes)
001 : 44 dll-c (from meter SND_NR)
002 : 0106 dll-mfct (APA)
004 : 89002407 dll-id (07240089)
008 : 05 dll-version
009 : 07 dll-type (Water meter)
010 : 7a tpl-ci-field (EN 13757-3 Application Layer (short tplh))
011 : 72 tpl-acc-field
012 : 00 tpl-sts-field (OK)
013 : 3085 tpl-cfg 8530 (bidirectional AES_CBC_IV nb=3 cntn=0 ra=0 hc=0 )
015 : 2f2f decrypt check bytes (OK)
017 C!: 0F manufacturer specific data 57B0D59A890000438102806C6D186D6D180105000010122700007101852600005F260000A0ADA2C704FFFF5024
decode(state = ambiguous
off = 0
xmlns:ixml = http://invisiblexml.org/NS)
{
'0F'
status(off = 2) = 57B0D59A890000
days(off = 16) = 8102
woot_8x(off = 20) = 6C6D186D6D1801050000
total(dvk = 0413
off = 40) = 12270000
woot_71(off = 48) = 01852600005F260000
woot_A0(off = 66) = ADA2C704
checksum(off = 74) = FFFF5024
}
037 C!: *** 12270000 ("total_m3":10.002)
{
"_":"telegram",
"media":"water",
"meter":"apator162",
"name":"",
"id":"07240089",
"total_m3":10.002,
"timestamp":"2026-05-16T19:42:05Z"
}
Using: wmbusmeters: 2.0.0-409-g5e67939b
5e67939bcbb2c640c58387bf5d5ef1843beda875
Pozdrawiam!
wmbus_meter:
- id: apator_glowny
meter_id: 0x07240075
type: apator162
key: "00000000000000000000000000000000"
mode:
- T1
- id: apator_ogrodowy
meter_id: 0x07240089
type: apator162
key: "00000000000000000000000000000000"
mode:
- T1
Muszą być 32 zera.
Również pozdro 
Super! Bardzo dziękuję!
Swoją drogą, to jest bardzo ciekawe kodowanie, jeśli wmbusmeters deszyfruje i 16 zer i 32 zera…
Musiał bym Ci długi wykład strzelić
Ale uwierz mi że tak jest.