Home Assistant limita i conflitti tra modifiche concorrenti tramite la pianificazione dell’event loop, gli aggiornamenti della macchina a stati, le modalità delle automazioni, il coordinamento delle integrazioni e le scritture transazionali nel database.
Questi meccanismi mantengono coerenti le strutture interne, ma non determinano quale di due intenzioni domestiche valide debba prevalere. Un’automazione basata sul movimento può accendere una lampada mentre un’automazione per l’ora di andare a dormire la spegne, ed entrambe le chiamate al servizio possono essere eseguite correttamente. La coerenza opera quindi su due livelli: Core deve preservare transizioni di stato valide, mentre la configurazione deve definire l’ordine, l’annullamento o la precedenza per le azioni in conflitto.
L’event loop serializza il lavoro critico all’interno del processo
Home Assistant Core utilizza la pianificazione asincrona, consentendo a molte attività di attendere l’I/O senza che ciascuna debba possedere un thread. Il codice eseguito nell’event loop avanza in modo cooperativo, mantenendo ordinate le operazioni centrali sullo stato quando le integrazioni rispettano il contratto asincrono.
Una discussione dettagliata sulla concorrenza in Home Assistant spiega come la serializzazione dell’event loop coordini callback e attività, mentre il codice bloccante deve essere spostato fuori dal loop.
La serializzazione a questo livello impedisce la mutazione simultanea di alcune strutture interne, ma non rende atomica un’intera automazione composta da più passaggi. Un’attività può attendere l’I/O di un dispositivo mentre un’altra attività valida continua ad avanzare.
Le modalità delle automazioni definiscono ammissione e ordine
La modalità singola rifiuta una nuova esecuzione mentre una è attiva; la modalità riavvio annulla l’esecuzione precedente; la modalità accodata conserva l’ordine; la modalità parallela consente la sovrapposizione. Scegliere una modalità è quindi una decisione politica sul significato dei trigger concorrenti per quell’automazione.
Una discussione sulle condizioni di gara che coinvolgono automazioni in conflitto mostra perché le scritture di automazioni in conflitto debbano essere definite in base alla risorsa controllata e alla precedenza desiderata.
La modalità accodata può preservare l’ordine di arrivo all’interno di una singola automazione, ma automazioni separate possono comunque entrare in conflitto. Quando più regole scrivono sulla stessa entità, è necessario concentrare la responsabilità o aggiungere un arbitro esplicito.
Le integrazioni riconciliano lo stato desiderato e quello osservato del dispositivo
Una chiamata al servizio esprime un’azione desiderata, mentre il successivo feedback del dispositivo fornisce lo stato osservato. Le integrazioni possono utilizzare blocchi, coordinatori, aggiornamenti ottimistici, polling o conferme per evitare operazioni di protocollo sovrapposte e riconciliare le differenze.
Gli esempi delle modalità delle automazioni chiariscono come l’esecuzione accodata e quella parallela modifichino l’ordine di esecuzione, ma il protocollo del dispositivo può comunque riordinare o rifiutare i comandi dopo che Core li ha inoltrati.
L’ordine interno non garantisce l’ordine fisico attraverso una connessione radio soggetta a perdite, un servizio cloud o un dispositivo in sospensione. Quando il protocollo lo supporta, il risultato autorevole dovrebbe derivare dallo stato confermato del dispositivo, non soltanto dall’ordine in cui sono state emesse le chiamate al servizio.
Le transazioni proteggono l’archiviazione, non l’intenzione domestica
Le transazioni del Recorder mantengono valide le modifiche correlate al database durante i commit e il ripristino. Proteggono la rappresentazione archiviata dalle scritture parziali, ma la persistenza storica avviene dopo le decisioni sullo stato e non può risolvere comandi contraddittori.
Una guida pratica avverte che la modalità predefinita delle automazioni potrebbe non corrispondere al comportamento desiderato, rafforzando il fatto che la politica sull’intento dell’automazione è separata dalla coerenza del database.
Questo è il limite del guasto: se due regole corrette codificano obiettivi incompatibili, Core può rimanere coerente internamente mentre il dispositivo oscilla. Aggiungete una responsabilità, una precedenza, un periodo di raffreddamento o una macchina a stati condivisa; la configurazione del database non può correggere un’intenzione ambigua.
Testate un conflitto con una pianificazione deterministica
Scegliete un’entità innocua e attivate i percorsi in conflitto a intervalli controllati: simultaneamente, a un secondo di distanza e durante un ritardo deliberato del dispositivo. Acquisite l’ordine delle tracce delle automazioni, le chiamate al servizio, le conferme, gli eventi di stato e lo stato fisico finale.
I confini dall’input al controllo seguono un’automazione locale dagli input al controllo, fornendo i limiti necessari per distinguere l’ordine di Core dalla riconciliazione del dispositivo.
Considerate il test superato solo quando il vincitore dichiarato e lo stato finale del dispositivo coincidono in prove ripetute, inclusi i casi di riavvio e dispositivo non disponibile. Se i risultati variano, assegnate la responsabilità a una sola automazione e indirizzate le altre intenzioni attraverso di essa; non aggiungete ritardi arbitrari finché le tracce non identificano il limite conteso.
Hub Tecnologico e AI
Altro da leggere

Le 10 migliori interfacce web per l’IA locale per home lab nel 2026
Confronta 10 interfacce web AI locali self-hosted per home lab, includendo il supporto a Ollama, RAG, agenti, accesso multiutente, difficoltà di configurazione e casi...

Quanto costa GPT-6 Astra nel tempo? Quando conviene l’IA cloud rispetto all’IA locale
Una guida pratica ai costi di GPT-6 Astra che illustra l’utilizzo dei token, i carichi di lavoro IA a lungo termine, i compromessi tra...

GPT-6 Astra vs IA locale: quali parti di un agente dovrebbero rimanere sul tuo server domestico?
GPT-6 Astra può rimanere nel cloud, mentre il tuo server domestico conserva localmente file, memoria, RAG, strumenti, autorizzazioni e lo stato persistente dell’agente.

