Urządzenia MQTT mogą już korzystać z urządzeń podrzędnych, czyli modelu, który Home Assistant wprowadził dla produktów złożonych z kilku części. Zmiana autorstwa Jana Bouwhuisa, scalona z gałęzią rozwojową 26 października 2026, dodaje encjom MQTT opcję child_device. Poprawka uzupełniająca, scalona tego samego wieczoru, jest już przypisana do wersji beta 2026.11.

Co się zmienia na przykładzie listwy zasilającej

Weźmy listwę z osobno włączanymi gniazdami i pomiarem mocy dla całości. Do tej pory w MQTT można było zebrać wszystko na jednym urządzeniu albo utworzyć osobne urządzenie dla każdego gniazda i powiązać je z listwą przez via_device. Teraz listwa jest urządzeniem nadrzędnym, a każde gniazdo urządzeniem podrzędnym, na przykład „Outlet 1”. Producent i model zostają przy listwie, a urządzenie podrzędne ma tylko identyfikatory i nazwę. Obowiązują te same zasady co w innych integracjach: urządzenie podrzędne trafia do obszaru rodzica, dopóki go nie przeniesiesz, a usunięcie rodzica usuwa też jego urządzenia podrzędne.

Trzy sposoby konfiguracji

  • W YAML i przy wykrywaniu pojedynczych komponentów dodajesz sekcję child_device (w skrócie cdev) wewnątrz bloku device encji. Urządzenie z device staje się rodzicem, a encja trafia do urządzenia podrzędnego. Urządzenie podrzędne przyjmuje tylko wymagane identifiers oraz name.
  • Przy wykrywaniu całych urządzeń komunikat w temacie homeassistant/device/<id>/config dostaje listę child_devices (cdevs). Każde urządzenie podrzędne ma własne identyfikatory, nazwę i components (cmps), a encje samego rodzica zostają w głównym components. Identyfikatory komponentów muszą być unikalne w obrębie rodzica i wszystkich jego urządzeń podrzędnych, a identyfikatory urządzenia podrzędnego muszą się różnić od identyfikatorów rodzica.
  • Encja z urządzeniem podrzędnym musi mieć unique_id. Bez niego Home Assistant pomija cały blok device encji. Tę zmianę niezgodną wstecz scalono osobno, również do wersji 2026.11.

Wyzwalacze urządzeń i tagi nie obsługują urządzeń podrzędnych.

Co warto wiedzieć o działaniu

Gdy komunikat wykrywania zmienia urządzenie encji, z urządzeniem podrzędnym lub bez, encja od razu przechodzi do nowego urządzenia, a Home Assistant sprząta stare, jeśli nic innego z niego nie korzysta. Wcześniej przeniesienie następowało dopiero po przeładowaniu albo restarcie. Rodzica, który ma jeszcze urządzenia podrzędne, to sprzątanie nie usuwa. Znika on dopiero razem z ostatnim z nich.

Usunięcie urządzenia podrzędnego w Home Assistancie nie czyści tematu wykrywania, bo to skasowałoby też rodzica i pozostałe urządzenia podrzędne. Home Assistant zapisuje ostrzeżenie w dzienniku, a urządzenie wraca z następnym komunikatem wykrywania, chyba że mostek publikujący dane usunie je z treści. Usunięcie rodzica nadal czyści temat.

Jeśli jako urządzenie podrzędne posłuży istniejące urządzenie o tych samych identyfikatorach, rejestr urządzeń je przekształci i zachowa jego identyfikator, więc automatyzacje, które na nie wskazują, dalej będą działać.

Poprawka uzupełniająca usuwa dwa przypadki brzegowe. Usunięcie bloku device w komunikacie wykrywania od razu odłącza encję od urządzenia, a komponent, który nie jest słownikiem, na przykład "cmps": {"sw": null}, wywołuje teraz zwykłe ostrzeżenie o błędnym komunikacie zamiast błędu TypeError. Zmiana w dokumentacji 27 października wciąż czekała na scalenie.