Eseguire sequenze logiche sulla domotica Home Assistant tramite comandi vocali Google Home

4 minuti di lettura
SCOPI DEL PROGETTO:
  • Definire delle sequenze (intelligenti) di azioni Home Assistant eseguibili tramite lo smart speaker Google Home (Assistant)
  • Livello di difficoltà: medio/basso
  • Costo: nullo
CONCETTI AFFRONTATI:
  • Configurazione software
COMPONENTI SOFTWARE UTILIZZATE:
DISPOSITIVI FISICI UTILIZZATI:
  • Il computer su cui è in esecuzione Home Assistant
  • Uno o più smart speaker dotati di assistente Google Assistant (eg. linea Google Home)
PROGETTO MAGGIORMENTE INDICATO PER:

Tutti gli ambienti

Note e disclaimer
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata ed realizzata SOLO da personale qualificato;
  • qualsiasi modifica attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno puro scopo didattico);
  • qualsiasi modifica attuata in proprio a un dispositivo ne fa decadere garanzia, omologazioni e certificazioni di qualità.
Revisione progetto: 1.0

Google Nest - Script Home Assistant

Abstract

Gli smart speaker sono tra gli strumenti di gestione finale tra i più apprezzati in domotica personale. Il perché è molto semplice da intuire: comandare con la voce il comportamento della propria casa fornisce un’interfaccia uomo-macchina imparagonabile con qualsiasi altra modalità.

Come sappiamo, tra i più diffusi smart speaker sono quelli della linea Google Nest dotati di assistente Assistant, i quali possono venire integrati con la domotica basata sull’HUB personale Home Assistant in diverse modalità, sia come attuatori che come riproduttori multimediali.

La prima modalità (come attuatori) consente, per l’appunto, di gestire le entità domotiche presenti sull’HUB (quali che siano) tramite comandi vocali: da “accendi la luce” a “imposta il riscaldamento a 20 gradi“, ogni comando previsto dalla natura specifica dell’entità controllata è tipicamente consentito.

Quello che, di base, non è previsto da Google Home è eseguire sequenze di comandi. O meglio: esistono certamente le routine, le quali sì permettono di eseguire sequenze di azioni sulla base di un comando, ma non prevedono di applicare alcuna logica in quello che fanno.

Ipotizziamo di avere un sensore previsionale meteo su Home Assistant che indichi la quantità di pioggia prevista a +6 ore. Ipotizziamo altresì di avere uno o più sensori di apertura varchi collocati sulle finestre di averli integrati a Home Assistant.

Ipotizziamo infine di aver definito una routine su Google Home che, quando andiamo a letto, semplicemente dicendo “Hey Google, buonanotte” spenga le luci di casa. Bene: col presente progetto vedremo come far sì che tale routine d’esempio (usata per spiegare il concetto) provveda non solo a spegnere le luci, ma anche – per esempio – a verificare automaticamente se sia prevista pioggia e se, in caso qualche finestra sia aperta, avvisare tramite un annuncio dello smart speaker in merito alla situazione di potenziale pericolo, per esempio “Attenzione, è prevista pioggia nella notte e ci sono finestre aperte“.

Si parte

Logica di funzionamento

Uno script di Home Assistant altro non è che una sequenza – volendo, arricchita da logica – di azioni. Tali script, se inclusi nei domini esposti verso Google Home, vengono visti da quest’ultimo come “Scene”.

Per questa guida ipotizzeremo la realizzazione dello scenario descritto nell’abstract (la verifica dell’apertura delle finestre a fronte di una previsione di pioggia e, in caso, comunicazione di alert) tramite uno script che esporremo verso Google Home.

Assunti

Premesso che lo script realizzato con questo progetto sarà puramente illustrativo (il proprio potrà contenere qualsivoglia altra azione), assumeremo per la sua realizzazione l’esistenza sul nostro HUB delle seguenti entità:

  • sensor.6h_precipitation
  • binary_sensor.window_opening_1binary_sensor.window_opening_2
  • media_player.googlehomeXXX

Il primo, sensor.6h_precipitation è un sensore meteo che indica la previsione di pioggia, mentre binary_sensor.window_opening_1 e binary_sensor.window_opening_2 sono due sensori binari che indicano lo stato di apertura rispettivamente di due finestre. Ovviamente assumiamo che tali entità siano il prodotto di diverse integrazioni a partire dai servizi e sensori fisici a propria disposizione.

