W ESPHome nie dało się dotąd reagować w YAML na ruch przechodzący przez magistralę Modbus. Tę lukę wypełnia nowy blok modbus_monitor. Zmianę #20256 autorstwa Bascht74 scalono z gałęzią rozwojową 27 października 2026 o 02:28 czasu polskiego. Gałąź ma numer 2026.11.0-dev, więc blok powinien się pojawić najpierw w ESPHome 2026.11.
Dwa wyzwalacze
modbus_monitor podpina się pod istniejącą magistralę Modbus przez modbus_id i daje dwie automatyzacje:
on_requesturuchamia się dla każdej ramki, którą magistrala w roli serwera odczyta jako zapytanie, oraz dla każdego zapytania wysłanego przez magistralę w roli klienta, łącznie z rozgłoszeniami i ponowieniami. Dostaje zmienneaddressirequest.on_responseuruchamia się dla każdej odpowiedzi, którą klient otrzyma na swoje zapytanie, oraz dla każdej odpowiedzi, którą serwer wyśle sam albo zobaczy od innego urządzenia na magistrali. Dostajeaddress,requestiresponse.
Nazwy zmiennych są takie same jak w istniejącym wyzwalaczu on_custom_response komponentu modbus_client. Przykład z opisu zmiany zapisuje w dzienniku adres docelowy i kod funkcji każdego zapytania:
modbus_monitor:
- on_request:
- lambda: |-
ESP_LOGD("modbus_monitor", "Request to %u, function 0x%02X", address, request[0]);
Do czego się przyda
Autor wymienia rejestrowanie ruchu na magistrali, liczenie zapytań i reagowanie na zapisy wykonywane przez klienta, na przykład w bramce. ESP32 ustawiony jako serwer Modbus może na przykład przez on_request zauważyć, że urządzenie po drugiej stronie zapisało rejestr, bez osobnego podsłuchu na linii.
Ograniczenia
W tych automatyzacjach nie wolno używać akcji, które czekają, takich jak delay czy wait_until. Dane zapytania i odpowiedzi są ważne tylko w trakcie obsługi, więc automatyzacja musi skończyć się od razu. Tę samą magistralę może obserwować kilka bloków. Bez żadnego bloku w konfiguracji nic dodatkowego się nie kompiluje.
Jeśli magistrala w roli serwera ma on_response, ESPHome przechowuje ostatnie zapytanie, żeby przekazać je razem z odpowiedzią. Kosztuje to 254 bajty pamięci RAM na każdą taką magistralę. Serwer kopiuje też teraz całe zapytanie, żeby automatyzacja mogła je odczytać.
Dokumentację scalono już w zmianie #7535 serwisu esphome.io. Osobna propozycja pasywnego podsłuchu Modbus RTU, #19450, podpinała się do magistrali w ten sam sposób, ale zamknięto ją bez scalenia.