Chcesz rozwiązać problem czy dalej interpretować każdy raw packet jako prawie-sukces?
Tu masz różnicę między kandydatem na ramkę a poprawnym telegramem.
U mnie też wpada RAW, ale komponent nie udaje, że to od razu poprawna ramka:
[20:27:01.805][W][wmbus:2248]: DROPPED packet / odrzucony pakiet:
stage=t1_decode3of6
reason=decode_failed
mode=T1
raw_got=134
decoded_len=0
final_len=0
RSSI=-120dBm
detail=symbols_total=178 symbols_invalid=4 raw_len=134
Czyli coś z eteru wpadło, ale nie przeszło dekodowania T1 3-of-6, więc zostało odrzucone.
Ta konkretna odrzucona ramka RAW wyglądała tak:
73471c8dc5a52d370e64b58b3535936a65b24e65995965965965b434b64db0d58b59659c6b136b2cb665a6cc4d25c5a9b2959659659659659659659659659659659672c5a36b43a95962e35b45964da5b15968e358d59698b58e596c5358b59668e38ea7159c5963ac59a5963ac5835962d65ac5963b25a55966745ac6435a659659695a9995
I dopiero następna linia pokazuje poprawnie odebrany telegram:
[20:27:03.318][I][wmbus_user:2425]: ★ Have data / odebrano dane (77 bytes)
[RSSI: -114dBm, mode: T1 A, mfr:BMT id:03528221 ver:23 type:6 ci:7A]
Czyli sedno jest takie: sam HEX/RAW w logu nie oznacza jeszcze poprawnej ramki. Poprawna ramka to taka, która przechodzi walidację i daje się rozpoznać jako telegram, np. ma mode, mfr, id, ci.
RAW może być tylko kandydatem albo śmieciem z eteru. Dopiero walidacja mówi, czy to faktycznie telegram wM-Bus.
Ty finalnie chcesz zobaczyć to :
Na screenie masz poprawnie zwalidowane telegramy opublikowane przez ESP do MQTT. Dopiero te telegramy trafiają dalej do wmbusmeters i są dekodowane.
W moim przykładzie komponentu cały tor jest taki:
radio → walidacja w komponencie → MQTT topic → wmbusmeters → encje/JSON
natomiast to repo ma tak:
radio → kandydat → RAW w logu → dopiero potem walidacja
Ty cały czas przeskakujesz z pierwszego etapu na ostatni.