ESP [wmbus...] - Problem z komunikacją MQTT

Cześć!

Mam problem z komunikacją ESP z serwerem MQTT. W momencie kliknięcia deploy przychodzą ramki z danymi i na tym cała zabawa się kończy. Sprawa dotyczy raportowania zużycia wody.

Poniżej fragment logów

Jakby ktoś mógł nakierować gdzie szukać przyczyny takiego stanu rzeczy

[I][mqtt:234]: Connecting to MQTT...
[D][mbus:034]: Processing T1 A frame
[D][wmbus:097]: Using driver 'izar' for ID [0x21567293] RSSI: -50 dBm LQI: 128 Frame: T1 A T: 1944304C93725621D401A2612C4013E2329366E84D6781CB5E94 (26)
[D][sensor:094]: 'My lqi': Sending state 128.00000  with 0 decimals of accuracy
[D][sensor:094]: 'My RSSI': Sending state -50.00000 dBm with 0 decimals of accuracy
[D][sensor:094]: 'Licznik ogrodowy': Sending state 4.40400 m³ with 3 decimals of accuracy
[I][mqtt:274]: MQTT Connected!
[D][esp-idf:000]: E (20588) MQTT_CLIENT: mqtt_message_receive: transport_read() error: errno=128

[D][esp-idf:000]: E (20592) MQTT_CLIENT: mqtt_process_receive: mqtt_message_receive() returned -1

[D][esp-idf:000]: E (20683) MQTT_CLIENT: Client has not connected

[D][esp-idf:000]: E (20689) MQTT_CLIENT: Client has not connected

[W][component:214]: Component mqtt took a long time for an operation (0.12 s).
[W][component:215]: Components should block for at most 20-30ms.
[E][mqtt.idf:160]: MQTT_EVENT_ERROR
[E][mqtt.idf:162]: Last error code reported from esp-tls: 0x8008
[E][mqtt.idf:163]: Last tls stack error number: 0x0
[E][mqtt.idf:165]: Last captured errno : 0 (Success)
[E][mqtt.idf:160]: MQTT_EVENT_ERROR
[E][mqtt.idf:162]: Last error code reported from esp-tls: 0x0
[E][mqtt.idf:163]: Last tls stack error number: 0x0
[E][mqtt.idf:165]: Last captured errno : 104 (Connection reset by peer)
[W][mqtt:323]: MQTT Disconnected: TCP disconnected.
[I][mqtt:234]: Connecting to MQTT...
[W][mqtt:323]: MQTT Disconnected: TCP disconnected.
[D][mbus:034]: Processing T1 A frame
[D][wmbus:097]: Using driver 'izar' for ID [0x21567293] RSSI: -50 dBm LQI: 128 Frame: T1 A T: 1944304C93725621D401A2712C4013E225BC2F436CB458104796 (26)
[D][sensor:094]: 'My lqi': Sending state 128.00000  with 0 decimals of accuracy
[D][sensor:094]: 'My RSSI': Sending state -50.00000 dBm with 0 decimals of accuracy
[D][sensor:094]: 'Licznik ogrodowy': Sending state 4.40400 m³ with 3 decimals of accuracy
[I][mqtt:234]: Connecting to MQTT...
[I][mqtt:274]: MQTT Connected!
[D][esp-idf:000]: E (35844) MQTT_CLIENT: mqtt_message_receive: transport_read() error: errno=128

[D][esp-idf:000]: E (35848) MQTT_CLIENT: mqtt_process_receive: mqtt_message_receive() returned -1

[D][esp-idf:000]: E (35939) MQTT_CLIENT: Client has not connected

[D][esp-idf:000]: E (35945) MQTT_CLIENT: Client has not connected

