community italiana di domotica personale
 
Integrare gratuitamente Home Assistant su Google Assistant (via GCP)

Integrare gratuitamente Home Assistant su Google Assistant (via GCP)

Scopi della guida:
Concetti affrontati:
  • Configurazione software
Componenti software utilizzate:
Prerequisiti:
  • Home Assistant configurato e funzionante
  • Home Assistant remotizzato via HTTPS (spiegato dopo)
  • Smart speaker Google Nest/Assistant configurato e funzionante e relativo account Google ad esso collegato
  • Un account personale Google (collegato al proprio/propri Amazon Echo)
Dispositivi fisici utilizzati:
  • Il computer sul quale è in esecuzione Home Assistant
  • Smartphone e/o tablet sul quale eseguire l’app “Google Home” (Android e/o iOS)
  • Smart speaker Google Nest/Assistant (qualsiasi modello di smart speaker o applicazione software che utilizzi Google Assistant come software integrato)
Guida indicata per utenti con installazione:
Ambiente Home Assistant HassOS-Supervised-Core
NOTE E DISCLAIMER
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata ed 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;
  • questa pagina è materialmente scritta e manutenuta da più individui: non ci si aspetti né si pretenda un supporto personale. In presenza di difficoltà, chiedere supporto alla community sul nostro forum o sulla nostra chat.
Revisione guida: 3.0

Google Home - Home Assistant

Abstract

L’avvento sul mercato degli Smart Speaker sta lentamente cambiando le abitudini di molti che, quotidianamente, prendono dimestichezza e familiarità con la possibilità di interagire con un vero e proprio assistente personale usando semplicemente voce e linguaggio naturale.

Google Nest è uno degli smart speaker di più ampio e riconosciuto successo. Come abbiamo spiegato tale smart speaker per funzionare utilizza il software Google Assistant, il quale è disponibile, anche per smart speaker prodotti da terze parti, oltre che come applicazione stand-alone per smartphone/tablet Android e iOS.

Qualunque smart speaker che utilizzi Google Assistant può esser facilmente integrato con Home Assistant. Ma perché, dato che molte componenti domotiche dichiarano compatibilità con Google Nest – e che quindi possono essere controllate “di fabbrica” da tale Smart Speaker – è utile integrarle con quest’ultimo tramite Home Assistant? [Prima di rispondere alla domanda, chi legge abbia chiaro il concetto di integrazione in domotica.]

Semplice: perché tramite un HUB personale come Home Assistant siamo in grado di definire scenari, accessori virtuali, automazioni non definibili altrimenti con l’uso separato delle singoli componenti. Come spiegato anche in un episodio del nostro podcast, alcuni scenari evoluti semplicemente non possono essere realizzati senza l’ausilio di una piattaforma comune, ovvero un HUB personale.

Nel momento in cui si integra tale HUB personale (quindi Home Assistant nel caso specifico di questa guida) con Google Nest, si potranno controllare tutti i componenti e le entità – quali scenari (ed altro) – in esso definiti tramite il mio assistente personale. Uno dei tanti motivi per adottare un HUB personale per la propria domotica.

Un focus su questo importante tema è disponibile qui.

Le tipologie di entità (definiti domini) presenti in configurazione Home Assistant e controllabili tramite integrazione con Google Assistant (Google Nest e speaker compatibili, nonché app) sono:

  • binary sensors (sensori binari)
  • camera (telecamere IP)
  • climate (climatizzatori e termostati)
  • cover (scuri)
  • fan (ventilatori) – accensione/spegnimento
  • group (gruppi)
  • input boolean (input booleani)
  • light (luci)
  • media_player (riproduttori multimediali)
  • scene
  • script – solo accensione/attivazione
  • sensor (sensori, solo temperatura)
  • switch (interruttori)
  • vacuum (aspirapolvere)
N.b. Per integrare Google Nest con Home Assistant esistono due strade:

La presente guida illustra come realizzare la seconda possibilità, quella gratuita.

Infine, è bene sapere che Google Nest può essere integrato ad Home Assistant anche come riproduttore multimediale e come sistema di notifica vocale, ovvero “facendolo parlare” automaticamente al presentarsi di determinate condizioni in domotica.

Si parte

Prerequisiti

Come illustrato in testa, i pre-requisiti principali sono due:

  • versione di Home Assistant maggiore o uguale alla 0.62;
  • Home Assistant configurato per il controllo remoto tramite HTTPS.

