Live
Software
Domotica
HACS
Aggiornato: Set 2026

Chronos
Scheduler

Cronoschedulatore avanzato per Home Assistant. Gestisce termostati, luci, tapparelle, irrigazione, switch, ventilatori, scaldabagni, rasaerba e aspirapolvere tramite slot temporali giornalieri con regole meteo condizionali. Distribuito via HACS.

v1.44.0
Versione attuale

Cos’è

Chronos è un cronoschedulatore avanzato per Home Assistant. Gestisce termostati, luci, tapparelle, irrigazione, switch, ventilatori, scaldabagni, robot rasaerba e aspirapolvere attraverso slot temporali giornalieri con regole meteo condizionali.

Una singola card Lovelace fornisce tutto il necessario:

  • Panoramica delle pianificazioni con KPI live
  • Editor timeline (lineare, radiale, lista) con drag-and-drop e snap a 5/15/30/60 minuti
  • Regole IF/THEN basate su meteo (temperatura, pioggia, vento, UV, posizione del sole) per saltare, traslare, forzare o cambiare la durata del blocco attivo, condivisibili tra più pianificazioni
  • Vista settimanale a 7 giorni con filtri per pianificazione
  • Schermata Live con hero meteo animato, card del sole, forecast interattivo e mappa con radar delle precipitazioni
  • Schermata History con lo storico di ogni esecuzione
  • Wizard a 6 step per la creazione guidata, con duplica ed export/import in JSON
  • Tema che segue Home Assistant, palette personalizzabile per ogni tipo di dispositivo, override sensori meteo

Tutto persistito da Home Assistant, accessibile via WebSocket API e auto-registrato come custom card.

Perché è stato creato

Le automazioni native di Home Assistant sono potenti ma rigide quando servono pianificazioni complesse: un termostato che cambia setpoint a orari diversi nei giorni feriali e nel weekend, un’irrigazione che salta i giorni con pioggia o umidità alta, tapparelle che si chiudono in base alla posizione del sole, un robot rasaerba che evita i giorni di temperatura sotto soglia. Ogni caso richiede automazioni separate da scrivere a mano in YAML, difficili da rivedere e modificare nel tempo.

Chronos centralizza tutto in una singola interfaccia visuale che ragiona per pianificazioni e regole, non per automazioni discrete. Cambi un termostato dalla week view, vedi subito quale regola lo influenza, e la salti se necessario senza toccare lo YAML.

Domini supportati

Dominio HA Tipo Chronos Capacità tipiche
climate.* Termostato set_temperature, set_hvac_mode, preset
light.* Luce turn_on/off, brightness, color
cover.* Tapparella open, close, set_position
switch.* Switch turn_on, turn_off
fan.* Ventilatore turn_on, set_percentage, oscillate
vacuum.* Aspirapolvere start, pause, return_to_base
lawn_mower.* Rasaerba start_mowing, dock, pause
water_heater.* Scaldabagno set_temperature, set_operation_mode
valve.* Irrigazione open_valve, close_valve
alarm_control_panel.* Allarme arm_home, arm_away, arm_night, arm_vacation, disarm, trigger

Oltre ai dispositivi, Chronos pilota anche gli helper di Home Assistant (input_boolean, input_number, input_select), utili per impostare i valori che le automazioni esistenti leggono, senza doverle riscrivere. Esiste poi la pianificazione chiamata servizio, un tipo generico in cui ogni blocco invoca un qualsiasi servizio HA (mqtt.publish, backup.create, script.run, ecc.) con un payload JSON opzionale.

Regole meteo

Una pianificazione può avere qualsiasi numero di regole meteo. Ogni regola ha tre componenti:

Condizione IF — attributo meteo confrontato con operatore e soglia:

temperature > 22
wind_speed > 30
rain_state == 'raining'
sun.minutes_until_sunset < 30
uv_index >= 7

Azione THEN — cosa fare quando la condizione è vera:

  • skip — salta il blocco attivo
  • shift — trasla l’orario di inizio di N minuti
  • force — forza un’azione specifica
  • duration — modifica la durata del blocco

Modalità fire — quando il THEN è “force”:

  • every — fires su ogni transizione false→true (può oscillare se la condizione attraversa la soglia)
  • once_per_day — al massimo una volta per giornata calendariale, re-arm a mezzanotte
  • once_per_daytime — al massimo una volta tra alba e tramonto, re-arm alla prossima alba
  • once_per_nighttime — al massimo una volta tra tramonto e alba, re-arm al prossimo tramonto

Le regole possono essere collegate a pianificazioni con blocchi temporali (la regola modifica il comportamento del blocco) oppure a pianificazioni completamente vuote di blocchi (automazione triggered solo da condizioni meteo).

Dalla v1.17 le regole sono oggetti indipendenti con un id stabile, scollegati dalle pianificazioni: una stessa regola può puntare a più pianificazioni e blocchi, e ogni pianificazione ne combina diverse. Un gestore dedicato le elenca con i chip dei target, un filtro per pianificazione e l’ordinamento manuale o alfabetico, e rimuovendo una regola condivisa da una pianificazione la si stacca solo lì (la regola viene cancellata davvero solo quando era l’ultimo collegamento). Le vecchie regole per-pianificazione vengono migrate in automatico al primo avvio.

