Introduzione
Se ti manca ancora la parte hardware, parti dal riscaldamento smart con Home Assistant: cosa serve davvero.
Una volta installate le valvole, ecco 8 automazioni per il riscaldamento con Home Assistant già pronte: programmazione, presenza, geofencing, finestra aperta e adattamento al meteo.
Ovviamente sono proposte di automazioni che devono essere di spunto per la creazione della propria, e vanno adattate alle esigenze specifiche. Servono come base e tutorial, ma ognuno di voi può crearne delle proprie se e come servono.
Il punto di forza di Home Assistant è proprio quello di delegare al sistema il compito di anticipare i nostri bisogni, e di provvedere, attraverso le automazioni, a farci fare meno lavoro: trovando, per esempio nel caso del riscaldamento, la casa riscaldata al momento giusto.
Prima del codice è utile capire la logica delle automazioni per il riscaldamento: i sistemi manuali sono inefficienti (dimenticanze, ritardi, riscaldamento di stanze vuote). Le automazioni agiscono con tre strategie: programmazione temporale (orari e giorni), rilevamento presenza (adattamento all’uso reale) e prevenzione sprechi (finestre aperte, assenze prolungate).
Nota per il lettore: gli esempi YAML qui sotto usano gli ID delle mie valvole e dei miei sensori (
device_id,entity_idcomeclimate.aqara_termostatooclimate.0x3c2ef5fffebad64b). Non funzioneranno copiati così come sono: sostituiscili con quelli della tua installazione. Li trovi in Impostazioni → Dispositivi e servizi → Entità, oppure in Zigbee2MQTT sotto Devices.
Genera il YAML con le tue entità
Scegli l’automazione, inserisci i nomi delle tue valvole e dei sensori, regola tempi e temperature. Copia il codice e incollalo in Home Assistant: Automazioni → Crea automazione → ⋮ → Modifica in YAML.
Il codice è una base di partenza, come gli esempi dell’articolo. Prova l’automazione con il pulsante Esegui prima di affidarle il riscaldamento.
Programmazione settimanale
La programmazione settimanale è l’automazione più diffusa, quella che usano tutti. È la base logica di qualsiasi sistema di riscaldamento, sia esso manuale o automatico, tradizionale o smart avanzato. Vediamo come si fa in Home Assistant.
Con l’helper Schedule
Per prima cosa creiamo un helper per la programmazione settimanale. Come si fa?
Andiamo su Impostazioni → Dispositivi e servizi → tab Helper (in basso a destra) → Crea helper.
Cerchiamo “schedule” e lo selezioniamo.
Inseriamo nome e icona, poi creiamo la nostra programmazione settimanale. L’helper cambia in on o off a seconda che ci troviamo dentro l’orario programmato o fuori. Questo lo useremo nella nostra automazione.
Successivamente andiamo in Automazioni e creiamo una nuova automazione. Cerchiamo il trigger “State Change” e inseriamo l’entità della programmazione settimanale (il nostro schedule) come trigger. Ti ricordo che se siamo dentro l’orario programmato l’entità cambia in on, e viceversa in off.
alias: Riscaldamento - Programmazione Settimanale
description: Imposta temperature in base alla programmazione
triggers:
- trigger: state
entity_id:
- schedule.programmazione_settimanale
actions:
- choose:
- conditions:
- condition: state
entity_id: schedule.programmazione_settimanale
state:
- "on"
sequence:
- action: climate.set_temperature
target:
device_id:
- a523501f3d6789e38c0da19da1a915d2 # Nome della vostra valvola
- 62f5202abc4ffd59026a27bbf6b8a58c # Nome della vostra valvola
data:
temperature: 21.5
hvac_mode: heat
- conditions:
- condition: state
entity_id: schedule.programmazione_settimanale
state:
- "off"
sequence:
- action: climate.set_temperature
target:
device_id:
- 62f5202abc4ffd59026a27bbf6b8a58c
- a523501f3d6789e38c0da19da1a915d2
data:
temperature: 18
hvac_mode: heat
mode: singleOvviamente questo è un metodo di programmazione e automazione, ma non l’unico: puoi usare altre strade se preferisci.
Temperature differenziate per stanza
L’esempio seguente ne è una prova: qui non useremo l’helper Schedule (secondo me molto comodo, perché da dashboard puoi cambiare gli orari), ma implementeremo il trigger direttamente nell’automazione. Per cambiare gli orari dovrai andare in Automazioni e modificarla da lì. Abbiamo aggiunto anche differenze di temperatura per stanza.
alias: Riscaldamento differenziato
description: ""
triggers:
- trigger: time
at: "07:00:00"
weekday:
- mon
- tue
- wed
- thu
- fri
conditions: []
actions:
- action: climate.set_temperature
target:
entity_id: climate.aqara_termostato
data:
temperature: 20.5
hvac_mode: heat
- action: climate.set_temperature
target:
entity_id:
- climate.0x3c2ef5fffebad64b
data:
temperature: 22
hvac_mode: heat
mode: singleBoost pre-doccia
Questa automazione scalda il bagno 30 minuti prima della tua routine mattutina, garantendo comfort senza sprechi durante il resto della giornata.
Anche qui usiamo un helper di tipo Schedule, questa volta per definire gli orari della doccia:
- Impostazioni → Dispositivi e servizi → Helper
- Crea un nuovo Schedule chiamato “Orario Doccia”
- Fai iniziare le fasce mezz’ora prima della doccia: per esempio 06:30 nei giorni feriali e 08:00 nel weekend
alias: Preriscaldamento Bagno Doccia
description: Boost bagno 30 min prima della doccia
triggers:
- trigger: state
entity_id:
- schedule.orario_doccia
to: "on"
conditions: []
actions:
- action: climate.set_temperature
target:
entity_id: climate.valvola_bagno
data:
temperature: 23
- delay:
hours: 0
minutes: 45
seconds: 0
milliseconds: 0
- action: climate.set_temperature
target:
entity_id: climate.valvola_bagno
data:
temperature: 18
mode: singlePresenza e zona Home
Il rilevamento presenza trasforma il riscaldamento da sistema programmato a sistema adattivo. Quando nessuno è in casa, la temperatura si abbassa automaticamente. Al rientro, il sistema ripristina i valori comfort.
Configurazione della zona
Home Assistant traccia automaticamente la posizione degli smartphone con l’app companion installata. La zona Home è predefinita, ma puoi personalizzarne il raggio dalle impostazioni. Un raggio di 100-150 metri funziona bene per la maggior parte delle abitazioni.
Negli esempi che seguono la presenza arriva da input_number.presenza_simulata, un helper numerico che uso nei test per simulare quante persone ci sono in casa: 0.0 vuol dire casa vuota. Nella tua installazione puoi usare al suo posto zone.home, il cui stato è il numero di persone nella zona Home (in quel caso il valore da confrontare è "0").
Abbassamento per assenza prolungata
L’automazione non deve scattare per assenze brevi. Un ritardo di 30 minuti (il blocco for) evita oscillazioni inutili quando esci per una commissione veloce.
alias: Temperatura ridotta assenza in casa
description: ""
triggers:
- trigger: state
entity_id:
- input_number.presenza_simulata
to:
- "0.0"
for:
hours: 0
minutes: 30
seconds: 0
conditions:
- condition: numeric_state
entity_id: climate.aqara_termostato
attribute: temperature
above: 18
actions:
- action: climate.set_temperature
target:
entity_id: climate.aqara_termostato
data:
hvac_mode: heat
temperature: 18
- action: notify.mobile_app_iphone_di_massimo
data:
message: "In casa non c'è nessuno: temperatura ridotta a 18 gradi"
title: Riscaldamento Smart
mode: singleLa notifica usa l’app companion: se vuoi andare oltre il semplice messaggio, trovi azioni e canali nella guida alle notifiche avanzate di Home Assistant.
Ripristino al rientro
Quando qualcuno rientra, il sistema ripristina la temperatura comfort. La condizione verifica che il riscaldamento sia effettivamente in modalità eco prima di intervenire.
alias: Ripristino al Rientro (Riscaldamento)
description: ""
triggers:
- trigger: state
entity_id:
- input_number.presenza_simulata
from:
- "0.0"
conditions:
- condition: numeric_state
entity_id: climate.aqara_termostato
attribute: temperature
below: 19
- condition: time
after: "06:00:00"
before: "23:00:00"
actions:
- action: climate.set_temperature
target:
entity_id: climate.aqara_termostato
data:
temperature: 20.5
hvac_mode: heat
mode: singleGeofencing e preriscaldamento
Il geofencing estende il rilevamento presenza oltre i confini domestici. Quando ti avvicini a casa, il sistema inizia a riscaldare in anticipo, così trovi l’ambiente già confortevole al tuo arrivo.
Configurazione delle zone di prossimità
Crea una zona aggiuntiva con raggio maggiore, tipicamente 2-5 chilometri in base ai tempi di percorrenza nella tua zona. Questa zona funge da trigger per il preriscaldamento.
Dalla sezione Impostazioni → Zone, aggiungi una nuova zona chiamata, ad esempio, prossimita_casa con raggio appropriato.
alias: Preriscaldamento GeoFencing
description: "Inizia a scaldare quando ti avvicini"
triggers:
- trigger: zone
entity_id: person.massimo
zone: zone.prossimita_casa
event: enter
conditions:
- condition: state
entity_id: input_number.presenza_simulata
state:
- "0.0"
- condition: numeric_state
entity_id: climate.aqara_termostato
attribute: temperature
below: 19
- condition: time
after: "06:00:00"
before: "23:00:00"
actions:
- action: climate.set_temperature
target:
entity_id: climate.aqara_termostato
data:
temperature: 20.5
hvac_mode: heat
- action: notify.mobile_app_iphone_di_massimo
data:
message: "Preriscaldamento avviato, casa pronta al tuo rientro."
title: Bentornato
mode: singleGestione multi-persona
In famiglie con più membri, la logica deve considerare chi è già in casa e chi sta rientrando. L’uso di condizioni multiple evita preriscaldamenti inutili quando qualcuno è già presente.
Abbassamento notturno e risveglio
Il sonno richiede temperature più basse rispetto alla veglia. Studi scientifici indicano 16-19 gradi come range ottimale per la qualità del riposo. L’abbassamento notturno non è solo risparmio energetico, ma anche benessere.
Implementazione base
alias: Riscaldamento - Modalità Notte
description: "Abbassa temperatura durante la notte"
triggers:
- trigger: time
at: "23:00:00"
conditions: []
actions:
- action: climate.set_temperature
target:
entity_id: climate.0x3c2ef5fffebad64b
data:
temperature: 17
hvac_mode: heat
- action: climate.set_temperature
target:
entity_id: climate.aqara_termostato
data:
temperature: 18
hvac_mode: heat
mode: singlePreriscaldamento mattutino
Il complemento essenziale è il preriscaldamento prima della sveglia. Iniziare 30-45 minuti prima garantisce una temperatura confortevole quando ti alzi.
alias: Riscaldamento - Preriscaldamento Mattutino
description: Scalda prima della sveglia
triggers:
- trigger: time
at: "06:15:00"
weekday:
- mon
- tue
- wed
- thu
- fri
conditions: []
actions:
- action: climate.set_temperature
target:
entity_id:
- climate.aqara_termostato
- climate.0x3c2ef5fffebad64b
data:
temperature: 21
hvac_mode: heat
mode: singleOrari differenziati nel weekend
Nel weekend le abitudini cambiano. Puoi creare automazioni separate per sabato e domenica con orari ritardati.
alias: Riscaldamento - Preriscaldamento Weekend
description: ""
triggers:
- trigger: time
at: "08:00:00"
weekday:
- sat
- sun
conditions: []
actions:
- action: climate.set_temperature
target:
entity_id:
- climate.aqara_termostato
- climate.0x3c2ef5fffebad64b
data:
temperature: 21
hvac_mode: heat
mode: singleModalità vacanza
Quando parti per più giorni, l’intero sistema deve passare in modalità risparmio massimo, mantenendo solo la protezione antigelo. Un singolo interruttore attiva e disattiva questa modalità.
Helper input boolean
Crea un helper di tipo interruttore dalla sezione Impostazioni → Dispositivi e servizi → Helper. Chiamalo modalita_vacanza. È un input boolean: il più semplice degli helper di Home Assistant, un interruttore virtuale che non accende niente e serve solo a dire alle automazioni in che stato si trova la casa.
Attivazione vacanza
alias: Attiva Modalità Vacanza
description: Imposta antigelo su tutte le valvole
triggers:
- trigger: state
entity_id:
- input_boolean.modalita_vacanza
to:
- "on"
conditions: []
actions:
- action: climate.set_temperature
target:
entity_id:
- climate.aqara_termostato
- climate.0x3c2ef5fffebad64b
data:
temperature: 8
hvac_mode: heat
- action: notify.mobile_app_iphone_di_massimo
data:
message: Modalità vacanza Attivata
title: Riscaldamento Smart
mode: singleDisattivazione e ripristino
alias: Disattiva modalità Vacanza
description: Ripristina temperature normali
triggers:
- trigger: state
entity_id:
- input_boolean.modalita_vacanza
to:
- "off"
conditions: []
actions:
- action: climate.set_temperature
target:
entity_id:
- climate.aqara_termostato
- climate.0x3c2ef5fffebad64b
data:
temperature: 21
hvac_mode: heat
- action: notify.mobile_app_iphone_di_massimo
data:
message: Modalità vacanza Disattivata
title: Riscaldamento Smart
mode: singleFinestra aperta
Una finestra aperta in inverno con il riscaldamento acceso è spreco energetico puro. Questa automazione rileva l’apertura e spegne automaticamente la valvola termostatica, riaccendendola alla chiusura.
Requisiti
- Sensore porta/finestra Zigbee (Sonoff SNZB-04, Aqara Door Sensor o simili)
- Valvola termostatica smart già configurata
Logica dell’automazione
L’automazione monitora lo stato del sensore e:
- se la finestra rimane aperta per oltre 2 minuti, spegne la valvola (modalità
off) - quando la finestra si chiude, riattiva la valvola riportandola in modalità
heat - invia una notifica push allo smartphone per segnalare l’evento
alias: Rilevamento Finestre Aperte
description: Spegne la valvola quando la finestra rimane aperta per 2+ minuti
triggers:
- trigger: state
entity_id:
- binary_sensor.0xa4c138dccb4cb231_contact
to:
- "on"
for:
hours: 0
minutes: 2
seconds: 0
id: Aperto
- trigger: state
entity_id:
- binary_sensor.0xa4c138dccb4cb231_contact
to:
- "off"
for:
hours: 0
minutes: 0
seconds: 0
id: Chiuso
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id:
- Aperto
sequence:
- action: climate.set_hvac_mode
target:
entity_id:
- climate.aqara_termostato
- climate.0x3c2ef5fffebad64b
data:
hvac_mode: "off"
- action: notify.mobile_app_iphone_di_massimo
data:
message: "Riscaldamento spento: rilevata finestra aperta"
title: Finestra Aperta
- conditions:
- condition: trigger
id:
- Chiuso
sequence:
- action: climate.set_hvac_mode
target:
entity_id:
- climate.aqara_termostato
- climate.0x3c2ef5fffebad64b
data:
hvac_mode: heat
- action: notify.mobile_app_iphone_di_massimo
data:
message: Riscaldamento Riattivato
title: Finestra Chiusa
mode: singleConfigurazione grafica (senza codice)
Questa automazione può essere creata anche senza scrivere YAML, con l’editor visuale delle automazioni:
- Impostazioni → Automazioni e scene → Crea automazione
- Trigger: “Quando” → Stato → seleziona
binary_sensor.finestra_soggiorno→ “diventa” → “Aperta” → “per” → “2 minuti” - Azione: “Chiama servizio” →
climate.set_hvac_mode→ seleziona la valvola → Mode: “off” - Azione: “Chiama servizio” →
notify.mobile_app→ scrivi il messaggio
Importante: questa è solo una base di partenza. L’esempio presentato è volutamente semplificato per chiarezza didattica. Nella realtà, questa automazione può e dovrebbe essere ulteriormente affinata con condizioni aggiuntive per evitare comportamenti indesiderati.
Condizioni consigliate da aggiungere
conditions:
# Esegui solo se il riscaldamento è effettivamente acceso
- condition: not
conditions:
- condition: state
entity_id: climate.valvola_soggiorno
state: "off"
# Esegui solo durante la stagione di riscaldamento (ottobre-aprile)
- condition: template
value_template: "{{ now().month in [10, 11, 12, 1, 2, 3, 4] }}"
# Esegui solo se la temperatura esterna è bassa
- condition: numeric_state
entity_id: sensor.temperatura_esterna
below: 15
# Non eseguire se sei in modalità vacanza
- condition: state
entity_id: input_boolean.modalita_vacanza
state: "off"Queste condizioni assicurano che l’automazione:
- non tenti di spegnere valvole già spente
- non si attivi in estate, quando il riscaldamento è inutilizzato
- non interferisca con altre modalità del sistema
- consideri le condizioni climatiche reali
Non vanno messe tra le condizioni generali dell’automazione, ma dentro i rami del choose, accanto alla condition: trigger. Il riscaldamento acceso e la temperatura esterna vanno solo nel ramo Aperto: alla chiusura la valvola è in off proprio perché l’ha spenta l’automazione, e la prima condizione bloccherebbe il ripristino lasciando la stanza al freddo. Stagione e vacanza invece vanno in tutti e due i rami, così in estate chiudere la finestra non riaccende il riscaldamento. È lo schema che segue anche il generatore YAML in cima all’articolo.
Come tutti gli esempi in questo articolo, considera il codice fornito come punto di partenza su cui costruire la tua automazione personalizzata. Ogni casa ha esigenze diverse, orari diversi, configurazioni diverse. Sperimenta, testa e adatta il codice alle tue necessità specifiche.
Ottimizzazioni avanzate possibili
- Delay variabile: 2 minuti in inverno rigido, 5 minuti in primavera e autunno
- Salvataggio stato: memorizzare temperatura target e modalità HVAC prima dello spegnimento, per ripristinarle esattamente
- Gestione multi-finestra: se hai più finestre nella stessa stanza, usa condizioni OR per gestirle tutte
- Notifiche intelligenti: invia la notifica solo se sei in casa (evita spam quando sei fuori)
- Integrazione calendario: disabilita durante gli orari di lavoro se non sei mai in casa
- Statistiche: traccia quanto tempo rimangono aperte le finestre per ottimizzare il risparmio
Adattamento al meteo esterno
Questa automazione adatta automaticamente la temperatura interna in base alle condizioni meteorologiche esterne, anticipando i cambiamenti climatici.
Per questa automazione sarebbe opportuno l’uso di un sensore di temperatura esterna, così controlli la temperatura reale fuori casa tua, ma se non ne hai uno puoi usare un’integrazione meteo generale. Noi useremo OpenWeatherMap.
Integrazione OpenWeatherMap
Prima di tutto, configura l’integrazione meteo in Home Assistant:
- Vai su Impostazioni → Dispositivi e servizi → Aggiungi integrazione
- Cerca “OpenWeatherMap” o “Met.no” (entrambe gratuite)
- Inserisci la tua API key (ottenibile gratuitamente su openweathermap.org)
- Seleziona la tua località
Logica dell’automazione
L’automazione verifica ogni ora la temperatura esterna e:
- sotto i 5 °C esterni aumenta la temperatura target di 0,5 °C
- tra 5 e 10 °C esterni usa la temperatura target standard
- sopra i 10 °C esterni riduce la temperatura target di 0,5 °C
Di notte però deve fermarsi. Girando ogni ora, senza uno stop rimetterebbe 19,5, 20 o 20,5 °C anche dopo le 23:00, sovrascrivendo l’abbassamento notturno. Per questo c’è una condizione sull’orario, dalle 06:15 alle 23:00, allineata agli orari della modalità notte e del preriscaldamento mattutino: se cambi quelli, cambia anche questa.
alias: Adattamento Temperatura su Meteo
description: Regola temperatura in base a condizioni esterne
triggers:
- trigger: time_pattern
hours: /1
id: Orario
- trigger: state
entity_id:
- weather.casa
id: Meteo
conditions:
- condition: state
entity_id: input_boolean.modalita_vacanza
state: "off"
# Stop di notte: non sovrascrivere la modalità notte
- condition: time
after: "06:15:00"
before: "23:00:00"
- condition: template
value_template: >-
{{ state_attr('weather.casa', 'temperature') not in [none, 'unknown',
'unavailable'] }}
actions:
- variables:
temp_esterna: "{{ state_attr('weather.casa', 'temperature') | float(10) }}"
temp_base: 20
- choose:
- conditions:
- condition: template
value_template: "{{ temp_esterna < 5 }}"
sequence:
- action: climate.set_temperature
target:
entity_id: climate.valvola_soggiorno
data:
temperature: "{{ temp_base + 0.5 }}"
- conditions:
- condition: template
value_template: "{{ temp_esterna > 10 }}"
sequence:
- action: climate.set_temperature
target:
entity_id: climate.valvola_soggiorno
data:
temperature: "{{ temp_base - 0.5 }}"
default:
- action: climate.set_temperature
target:
entity_id: climate.valvola_soggiorno
data:
temperature: "{{ temp_base }}"
mode: singleCalibrazione automatica con sensore esterno
Questa è forse l’automazione più importante per la precisione del sistema. Tutte le valvole termostatiche soffrono dello stesso problema: il sensore integrato è troppo vicino al radiatore, e questo causa letture imprecise.
Il problema della vicinanza al radiatore
Le valvole termostatiche montate sul radiatore rilevano temperature alterate:
- senza sensore esterno: precisione di ±1,0-2,0 °C
- con sensore esterno: precisione di ±0,1-0,2 °C
La differenza è enorme e impatta direttamente su comfort e consumi.
Quanto sbaglia la tua valvola
Confronta la temperatura letta dalla valvola con quella di un termometro al centro della stanza.
Con un sensore esterno la precisione passa da ±1,0-2,0 °C a ±0,1-0,2 °C.
Un offset fisso va bene solo finché il radiatore non cambia regime. L’automazione di calibrazione lo ricalcola a ogni lettura del sensore.
La soluzione: sensore esterno e calibrazione automatica
Aggiungendo un sensore economico (Sonoff SNZB-02P, a circa 10 euro) al centro della stanza, l’automazione calcola automaticamente l’offset di calibrazione necessario.
Blueprint della community
Usa il blueprint già pronto dalla community di Home Assistant:
- Vai sul thread della community Home Assistant dedicato alla calibrazione con sensore esterno (i link sono qui sotto)
- Importa il blueprint in Home Assistant
- Crea una nuova automazione dal blueprint
- Configura il sensore di temperatura esterno, l’entità climate della valvola e l’intervallo di aggiornamento (consigliato: 5 minuti)
Risultati attesi
Con questa automazione attiva:
- temperatura rilevata dalla valvola: 22,5 °C (vicino al radiatore)
- temperatura reale della stanza (sensore esterno): 20,0 °C
- offset applicato automaticamente: -2,5 °C
- temperatura visualizzata in Home Assistant: 20,0 °C (precisa)
Costo aggiuntivo: 10-12 euro per sensore, per una precisione da sistema professionale.
Sonoff TRVZB: la mia automazione
Per il mio dispositivo Sonoff uso questa automazione (non il blueprint):
alias: Sonoff TRVZB External Temperature Sensor Calibration
description: ""
triggers:
- trigger: state
entity_id: sensor.0x84ba20fffed47cfc_temperature
conditions:
- condition: template
value_template: >-
{{ states('sensor.0x84ba20fffed47cfc_temperature') not in ['unavailable',
'unknown'] }}
variables:
external_temperature_sensor: sensor.0x84ba20fffed47cfc_temperature
actions:
- action: number.set_value
target:
entity_id:
- number.0x3c2ef5fffebad64b_external_temperature_input
data:
value: "{{ states(external_temperature_sensor) | float(20) }}"
mode: singleAnche per Sonoff esiste un blueprint: io non lo uso, ma funziona bene, è testato ed è più facile da implementare. Lo trovi nel thread Sonoff TRVZB External Temperature Sensor Calibration sulla community di Home Assistant.
Aqara E1: il blueprint
Per Aqara esiste il blueprint, come dicevamo. Lo trovi nel thread Aqara E1 external temperature calibration sulla community di Home Assistant.
Se stai ancora scegliendo tra le due valvole, nel confronto Sonoff TRVZB vs Aqara E1 trovi le differenze che contano anche per la calibrazione.
Da dove partire
Se le valvole non sono ancora montate e associate, il passo prima di queste automazioni è il setup del riscaldamento smart con valvole Zigbee. Se invece sono già in Home Assistant, comincia dalla programmazione settimanale e dalla finestra aperta: sono le due che fanno risparmiare subito, le altre si aggiungono una alla volta, quando capisci come vive davvero la tua casa.









