community italiana di domotica personale
 
Eseguire sequenze logiche sulla domotica Home Assistant tramite comandi vocali Google Nest

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

SCOPI DEL PROGETTO:
  • Definire delle sequenze (intelligenti) di azioni Home Assistant eseguibili tramite lo smart speaker Google Nest (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 Nest)
PROGETTO INDICATO a UTENTI CON ISTALLAZIONE:
Ambienti Home Assistant HassOS-Supervised-Core
NOTE E DISCLAIMER
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata e realizzata SOLO da personale qualificato;
  • qualsiasi modifica non prevista attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno infatti puro scopo didattico) e fa decadere garanzia, omologazioni e certificazioni di qualità; dei dispositivi interessati;
  • tutte le tecniche descritte si intendono applicate a software e firmware aggiornati alle ultime versioni disponibili;
  • gli articoli di inDomus sono totalmente indipendenti e non sponsorizzati. Se mai questo cambiasse, verrà segnalato chiaramente sulle pagine oggetto di sponsorizzazione;
  • questa pagina è materialmente scritta e manutenuta da più individui: non ci si aspetti né si pretenda un supporto personale. In caso di difficoltà, chiedere supporto alla community sul nostro forum o sulla nostra chat;
  • se hai bisogno di orientarti, c'è la mappa.
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 Nest è 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 Nest 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 Nest, 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 Nest.

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 Nest 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'
          - action: 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 Nest:

          - action: 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 “Strumenti per sviluppatori” > “YANK” e cliccare su “RICARICA SCRIPT“.

Vetrina - Offerte del giorno

App Google Home

Dopo il riavvio dell’HUB, se sia sarà provveduto a configurare l’auto-discovery su Home Assistant (verso Google Nest), 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 Nest può facilmente gestirlo e quindi innescarlo a fronte di un nostro comando. Dando per assunta come detto l’avvenuta integrazione del proprio Google Nest 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 dell’app 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.

⚠️ 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.