In ultimo, media_player.googlehomeXXX è l’entità che rappresenta il nostro smart speaker Google Home integrato come riproduttore multimediale. Inoltre, si assume che il nostro smart speaker sia anche integrato a Home Assistant come attuatore a comandi vocali (in modalità a pagamento o gratuita).

Script

La prima cosa da fare, come detto, è creare lo script che ci serve. Nel nostro caso lo chiameremo script.check_finestra (con friendly name “Check finestre in caso pioggia”) e lo definiremo in configurazione come segue:

script:
  check_finestra:
    alias: "Check finestre in caso pioggia"
    sequence:
      -  condition: and
         conditions:
          - condition: numeric_state
            entity_id: sensor.6h_precipitation
            above: 0
          - condition: or
            conditions:
              - condition: state
                entity_id: binary_sensor.window_opening_1
                state: 'on'
              - condition: state
                entity_id: binary_sensor.window_opening_2
                state: 'on'
          - service: tts.google_say
            entity_id: media_player.googlehomeXXX
            data:
              message: "Attenzione, è prevista pioggia e ci sono finestre aperte."

Si tratta di uno script molto semplice, il quale, in caso sia prevista pioggia

          - condition: numeric_state
            entity_id: sensor.6h_precipitation
            above: 0

e una delle due finestre risulti aperta:

          - condition: or
            conditions:
              - condition: state
                entity_id: binary_sensor.window_opening_1
                state: 'on'
              - condition: state
                entity_id: binary_sensor.window_opening_2
                state: 'on'

innesca la notifica verbale di Google Home:

          - service: tts.google_say
            entity_id: media_player.googlehomeXXX
            data:
              message: "Attenzione, è prevista pioggia e ci sono finestre aperte."

siccome gli script vengono eseguiti in sequenza, in questo caso se prima non viene superato il blocco condition, la chiamata per l’esecuzione della notifica verbale non viene eseguita. Niente pioggia – o finestre chiuse – nessuna notifica.

Al termine dell’aggiunta dello script, ricordarsi di riavviare Home Assistant o, per praticità, recarsi alla voce “Impostazioni” > “Controlli del Server” e cliccare su RICARICA SCRIPT.

App Google Home

Dopo il riavvio dell’HUB, se sia sarà provveduto a configurare l’auto-discovery su Home Assistant (verso Google Home), allora su Google Home sarà apparsa anche la scena appena creata (in questo caso chiamato “Check finestre in caso pioggia”). Diversamente, chiedere allo speaker chiedendo “Hey Google, sincronizza i miei dispositivi” per far sì che venga aggiunta.

N.b. Ancora una volta: ovviamente la procedura non potrà mai andare a buon fine se prima non si è provveduto all’integrazione di Home Assistant come attuatore a comandi vocali.
Routine

Dato che abbiamo realizzato uno script, Google Home può facilmente gestirlo e quindi innescarlo a fronte di un nostro comando. Dando per assunta come detto l’avvenuta integrazione del proprio Google Home alla domotica Home Assistant (in modo gratuito o tramite cloud a pagamento) – la quale deve includere, nei domini integrati, anche gli script – andremo a vedere come gestire, tramite routine Google Home, l’innesco della scena corrispondente chiamato “Check finestre in caso di pioggia” precedentemente definito.

In primis, apriamo l’applicazione Google Home su smartphone/tablet e selezioniamo “Routine” / “Nuova routine“. Come trigger, selezioniamo “Quando” > “Aggiungi comandi“:

Google Home - Routine - CheckFinestre - 1

Configureremo “Check Finestre” e andremo avanti cliccando su “Aggiungi azione“:

Google Home - Routine - CheckFinestre - 2

Selezioniamo poi la voce “Sfoglia le azioni più usate“, selezionano poi “Regola le scene“:

Google Home - Routine - CheckFinestre - 3

Selezionare poi l’ingranaggio e selezionare, successivamente, la scena da controllare:

Google Home - Routine - CheckFinestre - 4

Terminare cliccando su “OK“.

Così facendo, da qui in poi ogni volta che si pronuncerà “Hey Google, check finestre“, Home Assistant verificherà le condizioni e le logiche dello script. In questo caso specifico, avviserà l’utente in caso sia prevista pioggia e almeno una delle due finestre risulti aperta tramite Google Home.


Home Assistant Official Logo ATTENZIONE: 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.


Telegram News Channel