Il secondo punto prevede che la propria istanza Home Assistant sia raggiungibile da remoto e tramite protocollo HTTPS. In caso si stia utilizzando Home Assistant installato su Raspberry (installato come applicativo) è disponibile una guida dettagliata al procedimento. Inoltre è disponibile una guida allo stesso scopo per gli utenti che utilizzino la distribuzione Home Assistant OS.

Infine, è (ovviamente) necessario che su Home Assistant non sia operativa l’integrazione a pagamento tramite Nabu Casa.
Eventualmente, disattivarla prima di cominciare con l’esecuzione della presente guida.

Procedimento

L’integrazione non è particolarmente complessa, ma prevede il rispetto puntuale di alcune azioni sequenziali, sostanzialmente quattro:

  1. definizione di un progetto personale presso Google Actions;
  2. definizione di una chiave Service Account Key presso Google Cloud Platform;
  3. configurazione Home Assistant;
  4. discovery delle entità Home Assistant controllabili via Google Echo/Assistant.

Progetto Google Actions

Google Actions” è un ambiente operativo web (costola di Google Cloud Platform, l’ambiente cloud di Google per sviluppatori – e non) il quale consente a chiunque di creare dei progetti volti ad ampliare le funzionalità di Google Assistant.

Per realizzare l’integrazione descritta in questa guida utilizzeremo una tipologia specifica di progetto: “Smart Home“. Rechiamoci dunque presso Google Actions e, dopo essersi autenticati e aver accettato i termini d’uso (sempre che non sia stato fatto in precedenza), selezionare nuovo progetto:

Google Actions - New project

Una volta cliccato, indicare come nome progetto “Home Assistant” (o un altro nome di vostra preferenza) e selezionare la lingua e la nazionalità:

Google Actions - New project - Name

 

A questo punto cliccare su “Creare progetto” e avanzare oltre.
Verrà richiesto dal sito di scegliere la tipologia del nuovo progetto, nel nostro caso “Smart Home“:

Google Actions - New project - Tipology

 

Terminata questa prima fase di procedura ci si ritroverà sulla dashboard del progetto appena creato. Per portare a completamento la creazione della Action è necessario completare tutta una serie di schede.


In primis, è necessario impostare un “nome” alla nostra Action: per farlo, cliccheremo su “Name your Smart Home action” (può variare in base alla traduzione linguistica):

Google Actions - Project Dashboard - Name your project

Il nome che andremo ad indicare rappresenterà l’action presso l’app Google Assistant, pertanto è bene dargli un nome sufficientemente chiaro. Non è possibile usare nomi composti che contengano la parola “Assistant“.

N.b. In questa fase è possibile indicare più lingue diverse, qualora se ne abbia bisogno.

Google Actions - Project Dashboard - Name your project 2

Dopo aver cliccato “Salva” è possibile tornare alla tab “Overview” per provvedere al secondo step, ovvero, quello del “Setup account linking“:

Google Actions - Project Dashboard - Setup account linkingIn questa fase si va a indicare all’Action quali siano le coordinate verso la nostra istanza Home Assistant, relative al client “OAuth“:

Google Actions - Project Dashboard - Setup account linking 4

 

Nei campi, compilare come segue:

  • Client ID: https://oauth-redirect.googleusercontent.com/
  • Client secret: una stringa casuale di vostra scelta
  • Authorization URL: https://VOSTRO_INDIRIZZO_HOME_ASSISTANT:PORTA/auth/authorize

esempio: https://casamia.duckdns.org:8123/auth/authorize

  • Token URL: https://VOSTRO_INDIRIZZO_HOME_ASSISTANT:PORTA/auth/token

esempio: https://casamia.duckdns.org:8123/auth/token

Cliccare dunque su “Next” per passare ai punti successivi, i quali andranno saltati a pie’ pari fino arrivare a questa schermata:

Google Actions - Project Dashboard - Setup account linking - Save

Cliccare dunque su “Save” e tornare alla dashboard, cliccando alla voce “Overview“. Arrivati questo punto è necessario passare alla sezione “Build your Action” la quale segue “Quick setup“. Selezionare “Add Action(s)“:

Google Actions - Project Dashboard - Build Your Action - Add action

Nella finestra che si aprirà, indicare nel campo:

  • Fullfillment URL: https://VOSTRO_INDIRIZZO_HOME_ASSISTANT:PORTA/api/google_assistant

esempio: https://casamia.duckdns.org:8123/api/google_assistant

