community italiana di domotica personale
 
I “progetti” (o “blueprints”) di Home Assistant: cosa sono e come funzionano

I “progetti” (o “blueprints”) di Home Assistant: cosa sono e come funzionano

Home Assistant Official Logo

A partire dalla prima versione stabile dell’HUB per domotica personale Home Assistant Core (la 1.0, meglio nota come 2020.12.x) sono state introdotte un po’ a sorpresa le “blueprints” (o meglio “Progetti“, almeno per come vengono tradotte sull’interfaccia dell’HUB in italiano). 

Detta in parole povere, le blueprints sono come le formine per biscotti: tramite ognuna di esse è possibile modellare una o più automazioni “gemelle”, differenziandole tramite le entità coinvolte nei vari trigger, condition e action. (se per chi legge stiamo parlando in ostrogoto forse è il caso, prima, di leggere la scheda formativa sulle automazioni).

Ipotizziamo per esempio di avere in casa tanti sensori di presenza (o di movimento) e tanti punti luce, e di voler scrivere automazioni che, a fronte dell’innesco del sensore, si accenda una luce corrispondente: una blueprint potrebbe essere d’aiuto per scrivere tante automazioni gemelle quanti sono gli abbinamenti sensore-punto luce.

N.b. Noi di inDomus non caldeggiamo particolarmente l’uso delle funzionalità blueprint. Perché? Semplice: in presenza di scenari in cui esistano azioni ripetibili (nei quali implementare più automazioni gemelle), ciò che bisogna essere abili nel fare è realizzare sempre una e solo una automazione che gestisca i vari trigger e le varie azioni da attuare. Nell’esempio di cui sopra, la soluzione più corretta non è quella di generare tante automazioni quanti sono i sensori, ma semmai scrivere un’elegante automazioni dotata di molteplici trigger (i vari sensori) e poi un blocco condition e sopratutto uno action gestiti tramite logiche condizionali che valutino, ogni volta che si presenta un’ingaggio dell’automazione, quale punto luce accendere.

Come funziona

Come sempre per spiegarci utilizzeremo gli esempi.
Rimanendo quindi nell’alveo dell’esempio di cui sopra, un’automazione “tipo” che accendaun punto luce ogni qual volta viene attivato un sensore di presenza sarebbe scritta all’incirca così:

automation:
- alias: "Accensione punto luce"
  trigger:
    platform: state
    entity_id: binary_sensor.rilevatore_presenza
    to: 'on'
  action:
    action: light.turn_on
    data:
      entity_id: light.punto_luce

Le entità coinvolte, come si capisce rapidamente, sono “binary_sensor.rilevatore_presenza” (il sensore di rilevazione presenza) e “light.punto_luce” (la luce da comandare).

Per creare un blueprint è necessario scrivere manualmente un file in formato YAML (come il file di configurazione dell’HUB, per capirci) nella cartella  blueprint/automation presente nella cartella di configurazione dell’HUB.

Tale file si compone di:

  • un blocco principale (“blueprint:“) contenene:
    • alcune chiavi di configurazione (eg. “name:“)
    • un sottoblocco di definizione degli input (“input:“)
  • un blocco trigger:
  • un blocco action:

Nel nostro caso chiameremo il nostro file esempio.yaml.

BLOCCO PRINCIPALE

Cominciando la definizione del file (può essere utilizzato un qualsiasi editor) provvederemo a indicare alcune informazioni di base presso la sezione blueprint:.

Inseriremo quindi il nome della blueprint, il dominio (che per ora riguarda le sole automazioni) ed eventualmente una descrizione:

blueprint:
  name: Luce Presenza
  description: Accende la luce quando viene rilevata presenza da un sensore
  domain: automation

Fatto questo sarà necessario decidere cosa quali informazioni accettare in ingresso alla blueprint all’atto del suo uso per definire automazioni. Nel nostro caso dovranno essere passate due entità: quella relativa al sensore di movimento (il trigger) e quella relativa al punto luce (quella da comandare nel blocco action).

