w dokumentacji od plytki pin 18 jest wlasnie sck, irq tez jest przypisany, kod działa na wersji 5.0.4 i 5.0.5 nastepna to 5.1.6 czyli main i tu już ten kod nie działa, próbuje wykminić co sie zmieniło
Dodam ciekawostkę związaną z Heltec v2 - po wyłączeniu dekodowania ramki (przy części wmbus_meter on_telegram)
RSSI skoczyło z okolic -105dBm do ok. -70dBm. W sumie to nie zauważyłem za bardzo różnicy w liczbie odebranych ramek, więc nie wiem czy to rzeczywista różnica, czy tylko “wizualna”, może to jakaś kwestia obciążenia CPU czy coś innego. Może komuś się ta informacja przyda, o ile nie było takiego wątku w temacie.
Cześć,
Z racji, że na CC1101 mi nie poszło to kupiłem moduł SX1276 i wraz ESP32 wroom próbuje na nim zrobić odczyt licznika ciepła qualcosonic.
Nie idzie to tak łatwo jak myślałem.
Załączam kod.
Przy wersji ESPHome 2026.2.4 bądź 2026.3.0 dostaję takie logi:
[14:06:40][D][packet:097]: Have data from radio (8 bytes)
[14:06:40][D][wmbusmeters:351]: raw packet "4F2F1DFBC75C377D"
[14:06:40][V][packet:073]: expected_size: 8
[14:06:40][V][wmbusmeters:4841]: (wmbus) not enough bytes! expected at least 12 but got (8)!
[14:06:40][V][packet:073][radio_recv]: expected_size: 8
[14:06:40][V][wmbus:099][radio_recv]: Queue items: 1
[14:06:40][V][wmbus:101][radio_recv]: Queue send success
[14:06:40][VV][component:216]: logger loop disabled
[14:06:46][VV][api.service:058]: on_ping_request: PingRequest {}
[14:06:46][VV][api.service:012]: send_message ping_response: PingResponse {}
[14:07:03][VV][api.connection:207]: Sending keepalive PING
[14:07:03][VV][api.service:012]: send_message ping_request: PingRequest {}
[14:07:03][VV][api.service:067]: on_ping_response: PingResponse {}
[14:07:26][VV][api.service:058]: on_ping_request: PingRequest {}
[14:07:26][VV][api.service:012]: send_message ping_response: PingResponse {}
[14:07:40][VV][app:427]: logger loop enabled from ISR
[14:07:40][D][packet:097]: Have data from radio (8 bytes)
[14:07:40][D][wmbusmeters:351]: raw packet "6FFDBFCB9DBE7F3F"
[14:07:40][V][packet:073]: expected_size: 8
[14:07:40][V][wmbusmeters:4841]: (wmbus) not enough bytes! expected at least 12 but got (8)!
[14:07:40][V][packet:073][radio_recv]: expected_size: 8
[14:07:40][V][wmbus:099][radio_recv]: Queue items: 1
[14:07:40][V][wmbus:101][radio_recv]: Queue send success
[14:07:40][VV][component:216]: logger loop disabled
[14:08:03][VV][api.connection:207]: Sending keepalive PING
[14:08:03][VV][api.service:012]: send_message ping_request: PingRequest {}
[14:08:03][VV][api.service:067]: on_ping_response: PingResponse {}
[14:08:07][VV][api.service:058]: on_ping_request: PingRequest {}
[14:08:07][VV][api.service:012]: send_message ping_response: PingResponse {}
[14:08:42][VV][app:427]: logger loop enabled from ISR
[14:08:42][D][packet:097]: Have data from radio (8 bytes)
[14:08:42][D][wmbusmeters:351]: raw packet "4F2F3FFFDFED346B"
[14:08:42][V][packet:073]: expected_size: 8
[14:08:42][V][wmbusmeters:4841]: (wmbus) not enough bytes! expected at least 12 but got (8)!
[14:08:42][V][packet:073][radio_recv]: expected_size: 8
[14:08:42][V][wmbus:099][radio_recv]: Queue items: 1
[14:08:42][V][wmbus:101][radio_recv]: Queue send success
[14:08:42][VV][component:216]: logger loop disabled
[14:08:47][VV][api.service:058]: on_ping_request: PingRequest {}
[14:08:47][VV][api.service:012]: send_message ping_response: PingResponse {}
[14:09:03][VV][api.connection:207]: Sending keepalive PING
[14:09:03][VV][api.service:012]: send_message ping_request: PingRequest {}
[14:09:03][VV][api.service:067]: on_ping_response: PingResponse {}
[14:09:27][VV][api.service:058]: on_ping_request: PingRequest {}
[14:09:27][VV][api.service:012]: send_message ping_response: PingResponse {}
[14:09:43][VV][app:427]: logger loop enabled from ISR
[14:09:43][D][packet:097]: Have data from radio (218 bytes)
[14:09:43][D][wmbusmeters:351]: raw packet "4F271CB3132D6E52CD599B0E58D59368DCD96E66E35D6CD799DB9BB27C5AE7EC995AE7539B6F5A9ECAEB99BB72FBF1FC7DAA6CCBED4AE7CF9B2D73D7F95FF696379ADB346B5DCFDF7AF37E5DB6DFE935B6D3A36CEFD5EDE9F3B364EF69E367594931B2B8EB77393FAF673B67BDE539E87B79B373B1F3E1671BB1F74779EF3395376BEDCF694D9A1CD4B1CD4CA5A7B97317A68CDDE9BEFD3CF937CBCF167CF9B9F2D7876C6BF9F679EC1F966DDFFC8DFF6F9FFDB326164CCD5EC4EDDDF78B6A6D59B96AC1CDBC6EDABD334F39BB3FDB9D2E7D84A76EA7D6BB3E77"
[14:09:43][V][packet:073]: expected_size: 218
[14:09:43][D][wmbusmeters:351]: (wmbus) trimming frame A "4F271CB3132D6E52CD599B0E58D59368DCD96E66E35D6CD799DB9BB27C5AE7EC995AE7539B6F5A9ECAEB99BB72FBF1FC7DAA6CCBED4AE7CF9B2D73D7F95FF696379ADB346B5DCFDF7AF37E5DB6DFE935B6D3A36CEFD5EDE9F3B364EF69E367594931B2B8EB77393FAF673B67BDE539E87B79B373B1F3E1671BB1F74779EF3395376BEDCF694D9A1CD4B1CD4CA5A7B97317A68CDDE9BEFD3CF937CBCF167CF9B9F2D7876C6BF9F679EC1F966DDFFC8DFF6F9FFDB326164CCD5EC4EDDDF78B6A6D59B96AC1CDBC6EDABD334F39BB3FDB9D2E7D84A76EA7D6BB3E77"
[14:09:43][V][wmbusmeters:4858]: (wmbus) ff a dll crc first (calculated 9d88) did not match (expected 9b0e) for bytes 0-10!
[14:09:43][V][packet:073][radio_recv]: expected_size: 218
[14:09:43][V][wmbus:099][radio_recv]: Queue items: 1
[14:09:43][V][wmbus:101][radio_recv]: Queue send success
[14:09:43][V][packet:073][radio_recv]: expected_size: 8
[14:09:43][V][wmbus:099][radio_recv]: Queue items: 2
[14:09:43][V][wmbus:101][radio_recv]: Queue send success
[14:09:43][D][packet:097]: Have data from radio (8 bytes)
[14:09:43][D][wmbusmeters:351]: raw packet "4BF77FFDFFAE7CDF"
[14:09:43][V][packet:073]: expected_size: 8
[14:09:43][V][wmbusmeters:4841]: (wmbus) not enough bytes! expected at least 12 but got (8)!
[14:09:43][VV][component:216]: logger loop disabled
[14:10:03][VV][api.connection:207]: Sending keepalive PING
[14:10:03][VV][api.service:012]: send_message ping_request: PingRequest {}
[14:10:03][VV][api.service:067]: on_ping_response: PingResponse {}
[14:10:08][VV][api.service:058]: on_ping_request: PingRequest {}
[14:10:08][VV][api.service:012]: send_message ping_response: PingResponse {}
[14:10:28][VV][api.service:058]: on_ping_request: PingRequest {}
[14:10:28][VV][api.service:012]: send_message ping_response: PingResponse {}
[14:10:43][VV][app:427]: logger loop enabled from ISR
[14:10:43][D][packet:097]: Have data from radio (8 bytes)
[14:10:43][D][wmbusmeters:351]: raw packet "4F2F1FFFF7655FEE"
[14:10:43][V][packet:073]: expected_size: 8
[14:10:43][V][wmbusmeters:4841]: (wmbus) not enough bytes! expected at least 12 but got (8)!
[14:10:43][V][packet:073][radio_recv]: expected_size: 8
[14:10:43][V][wmbus:099][radio_recv]: Queue items: 1
[14:10:43][V][wmbus:101][radio_recv]: Queue send success
[14:10:43][VV][component:216]: logger loop disabled
[14:10:48][VV][api.service:058]: on_ping_request: PingRequest {}
[14:10:48][VV][api.service:012]: send_message ping_response: PingResponse {}
[14:11:08][VV][api.service:058]: on_ping_request: PingRequest {}
[14:11:08][VV][api.service:012]: send_message ping_response: PingResponse {}
[14:11:28][VV][api.service:058]: on_ping_request: PingRequest {}
[14:11:28][VV][api.service:012]: send_message ping_response: PingResponse {}
Zmieniłem wersję na 2025.8.4 i tam występuje problem taki, że urządzenie się restartuje przy dekodowaniu:
[14:35:16.412][D][wmbusmeters:351]: (wmbus) trimming frame A "59440907818401040C0DBBA97A5F000000046D180F5233048E3BFF712E7B0000048E3C0000000004130A8406000CE5BB788184010484086D3B175C3284088E3BA6F3C86F000084088E3C00000000446D3B1730113F3C448E3B7A5B0000448E3C0000000014DC"
[14:35:16.423][V][wmbusmeters:4866]: (wmbus) ff a dll crc 0-9 bba9 ok
[14:35:16.426][V][wmbusmeters:4884]: (wmbus) ff a dll crc mid 12-27 2e7b ok
[14:35:16.426][V][wmbusmeters:4884]: (wmbus) ff a dll crc mid 30-45 e5bb ok
[14:35:16.442][V][wmbusmeters:4884]: (wmbus) ff a dll crc mid 48-63 a6f3 ok
[14:35:16.448][V][wmbusmeters:4884]: (wmbus) ff a dll crc mid 66-81 3011 ok
[14:35:16.452][V][wmbusmeters:4884]: (wmbus) ff a dll crc mid 84-99 14dc ok
[14:35:16.457][D][wmbusmeters:351]: (wmbus) trimming frame A "59440907818401040C0DBBA97A5F000000046D180F5233048E3BFF712E7B0000048E3C0000000004130A8406000CE5BB788184010484086D3B175C3284088E3BA6F3C86F000084088E3C00000000446D3B1730113F3C448E3B7A5B0000448E3C0000000014DC"
[14:35:16.486][V][wmbusmeters:4917]: (wmbus) trimmed 12 dll crc bytes from frame a and ignored 0 suffix bytes.
[14:35:16.500][D][wmbusmeters:351]: (wmbus) trimmed frame A "59440907818401040C0D7A5F000000046D180F5233048E3BFF710000048E3C0000000004130A8406000C788184010484086D3B175C3284088E3BC86F000084088E3C00000000446D3B173F3C448E3B7A5B0000448E3C00000000"
[14:35:16.506][D][wmbusmeters:351]: (wmbus) checkWMBUSFrame "59440907818401040C0D7A5F000000046D180F5233048E3BFF710000048E3C0000000004130A8406000C788184010484086D3B175C3284088E3BC86F000084088E3C00000000446D3B173F3C448E3B7A5B0000448E3C00000000"
[14:35:16.534][V][wmbusmeters:5094]: (wmbus) received full frame.
[14:35:16.541][V][wmbus:047]: Have data (90 bytes) [RSSI: -90dBm, mode: T1 A]
[14:35:16.551][D][main:518]: RSSI: -90dBm T: 59440907818401040c0d7a5f000000046d180f5233048e3bff710000048e3c0000000004130a8406000c788184010484086d3b175c3284088e3bc86f000084088e3c00000000446d3b173f3c448e3b7a5b0000448e3c00000000 (90)
[14:35:16.565][V][wmbusmeters:1066]: (wmbus) parseDLL @0 90
[14:35:16.572][V][wmbusmeters:1137]: (wmbus) parseELL @10 80
[14:35:16.578][V][wmbusmeters:1302]: (wmbus) parseNWL @10 80
[14:35:16.585][V][wmbusmeters:1333]: (wmbus) parseAFL @10 80
[14:35:16.592][V][wmbusmeters:2044]: (wmbus) parseTPL @10 80
[14:35:16.601][D][wmbusmeters:585]: [DVPARSER] entry 17: 046D Instantaneous vif=6d st=0 ta=0 su=0
INFO Processing unexpected disconnect from ESPHome API for esp32-wroom @ 192.168.0.244
WARNING Disconnected from API
INFO Successfully resolved esp32-wroom @ 192.168.0.244 in 0.000s
INFO Successfully connected to esp32-wroom @ 192.168.0.244 in 0.005s
INFO Successful handshake with esp32-wroom @ 192.168.0.244 in 0.104s
Znalazłem informację żeby debug przestawić na INFO, wtedy oczywiście widzę w enetrze inne ramki z liczników qualcosonic jednakże dla mojego nic się nie dzieje dalej.
Z tego co rozumiem to powinienen zobaczyć chociaż “Mam telegram z licznika!”. Czy źle myślę ?
Problem jest taki, że RSSI jest liczone na każdym bicie przesyłanych informacji i uśredniane. Odbiornik jest właściwie uruchomiony cały czas. I teraz, jak trochę zbyt późno zapytasz o RSSI odbiornik to się możesz dowiedzieć nie o poziom rzeczywistego sygnału tylko o poziom szumu, który odbieramy już po właściwych danych.
A jeśli masz coś do zrobienia zaraz po odbiorze (czyli on_telegram) i to coś trwa długo, to masz większą szansę że dowiesz się o poziom szumu a nie o poziom payloadu.
Dlatego RSSI masz śmieciowe, a wcale nie odbiera gorzej niż na normalnym poziomie tego wskaźnika
Czy komuś wywaliło odczyty po update esphome do wersji 2026.3.0? Ja nie aktualizowałem jeszcze ale kolega już mi meldował że jemu odczyty znikły. Wersja repo to: github://SzczepanLeon/esphome-components@5.0.4. Po przywróceniu do poprzedniej wersji odczyty nadal działają czyli wszystko wróciło do normy.
Panowie, potrzebuję pomocy…
Historia:
ESP32 dev1, framwork arduino i CC1101, wersja 4 komponentu. Instalacja w bloku. Liczniki Apator162 odczyt co 5-15 minut (zależnie od pory). Licznik amiplus odczyt co 2 minuty (przesyła naprzemiennie ramkę ‘krótka’ - tylko timestamp i ‘pełną’)
Obecnie:
Po update do esp-idf i wersji 5 minimalny odczyt przydatnych telegramów. Próbowałem na ESP32dev1, ESP32-C3 super mini, radio CC1101 oraz SX1276.
Odczyt wygląda tak, że ‘łapie’ ramki 8bajtowe (nieczytelne dla wmbus), w porywach z raz na godzinę telegram od amiplus (ale tylko ten ‘krótki’, timestamp) i raz, dwa razy dziennie jeden apator162.
RRSI na poziomie -60/-40