De “state” van Home Assistant is niet één ding. Het actieve proces heeft een State Machine in het geheugen die weergeeft wat entiteiten nu rapporteren, terwijl persistente configuratie en registers aangeven wat er na een herstart zou moeten bestaan. Recorder bewaart historische waarnemingen, en bepaalde entiteitsplatforms kunnen waarden specifiek opslaan zodat ze later kunnen worden hersteld.
Een betrouwbare implementatie probeert daarom niet elk tijdelijk object in het geheugen te serialiseren. In plaats daarvan bewaart deze de duurzame bronnen van waarheid en laat hij het nieuwe proces de actieve status opnieuw opbouwen vanuit integraties, registers, herstelde waarden en nieuwe apparaatrapportages.
De State Machine is een runtimeweergave van de huidige wereld
Home Assistant Core bewaart de actuele entiteitsstatussen in zijn State Machine en genereert gebeurtenissen wanneer die statussen veranderen. Deze actuele weergave hoort bij het actieve Core-proces.
De architectuurdocumentatie van Core beschrijft de State Machine als het onderdeel dat actuele statussen bijhoudt en state_changed-gebeurtenissen activeert. De Event Bus, Service Registry en Timer zijn runtimeonderdelen eromheen.
Na een herstart wordt de State Machine opnieuw gevuld. Een apparaat dat nog geen verbinding heeft gemaakt, kan daardoor niet beschikbaar zijn, terwijl de oude waarnemingen veilig in Recorder opgeslagen blijven.
Entiteitsregisters bewaren identiteit, niet de actuele apparaatwaarheid
Home Assistant moet dezelfde entiteit na herstarts kunnen herkennen, zodat aanpassingen door gebruikers, entiteits-ID's, namen, ruimtes en andere instellingen niet telkens verdwijnen wanneer een integratie opnieuw verbinding maakt.
Het entiteitsregister bestaat omdat Home Assistant een duurzame entiteitsidentiteit over herstarts heen nodig heeft om aanpassingen te behouden en bekende entiteiten te volgen. Een vermelding in dat register betekent niet dat de huidige sensorwaarde na het opstarten automatisch actueel is.
Zie identiteit en actuele waarde als afzonderlijke records: het register beantwoordt de vraag “welke entiteit is dit?”, terwijl de integratie antwoordt op “wat rapporteert deze nu?”
Sommige entiteitswaarden worden bewust opgeslagen voor herstel
Bepaalde entiteiten, vooral helpers en stateful software-entiteiten, hebben er baat bij dat hun vorige waarde wordt hersteld voordat er een nieuwe externe waarneming beschikbaar is. Home Assistant heeft hiervoor een speciaal persistent statuscheckpoint.
Dit is selectieve persistentie. Het moet niet worden verward met het voor altijd als gezaghebbend beschouwen van elke fysieke apparaatstatus. Een herstelde waarde kan tijdens het opstarten nuttig zijn, maar een integratie moet alsnog naar de actuele apparaatwaarheid convergeren zodra die beschikbaar is.
Recorder bewaart waarnemingen, niet het actieve proces
Recorder slaat statuswijzigingen en gebeurtenissen op voor historische weergaven, analyses en statistieken. Deze database kan vele herstarts van Home Assistant overleven, terwijl de runtime-State Machine telkens opnieuw wordt aangemaakt.
Een geschiedenisquery die antwoord geeft op de vraag “wat was de temperatuur om 15.00 uur?” hoort bij historische persistentie. Een live automatisering die vraagt “staat de deur nu open?” is afhankelijk van de actuele runtimestatus en het integratiepad.
Dit onderscheid verklaart waarom het verwijderen of beschadigen van Recorder de geschiedenis kan verwijderen zonder noodzakelijkerwijs automatiseringen, gebruikers en integratieconfiguratie te wissen, terwijl het verlies van de configuratiemap identiteit en configuratie kan vernietigen, zelfs als er nog een oude geschiedenisdatabase bestaat.
De implementatie moet de bestanden bewaren die deze lagen opnieuw opbouwen
Een containerimplementatie van Home Assistant voegt nog een grens toe: de runtime-image kan worden vervangen, terwijl de configuratiekoppeling en externe afhankelijkheden buiten de image moeten blijven bestaan. De koppeling moet de Home Assistant-configuratie, registeropslag, verwijzingen naar geheimen en de database behouden als Recorder lokaal wordt gebruikt.
Het ZimaSpace-artikel over persistente gegevensrollen in Home Assistant behandelt de reikwijdte van herstel. Het onderscheid tussen runtime en persistentie verklaart waarom deze bestanden belangrijk zijn: ze vormen de invoer waarmee het volgende proces het huishouden opnieuw opbouwt.
Gebruik de persistentielaag die bij de rol van de status past
| Statusrol | Waar deze zich bevindt | Wat er na een herstart gebeurt |
|---|---|---|
| Actuele entiteitsstatus | Runtime-State Machine | Opnieuw opgebouwd vanuit integraties/herstel |
| Entiteitsidentiteit/aanpassingen | Persistent register/configuratie | Opnieuw geladen |
| Geselecteerde herstelbare waarden | Persistent statuscheckpoint | Hersteld totdat ze worden vernieuwd |
| Geschiedenis/statistieken | Recorder-database | Blijft historische data |
| Integratieverbindingen/runtimeobjecten | Procesgeheugen | Opnieuw aangemaakt en verbonden |
| Container-image/runtime | Vervangbare implementatielaag | Kan opnieuw worden aangemaakt rond persistente data |
De veilige regel is om de identiteit, configuratie, herstelgegevens en status te bewaren die Home Assistant bewust als duurzaam behandelt. Laat tijdelijke runtimestatus opnieuw worden opgebouwd. Dat levert een duidelijker herstartmodel op dan ervan uitgaan dat elke waarde in het geheugen ongewijzigd moet blijven bestaan.
Tech & AI HUB
Meer om te lezen

Hoe verifieert Home Assistant lokale en externe sessies?
Lokale en externe Home Assistant-sessies gebruiken hetzelfde identiteitsmodel aan de serverzijde; externe toegang verandert de route en de TLS-grens, niet de kern van de...

Waarom kunnen geschiedenisquery's van Home Assistant trager worden naarmate de Recorder-gegevens groeien?
Groei van de recorder kan de kosten van geschiedenisquery's verhogen wanneer het aangevraagde bereik meer rijen omvat, cachemissers toenemen of opslag- en indexbewerkingen trager...

Waarom bouwt Home Assistant na een herstart van de container een andere status op?
Het opnieuw starten van een container betekent niet dat de status verloren gaat: Home Assistant bouwt de runtime-status opnieuw op vanuit persistente configuratie, integraties,...