Anchor solari per i blocchi

Inizio e fine di un blocco possono essere un orario fisso (es. 08:30) oppure ancorati a sunrise/sunset con offset in minuti. L’integrazione risolve l’anchor contro sun.sun ad ogni tick, quindi un blocco ancorato a sunset - 15 min segue automaticamente i cambi stagionali senza intervento manuale: in inverno scatta verso le 16:30, in estate verso le 21:00.

Schermata Live

La schermata Live è il quadro meteo che sta sotto le regole, ed è la parte che ha ricevuto il lavoro più visibile delle ultime versioni.

  • Hero meteo con temperatura percepita e chip di stato (umidità, vento, raffica, UV, pressione, intensità di pioggia), su uno sfondo che si anima con la condizione corrente: sole che respira, nuvole alla deriva, banchi di nebbia, pioggia con gocce randomizzate, temporale con lampi, nevicata. Sono effetti CSS leggeri (solo transform e opacity) che rispettano la preferenza di sistema per il movimento ridotto e si possono spegnere dalle Impostazioni.
  • Confronto con la stazione locale: se sono mappati gli override sensori, l’hero alterna tra l’entità meteo e i sensori di casa, o li mostra affiancati con badge di scostamento per attributo che evidenziano la deriva tra le due sorgenti.
  • Card del sole con l’arco da alba a tramonto, la posizione corrente, la durata del giorno e il conto alla rovescia al prossimo tramonto o alba.
  • Forecast 24 ore interattivo: si tocca un’ora e si aprono condizione, temperatura, quantità e probabilità di pioggia, vento e umidità.
  • Mappa meteo centrata sulla zona di casa, con radar delle precipitazioni animato (frame passati più nowcast, con play e scrub), gratuito e senza chiave API. Una chiave OpenWeatherMap opzionale sblocca gli overlay di temperatura, vento, nuvole e pressione, e la mappa si può disattivare del tutto per le installazioni offline.

Scene

Un blocco può attivare una scena, e di default lo fa a inizio blocco: la scena parte e accende tutte le luci che controlla. Non sempre è quello che si vuole, perché così la casa si illumina da sola a un orario prestabilito.

Con la modalità applica su richiesta il comportamento si ribalta: Chronos non attiva niente all’inizio del blocco, ma applica la scena solo quando una delle luci che ne fanno parte viene accesa durante la finestra (a mano o da un’altra automazione), e subito per quelle già accese. Niente si accende da solo, però qualsiasi luce accesa in quella fascia prende l’aspetto della scena. Il selettore mostra sotto ogni scena i dispositivi che controlla, così due scene con nomi simili restano distinguibili, e la ricerca cerca anche tra quei nomi.

Irrigazione sequenziale

Le pianificazioni di irrigazione hanno due modalità di durata. In modalità globale tutte le valvole si aprono in parallelo per una durata condivisa e vengono richiuse alla fine. In modalità sequenziale le stazioni partono una alla volta, ciascuna per i suoi minuti, e la lunghezza totale del programma è la somma dei tempi. È pensata per i controller multi-stazione (ad esempio Solem BL-IP) dove le stazioni devono andare in sequenza per i limiti di pressione dell’acqua, senza bisogno di script esterni.

La sicurezza al riavvio è sempre attiva: il tempo di apertura delle valvole è gestito da Chronos, quindi se Home Assistant si riavvia a metà programma le valvole rimaste aperte vengono chiuse in difesa al boot successivo e l’evento viene registrato nella History.

Timer di auto-off

I blocchi di accensione per luci, prese, ventole e clima possono chiedere a Chronos di spegnere il dispositivo dopo N minuti (un campo nel pannello del blocco, vuoto se disattivato). Il contratto di sicurezza è lo stesso dell’irrigazione a tempo: il timer in corso viene persistito, così se Home Assistant si riavvia a metà i dispositivi vengono spenti in difesa al boot successivo. Sul clima la nuova azione set_hvac_mode (heat, cool, dry, fan_only, auto) è il modo affidabile per accendere davvero i condizionatori, che con il solo turn_on non sempre rispondono.

Affidabilità: dispositivi offline

Home Assistant accetta le chiamate di servizio anche verso entità non disponibili, senza errore: un comando inviato a un dispositivo spento andava perso in silenzio, e la History dichiarava comunque “eseguito”. Chronos ora controlla la disponibilità prima di agire.

Se un’entità è offline al momento del dispatch di un blocco, la History registra l’offline reale e l’azione viene riarmata e ritentata appena il dispositivo torna online, finché il blocco è ancora attivo (con on/off e numero massimo di tentativi nelle Impostazioni). Il recall degli spegnimenti è ancora più difensivo: è sempre attivo, non è limitato alla finestra del blocco (spegnere in ritardo è la direzione sicura, una valvola lasciata aperta continua a irrigare), sopravvive ai riavvii ed è persistito, e si arrende solo dopo 12 ore di offline con una nota nella History.

