Waarom bouwt Home Assistant na een herstart van de container een andere status op?

Eva Wong is de Technisch Schrijver en en vaste knutselaar bij ZimaSpace. Een levenslange geek met een passie voor homelabs en open-source software, zij is gespecialiseerd in het vertalen van complexe technische concepten naar toegankelijke, praktische handleidingen. Eva gelooft dat zelf-hosting leuk moet zijn, niet intimiderend. Met haar tutorials stelt ze de community in staat om hardware-setup te ontrafelen, van het bouwen van hun eerste NAS tot het beheersen van Docker-containers.

Een herstart van een Home Assistant-container kan ervoor zorgen dat het systeem er kortstondig anders uitziet, zelfs wanneer de persistente configuratie volledig intact is. De reden is dat een draaiende instantie zowel duurzame status op schijf als tijdelijke runtime-status in het geheugen bevat. Bij het herstarten van de container wordt die laatste vernietigd en moeten integraties deze opnieuw opbouwen.

Daarom kan een entiteit tijdelijk de status unknown of unavailable krijgen, kan een MQTT-apparaat weer verschijnen zodra retained berichten binnenkomen en kan een externe service ontbreken totdat een nieuwe verbindingspoging slaagt. De herstart is een gebeurtenis waarbij de status opnieuw wordt opgebouwd, niet simpelweg een pauze en hervatting van hetzelfde proces in het geheugen.

De containerruntime is vervangbaar; /config is de duurzame grens

Home Assistant Container wordt normaal gesproken beheerd door de containerimage opnieuw te maken terwijl de configuratiekoppeling behouden blijft. Het bijwerken van de image, het wijzigen van de runtime of het herstarten van het proces zou niet moeten vereisen dat je het huishouden helemaal opnieuw opbouwt, zolang het persistente pad correct gekoppeld blijft.

De huidige workflow voor Home Assistant Container maakt de container expliciet opnieuw wanneer versies worden gewijzigd. Dat model werkt omdat wordt verwacht dat de applicatiestatus buiten de wegwerpbare runtime blijft bestaan.

Alles wat alleen in het procesgeheugen bestaat, verdwijnt bij een herstart. Het volgende proces moet configuratie, registers, databases en integratie-invoer opnieuw inlezen voordat het dezelfde liveweergave kan reconstrueren.

Core start een nieuwe runtime-statusmachine

Bij elke start bouwt Home Assistant een nieuw Core-proces op met een nieuwe eventloop, statusmachine, services, timers en runtime-objecten voor integraties. Het entiteitenregister kan bekende entiteiten identificeren, maar de huidige waarde van een fysiek apparaat moet nog steeds worden hersteld, opgehaald of gemeld.

Recorder maakt ook bij elke start van Home Assistant een nieuwe recorder-run. Historische databaseregels blijven bestaan, maar het huidige proces vormt een nieuw runtime-interval en is geen voortzetting van het oude.

Dit onderscheid is belangrijk bij het vergelijken van logboeken of databasetijdstempels rond een herstart. Een geschiedenisrecord bewijst wat Home Assistant eerder heeft waargenomen; het bewijst niet automatisch dat het nieuwe proces de liveverbinding met het apparaat al opnieuw tot stand heeft gebracht.

Integraties vullen de runtime-status met verschillende snelheden opnieuw

Sommige integraties maken onmiddellijk opnieuw verbinding met een lokaal apparaat. Andere wachten op DNS, een broker, een cloud-API, een radioverbinding of een andere container. Daardoor worden hun entiteiten op verschillende momenten beschikbaar, ook al draait Home Assistant Core al.

Het huidige model voor mislukte setup van Home Assistant vereist dat tijdelijk niet-beschikbare integraties een retrytraject volgen zodat ze kunnen herstellen wanneer het apparaat of de service bereikbaar wordt. Dat betekent dat de zichtbare status na een herstart minutenlang kan veranderen zonder dat dit erop wijst dat persistente gegevens zijn gewijzigd.

Een tweede herstart nadat elke afhankelijkheid al actief is, kan veel sneller lijken dan een volledige herstart van de stack, omdat het netwerk, de broker, de database en de apparaten niet allemaal tegelijkertijd opnieuw hoeven te synchroniseren.

MQTT maakt het opnieuw opbouwen van de status bijzonder zichtbaar

MQTT is een nuttig voorbeeld, omdat de broker discovery- of statusberichten onafhankelijk van het Home Assistant-proces kan bewaren. Wanneer Home Assistant opnieuw verbinding maakt, kunnen retained gegevens opnieuw worden afgespeeld en kunnen entiteiten snel weer hun laatst gemelde waarde krijgen.

De MQTT-integratie documenteert dat ontdekte entiteiten na een herstart niet beschikbaar zijn totdat discovery is verwerkt, terwijl retained discovery- en statusberichten opnieuw kunnen worden afgespeeld wanneer abonnementen opnieuw worden opgebouwd. Home Assistant verstuurt ook een Birth-bericht dat apparaten kunnen gebruiken om discovery en actuele status opnieuw te publiceren.

Een retained waarde is nog steeds een laatst bekende melding en geen bewijs dat het fysieke apparaat momenteel bereikbaar is. Beschikbaarheidstopics en actuele telemetrie moeten afzonderlijk worden beoordeeld.

Het gedrag na een herstart hangt af van waar de bron van waarheid zich bevindt

  • Persistente configuratie en registers: opnieuw ingelezen uit duurzame Home Assistant-opslag.
  • Huidige apparaatstatus: vaak opnieuw opgehaald of gemeld door een integratie.
  • MQTT-status: kan opnieuw worden opgebouwd uit retained berichten of nieuwe publicaties.
  • Status uit de cloud: afhankelijk van verbinding met de externe API en geldige inloggegevens.
  • Historische status: blijft in Recorder staan, maar is niet hetzelfde als de live-status.
  • Zuivere runtime-objecten: opnieuw aangemaakt door het nieuwe Home Assistant-proces.

De uitleg van ZimaSpace over MQTT-status na een herstart toont één specifiek reconstructiepad. De bredere regel is dat het gedrag na een herstart wordt bepaald door de locatie van de bron van waarheid van elk onderdeel.

Veelgestelde vragen

Verwijdert het herstarten van de Home Assistant-container de geschiedenis?

Nee, niet wanneer de persistente configuratie en de Recorder-database correct zijn gekoppeld. Bij een herstart wordt het runtimeproces vervangen; historische gegevens blijven in de persistente database staan.

Waarom kan een entiteit direct na een herstart haar oude waarde tonen?

De waarde kan afkomstig zijn van een herstelmechanisme van Home Assistant, een cache van de integratie, een retained MQTT-status of een directe polling van het apparaat. Controleer de integratie en het beschikbaarheidspad voordat je de weergegeven waarde beschouwt als een actuele fysieke meting.

Tech & AI HUB

Meer om te lezen

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.