Stan bieżący a stan trwały w Home Assistant: co musi przetrwać ponowne uruchomienie?

Eva Wong jest Technicznym pisarzem i stałym majsterkowiczem w ZimaSpace. Całe życie geek z pasją do homelabów i oprogramowania open-source, specjalizuje się w tłumaczeniu skomplikowanych koncepcji technicznych na przystępne, praktyczne przewodniki. Eva wierzy, że samodzielne hostowanie powinno być zabawą, a nie czymś onieśmielającym. Poprzez swoje samouczki umożliwia społeczności rozwiewanie tajemnic konfiguracji sprzętu, od budowy pierwszego NAS po opanowanie kontenerów Docker.

„Stan” w Home Assistant nie oznacza jednej rzeczy. Uruchomiony proces ma działającą w pamięci maszynę stanów, która odzwierciedla bieżące raporty encji, podczas gdy trwała konfiguracja i rejestry określają, co powinno istnieć po ponownym uruchomieniu. Rejestrator przechowuje dane historyczne, a wybrane platformy encji mogą zapisywać wartości specjalnie po to, aby można je było później przywrócić.

Niezawodne wdrożenie nie próbuje więc serializować każdego tymczasowego obiektu znajdującego się w pamięci. Zachowuje trwałe źródła prawdy i pozwala nowemu procesowi odbudować bieżący stan na podstawie integracji, rejestrów, przywróconych wartości oraz aktualnych raportów urządzeń.

Maszyna stanów to widok bieżącego świata dostępny w czasie działania

Home Assistant Core przechowuje bieżące stany encji w swojej maszynie stanów i emituje zdarzenia, gdy te stany się zmieniają. Ten bieżący widok należy do uruchomionego procesu Core.

Dokumentacja architektury Core opisuje maszynę stanów jako komponent, który śledzi bieżące stany i wywołuje zdarzenia state_changed. Wokół niej działają komponenty czasu wykonania, takie jak magistrala zdarzeń, rejestr usług i zegar.

Po ponownym uruchomieniu maszyna stanów jest ponownie wypełniana. Dlatego urządzenie, które jeszcze się nie połączyło, może być niedostępne, nawet jeśli jego wcześniejsze obserwacje są bezpiecznie przechowywane w Rejestratorze.

Rejestry encji przechowują tożsamość, a nie bieżący stan urządzenia

Home Assistant musi rozpoznawać tę samą encję po ponownym uruchomieniu, aby dostosowania użytkownika, identyfikatory encji, nazwy, obszary i inne ustawienia nie znikały za każdym razem, gdy integracja ponownie się łączy.

Rejestr encji istnieje, ponieważ Home Assistant potrzebuje trwałej tożsamości encji między ponownymi uruchomieniami, aby zachowywać dostosowania i śledzić znane encje. Wpis w rejestrze nie oznacza jednak, że bieżący odczyt czujnika jest automatycznie aktualny po uruchomieniu.

Tożsamość i bieżącą wartość należy traktować jako oddzielne rekordy: rejestr odpowiada na pytanie „która to encja?”, a integracja na pytanie „co raportuje teraz?”.

Niektóre wartości encji są celowo zapisywane w celu przywrócenia

Niektóre encje — zwłaszcza pomocniki i stanowe encje programowe — korzystają z przywrócenia poprzedniej wartości, zanim pojawi się nowa obserwacja zewnętrzna. Home Assistant ma dedykowany trwały punkt kontrolny stanu dla tych encji.

Aktualna akcja zapisywania trwałych stanów wyjaśnia, że niektóre encje przywracają ostatnią wartość po ponownym uruchomieniu, a Home Assistant standardowo zapisuje te wartości kontrolnie podczas uruchamiania, co 15 minut oraz podczas zamykania.

Jest to wybiórcza trwałość. Nie należy mylić jej z traktowaniem stanu każdego fizycznego urządzenia jako niezmiennie nadrzędnego źródła prawdy. Przywrócona wartość może być przydatna podczas uruchamiania, ale po udostępnieniu aktualnych danych integracja nadal powinna osiągnąć zgodność z rzeczywistym stanem urządzenia.

-15% OFF

Rejestrator zachowuje obserwacje historyczne, a nie uruchomiony proces

Rejestrator przechowuje zmiany stanów i zdarzenia na potrzeby widoków historycznych, analiz oraz statystyk. Ta baza danych może przetrwać wiele ponownych uruchomień Home Assistant, podczas gdy maszyna stanów czasu wykonania jest za każdym razem tworzona od nowa.

Zapytanie do historii odpowiadające na pytanie „jaka była temperatura o 15:00?” dotyczy trwałości danych historycznych. Bieżąca automatyzacja pytająca „czy drzwi są teraz otwarte?” zależy od aktualnego stanu czasu wykonania i ścieżki integracji.

To rozróżnienie wyjaśnia, dlaczego usunięcie lub uszkodzenie Rejestratora może usunąć historię, ale nie musi wymazać automatyzacji, użytkowników ani konfiguracji integracji, podczas gdy utrata katalogu konfiguracji może zniszczyć tożsamość i konfigurację, nawet jeśli nadal istnieje stara baza danych historii.

Wdrożenie musi zachowywać pliki odtwarzające te warstwy

Konteneryzacja Home Assistant dodaje jeszcze jedną granicę: obraz czasu wykonania można zastąpić, ale podłączony katalog konfiguracji i zewnętrzne zależności muszą przetrwać poza nim. Podłączony katalog powinien zachowywać konfigurację Home Assistant, dane rejestrów, odwołania do sekretów oraz bazę danych, jeśli Rejestrator korzysta z lokalnej bazy.

Artykuł ZimaSpace o rolach trwałych danych Home Assistant omawia zakres odtwarzania. Rozróżnienie między czasem wykonania a trwałością wyjaśnia, dlaczego te pliki są ważne: to dane wejściowe, na podstawie których kolejny proces odtwarza gospodarstwo domowe.

Wybierz warstwę trwałości odpowiednią do roli stanu

Rola stanu Miejsce przechowywania Co dzieje się po ponownym uruchomieniu
Bieżący stan encji Maszyna stanów czasu wykonania Odbudowywany na podstawie integracji/przywracania
Tożsamość i dostosowanie encji Trwały rejestr/konfiguracja Wczytywane ponownie
Wybrane wartości możliwe do przywrócenia Trwały punkt kontrolny stanu Przywracane do czasu odświeżenia
Historia/statystyki Baza danych Rejestratora Pozostają danymi historycznymi
Połączenia integracji/obiekty czasu wykonania Pamięć procesu Tworzone ponownie i ponownie łączone
Obraz kontenera/czas wykonania Wymienialna warstwa wdrożenia Może zostać odtworzony wokół trwałych danych

Bezpieczna zasada mówi, aby zachowywać tożsamość, konfigurację, dane potrzebne do odtwarzania oraz stan, który Home Assistant celowo traktuje jako trwały. Niech tymczasowy stan czasu wykonania zostanie odbudowany. Zapewnia to przejrzystszy model ponownego uruchamiania niż założenie, że każda wartość w pamięci powinna przetrwać bez zmian.

Centrum Technologii i Sztucznej Inteligencji

Więcej do przeczytania

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.