Chronos: Installazione e problemi comuni
Guida operativa per mettere in piedi Chronos e per orientarsi quando la card sembra funzionare ma uno schedule non parte come dovrebbe.
Per cosa fa l’integrazione, l’architettura e il modello di sicurezza vedi Chronos - Come funziona e sicurezza.
Prerequisiti
- Home Assistant ≥ 2024.1: servono config flow moderno, storage helpers e API WebSocket usate dalla card.
- HACS installato, per l’installazione consigliata. Manuale è possibile ma sconsigliata.
- Almeno un’entità
weather.*configurata (Meteo.it, OpenWeatherMap, Meteorologisk institutt, ecc.) se vuoi usare le regole meteo con attributi standard. In alternativa puoi lasciare vuoto il campo e puntare ogni attributo a un sensore locale (Ecowitt / WeatherFlow / Davis) in Settings. - Le entità che vuoi controllare devono già esistere in Home Assistant: Chronos non aggiunge dispositivi, li orchestra soltanto.
Non serve firmware specifico o hardware Meshtastic: Chronos è software puro dentro HA.
Installazione via HACS
-
HACS → integrations → menu ⋮ → Custom repositories → aggiungi
Pricesswg/Chronos-Schedulercome Integration. -
Cerca “Chronos Scheduler” nella lista HACS, Download.
-
Riavvia Home Assistant.
-
Impostazioni → Dispositivi e servizi → Aggiungi integrazione → Chronos Scheduler.
-
Al primo avvio ti chiede di selezionare l’entità
weather.*da usare come sorgente meteo, o di saltare (puoi cambiare più tardi in Settings). -
Aggiungi la card a una dashboard qualsiasi. Basta il minimo:
type: custom:chronos-cardUna vista Panel (1 card) è la sistemazione naturale, la card occupa tutto lo schermo.
Come viene caricata la card
Chronos serve il bundle JavaScript in due modi per essere il più robusto possibile:
- Copia
chronos-card.jsin<config>/www/chronos-card.js→ disponibile come/local/chronos-card.js. - Chiama
add_extra_js_urlsu/chronos_static/chronos-card.jsall’avvio dell’integrazione, così il frontend carica il modulo anche senza risorsa Lovelace registrata.
Risultato: type: custom:chronos-card funziona in dashboard sia storage che YAML, senza dover aggiungere manualmente una resource.
Dettaglio HACS: quando installi via HACS, HACS registra da solo la resource Lovelace. L’integrazione non la duplica (dalla v1.10.4), per evitare doppioni. Se invece installi manualmente, aggiungi una volta a mano da Impostazioni → Dashboard → Risorse:
url: /local/chronos-card.js
type: moduleCard ausiliaria di stato
Oltre alla card principale c’è custom:chronos-schedule-card, una card non interattiva pensata per il “cruscotto”:
type: custom:chronos-schedule-card
schedule: a1b2c3d4Mostra un riepilogo di un singolo schedule (Now / Next / timeline / status / log). L’id dello schedule si copia dal chip ID nell’editor. Tutte le sezioni sono attivabili singolarmente da “Edit card”.
Dopo un aggiornamento
Chiedi al browser un hard refresh (Cmd+Shift+R su Mac, Ctrl+Shift+R altrove) dopo il riavvio di HA.
Motivo: il codice Python cambia al riavvio, ma il bundle JavaScript della card è cacheato dal browser. Home Assistant continua a servire l’URL vecchio finché non ricarica la pagina. La copia in /config/www serve proprio a evitare 404 durante il ciclo di aggiornamento HACS (che cancella e riscrive la propria cartella).
Se la card resta “unknown element” o non appare la nuova versione, la console del browser stampa la versione effettivamente caricata come CHRONOS-CARD <versione>.
Uno schedule non parte: dove guardare
Chronos mette a disposizione una History screen che è la prima cosa da consultare: mostra tempistica, target, azione, esito e, se qualcosa è andato storto, il messaggio d’errore. È lì il 90% delle risposte.
Livelli di esito:
| Colore | Significato |
|---|---|
| Verde (ok) | Il servizio HA è stato chiamato e ha risposto senza errore |
| Giallo (warning) | Dispatch tentato ma dispositivo offline; Chronos è armato per riprovare |
| Rosso (error) | Fallimento finale, con messaggio d’errore |
Se in History non c’è nulla per l’orario atteso
Significa che Chronos non ha nemmeno provato a eseguire il blocco. Possibili cause:
- Schedule disabilitato: controlla nell’overview che sia attivo, e che
switch.chronos_<schedule>siaon. - Giorno della settimana non incluso: nell’editor c’è la selezione giorni; se lunedì è deselezionato, il lunedì il blocco non parte.
- Fuori dall’intervallo di date annuale: se hai impostato “attivo solo giugno-settembre”, ottobre è fuori.
- Regola meteo che skippa: se una regola con THEN
skipera vera al momento del dispatch, il blocco è saltato silenziosamente. Vedi la History dettagliata: dovrebbe elencare la regola che ha skippato.
Se in History c’è un warning
Il dispositivo era offline al momento del dispatch. Verifica lo stato dell’entità in HA (Sviluppatori → Stati). Chronos riproverà automaticamente al ritorno online, purché il blocco sia ancora attivo. Se il blocco è già passato, la riesecuzione non parte (per design: non ha senso accendere le luci “delle 8” alle 10).
Eccezione: auto-off e chiusure irrigazione: questi vengono comunque eseguiti al ritorno online, anche fuori dal blocco, entro 12h dal dispatch mancato. È la logica “off-late safe”.
Se in History c’è un errore rosso
Il messaggio dice cosa è successo. Casi ricorrenti:
| Messaggio | Cosa significa |
|---|---|
Service X.Y not found | Il servizio HA non esiste (dispositivo rimosso, integrazione disattivata) |
Entity <id> is not a valid entity | L’entità è stata rinominata o cancellata; riassociala nell’editor |
Value X.Y out of range | Il valore forzato dal blocco è fuori dai limiti che il device accetta (es. temperatura > max_temp del termostato) |
Timeout waiting for state change | Il device ha accettato il comando ma non ha aggiornato lo stato entro il timeout |
Altri problemi ricorrenti
Le regole meteo scattano ripetutamente. Il fire mode di default per THEN force è every, che parte ogni volta che la condizione passa da falso a vero. Se il vento oscilla intorno alla soglia, ottieni oscillazioni. Cambia a once_per_day (una volta al giorno, si riarma a mezzanotte) o once_per_daytime / once_per_nighttime a seconda del caso.
Blocco cancellato inaspettatamente dopo aver trascinato un altro blocco. Chronos non fa sovrapposizioni: un blocco trascinato sopra un vicino lo taglia. Un blocco coperto interamente sparisce, uno coperto al centro si spezza in due, spezzoni sotto i 15 minuti vengono droppati. Il taglio è committato solo al rilascio del mouse, finché tieni premuto puoi tornare indietro. Se hai già rilasciato, usa Ctrl+Z della card se disponibile, o ricrea il blocco.
Multi-device schedule dove una parte dei device non risponde. Ogni blocco può avere un sottoinsieme dei device dello schedule. Verifica in dettaglio del blocco quali entità sono selezionate: forse quel device è escluso da quel blocco specifico.
Cambio vista (Linear → Radial → List) non salva le modifiche. Le tre viste sono tre rappresentazioni della stessa cosa: cambiare vista non modifica il piano. La vista scelta è però ricordata per schedule, non globalmente. Se apri sempre lo stesso schedule in Linear, ce lo trovi anche dopo un cambio.
La weather map non mostra layer temperatura/vento. Servono le tile di OpenWeatherMap, che richiedono una API key personale. Chiave gratuita ma può richiedere qualche ora per attivarsi dopo la creazione. Senza chiave la mappa mostra comunque il radar precipitazioni (RainViewer, non richiede account).
Live screen non mostra dati meteo dopo aver impostato override sensori. Verifica che i sensori referenziati siano effettivamente sensor.* con stato numerico dove atteso, e che non siano unknown o unavailable. La sezione “Compare” sulla live screen è utile: mostra fianco a fianco la sorgente cloud e quella locale, se una delle due manca vedi subito quale.
Import JSON di uno schedule fallisce. L’export contiene i link ai device come entity_id. In import, Chronos cerca di rimatchare gli id: se sull’HA di destinazione l’entità ha un id diverso (es. la luce si chiama light.salotto sul primo e light.living_room sul secondo), l’import completa ma i device link vanno sistemati a mano.
Dopo un major update dell’integrazione Meshtastic ufficiale, Chronos smette di funzionare. Non è correlato: Chronos non dipende da Meshtastic. Se compare il problema in contemporanea a un aggiornamento HA, controlla i log HA per errori di caricamento integrazione, e nel dubbio disinstalla e reinstalla via HACS.
HA riavviato con auto-off timer in corso. Chronos completa lo spegnimento al primo startup dopo il restart, e registra l’evento in History. È il comportamento voluto: meglio spegnere in ritardo che lasciare acceso.
Uno schedule Scene con “Apply on demand” non applica la scena. Modalità intenzionale: la scena viene applicata solo se accendi manualmente (o tramite altra automazione) una delle luci membri della scena durante la finestra del blocco. Se nessuno accende nulla, la scena non parte. Il watcher si riarma dopo un restart HA.
Riscoprire la logica di uno schedule fatto tempo fa
Due strumenti nella card aiutano a ricapitolare cosa fa uno schedule senza doverne rileggere ogni blocco:
- View Radial dà la giornata come cerchio 24h: colpo d’occhio istantaneo per capire “quando è acceso, quando è spento, quando cambia”.
- View Week mostra la settimana con filtri per schedule. Gli schedule disabilitati compaiono in grigio, così vedi anche quello che è in pausa. Utile per capire “questo lunedì cosa parte davvero?“.
E il Help screen dentro la card ha 12 ricette pronte (termostato day/night, luci al tramonto, tende sicure col vento, irrigazione skip pioggia, ecc.) e un glossario. Vale la pena aprirlo la prima volta, per stabilire un vocabolario coerente.