Come integrare Google Assistant in Home Assistant
di Luigi Duchi
12 Maggio 2018
Home Assistant
Attenzione la guida sottostante e il video relativo sono validi fino alla versione 0.79.3 di Home Assistant per la versione dalla 0.80 in poi la guida da seguire sarà a fondo articolo
Ben tornati, oggi andremo a configurare Google Assistant sul nostro Home Assistant in modo da poter utilizzare tutti i nostri dispositivi registrati su Home Assistant con i comandi vocali di casa GOOGLE.
Questa procedura ci permetterà di comandare i dispositivi che nativamente non sono fruibili con Google Assistant (qualcuno ha detto Xiaomi?) in maniera del tutto uguale a quelli progettati per lavorare nativamente con il nostro assistente Google.
Come prerequisito per far funzionare Google Assistant sul nostro HA (Home Assistant) avremo bisogno di un ddns e di una firma ssl ad esso associata. In riferimento a quest'ultimo punto potete trovare una guida sempre su questo blog al seguente indirizzo:
Accedere ad Home Assistant in modalità sicura con DuckDNS e SSL Let's Encrypt
La prima cosa da fare sara' scaricare le CLI di G actions relative al vostro sistema operativo (se state usando un raspberry con raspbian dovrete scaricare linux arm) potrete trovarle QUI.
per comodità le salverete nel percorso /home/pi, naturalmente sul Raspberry.
Andate nel terminale del vostro raspberry e lanciate il comando:
ls gactions vi consentirà di andare nel percorso dove avete salvato le Gactions
sempre da terminale lanciate il comando:
chmod +x gactions in modo che diventi eseguibile
sempre dal terminale (nello stesso percorso di prima) andrete a creare un progetto json con il seguente comando:
sudo nano project.json
Nel documento che vi si aprirà copiate il seguente contenuto:
{ "actions": [{ "name": "actions.devices", "deviceControl": { }, "fulfillment": { "conversationName": "automation" } }], "conversations": { "automation" : { "name": "automation", "url": "https://tuodominio.duckdns.org/api/google_assistant" } } }dove al posto di tuodominio inserirete il vostro ddns di collegamento ad Home Assistant
salvate il documento (CTRL+X>y>invio) e lasciate aperto il terminale al medesimo percorso.
Benissimo, adesso siamo pronti ad aggiungere il nostro progetto all'sdk di google, andate a questo indirizzo QUI.
Cliccate per aggiungere un nuovo progetto come nell'immagine di esempio:
comparirà un popup dove potrete selezionare il nome del progetto chiamatelo hasstest (in realtà potreste chiamarlo come volete ma per comodità io utilizzero' questo nome e nel caso decidiate di cambiarlo dovrete farlo per tutta la procedura, lo sconsiglio ai meno esperti) selezionate Italia sotto country/region e cliccate su create project.
nel riquadro dove è scritto Actions SDK cliccate su BUILD.
Copiate il link con l'apposito pulsante nel popup che vi comparirà e tornate sul terminale, incollate cio che avete copiato, sostituite la parola PAKAGE_NAME con il nome project.json ed inserite ./ all'inizio della stringa vi troverete ad un comando del genere:
./gactions update --action_package project.json -- project hasstest-1a234 (i numeri dopo hasstest sono di esempio voi avrete quelli trovati nel link copiato su sdk di google).
Una volta premuto invio vi visualizzerà un url lunghissimo, copiatelo ed incollatelo nella barra destinata agli indirizzi di un browser.
vi verrà chiesto di accedere al vostro account Google, fatelo!
Una volta loggati vi reindirizzerà ad una pagina web dove troverete un codice di autorizzazione che dovrete copiare sul vostro terminale esattamente dove ve lo richiederà (sotto l'url lunghissimo copiato poco prima)
Dopo aver premuto invio vi darà un altro url, copiatelo e incollatelo nella barra di un browser.
l'indirizzo che vi troverete avrà un aspetto del genere:
https://console.actions.google.com/project/hasstest-1a234/overview
Una volta digitato l'url vi ritroverete in una pagina del genere:
Cliccando su Name Your Smart Home Action potrete assegnare un nome al progetto (questo nome lo ritroverete nell'app Google Home in seguito). Assegnate quindi un nome e salvate
Successivamente cliccate su Setup account linking e compilate come nell'immagine di seguito:
Sotto la voce client information andrete a creare un client_id potrete inserire un nome che preferite mentre sotto la voce authorization url inserirete un url del genere:
https://VOSTRODDNS.duckdns.org/api/google_assistant/auth?api_password=VOSTRAPASSWORDHOMEASSISTANT (ovviamente sostituitelo con il vostro ddns e la vostra password di accesso ad Home Assistant)
sotto la voce configure your client inserite la vostra mail e il vostro nome e cognome (questi dati non sono rigorosi e non influiranno con il buon funzionamento del sistema).
Successivamente salvate e recatevi nel menu alla sinistra della pagina alla voce Directory Information e compilate come vedete nella seguente immagine.
Cliccate sulla freccia accanto ad Images, selezionate e caricate due immagini con la risoluzione richiesta (potrete scaricarle tranquillamente da internet).
sotto la voce contact details inserite il vostro indirizzo mail e un nickname (quest'ultimo non obbligatorio)
sotto la voce privacy and consent, esattamente sotto la voce Privacy Policy inserite il seguente indirizzo:
https://home-assistant.io
ed infine adate a premere il tasto save
Una volta effettuate queste operazioni recatevi nel vostro file configuration.yaml
e' il momento di inserire il component google.
dove dopo project_id inserirete il project_id ricavato prima nell'esempio era hasstest-1a234
dopo client_id dovrete inserire il client id creato nella pagina action on google
dopo access_token dovrete inserire autorization_url che avete configurato nella pagina Actions on Google
le api_key vi serviranno per sincronizzare i dispositivi aggiunti tra Home Assistant e Google Assistant, per ottenerla vai QUI . Seleziona il tuo progetto e fai clic su Abilita API. Vai a Credenziali, che puoi trovare nella barra di navigazione a sinistra sotto l'icona della chiave, e seleziona Chiave API da Crea credenziali, copiate la chiave API generata e copiatela nella configurazione appunto dopo api_key
Infine sotto la voce exposed_domains: inserirete le categorie che il component Google Assistant andrà a prelevare dal nostro Home Assistant, oppure potrete inserire inserire i singoli dispositivi ma al posto di exposed_domains:
inserirete entity_config: come nell esempio nel riquadro verde:
dove li aliases saranno i nomi alternativi con cui richiamare il dispositivo selezionato, è una funzione opzionale si può inserire i soli dispositivi come nell'esempio dentro il riquadro giallo:
benissimo quando avrete finito di compilare il vostro component google sul file configuration.yaml, salvate, andate sul terminale e riavviate il vostro raspberry con il consueto comando sudo reboot
Arrivati a questo punto andate sul vostro telefono e aprite l'applicazione Home (se non l'avete scaricatela dal playstore o dall'applestore in caso di dispositivi Apple) e nel menù a tendina selezionate controllo domestico
cliccate sul pulsante + e noterete un servizio nuovo [test] non e' altro che il nostro Home Assistant a questo punto cliccandoci sopra si attiverà il servizio e vi mostrerà tutti i dispositivi che precedentemente avete configurato come visibili nel file configuration.yaml.
ovviamente come tutti i dispositivi sarà possibile cambiare il nome che servirà a richiamare il servizio.
a questo punto potrete accendere o spegnere i vari dispositivi presenti in Home Assistant richiamando Google Assistant e dicendo "accendi xxxxx" o "spegni xxxxxx" Dove xxxxxx sarà il nome del dispositivo presente su HA scelto.
nel caso in cui andrete ad aggiungere o ad eliminare dispositivi, sarà possibile sincronizzare Google Assistant con Home Assistant semplicemente lanciando da Home Assistant il servizio google_assistant.request_sync che potrete trovare nei servizi sotto il pannello per gli sviluppatori sull'interfaccia grafica di Home Assistant.
Come al solito a questo punto vi lascio al video di fine articolo. Buona visione!
integrazione del component google assistant dalla versione 0.80 in poi:
rispetto alla versione per versioni precedenti Google ha semplificato l'integrazione del suo component Google assistant con Home assistant,la procedura differisce solo per alcuni dettagli che comunque saranno necessari per il corretto funzionamento.Ovviamente la parte del DDNS e della firma SSL rimarrà invariata
- per prima cosa tornate alla pagina del progetto cliccando QUI
- aggiungete un nuovo progetto e selezionate sia lingua che paese Italia.
- selezionate la finestra home control e successivamente sull'unico riquadro che si apre chiamato Smart home
cliccate su quick setup e selezionate la voce Name your Smart Home action e assegnate un nome alla vostra app
- salvate e cliccate su overview per tornare alla pagina precedente.
- cliccate su Setup account linking e configurate come da foto successive:
alla voce client secret scrivete un codice a caso tanto ad home assistant non servirà
ovviamente dovrete sostituire i due indirizzi https con il vostro ddns
alla voce scopes inserite la vostra mail e il vostro nome
infine salvate il progetto e cliccate su action sotto la voce Build nel menù a tendina sulla sinistra.
avviate il primo progetto e nello spazio dedicato inserite il seguente url(ovviamente sostituendolo con il vostro ddns)
https://vostroddns.duckdns.org:8123/api/google_assistant
successivamente salvate.
adesso dovrete recuperare le api_key del progetto per farlo andate QUI
selezionate il vostro progetto(lo stesso dell’app), abilitate le API di Homegraph e andate in credenziali createle
e copiatele vi serviranno da inserire nel file configuration.yaml
aggiungete questa stringa al file configuration.yaml:
google_assistant:
project_id: idprogettochetrovatenelleimpostazionidelprogetto(es.pass-12345)
api_key: apikeycreatacomedadescrizione
exposed_domains:
- switch
- light
- group
salvate e riavviate il raspberry.
tornate sulla console google sotto la voce simulator impostate le informazioni relative alla lingua in italiano e cliccate su test.
ora andate sul telefono aprite l'appilcazione google home sotto controllo domestico premendo il + loggatevi al progetto che avrete creato. dovrebbe essere operativo il servizio google assistant su HA.
NOTA BENE se avrete impostato il port forwarding della 443 esterna sulla 8123 interna come ho suggerito nelle guide precedenti nei vari url della console google evitate di inserire :8123 ovviamente anche nella action della build
Produrre e aggiornare contenuti su vincenzocaputo.com richiede molto tempo e lavoro. Se il contenuto che hai appena letto è di tuo gradimento e vuoi supportarmi, clicca uno dei link qui sotto per fare una donazione.