Cliccare su “Save” per tornare alla dashboard, cliccando alla voce “Overview“.
A questo punto sarà possibile cliccare su “Enter information required for listing your Action in the Actions directory“:

Google Actions - Project Dashboard - Build Your Action - Get ready for deployment

N.b. In realtà non andremo a rendere pubblica tale “Action“, ma la lasceremo in bozza, o in test, per così dire.

Nella schermata seguente (voce “Deploy“) andremo ad indicare le informazioni di contatto legate all’Action, sebbene essa rimarrà privata:

Google Actions - New project - Deploy

Nella voce “Description“, indicare una descrizione breve e una descrizione lunga (testo qualsiasi in entrambi i campi):

Google Actions - New project - Deploy 2

Alla voce “Images” indicare un’icona (per esempio il logo di Home Assistant):

Google Actions - New project - Deploy 3

 

Alla voce “Contact details” indicare i propri dati (per lo meno l’email):

Google Actions - New project - Deploy 4

Infine, alla voce “Privacy and consent” indicare l’indirizzo https://home-assistant.io in entrambi i campi:

Google Actions - New project - Deploy 5

Ignorare l’ultima voce, “Additional Informations“, e cliccare su “Save” in alto a destra.

Concludendo le attività presso Google Actions, recuperare il “Project ID” cliccando in alto a destra i tre puntini e poi “Project settings“:

Google Actions - New project - Project Settings

Una volta apertasi la finestra, appuntarsi il valore dell’ID di progetto indicato nel campo Project ID:

Google Actions - New project - Project Settings 2

Chiudere infine la finestra del browser.

Service Account Key

Giunti a questa fase è il momento di generare una “Service Account Key“, una chiave autorizzativa necessaria successivamente nella configurazione di Home Assistant.

Per farlo è necessario collegarsi, autenticandosi sempre col proprio account Google, a questo indirizzo.

Assicurarsi di aver selezionato il progetto creato poco fa. Cliccare in spalla sinistra su “IAM & Admin” > “Service accounts” e poi su “+ CREATE SERVICE ACCOUNT“:

Google Actions - New service account - passo 1

Sotto Service account details” inserire come service account name la stringa “homeassistant” il secondo campo relativo all’ID si auto-completerà creando una stringa univoca) e cliccare su “CREATE AND CONTINUE“:

Google Actions - New service account - passo 2

Selezionare il ruolo “Owner” e cliccare su “CONTINUE“:

Google Actions - New service account - passo 3

Arrivati al terzo step, cliccare nuovamente su “CONTINUE“.

Avremo ora il riepilogo dei service account. Cliccare sul nome di quello appena creato.
Nella pagina successiva portarsi sul tab “KEYS“, cliccare su “ADD KEY” e poi su “Create new key“:

Google Actions - New service account - passo 4

Ci verrà chiesto il formato della chiave da creare. Selezioniamo “JSON” e poi clicchiamo su “CREATE“:

Google Actions - New service account - passo 5

Il browser, dopo una breve attesa, vi proporrà di scaricare un file con estensione .json. Salvatelo da parte, servirà a breve.

Configurazione Home Assistant

È il momento di agire presso Home Assistant. Per attivare l’integrazione di Google Nest, infatti, è necessario aggiungere in configurazione un piccolo blocco che fornisca all’HUB le coordinate rispetto a:

  • il l’ID di progetto definito col proprio progetto presso  Google Action;
  • la Service Account Key definita presso Google Cloud Platform;
  • i domini da esporre verso Google Assistant.

Come accennato nell’abstract, i domini (ovvero le tipologie) di entità che possono essere controllate da Google Assistant sono:

  • binary sensors (sensori binari)
  • camera (telecamere IP)
  • climate (climatizzatori e termostati)
  • cover (scuri)
  • fan (ventilatori) – accensione/spegnimento
  • group (gruppi)
  • input boolean (input booleani)
  • light (luci)
  • media_player (riproduttori multimediali)
  • scene
  • script – solo accensione/attivazione
  • sensor (sensori, solo temperatura)
  • switch (interruttori)
  • vacuum (aspirapolvere)

È pertanto necessario indicare, uno ad uno, i domini da esporre da Home Assistant verso Google Assistant; il nostro caldo consiglio (sopratutto in presenza di una domotica personale particolarmente articolata) è quello di cominciare per gradi, indicando un dominio alla volta, così da avere modo di amministrare le varie entità presso Google Assistant in modo ordinato.

