Restart kontenera Home Assistant może sprawić, że system przez chwilę będzie wyglądał inaczej, nawet gdy trwała konfiguracja pozostaje całkowicie nienaruszona. Powodem jest to, że działająca instancja zawiera zarówno trwały stan zapisany na dysku, jak i tymczasowy stan środowiska uruchomieniowego przechowywany w pamięci. Restart kontenera usuwa ten drugi i wymusza na integracjach jego odbudowanie.
Dlatego encja może przejść przez stan unknown lub unavailable, urządzenie MQTT może pojawić się ponownie zaraz po nadejściu zachowanych wiadomości, a zewnętrzna usługa może pozostać niedostępna do czasu pomyślnego ponowienia próby. Restart to zdarzenie rekonstrukcji stanu, a nie zwykłe wstrzymanie i wznowienie tego samego procesu działającego w pamięci.
Środowisko uruchomieniowe kontenera można zastąpić; /config to trwała granica
Home Assistant Container zwykle obsługuje się przez ponowne utworzenie kontenera na podstawie obrazu, przy zachowaniu zamontowanego katalogu konfiguracji. Aktualizacja obrazu, zmiana środowiska uruchomieniowego lub ponowne uruchomienie procesu nie powinny wymagać tworzenia całego gospodarstwa domowego od podstaw, jeśli ścieżka trwałego przechowywania pozostaje prawidłowo podłączona.
Obecny proces pracy z Home Assistant Container wyraźnie zakłada ponowne utworzenie kontenera przy zmianie wersji. Ten model działa, ponieważ zakłada się, że stan aplikacji przetrwa poza nietrwałym środowiskiem uruchomieniowym.
Wszystko, co istnieje wyłącznie w pamięci procesu, znika podczas restartu. Nowy proces musi ponownie odczytać konfigurację, rejestry, bazy danych i dane wejściowe integracji, zanim odtworzy ten sam bieżący widok.
Core uruchamia nową maszynę stanów środowiska
Przy każdym uruchomieniu Home Assistant tworzy nowy proces Core z nową pętlą zdarzeń, maszyną stanów, usługami, zegarami i obiektami środowiska uruchomieniowego integracji. Rejestr encji może identyfikować znane encje, ale bieżąca wartość fizycznego urządzenia nadal musi zostać przywrócona, pobrana lub zgłoszona.
Recorder również tworzy nowe uruchomienie rejestratora za każdym razem, gdy uruchamia się Home Assistant. Wiersze historyczne w bazie danych pozostają zachowane, ale bieżący proces działa w nowym przedziale środowiska uruchomieniowego, a nie jako kontynuacja poprzedniego.
To rozróżnienie ma znaczenie podczas porównywania logów lub znaczników czasu w bazie danych w okolicach restartu. Rekord historii potwierdza, co Home Assistant wcześniej zaobserwował, ale nie dowodzi automatycznie, że nowy proces ponownie ustanowił już bieżące połączenie z urządzeniem.
Integracje odbudowują stan środowiska uruchomieniowego z różną szybkością
Niektóre integracje natychmiast łączą się ponownie z lokalnym urządzeniem. Inne czekają na DNS, brokera, interfejs API w chmurze, most radiowy lub inny kontener. Dlatego ich encje stają się dostępne w różnym czasie, mimo że sam Home Assistant Core już działa.
Obecny model Home Assistant dotyczący błędów konfiguracji wymaga, aby tymczasowo niedostępne integracje przechodziły na ścieżkę ponawiania prób, aby mogły odzyskać działanie, gdy urządzenie lub usługa staną się osiągalne. Oznacza to, że widoczny stan po restarcie może zmieniać się przez kilka minut, bez wskazywania na zmianę trwałych danych.
Drugi restart, wykonany gdy wszystkie zależności są już rozgrzane, może wyglądać znacznie szybciej niż restart całego stosu, ponieważ sieć, broker, baza danych i urządzenia nie muszą ponownie osiągać spójności w tym samym czasie.
MQTT sprawia, że rekonstrukcja stanu jest szczególnie widoczna
MQTT jest dobrym przykładem, ponieważ broker może niezależnie od procesu Home Assistant przechowywać wiadomości wykrywania lub stanu. Gdy Home Assistant ponownie się łączy, zachowane dane mogą zostać odtworzone, a encje mogą szybko odzyskać ostatnią zgłoszoną wartość.
Dokumentacja integracji MQTT informuje, że wykryte encje są niedostępne po restarcie do czasu przetworzenia wykrywania, natomiast zachowane wiadomości wykrywania i zachowane wiadomości stanu mogą zostać odtworzone podczas odbudowy subskrypcji. Home Assistant wysyła również wiadomość Birth, której urządzenia mogą użyć do ponownej publikacji informacji o wykrywaniu i świeżego stanu.
Zachowana wartość nadal jest tylko ostatnim znanym raportem, a nie dowodem, że fizyczne urządzenie jest obecnie osiągalne. Tematy dostępności i świeże dane telemetryczne należy oceniać osobno.
Zachowanie podczas restartu zależy od miejsca przechowywania źródła prawdy
- Trwała konfiguracja i rejestry: są ponownie odczytywane z trwałego magazynu Home Assistant.
- Bieżący stan urządzenia: jest często ponownie pobierany lub zgłaszany przez integrację.
- Stan MQTT: może zostać odbudowany z zachowanych wiadomości lub nowych publikacji.
- Stan oparty na chmurze: zależy od łączności ze zdalnym interfejsem API i poprawności danych uwierzytelniających.
- Stan historyczny: pozostaje w Recorder, ale nie jest tym samym co stan bieżący.
- Czysto środowiskowe obiekty uruchomieniowe: są odtwarzane przez nowy proces Home Assistant.
Wyjaśnienie ZimaSpace dotyczące stanu MQTT po restarcie pokazuje jedną konkretną ścieżkę rekonstrukcji. Szersza zasada mówi, że zachowanie podczas restartu zależy od miejsca przechowywania źródła prawdy każdego komponentu.
FAQ
Czy restart kontenera Home Assistant usuwa historię?
Nie, o ile trwała konfiguracja i baza danych Recorder są prawidłowo zamontowane. Restart zastępuje proces środowiska uruchomieniowego, natomiast dane historyczne pozostają w trwałej bazie danych.
Dlaczego encja może natychmiast po restarcie pokazywać starą wartość?
Wartość może pochodzić z mechanizmu przywracania Home Assistant, pamięci podręcznej integracji, zachowanego stanu MQTT lub natychmiastowego odpytywania urządzenia. Przed uznaniem wyświetlanej wartości za świeży odczyt fizyczny sprawdź integrację i ścieżkę dostępności.
Centrum Technologii i Sztucznej Inteligencji
Więcej do przeczytania

Stan bieżący a stan trwały w Home Assistant: co musi przetrwać ponowne uruchomienie?
Home Assistant nie zachowuje trwale każdej bieżącej wartości; konfiguracja, rejestry, wybrane przywracane stany, historia i dane wdrożeniowe pełnią różne funkcje podczas ponownego uruchamiania.

Jak Home Assistant uwierzytelnia sesje lokalne i zdalne?
Lokalne i zdalne sesje Home Assistant korzystają z tego samego modelu tożsamości po stronie serwera; zdalny dostęp zmienia trasę i granicę TLS, ale nie...

Dlaczego zapytania do historii Home Assistant mogą zwalniać w miarę przyrostu danych rejestratora?
Wzrost liczby rekordów może zwiększyć koszt zapytań do historii, gdy żądany zakres obejmuje więcej wierszy, rośnie liczba chybień pamięci podręcznej lub operacje na pamięci...

