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

  1. Home Assistant ≥ 2024.1: servono config flow moderno, storage helpers e API WebSocket usate dalla card.
  2. HACS installato, per l’installazione consigliata. Manuale è possibile ma sconsigliata.
  3. 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.
  4. 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

  1. HACS → integrations → menu ⋮ → Custom repositories → aggiungi Pricesswg/Chronos-Scheduler come Integration.

  2. Cerca “Chronos Scheduler” nella lista HACS, Download.

  3. Riavvia Home Assistant.

  4. Impostazioni → Dispositivi e servizi → Aggiungi integrazione → Chronos Scheduler.

  5. Al primo avvio ti chiede di selezionare l’entità weather.* da usare come sorgente meteo, o di saltare (puoi cambiare più tardi in Settings).

  6. Aggiungi la card a una dashboard qualsiasi. Basta il minimo:

    type: custom:chronos-card

    Una 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:

  1. Copia chronos-card.js in <config>/www/chronos-card.js → disponibile come /local/chronos-card.js.
  2. Chiama add_extra_js_url su /chronos_static/chronos-card.js all’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: module

Card 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: a1b2c3d4

Mostra 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:

ColoreSignificato
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> sia on.
  • 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 skip era 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:

MessaggioCosa significa
Service X.Y not foundIl servizio HA non esiste (dispositivo rimosso, integrazione disattivata)
Entity <id> is not a valid entityL’entità è stata rinominata o cancellata; riassociala nell’editor
Value X.Y out of rangeIl valore forzato dal blocco è fuori dai limiti che il device accetta (es. temperatura > max_temp del termostato)
Timeout waiting for state changeIl 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.


Collegamenti