Per attivare l’integrazione, il blocco “tipo” da inserire in configurazione è:

google_assistant:
  project_id: XXXXXXX
  service_account: !include YYYYYYY.json
  exposed_domains:
    - light
    - switch
    - climate
  entity_config:
    switch.ingresso:
      name: NOME_COL_QUALE_ESPORRE_LO_SWITCH_A_GOOGLE_HHOME
      aliases:
        - LUCI_FORTI
        - LUCI_INGRESSO
    light.bagno:
      expose: false
      room: BAGNO

come facile intuire, le chiavi “project_id” e “service_account” sono andranno compilati con le informazioni precedentemente raccolte relative all’ID del progetto Google Action e alla Service Account Key di Google Cloud Platform.

Per quanto riguarda la chiave project_id, è necessario indicare, al posto de “XXXXXXX” dell’esempio, l’ID del progetto per intero (eg. “home-assistant-4c112“).

Per quanto riguarda la chiave service_account, è necessario indicare, al posto de “YYYYYYY.json” dell’esempio, il nome del file scaricato nel passo in cui si è definita la Service Account Key. Tale file, infine, andrà copiato nella directory contenente i file di configurazione di Home Assistant.

Tramite la chiave “exposed_domains“, nell’esempio abbiamo indicato tre domini di entità da esporre a Google Nest, ovvero “Light“, “Switch” e “Climate” – ognuno, ovviamente, indicherà quelli che ritiene opportuni. Attenzione: vanno indicati i domini – quindi le famiglie di componenti – non le singole entità.

Infine, tramite la chiave “entity_config” abbiamo anche personalizzato uno switch e una luce (switch.ingresso e light.bagno) in modo che Google Nest li “conosca” con nomi alternativi e altre particolarità.

Una volta completata la propria configurazione, riavviare Home Assistant.

Test

Dopo aver concluso i passi precedente è necessario effettuare un’ultimo gesto, elementare ma necessario, il quale andrà ripetuto una volta al mese per mantenere “viva” l’action creata: eseguire un test presso la console.

Collegarsi dunque presso l’Action Console di Google, entrare sul proprio progetto “Home Assistant” (o come è stato chiamato), cliccare su “Build you Action” e infine su “Test“.

Aggiungere l’Action a Google Home

Si tratta del passo finale volto ad aggiungere la nostra “Action” al nostro ecosistema Google Assistant.

Dopo aver atteso il riavvio di Home Assistant, aprire l’app Google Home (per Android e/o iOS) avendo cura di essere autenticati col proprio account Google.

Una volta entrati, cliccare su “+“:

Google Home - Add device

Successivamente, selezionare la voce “+“:

Google Home - Add device 2

Poi, la seconda voce:

Google Home - Add device - 3

 

A questo punto sarà necessario scegliere la propria “Action“, il quale nome varierà in base alle scelte fatte all’inizio della definizione della stessa presso Google Actions (nel nostro caso, “abra cadabra“:

Google Home - Add device 4

Ovviamente il prefisso “[test]” è più che normale, dato che la nostra “Action” è privata e non pubblica.
Una volta selezionata l'”Action” verrà richiesta l’autenticazione verso il proprio Home Assistant:

Google Home - Add device 5

Una volta autenticati, se tutto funzionerà correttamente, Google Home visualizzerà tutte le entità della tipologia dei domini indicati in configurazione.

Sarà dunque sufficiente completare la configurazione delle singole entità (in questo esempio le sole luci, dato che come domini inclusi nell’integrazione abbiamo indicato solo “Light”):

Google Home - Add device 6Una volta completata tale attività, l’integrazione sarà completata e sarà quindi possibile cominciare a controllare la propria domotica basata su Home Assistant tramite comandi vocali presso Google Nest/Assistant.

Local Fulfillment?

Arrivati a questo punto l’integrazione è pienamente funzionante ma, ovviamente, ogni comando transita necessariamente via Internet. Al netto del riconoscimento del linguaggio – il quale necessariamente prevede la comunicazione dello smart speaker verso il cloud Google – è possibile far sì che i comandi verso Home Assistant vengano eseguiti localmente.

Per attivare questa funzione è necessario attivare la “Local Fulfillment”, una funzione disponibile dalla versione 2022.2 di Home Assistant. Per farlo seguire questa nostra breve guida.


“Far parlare” Amazon Alexa come sistema di notifica domotica su Home Assistant