Automazioni Home Assistant: conosciamo i Trigger
In questa guida vedremo come usare le automazioni, elencando nel dettaglio tutti i tipi di Trigger, Condition e Action.
Premessa:
Prestare attenzione alla sintassi:
trigger: deve avere due spazi dal margine;
- platform: il trattino deve essere due spazi avanti alla ” t ” di trigger: quindi sotto la ” i “;
E’ severamente vietato usare il tasto “TAB” in quanto causerebbe degli errori di sintassi.
Trigger:
Il Trigger è colui che aziona l’automazione, vi elenco e spiego tutti i tipi di Trigger che si possono usare.
1. homeassistant:
Con questo Trigger andiamo ad attivare un automazione quando lo stato di Home Assistant cambia, ovvero quando si avvia o si spegne.
1 2 3 4 |
automation: trigger: - platform: homeassistant event: start |
Così l’automazione partirà quando Home Assistant si accende, cambiando event: da start a shutdown l’automazione verrà eseguita poco prima di arrestarsi completamente.
2. state:
Con questo Trigger andiamo ad attivare un’automazione quando lo stato di una qualsiasi entità cambia.
1 2 3 4 5 6 7 8 9 10 |
automation: trigger: - platform: state entity_id: device_tracker.mattia from: 'not_home' to: 'home' for: hours: 1 minutes: 30 seconds: 50 |
In questo caso l’automazione verrà avviata dopo 1 ora 30 minuti e 50 secondi che io sono entrato in casa.
Questo può essere usato per tutte le entità, esempio:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
## LUCE automation: trigger: - platform: state entity_id: light.cucina from: 'off' to: 'on' ## SWITCH automation: trigger: - platform: state entity_id: switch.camera from: 'on' to: 'off' ## TAPPARELLA automation: trigger: - platform: state entity_id: cover.sala from: 'closed' to: 'open' |
3. numeric_state:
Con questo Trigger andiamo ad attivare un’automazione quando il valore di un’entità è superiore, minore o compresa tra un valore scelto da noi, ad esempio un sensore di temperatura.
1 2 3 4 5 6 |
automation: trigger: - platform: numeric_state entity_id: sensor.temperatura_sala above: 19 below: 26 |
In questo caso l’automazione si avvierà quando la temperatura sarà superiore di 19° ( above: ) e minore di 26° ( below: ).
Prendendo in considerazione un sensore di temperatura dotato di batteria, ad esempio quello Xiaomi possiamo andare a leggere e utilizzare il valore della batteria aggiungendo un value_template: , questo può essere fatto con qualsiasi attributo, ecco un esempio sempre sul mio sensore temperatura della sala.
1 2 3 4 5 6 |
automation: trigger: - platform: numeric_state entity_id: sensor.temperatura_sala value_template: '{{ state.attributes.battery }}' below: 20 |
Quindi la mia automazione verrà avviata quando la percentuale della batteria è inferiore al 20%.
4. sun
Grazie a questo Trigger possiamo eseguire un automazione in base al sole: tramonto, alba o posizione.
1 2 3 4 5 |
automation: trigger: - platform: sun event: sunrise offset: '-00:10:00' |
Si può notare che event: è impostato su sunrise e offset a -00:10:00, questo significa che l’automazione verrà eseguita 10 minuti prima dell’alba, se invece mettiamo sunset al posto di sunrise verrà eseguita 10 minuti prima del tramonto.
5. zone
Se abbiamo configurato un device_tracker e delle zone, ad esempio casa e lavoro, possiamo azionare un’automazione quando entriamo o usciamo da una di queste zone.
1 2 3 4 5 6 |
automation: trigger: - platform: zone entity_id: device_tracker.mattia zone: zone.casa event: enter |
In questo caso quando entro in casa viene eseguita l’automazione, per far si che venga eseguita quando esco di casa in event: bisogna sostituire enter con leave .
6. event
Gli eventi sono un punto fondamentale delle automazioni, in quanto ogni entità provoca un evento, ecco qua un link per alcuni tipi di eventi. Qui sotto lascio un esempio.
1 2 3 4 |
automation: trigger: - platform: event event_type: platform_discovered |
L’automazione verrà innescata ogni volta che il discovery (ricerca automatica dei dispositivi) rileva un nuovo dispositivo.
7. time
Chiunque vogliache qualcosa si accenda ad una qualsiasi ora o ogni tot. minuti, ecco che entra in azione il Trigger time.
1 2 3 4 5 |
automation: trigger: - platform: time minutes: 2 seconds: 30 |
Così facendo l’automazione si avvierà dopo 2 minuti e 30 secondi che passa un’intera ora.
1 2 3 4 |
automation: trigger: - platform: time at: '20:00:00' |
Questo trigger si verificherà quando sono le 8 di sera.
1 2 3 4 5 |
automation: trigger: - platform: time minutes: '/15' seconds: 00 |
Ed infine con questa sintassi, possiamo ciclare, ovvero eseguire l’automazione ogni 15 minuti.
8. template
Il Trigger template è il mio preferito in quanto è il Trigger più versatile, ma anche leggermente più complicato degli altri. Questo Trigger restituisce un valore booleano, quindi true (vero) o false (falso). A questo link trovate la documentazione per tutti i tipi di template. Qua lascio due esempi.
1 2 3 4 |
automation: trigger: - platform: template value_template: "{% if is_state('device_tracker.mattia', 'home') %} true {% endif %}" |
In questo modo quando il mio device_tracker entra in casa la variabile booleana diventa true (vera) e di conseguenza l’automazione si avvia. Ora un altro esempio più interessante.
1 2 3 4 |
automation: trigger: - platform: template value_template: '{{ states.climate.sala.attributes.temperature != states.sensor.temperatura_sala.state }}' |
Invece con questa sintassi andiamo a fare un confronto tra due entità, notiamo infatti l’operatore != che significa “diverso”, quindi quando la temperatura impostata sul mio termostato in sala è diversa dalla temperatura rilevata dal sensore in sala la variabile booleana passa a true e l’automazione viene eseguita.
Ecco alcuni operatori: == (uguale), > (maggiore), < (minore), >= (maggiore uguale, vale anche per il simbolo minore), && (AND, e).
9. mqtt
Se abbiamo dispositivi connessi via MQTT questo Trigger non può mancare, in quanto ci permette di eseguire l’automazione quando riceviamo una determinata stringa ad un determinato topic.
1 2 3 4 5 |
automation: trigger: - platform: mqtt topic: cucina/luce/tavolo payload: 'on' |
Quando viene inviata la stringa “on” al topic “cucina/luce/tavolo” l’automazione si avvia, possiamo anche non specificare il payload/stringa per avviare l’automazione ogni volta che qualsiasi stringa viene inviata a quel topic. Per esempio:
1 2 3 4 |
automation: trigger: - platform: mqtt topic: cucina/luce/tavolo |
10. multipli
Possiamo anche concatenare più Trigger, e quando uno dei trigger si verifica l’automazione si aziona.
1 2 3 4 5 6 7 8 |
automation: trigger: - platform: state entity_id: device_tracker.mattia from: 'not_home' to: 'home' - platform: sun event: sunset |
Prendendo in considerazione questi Trigger l’automazione si attiverà quando io rientro in casa oppure quando il sole tramonta, un azione interessante potrebbe essere di accendere la luce esterna.
Non preoccupatevi se alcune cose non vi sono chiare commentate, oppure aspettate i prossimi articoli dove spiego le Condition e le Action, ed alla fine di questi 3 articoli ne farò uno dedicato per mostrarvi un po’ di automazioni miste ed interessanti.
20 risposte
Grazie Mattia, una guida davvero chiara, esaustiva e molto ben scritta; fa capire anche a principianti come me cosa sono le automazioni e come possono essere utilizzate!
Grazie Luca, molto gentile.
Voglio rendere il tutto più facile, soprattutto per i principianti.
Mi hai dato la conferma che questo è possibile!!
bravo scritto molto comprensibile
Grazie Moreno! apprezzo che sia chiaro.
A breve continuo la serie con un nuovo articolo sulle Condition
Hola! I’ve been reading your site for some time now and finally got the
bravery to go ahead and give you a shout out from Austin Tx!
Just wanted to mention keep up the fantastic work!
I could not refrain from commenting. Very well written! I enjoy what you guys are usually up
too. This type of clever work and exposure! Keep up the wonderful works guys I’ve incorporated you guys to my blogroll.
http://www.cspan.net/
Thank you so much Kristen, we appreciate that you like it. We do our best to explain in a simple way for newcomers, soon other articles on the automation series will be released. Do not miss them!!
Thank you for mentioning us in your blogroll!!
I could not resist commenting. Very well written! I like
it whenever people get together and share opinions.
Great site, continue the good work! I couldn’t refrain from commenting.
Perfectly written! http://Cspan.Co.uk/
[…] vedere tutti i servizi e come vengono usati vi rimando qui all’articolo dei […]
Bellissima guida! Sono un neofita di home assistant e mi sto acculturando tramite le tue guide,
e vorrei chiederti da dove derivano i campi dopo:
– platform:
Grazie mille
Ciao e grazie dei complimenti. I campi dopo platform derivano direttamente dalle documentazioni ufficiali che dovrei aver linkato nella guida, se non fosse così le aggiungo e te li condivido anche qua.
Ecco qua la documentazione ufficiale sui Trigger: https://www.home-assistant.io/docs/automation/trigger/
Se hai altre domande non esitare,
Grazie!
Complimenti per l’articolo ma avrei una domanda: come faccio a verificare nel trigger se un sensore è definito?
Hai utilizzato
– platform: template
value_template: “{% if is_state(‘device_tracker.mattia’, ‘home’) %} true {% endif %}”
per far partire il trigger quando il devide_tracker è home.
Io ho tentato:
platform: template
value_template: “{% if states.switch.lavatrice.state is defined %} true {% endif %}”
ma non funziona.
Come posso verificare se lo switch è definito?
Grazie mille
Ciao e grazie dei complimenti. Come hai scritto sembrerebbe corretto utilizzando is defined o is not defined, siccome dici che non funziona potresti provare ad usare None.
Ad esempio {% if states.switch.lavatrice.state != ‘None’ %} true {% endif %}
oppure {% if states.switch.lavatrice.state is not None %} true {% endif %}
Se ti va possiamo parlarne in modo più approfondito sul forum. forum.hassiohelp.eu
Caio sono 2 giorni che sto impazzendo
secondo te cosa sbaglio a integrare il mio sonoff
– id: ‘Accendi_Luce_Fuori’
alias: “Luce Fuori ON”
initial_state: true
trigger:
platform: time
at: “17:15:00”
action:
service: light.turn_on
entity_id: switch.sonoff_100068fa62
attenzione, per la funzione ciclica del tempo occorre mettere time_pattern, info trovata qui dopo lunghi tentativi…
https://community.home-assistant.io/t/automation-turn-heater-on-every-2-hours/21218/11
ciao io volevo fare una automazione per quanto riguarda mqtt perché ogni qualvolta si riavvia Home Assistant devo andare a forzare il collegamento con i vari dispositivi collegati naturalmente con mqtt perché Mosquitto non ri ricollega in automatico mi protratti aiutare
Mi puoi fare avere un trigger che mi fa funzionare una tapparella per un tempo limitato tipo 10 seccondi?
Ciao, complimenti per la guida, una delle poche realmente utile e dettagliata a prova di neofita!
Siccome dal 5 dicembre Life360 non funzionerà più con IFTTT sto cercando di ricreare con Home Assistant alcune automazioni. Per questo sto cercando di ricreare l’evento “il primo che arriva a casa” e “l’ultimo che esce”. Ho provato a fare così, ma è la prima volta che ho a che fare platform template e non funziona, come si potrebbe fare? (penso che a breve sarà un’esigenza piuttosto diffusa)
trigger:
– platform: template
value_template: “{% if is_state(‘device_tracker.life360_device_1’, ‘home’) %} true {% endif is_state(‘device_tracker.life360_device_2’, ‘home’) %}”
Salve ma se volessi fare un’automazione per sapere se un’entità cambia stato o valore (esempio ho 2 entità ‘current version’ e ‘latest versione’ se viene rilasciata una nuova versione) cosa imposto nel trigger?
Ciao, complimenti per l’ articolo. chiaro e spiegato molto bene. ti chiedo invece come e’ possibile invece combinare due trigger in ‘and’ non in ‘or’. Voglio che scatti una determinazione azione solo se tutti e due i trigger si sono scatenati. grazie in anticipo.
buongiorno, avrei bisogno di una mano, sto compilando una automazione per i sensori presenza, avrei bisogno per ogni trigger che attiva l’automazione assegnare un numero ad una variabile direttamente nel trigger e non nelle action, è possibile?
grazie