Le “automazioni” di Home Assistant: cosa sono e come si usano

Una delle conquiste più importanti legate alla realizzazione della propria domotica personale sta nella possibilità di definire al suo interno delle automazioni. Il proprio HUB personale, infatti, rappresenta non solo il “ponte di comando“, ma anche la centrale automazioni in grado di fornire coscienza e volontà alla propria abitazione.

Home Assistant è dotato di un motore molto versatile e funzionale per definire tali fondamentali strumenti di gestione della domotica.

Cos’è un’automazione

Un automazione, come facilmente suggerisce il nome, è un meccanismo automatico il quale “fa delle cose” sulla base del presentarsi di determinate condizioni.

Se rilevi la presenza di una persona in una stanza, accendi le luci in quella stanza

Se in giornata non ha piovuto, alle 18 irriga il prato

Se siamo tutti usciti da casa, attiva l’allarme

Quando ci stiamo avvicinando a casa, se a casa fa caldo, accendi il condizionatore

Alle sette di mattina, se siamo in casa e se fa freddo, accendi il riscaldamento del bagno

e così via: tutti banali, semplici esempi di automazione.


Le caratteristiche principali di un’automazione Home Assistant sono due: un trigger (ovvero un innesco) e un’action (un’azione da eseguire). Inoltre, un’automazione può anche prevedere una condition (una condizione) la quale venga verificata all’atto dell’esecuzione dell’automazione stessa, ovvero quando il trigger viene eseguito.

Tutte le automazioni Home Assistant utilizzano l’event bus (il bus degli eventi) dell’HUB, ovvero il canale presso il quale tutti i cambi di stato delle entità definite nell’HUB vengono tracciati. Quando per esempio un’entità di tipo “Light” cambia stato da “off“, e “on”, tale cambio viene tracciato sull’event bus: se tale cambio di stato sarà stato mappato all’interno del trigger di un’automazione, tale automazione verrà dunque eseguita.

N.b. Si tratta di un meccanismo piuttosto semplice ed intuitivo, il quale però non può prescindere dalla comprensione di cosa sia un’entità di Home Assistant. Un’automazione, presso Home Assistant, è essa stessa un’entità (di tipo “Automation), la quale ha un proprio stato e propri attributi.

Come funziona

Partiamo da un esempio esplicativo.
Immaginiamo di voler accendere automaticamente il riscaldamento del bagno alle sette di mattina, ma solo quando siamo effettivamente presenti in casa:

(trigger)    alle sette di mattina
(condition)  se siamo in casa e se fa freddo
(action)     accendi il riscaldamento in bagno

La prima riga descrive il trigger, ovvero l’innesco dell’automazione. Si basa sul cambiamento dello stato di una data entità, specificata nella configurazione: possono essere usate diverse modalità che descrivono il passaggio di stato da uno specifico ad un altro, oppure da uno qualunque a uno specifico, oppure da uno specifico a uno qualunque. Esiste anche la possibilità di indicare la durata del perdurare di uno stato specifico (eg. se lo stato dell’entità indicato perdura per più di tot secondi, minuti ecc.).
Quando il cambio di stato (in base alla configurazione) si verifica, l’automazione viene innescata, ovvero eseguita. Per innescare l’automazione possono essere configurati più trigger, ma basterà che se ne verifichi solo uno affinché l’automazione venga innescata.
Nel caso dell’esempio sopra il trigger è il raggiungimento dello stato “7:00” dell’entità che rappresenta l’orologio.

La seconda descrive la condition, ovvero una o più condizioni da verificare all’atto dell’innesco. Non è da confondersi (come spesso capita) col trigger: mentre quest’ultimo serve ad innescare l’automazione sulla base di un cambio di stato di una data entità, la (o le) condition viene verificata dopo che il trigger si è verificato e ha innescato l’automazione; se tale (o tali) condition è vera, allora l’automazione prosegue nella propria esecuzione, giungendo infine all’azione (o alle azioni) da eseguire.
Nel caso dell’esempio sopra, le condition sono due: la prima verifica un’entità preposta all’identificazione della presenza degli inquilini (di solito un raggruppamento di entità di tipo “Device Tracker“); se la condizione è vera (gli inquilini sono in casa), verifica la seconda, ovvero che “non faccia freddo” (utilizzando lo stato o un attributo di un’entità di tipo “Sensor” riconducibile a un sensore di temperatura presente nell’ambiente domotico).
N.b. le condizioni vengono sempre verificate in sequenza. Si procede all’action solo quando tutte, in sequenza, sono vere.

