Przy wykrywaniu całych urządzeń w MQTT („device discovery”) urządzenie albo program opisuje wszystkie swoje komponenty w jednej zachowanej wiadomości („retained”) w jednym temacie: homeassistant/device/<device_id>/config. To wygodne, ale do tej pory miało przykry skutek uboczny. W kilku sytuacjach usunięcie jednego komponentu sprawiało, że Home Assistant czyścił zachowaną wiadomość urządzenia, a razem z nią znikały wszystkie pozostałe encje. Jan Bouwhuis naprawił to w zmianie #186084 w repozytorium Core. Poprawka trafiła do kodu 14 października 2026 i jest przypisana do wydania 2026.10.2, zaplanowanego na 16 października.

Jak znikało całe urządzenie

Błąd (zgłoszenie #186066) wyszedł na jaw przy programie TeslaMate. Program, który przeszedł na wykrywanie całych urządzeń, sprząta po sobie i wysyła puste wiadomości do starych tematów pojedynczych komponentów, na przykład homeassistant/sensor/<device_id>/<component>/config. Przy włączonych encjach Home Assistant już wcześniej ignorował taką sprzeczną wiadomość. Przy encjach domyślnie wyłączonych kod porządkujący nie sprawdzał jednak, z jakiego tematu przyszła wiadomość. Wyłączona encja wypadała z rejestru encji, a wtedy Home Assistant publikował pustą zachowaną wiadomość w temacie wykrywania tej encji. Przy wykrywaniu całych urządzeń to temat urządzenia, więc znikało całe urządzenie ze wszystkimi komponentami.

Opis zmiany wymienia też inne drogi do tego samego skutku:

  • usunięcie wyłączonego komponentu w sposób opisany w dokumentacji, czyli przez opublikowanie konfiguracji urządzenia, w której dla tego komponentu zostaje tylko opcja platform;
  • skasowanie w Home Assistancie pojedynczej encji takiego urządzenia, na przykład w interfejsie;
  • usuwanie komponentów z konfiguracji urządzenia, aż zostaną same wyłączone, bo wyłączone encje nie podtrzymywały istnienia urządzenia.

Co się zmienia

Pusta wiadomość w innym temacie niż ten, z którego wykryto encję, jest teraz ignorowana, a w dzienniku pojawia się ostrzeżenie z wyjaśnieniem, jak poprawnie usunąć komponent. Po usunięciu encji z rejestru Home Assistant czyści temat urządzenia tylko wtedy, gdy znika też samo urządzenie. Urządzenie zostaje, dopóki ma włączoną encję albo wyłączoną encję pochodzącą z wykrywania całego urządzenia. Wyłączone encje można aktualizować wyłącznie przez ich własny temat wykrywania, tak samo jak encje aktywne.

Do jednego trzeba się przyzwyczaić. Home Assistant nie potrafi wyciąć jednego komponentu z zachowanej wiadomości urządzenia, więc encja skasowana w interfejsie wróci, gdy urządzenie albo program ponownie opublikuje konfigurację. Żeby pozbyć się jej na dobre, wyłącz ją albo usuń komponent z konfiguracji wykrywania u źródła. Wszystko nadal znika po usunięciu całego urządzenia albo po wysłaniu pustej wiadomości w temacie urządzenia. Te zasady opisuje osobna zmiana w dokumentacji (#49165).

Dopóki nie masz wersji z poprawką, nie kasuj pojedynczych encji urządzeń wykrytych w ten sposób. Opis zmiany wymienia to wprost jako jedną z dróg do utraty całego urządzenia.