Pianificazioni come entità di Home Assistant

Oltre a vivere dentro la card, ogni pianificazione è esposta come tre entità native sotto un unico device Chronos Scheduler: uno switch per abilitarla o disabilitarla, un binary_sensor che dice se sta girando adesso, e un sensor timestamp con il prossimo cambio (azione corrente, finestra del blocco e numero di dispositivi negli attributi). Così una pianificazione si mette su qualsiasi dashboard con le card native, entra nelle automazioni e nelle condizioni, o si comanda a voce, senza dover incorporare la card completa. Le entità sono agganciate all’id, quindi rinominare una pianificazione non rompe le automazioni, e crearne o eliminarne una aggiorna le entità al volo senza riavvio.

Per chi vuole restare dentro Chronos ma in piccolo, la card ha una modalità a vista singola (opzione view): mostra una sola schermata senza sidebar né barra, diventando un widget da affiancare per comporre una dashboard su misura. Ed esiste una card di stato non interattiva per riassumere una singola pianificazione a colpo d’occhio (riga Now e Next, timeline, log a tre stati, con un alarm glow rosso quando l’ultima attività è un errore).

History

La schermata History è uno storico append-only (fino a 5000 voci) di ogni esecuzione. Si filtra per intervallo di date, pianificazione, tipo ed esito, con KPI in testa, un grafico a barre giornaliero e la lista dettagliata degli eventi. È lo strumento per capire perché una pianificazione è scattata, o perché non è scattata, e gli errori riportano la classe dell’eccezione Python per distinguere a colpo d’occhio un servizio non registrato da un parametro sbagliato.

Duplica, esporta, importa

Una pianificazione si può duplicare dall’header dell’editor o dal wizard, scegliendo nome, dispositivi, giorni e se copiare anche le regole meteo (le copie partono disabilitate). Si può esportare in JSON (i collegamenti ai dispositivi vengono salvati come entity id) e reimportare incollando il JSON o da file: i dispositivi vengono ri-abbinati per entity id e quelli non trovati vengono segnalati.

Installazione

Tramite HACS (raccomandata)

  1. HACS → Integrazioni → menu in alto a destra → Repository personalizzati
  2. Aggiungi https://github.com/Pricesswg/Chronos-Scheduler come tipo Integration
  3. Cerca “Chronos Scheduler” in HACS, click Download
  4. Riavvia Home Assistant
  5. Impostazioni → Dispositivi e Servizi → Aggiungi Integrazione → Chronos Scheduler
  6. Aggiungi la card al dashboard:
type: custom:chronos-card

La card frontend è registrata automaticamente dall’integrazione ad ogni avvio: il bundle viene copiato in <config>/www/chronos-card.js, la Lovelace resource viene creata o aggiornata a /local/chronos-card.js?v=<version> (modalità UI), con fallback add_extra_js_url su /chronos_static/chronos-card.js.

Per dashboard in modalità Lovelace YAML, aggiungi la risorsa una volta:

resources:
  - url: /local/chronos-card.js?v=1.6.0
    type: module

Installazione manuale

  1. Copia custom_components/chronos/ (incluso www/chronos-card.js) in <config>/custom_components/
  2. Riavvia Home Assistant
  3. Impostazioni → Dispositivi e Servizi → Aggiungi Integrazione → Chronos Scheduler
  4. Aggiungi type: custom:chronos-card nel dashboard

Setup iniziale

Al primo avvio l’integrazione chiede di selezionare un’entità weather.* come sorgente meteo. Modificabile in seguito dalle Impostazioni in-card. Si può anche lasciare vuoto se si usano solo sensori puntuali (Ecowitt, WeatherFlow) configurati per attributo da Impostazioni → Sorgente meteo → override sensori.

Servizi

Servizio Descrizione
chronos.reload Ricarica la configurazione Chronos dallo storage
chronos.fire_block Esegue il blocco attualmente attivo bypassando timing e regole
chronos.schedule_toggle Abilita o disabilita una pianificazione (per id o per nome) da automazioni e script HA

Stack tecnico

Backend Python — integrazione Home Assistant nativa con scheduler a tick (1 minuto), valutatore regole meteo, dispatcher azioni, recall dei dispositivi offline, persistenza via HA Store API, config flow guidato, i18n integrata.

Frontend TypeScript + Lit — custom element per Lovelace con le sue schermate (overview, timeline editor, gestore regole meteo, week view, wizard, History, impostazioni, ecc.), navigazione predefinita a barra superiore con chip a icona (la classica sidebar a sinistra resta un’opzione), localizzazione in otto lingue (IT, EN, FR, DE, ES, PT, NL, PL), tema che segue Home Assistant.

Auto-registrazione — bundle copiato automaticamente in /www/chronos-card.js al boot, Lovelace resource creata o aggiornata via WebSocket, fallback su add_extra_js_url con percorso statico /chronos_static/.

Persistenza — tutta la configurazione (pianificazioni, regole, impostazioni, override sensori) salvata da Home Assistant Store API, esposta alla card via WebSocket API custom.

Licenza

Distribuito sotto licenza MIT.