La terza infine descrive l’action, ovvero una o più azioni da effettuare a fronte del trigger e della successiva, positiva verifica della/e condizioni di cui al secondo punto.
Anche in questo caso, come le condition, le action possono essere molteplici e vengono eseguite in sequenza. Ogni azione prevede di utilizzare i servizi del componente al quale fa capo l’entità per far sì che quest’ultima cambi stato.
Nel caso dell’esempio sopra, un’entità di tipo “Climate” che rappresenta il riscaldamento del bagno verrà pilotata utilizzando il servizio climate.turnon, il quale permette l’accensione dell’entità (accensione che si baserà sul tipo di integrazione alla base della sua presenza su Home Assistant). Se si volesse anche regolare la temperatura target, si potrebbe utilizzare (sempre che l’entità lo preveda) il servizio climate.set_temperature come azione seguente alla prima.

Stato e attributi

L’automazione – in quanto essa stessa entità – ha un proprio stato e dei propri attributi.

Lo stato è binario (“on” / “off“) il quale indica se sia operativa o meno. Un’automazione in “off” non verrà eseguita neanche al presentarsi del trigger. Tale stato, all’avvio di Home Assistant, può essere regolato tramite il parametro di configurazione “initial_state“, il quale può essere impostato rispettivamente “on” o “off“.

Gli attributi sono tre:

last_triggered(data/ora) Indica data e ora dell’ultima esecuzione dell’automazione. È “null” se non è mai stata eseguita dall’ultimo riavvio di Home Assistant.
hidden(binario “true“/”false“) Indica se l’entità sia visualizzabile (utilizzando il raggruppamento automatico group.all_automations) presso l’interfaccia utente oppure no.
friendly_name(stringa) Indica il friendly name dell’entità.

Il fatto che un’automazione sia essa stessa un’entità e possegga uno stato e degli attributi fa sì che essa stessa possa essere utilizzata come trigger, come condition e come action all’interno di altre automazioni (cosa comunque non caldeggiata).

Come definire un’automazione

Le automazioni sono solitamente contenute all’interno della configurazione sidecar di Home Assistant definita presso il file automations.yaml presente nella cartella principale di Home Assisant.

Ci sono due modi per definire/amministrare/modificare un’automazione:

  • tramite interfaccia utente Home Assistant;
  • a mano.
Interfaccia utente

È il metodo più semplice: permette, tramite interfaccia web/app, di definire un’automazione la quale, una volta salvata, verrà aggiunta al file automations.yaml.

Cliccando su “Configurazione/Automazione” presso il frontend, infatti, apparirà una web form tale da permetterci da configurare il nome dell’automazione, trigger, condition e action:

Home Assisant - Nuova automazione - nome

A seguire, il o i trigger:

Home Assisant - Nuova automazione - trigger

poi la o le condition:

Home Assisant - Nuova automazione - condition

infine, la o le action:

Home Assisant - Nuova automazione - action

Al termine della configurazione, sarà sufficiente salvare e rendere così operativa l’automazione.

MANUALMENTE

Per gli amanti degli editor testuali, l’alternativa è modificare manualmente il file automations.yaml il quale, analogamente agli altri file di configurazione di Home Assistant, è espresso in notazione yaml.

A seguire un esempio di automazione:

automation:
- alias: "Riscaldamento automatico bagno"
  initial_state: 'on'
  trigger:
    platform: time
    at: '7:00:00'
  condition:
    - condition: template
      value_template: '{{ states.sensor.temperatura_bagno.state|int < 20 }}'
    - condition: state
      entity_id: group.famiglia
      state: 'home'
  action:
    - service: climate.turnon
      entity_id: climate.bagno

In questo esempio viene definita l’entità automazione chiamata automation.riscaldamento_automatico_bagno la quale viene innescata tutti i giorni alle 7 del mattino, e che viene eseguita solo se la temperatura è inferiore ai 20 gradi (utilizzando come verifica lo stato dell’entità sensor.temperatura_bagno) e se la famiglia è in casa (utilizzando come verifica lo stato dell’entità group.famiglia la quale sia assume essere un raggruppamento di “Device Tracker“) e che infine, come azione, accende l’entità di tipo “Climate” chiamata climate.bagno.

Un esempio molto strutturato di automazione relativa a sistemi clima è per esempio riportato in questo progetto.

Conclusioni

Le automazioni, in domotica, sono il pane e il companatico di chi beneficia di queste incredibili tecnologie moderne. Le automazioni Home Assistant, poi, sono forse tra le più potenti disponibili oggi: il limite è solo la fantasia e il grado di integrazione ottenuto tramite questo portentoso HUB personale: più sono le entità integrate (indipendentemente dai dispositivi o dai produttori) più è possibile definire automazioni sempre più puntuali e tagliate ad hoc per le proprie esigenze.


Home Assistant Official LogoATTENZIONE: ricorda che sul nostro community FORUM c'è una sezione ad hoc dedica a Home Assistant, per qualsiasi dubbio, domanda, informazione nel merito specifico di queste componenti.

🔻 Clicca QUI per commentare l'articolo. 🔻

Il concetto di “integrazione” nella domotica personale