Integrare gratuitamente Google Home (Assistant) con Home Assistant (via GCP)

9 minuti di lettura
Scopi della guida:
Concetti affrontati:
  • Configurazione software
Componenti software utilizzate:
Prerequisiti:
  • Home Assistant configurato e funzionante (minimo versione 0.62)
  • Home Assistant remotizzato via HTTPS (spiegato dopo)
  • Google Home/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)
  • Google Home/Assistant (qualsiasi modello di smart speaker o applicazione software che utilizzi Google Assistant come software integrato)
GUIDA maggiormente indicatA per:

Tutti gli ambienti

Note e disclaimer
  • qualsiasi modifica all'impianto elettrico dev'essere effettuata da personale qualificato;
  • qualsiasi modifica attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (la presente guida ha puro scopo didattico);
  • qualsiasi modifica attuata in proprio a un dispositivo ne fa decadere la garanzia.
Revisione guida: 1.1

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 Home è uno dei device 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 Home – 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, scenari come “buonanotte” (il quale magari quando evocato spenga tutte le luci, la tv, e attivi l’allarme perimetrale) 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 Home, 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.

Gli elementi (definiti domini) definiti in configurazione Home Assistant e controllabili tramite integrazione con Google Assistant (Google Home 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 Assistant con Home Assistant esistono due strade:

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

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 (installazione come applicativo) è disponibile una guida dettagliata al procedimento.

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 API 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

verrà poi chiesto quale sotto-tipologia di progetto creare, scegliere nuovamente “Smart Home“:

Google Actions - New project - Tipology 2

Terminata questa prima parte 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. In primis, si andrà a specificare la volontà di collegare “semplicemente” un proprio sito web all’Action:

Google Actions - Project Dashboard - Setup account linking 2

Cliccando “Next” si passerà oltre, ovvero alla definizione della tipologia di link, dove si sceglierà “OAuth” per la prima voce e “Authorization Code” per al seconda:

Google Actions - Project Dashboard - Setup account linking 3

Alla nuova pressione di “Next” si arriverà all’inserimento delle informazioni 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 “Next” per passare al quarto punto, dove si configura il proprio client:

Google Actions - Project Dashboard - Setup account linking 5

Aggiungere due “Scope“, indicando nel primo campo “email” e nel secondo “name“. Cliccare infine su “Next” per passare al quinto ed ultimo step, ovvero quello di test:

Google Actions - Project Dashboard - Setup account linking 6

Inserire nel campo testo “test” e infine cliccare su “Save” per 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 (dei testi qualsiasi):

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.
A questo punto cliccate alla voce “Test” per aprire la finestra del simulatore:

Google Actions - New project - Test

Cliccare in basso a sinistra, alla voce “Talk to…“.
La finestra riporterà un errore, ma è normale: non dargli peso.

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.

Chiave API Google Cloud Platform

Il seguente passaggio non è obbligatorio: lo è solo se si vuol poter domandare a Google Home di aggiornare automaticamente la lista dei device controllabili in domotica (“Google, aggiorna i dispositivi“). In assenza, ad ogni nuova integrazione presso Home Assistant per far sì che Google Home la rilevi sarà necessario sganciare/riagganciare l’Action presso l’app Google Assistant.

Per integrare la chiave API è necessario, innanzitutto, recarsi presso la console della Google Cloud Platform.

Una volta connessi, autenticarsi col proprio account e una volta entrati cliccare, nel menu, alla voce “APIs & Services” / “Dashboard“:

 

Google Cloud Platform - APIs and Service Menu

Una volta entrati nella dashboard, selezionare “Select a project”

Google Cloud Platform - APIs and Services - Select project

Selezionare dunque il progetto precedentemente creato su Google Actions e cliccare “Open“. Successivamente, cliccare su “Enable APIs and Services”:

Google Cloud Platform - APIs and Services - Enable APIs and Services

A questo punto si aprirà un campo ricerca:

Google Cloud Platform - APIs and Services - APIs Library

presso il quale cercare la voce “HomeGraph“. Una volta trovata l’API, cliccare su “ENABLE“:

Google Cloud Platform - APIs and Services - APIs Library - HomeGraph

Ritornati presso la dashboard API di Google Cloud Platform, cliccare presso il menu laterale sinistro alla voce “Credentials” (icona a forma di chiave) e successivamente su API key:

Google Cloud Platform - APIs and Services - API Key

Ciò fatto si aprirà una piccola finestra che riporterà la chiave (da segnare da parte). Una volta segnata, cliccare su “RESTRICT KEY”:

Google Cloud Platform - APIs and Services - API Key 2

In conclusione, presso la pagina che si aprirà indicare alla voce “Name” il testo “Home Assistant API Key“, dopodiché cliccare “Save” in basso e chiudere il browser per terminare questa fase di configurazione.

Configurazione Home Assistant

È il momento di agire presso Home Assistant. Per attivare l’integrazione di Google Home, 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 chiave API 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
  api_key: YYYYYYY
  exposed_domains:
    - light

Nell’esempio abbiamo indicato un solo dominio, “Light“; come facile intuire, i campi “project_id” e “api_key” sono andranno compilati con le informazioni precedentemente raccolte relative all’ID del progetto Google Action e alla chiave API di Google Cloud Platform.

Una volta completata la configurazione, riavviare Home Assistant.

AUTO DISCOVERY

Consigliata ma non obbligatoria, un’automazione che, all’avvio di Home Assistant, indichi all’HUB di passare automaticamente a Google Assistant qualunque nuova entità (delle tipologie incluse nei domini indicati in configurazione), senza il bisogno di domandare a Google Assistant di farlo forzatamente.

In primi è necessario recuperare il proprio User ID presso Home Assistant, il quale è disponibile presso “Impostazioni” > “Utenti” e selezionando il proprio utente:

Home Assistant - User ID

Ottenuto l’ID, aggiungere la seguente automazione:

automation:
 alias: Google Assistant Sync
  trigger:
  - event: start
    platform: homeassistant
  condition: []
  action:
  - service: google_assistant.request_sync
    data:
      agent_user_id: MIO_USER_ID
Avendo cura di indicare, presso il campo agent_user_id il proprio ID precedentemente recuperato.

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 prima 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 Home/Assistant.

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