21 października 2026 ukazało się zigpy 2.4.0, czyli nowa wersja biblioteki Zigbee, na której działa integracja ZHA w Home Assistancie. Użytkowników ZHA dotyczą dwie zmiany: biblioteka zbiera zapisy do bazy danych i zatwierdza je hurtem, a do tego ma już działającą obsługę Green Power, czyli tej części standardu Zigbee, z której korzystają przełączniki bez baterii. Do Home Assistanta żadna z nich nie trafi, dopóki ZHA nie przejdzie na nowe zigpy. Najnowsze wydanie biblioteki ZHA to 2.3.1 z 9 października.

Rzadsze zapisy do bazy

Do tej pory zigpy zatwierdzało zapis w bazie SQLite niemal po każdym zdarzeniu: po odczycie atrybutu, zmianie stanu czy aktualizacji czasu ostatniej aktywności urządzenia. W ruchliwej sieci z gniazdkami, które bez przerwy raportują pobór mocy, oznaczało to zapis do dziennika SQLite mniej więcej co sekundę.

Wersja 2.4.0 wprowadza ustawienie database_commit_interval, domyślnie 30 sekund. Zapisy wykonują się po kolei jak dawniej, ale zatwierdzenie czeka na upływ tego czasu. Od razu trafiają na dysk tylko zdarzenia, które nie mogą czekać: kopie zapasowe sieci, parowanie i usuwanie urządzeń, zmiany adresów sieciowych i zmiany grup. Przy zamykaniu programu zaległe zmiany też są zapisywane, a wartość 0 przywraca dawne zatwierdzanie po każdym zdarzeniu.

Twórcy uczciwie mówią, ile to kosztuje. Po twardej awarii albo zaniku zasilania może przepaść do 30 sekund danych o atrybutach, ostatniej aktywności i topologii sieci. Parowania i kopii zapasowych to nie dotyczy, bo zapisują się bez opóźnienia. Poprawka w tym samym wydaniu pilnuje też, żeby ponowne odpytanie urządzenia nie wymuszało zatwierdzenia w połowie innego zapisu.

Green Power sześć lat po pierwszej prośbie

Urządzenia Green Power to przełączniki Zigbee zasilane energią samego naciśnięcia przycisku, takie jak Philips Hue Tap. Prośba o ich obsługę w zigpy czeka od marca 2020. Warstwa odczytu (typy ramek i szyfrowanie) trafiła do kodu w lipcu, a wersja 2.4.0 dokłada resztę:

  • menedżer Green Power, który zajmuje się dodawaniem i parowaniem urządzeń oraz obsługą przychodzących pakietów;
  • model urządzenia Green Power i tablicę pośredników;
  • przechwytywanie ramek Green Power w punkcie końcowym 242, w klastrze 0x0021, oraz wywołanie permit_gp, które otwiera dla nich sieć.

Dodane urządzenia Green Power trafiają do bazy SQLite (schemat w wersji 16, nowa tabela gp_devices), więc przetrwają ponowne uruchomienie. Licznik ramek zapisuje się przy każdym naciśnięciu, a nie tylko przy parowaniu, dzięki czemu nadal działa ochrona przed powtórnym wysłaniem przechwyconych pakietów.

W tym wydaniu nie ma jeszcze definicji dla konkretnych urządzeń Green Power, bo cały mechanizm takich definicji jest właśnie przebudowywany. Nie wiadomo też, kiedy ZHA zacznie korzystać z nowego kodu.

Drobniejsze poprawki

  • Jeśli ustawisz lokalną strefę czasową, klaster czasu zacznie podawać początek i koniec czasu letniego oraz przesunięcie. Bez strefy zigpy nie zna dat zmiany czasu i nie ustawia już flagi Master_for_Zone_and_DST.
  • Okresowe skanowanie topologii zatrzymuje się prawidłowo, nawet gdy zamknięcie programu wypadnie w trakcie zaplanowanego skanu.
  • Wyjątek w jednym odbiorniku zdarzeń nie psuje już pozostałych.