Il riavvio di un container Home Assistant può far apparire il sistema temporaneamente diverso anche quando la configurazione persistente è perfettamente intatta. Il motivo è che un'istanza in esecuzione contiene sia stato persistente su disco sia stato runtime temporaneo in memoria. Il riavvio del container elimina quest'ultimo e chiede alle integrazioni di ricostruirlo.
Per questo un'entità può passare attraverso unknown o unavailable, un dispositivo MQTT può ricomparire non appena arrivano i messaggi conservati e un servizio esterno può rimanere assente finché il tentativo di riconnessione non va a buon fine. Il riavvio è un evento di ricostruzione dello stato, non una semplice pausa e ripresa dello stesso processo in memoria.
Il runtime del container è sostituibile; /config è il confine della persistenza
Home Assistant Container viene normalmente utilizzato ricreando l'immagine del container e mantenendo il volume di configurazione. L'aggiornamento dell'immagine, la modifica del runtime o il riavvio del processo non dovrebbero richiedere di ricostruire l'intera configurazione domestica da zero, se il percorso persistente rimane collegato correttamente.
Il flusso di lavoro attuale di Home Assistant Container ricrea esplicitamente il container quando si cambiano le versioni. Questo modello funziona perché lo stato dell'applicazione deve sopravvivere al di fuori del runtime temporaneo.
Tutto ciò che esiste solo nella memoria del processo scompare al riavvio. Il processo successivo deve rileggere configurazione, registri, database e input delle integrazioni prima di poter ricreare la stessa visualizzazione live.
Core avvia una nuova macchina a stati runtime
A ogni avvio, Home Assistant crea un nuovo processo Core con un nuovo event loop, una nuova macchina a stati, servizi, timer e oggetti runtime delle integrazioni. Il registro delle entità può identificare le entità conosciute, ma il valore corrente di un dispositivo fisico deve comunque essere ripristinato, recuperato o segnalato.
Recorder crea inoltre una nuova esecuzione di Recorder ogni volta che Home Assistant si avvia. Le righe storiche del database persistono, ma il processo corrente rappresenta un nuovo intervallo runtime, non la continuazione di quello precedente.
Questa distinzione è importante quando si confrontano i log o i timestamp del database intorno a un riavvio. Un record storico dimostra ciò che Home Assistant aveva osservato in precedenza; non dimostra automaticamente che il nuovo processo abbia già ristabilito la connessione live con il dispositivo.
Le integrazioni ripopolano lo stato runtime a velocità diverse
Alcune integrazioni si riconnettono immediatamente a un dispositivo locale. Altre attendono il DNS, un broker, un'API cloud, un bridge radio o un altro container. Di conseguenza, le relative entità diventano disponibili in momenti diversi, anche se Home Assistant Core è già in esecuzione.
L'attuale modello di Home Assistant per gli errori di configurazione richiede che le integrazioni temporaneamente non disponibili seguano un percorso di nuovo tentativo per poter recuperare quando il dispositivo o il servizio diventano raggiungibili. Ciò significa che lo stato visibile dopo un riavvio può evolvere per diversi minuti senza indicare che i dati persistenti siano cambiati.
Un secondo riavvio, eseguito quando tutte le dipendenze sono già operative, può sembrare molto più rapido di un riavvio completo dello stack, perché rete, broker, database e dispositivi non devono più sincronizzarsi contemporaneamente.
MQTT rende particolarmente evidente la ricostruzione dello stato
MQTT è un esempio utile perché il broker può conservare i messaggi di discovery o di stato indipendentemente dal processo di Home Assistant. Quando Home Assistant si riconnette, i dati conservati possono essere riprodotti e le entità possono recuperare rapidamente l'ultimo valore segnalato.
L'integrazione MQTT documenta che le entità scoperte non sono disponibili dopo un riavvio finché la discovery non viene elaborata, mentre i messaggi conservati di discovery e di stato possono essere riprodotti durante la ricostruzione delle sottoscrizioni. Home Assistant invia inoltre un messaggio Birth che i dispositivi possono utilizzare per ripubblicare la discovery e lo stato aggiornato.
Un valore conservato rappresenta comunque l'ultima segnalazione conosciuta, non la prova che il dispositivo fisico sia attualmente raggiungibile. I topic di disponibilità e la telemetria aggiornata devono essere valutati separatamente.
Il comportamento al riavvio dipende da dove si trova la fonte della verità
- Configurazione persistente e registri: riletti dallo spazio di archiviazione persistente di Home Assistant.
- Stato corrente del dispositivo: spesso recuperato o segnalato nuovamente da un'integrazione.
- Stato MQTT: può essere ricostruito da messaggi conservati o da nuove pubblicazioni.
- Stato basato sul cloud: dipende dalla connettività all'API remota e dalle credenziali.
- Stato storico: rimane in Recorder, ma non coincide con lo stato live.
- Oggetti esclusivamente runtime: vengono ricreati dal nuovo processo di Home Assistant.
La spiegazione di ZimaSpace sullo stato MQTT dopo un riavvio mostra uno specifico percorso di ricostruzione. La regola generale è che il comportamento al riavvio segue la posizione della fonte della verità di ciascun componente.
Domande frequenti
Il riavvio del container Home Assistant elimina la cronologia?
No, se la configurazione persistente e il database di Recorder sono montati correttamente. Il riavvio sostituisce il processo runtime; i dati storici rimangono nel database persistente.
Perché un'entità può mostrare immediatamente il valore precedente al riavvio?
Il valore può provenire da un meccanismo di ripristino di Home Assistant, dalla cache di un'integrazione, da uno stato MQTT conservato o da un'interrogazione immediata del dispositivo. Verifica l'integrazione e il percorso di disponibilità prima di considerare il valore visualizzato come una lettura fisica aggiornata.
Hub Tecnologico e AI
Altro da leggere

Stato di runtime vs stato persistente in Home Assistant: cosa deve sopravvivere al riavvio?
Home Assistant non conserva ogni valore in tempo reale; la configurazione, i registri, gli stati selezionati ripristinati, la cronologia e i dati di distribuzione...

Come autentica Home Assistant le sessioni locali e remote?
Le sessioni Home Assistant locali e remote utilizzano lo stesso modello di identità lato server; l'accesso remoto modifica il percorso e il confine TLS,...

Perché le query della cronologia di Home Assistant possono rallentare man mano che crescono i dati del Recorder?
La crescita del registratore può aumentare il costo delle query della cronologia quando l’intervallo richiesto coinvolge più righe, aumentano i cache miss o le...

