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_request uruchamia 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 zmienne address i request.
  • on_response uruchamia 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. Dostaje address, request i response.

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.