23 października 2026 do zigpy/zha, biblioteki, na której działa integracja ZHA w Home Assistancie, trafiły dwie zmiany. Pierwsza zmienia sposób nadawania adresów nowym grupom Zigbee, a druga sprawia, że nieudane tworzenie grupy kończy się czytelnym błędem, zamiast po cichu robić coś innego. Żadnej z nich nie ma jeszcze w wydaniu biblioteki (ostatnie to 2.3.1 z 9 października), więc do Home Assistanta dotrą razem z jej nowszą wersją.

Lampa, która nie wyszła ze starej grupy

Do tej pory ZHA dawał nowej grupie najniższy wolny numer, zaczynając od 2, i celowo zapełniał luki po usuniętych grupach. Wynikały z tego dwa problemy.

Usuwanie urządzenia z grupy odbywa się na zasadzie „jeśli się uda”. Jeżeli żarówka była wyłączona, kiedy kasowałeś grupę, polecenie RemoveGroup do niej nie docierało. ZHA zapisywał to tylko w dzienniku na poziomie debugowania i i tak usuwał grupę. Żarówka zachowywała stary numer w pamięci. Gdy ZHA nadał ten sam numer nowej grupie, żarówka zaczynała reagować na jej polecenia, chociaż nikt jej do niej nie dodał.

Drugi problem dotyczył samego Home Assistanta. Unikalny identyfikator encji grupy ZHA powstaje wyłącznie z numeru grupy, więc nowa grupa z odzyskanym numerem dziedziczyła z rejestru encji identyfikator, nazwę, etykiety i obszar usuniętej grupy. W zgłoszeniu #187377 z 19 października nowo utworzona grupa pojawiła się pod nazwą usuniętej i trafiały do niej polecenia kierowane do etykiet tamtej grupy.

Losowe numery z węższego zakresu

Nowe grupy dostają teraz losowy, nieużywany numer od 0x0100 do 0xfeff. Dolna granica omija zakres używany przez touchlink, który nadaje numery grup po kolei od 0x0001, i numery ustawiane ręcznie, na przykład 0x30, z którego biblioteka zhaquirks korzysta przy niektórych urządzeniach. Numery od 0xff00 w górę są zarezerwowane. Istniejące grupy zachowują swoje numery. Jeśli wpiszesz numer samodzielnie w formularzu dodawania grupy („Add group”), ZHA nadal przyjmie każdy poprawny, także niski albo wcześniej używany.

Autor zaznacza, że ponowne użycie numeru staje się mało prawdopodobne, ale nie niemożliwe, bo zwolniony numer to wciąż jeden z około 65 tysięcy kandydatów. Usunięcie danych starych grup z rejestru Home Assistanta wymaga osobnej poprawki.

Błędy zamiast cichych porażek

Druga zmiana obejmuje pięć sytuacji, w których tworzenie grupy nie robiło tego, o co prosiłeś:

  • przy zajętej nazwie nic nie powstawało, a Home Assistant pokazywał „Unknown error”;
  • przyjmowane były numery spoza poprawnego zakresu 0x0001-0xfff7, na przykład 0, chociaż żadne urządzenie nigdy by do takiej grupy nie dołączyło;
  • zajęty numer powodował dodanie nowych członków do istniejącej grupy;
  • członek, który nie może należeć do grupy, na przykład punkt końcowy bez klastra Groups, był pomijany, a całość kończyła się rzekomym sukcesem;
  • grupa usunięta w trakcie tworzenia była zwracana tak, jakby istniała.

Teraz każdy z tych przypadków kończy się błędem z podaną przyczyną. Interfejs Home Assistanta na razie nadal pokaże „Unknown error”, a wyświetlenie właściwego komunikatu wymaga osobnej zmiany w Core. Członek, który mógłby dołączyć, ale nie odpowiada, na przykład wyłączona żarówka, nadal nie wywołuje błędu.