[W][component:214]: Component mqtt took a long time for an operation (0.12 s).
[W][component:215]: Components should block for at most 20-30ms.
[E][mqtt.idf:160]: MQTT_EVENT_ERROR
[E][mqtt.idf:162]: Last error code reported from esp-tls: 0x8008
[E][mqtt.idf:163]: Last tls stack error number: 0x0
[E][mqtt.idf:165]: Last captured errno : 0 (Success)
[E][mqtt.idf:160]: MQTT_EVENT_ERROR
[E][mqtt.idf:162]: Last error code reported from esp-tls: 0x0
[E][mqtt.idf:163]: Last tls stack error number: 0x0
[E][mqtt.idf:165]: Last captured errno : 104 (Connection reset by peer)
[W][mqtt:323]: MQTT Disconnected: TCP disconnected.
[I][mqtt:234]: Connecting to MQTT...
[W][mqtt:323]: MQTT Disconnected: TCP disconnected.
[I][mqtt:234]: Connecting to MQTT...
[D][mbus:034]: Processing T1 A frame
[D][wmbus:097]: Using driver 'izar' for ID [0x215EFF8C] RSSI: -42 dBm LQI: 128 Frame: T1 A T: 1944304C8CFF5E21CC01A221104013A982A6A28BE2F67F6BEA6C (26)
[D][sensor:094]: 'My lqi': Sending state 128.00000  with 0 decimals of accuracy
[D][sensor:094]: 'My RSSI': Sending state -42.00000 dBm with 0 decimals of accuracy
[D][sensor:094]: 'Licznik główny': Sending state 12.21600 m³ with 3 decimals of accuracy
[I][mqtt:274]: MQTT Connected!
[D][esp-idf:000]: E (51102) MQTT_CLIENT: mqtt_message_receive: transport_read() error: errno=128

[D][esp-idf:000]: E (51106) MQTT_CLIENT: mqtt_process_receive: mqtt_message_receive() returned -1

[D][esp-idf:000]: E (51197) MQTT_CLIENT: Client has not connected

[D][esp-idf:000]: E (51203) MQTT_CLIENT: Client has not connected

[W][component:214]: Component mqtt took a long time for an operation (0.12 s).
[W][component:215]: Components should block for at most 20-30ms.
[E][mqtt.idf:160]: MQTT_EVENT_ERROR
[E][mqtt.idf:162]: Last error code reported from esp-tls: 0x8008
[E][mqtt.idf:163]: Last tls stack error number: 0x0
[E][mqtt.idf:165]: Last captured errno : 0 (Success)
[E][mqtt.idf:160]: MQTT_EVENT_ERROR
[E][mqtt.idf:162]: Last error code reported from esp-tls: 0x0
[E][mqtt.idf:163]: Last tls stack error number: 0x0
[E][mqtt.idf:165]: Last captured errno : 104 (Connection reset by peer)
[W][mqtt:323]: MQTT Disconnected: TCP disconnected.
[I][mqtt:234]: Connecting to MQTT...
[W][mqtt:323]: MQTT Disconnected: TCP disconnected.
[I][mqtt:234]: Connecting to MQTT...
[D][sensor:094]: 'WiFi Signal dB': Sending state -48.00000 dBm with 0 decimals of accuracy
[D][mbus:034]: Processing T1 A frame

Jakiś skrót myślowy bo dla mnie ESP to “tani i niezwykle popularny układ pozwalający na budowę urządzeń komunikujących się przez WiFi” :slight_smile:
Poszukaj w internecie co oznacza błąd:

MQTT_CLIENT: mqtt_message_receive: transport_read() error: errno=128
2 polubienia

Tak, skrót myślowy. ESP 32 z wgranym kodem pod odczyt liczników za pomocą wmbus… komunikuje się z mosquitto brokerem.
Sprawa wygląda następująco. Po jakiejkolwiek zmianie w NR i zrobieniu deploy na podstawione debug’i wpadają ostatnie dane jakie zostały zgłoszone wcześniej (jak została nawiązana komunikacja). Natomiast randomowo czasami komunikacja załapie i jak gdyby nigdy nic wysyła poprawie dane z liczników wody. Natomiast w przypadku restartu ESP np. brak prądu już niestety nie zawsze komunikacja wstanie.

Zacząłem szukać po tym błędzie co napisałeś, aczkolwiek nic trafnego nie znalazłem. Ponadto zacząłem zgłębiać temat sieci LAN i znalazłem alerty o blokowaniu pakietów co 10 min - to by mogło mieć powiązanie z tą bramką, gdyż wcześniej alertów brak, dopiero po uruchomieniu tego urządzenia te alerty zapisały się w logach sieciowych.

Czy to wina zapory sieciowej?

Znów można się domyślać, że chodzi o ESPHome, może (?) :wink:

Zapory która stoi między ESP32 a Mosquitto brokerem? Wg mnie urządzenia IoT powinne być w tej samej podsieci co broker MQTT wtedy nie ma problemu z komunikacją, ograniczać należy tylko ruch do sieci IoT i z sieci IoT do internetu.