La definizione degli input viene effettuata presso il sottoblocco “input:“, come da esempio che segue:

blueprint:
  name: Luce Presenza
  description: Accende la luce quando viene rilevata presenza da un sensore
  domain: automation
  input:
    motion_sensor:
      name: Sensore di presenza
      description: Sensore che farà accendere la luce
    target_light:
      name: Luce
      descritption: Luce da pilotare

Nel blocco abbiamo indicato due input, motion_sensor e target_light. Non hanno bisogno di spiegazioni 🙂

BLOCCO TRIGGER

Terminata la definizione del blocco principale, concentriamoci sul blocco trigger, ovvero quello che gestirà gli inneschi delle automazioni dedfinite tramite la blueprint. A tale blocco è necessario indicare, tramite la particella !input, le variabili (indicate sopra tra gli input) da passargli:

trigger:
  platform: state
  entity_id: !input motion_sensor
BLOCCO ACTION

Analogamente al trigger, ora definiamo “cosa verrà eseguito” a fronte dell’innesco di un’automazione basata sulla blueprint che stiamo definendo.

action:
  action: light.turn_on
  data:
    entity_id: !input target_light

anche in questo caso gli passiamo una variabile, ovvero target_light, definita in testa tra gli input.

Vetrina - Offerte del giorno

BLUEPRINT DEFINTIVA

A questo punto il file dovrebbe apparire come segue:

blueprint:
  name: Luce Presenza
  description: Accende la luce quando viene rilevata presenza da un sensore
  domain: automation
  input:
    motion_sensor:
      name: Sensore di presenza
      description: Sensore che farà accendere la luce
      selector:
        entity:
          domain: binary_sensor
          device_class: motion
    target_light:
      name: Luci
      description: Luce da pilotare
      selector:
        target:
          entity:
            domain: light

trigger:
  platform: state
  entity_id: !input motion_sensor

action:
  action: light.turn_on
  data:
    entity_id: !input target_light

una volta salvato nel percorso sopra illustrato, riavviare l’HUB: la blueprint apparirà presso l’elenco del menu dell’interfaccia web dell’HUB “Configurazione” > “Automazioni e scene” > “Progetti“.

Importare blueprint

Al di là della definizione manuale di blueprint, per aggiungerne di nuove è possibile anche scaricare da internet per aggiungerle al proprio elenco. Per farlo è sufficiente cliccare su “Importa progetto” e copia-incollare l’URL del file YAML dal quale importarlo, per esempio:

https://indomus.it/wp-content/docs/blueprint/esempio.yaml

Uso

Definita la blueprint è possibile finalmente cominciare a formare i biscotti, ovvero le automazione tramite essa definite.
Per farlo, recarsi alla voce di menu”Configurazione” > “Automazioni e scene” > “Progetti” e, in corrispondenza della riga relativa alla blueprint d’interesse, cliccare su “Crea automazione“.

Home Assistant - Progetti - Nuova automazione

Nel nostro caso d’esempio, l’interfaccia consentirà di selezionare gli input da utilizzare nel trigger e nell’action, proprio come da definizione YAML spiegata sopra:

Home Assistant - Progetti - Nuova automazione - dettagli

Come al solito, il limite è la fantasia. Come già detto sopra, comunque, si consiglia di non utilizzare troppo le blueprint, ma piuttosto spendere tempo per capire come realizzare automazioni flessibili, potenti, e sopratutto non gemellari come accade utilizzando le blueprint.

⚠️ Se di Home Assistant ne sai poco ma sei interessato a capirne di più, ti suggeriamo di partire da qui.

Questa pagina è redatta, manutenuta e aggiornata dallo staff di inDomus, un gruppo di persone molto diverse tra loro che trovi, per domande e supporto, sul forum e sulla chat del sito. Alcuni link sono taggati in qualità di affiliati Amazon e riceviamo un compenso dagli acquisti idonei, utile al sostenimento del sito, ma le nostre recensioni sono tutte indipendenti e non sponsorizzate. Se ti sei perso, a tua disposizione c'è la mappa.