/ tech

Google Home/Assistant et Home Assistant

Si vous suivez ce blog, vous savez déjà que Home Assistant permet de se connecter au Google Home via le composant emulated_hue.

Mais pour les nouveau clients Google Home, la connexion via le emulated_hue n'est pas possible.

Ayant rechangé pas mal ma configuration domotique, il m'a fallu désassocier mon compte Philips Hue de l'application Google Home.

Le problème est que lors de la réassociation, les devices remontés n'etaient que ceux du bridge physique, plus moyen de voir les devices portés par le bridge virtuel Hue.

La solution de contournement est expliqué sur le composant google_assistant.

Création de l'application Google

Tout d'abord on va devoir créer une application au sens Google.
Pour ce faire, on va d'abord créer un fichier project.json que l'on peut placer sur notre serveur Home Assistant.

dans ce fichier project.json :

{
  "actions": [{
    "name": "actions.devices",
    "deviceControl": {
    },
    "fulfillment": {
      "conversationName": "automation"
    }
  }],
  "conversations": {
    "automation":
    {
      "name": "automation",
      "url": "https://[YOUR HOME ASSISTANT URL:PORT]/api/google_assistant"
    }
  }
}

on remplace l'url par notre url à nous.

Ensuite on va sur https://console.actions.google.com/u/0/

et on se crée une application en francais (ne pas oublier de configurer la langue).
et on télécharge l'utilitaire gactions que l'on utilisera en suivant (https://developers.google.com/actions/tools/gactions-cli)
Une fois que l'aplication est créé ion va executer la commande suivante :

gactions update --action_package project.json --project project_id

remplacer project_id par l'id du projet créé.

Nous allons retourner sur l'interface de la console https://console.actions.google.com/u/0/

Sur la partie Account Linking de l'application nous allons configurer cette partie de cette manière :

GRANT TYPE : Implicit
Client_id : mettre un client_id au choix (je conseille moins de 20 caractères de types alphanumériques).
Authorization URL : https://[YOUR HOME ASSISTANT URL]/api/google_assistant/auth?api_password=[YOUR API PASSWORD] (ne pas oublier le api_password)
Scopes : email et name

Une fois l'application configurée, on deploie cette version.
Si vous rencontrez des erreurs, il s'agit parfois de reconfigurer cette meme application en anglais. Par exemple bien vérifier toutes les informations de langue pour l'application. La moindre erreur empêche son deploiement.

Mise en place de la partie Home Assistant

google_assistant:
  project_id: project-a123
  client_id: 1234567890abc
  access_token: Token1234567
  agent_user_id: "monadresse@gmail.com monnom"
  api_key: API_KEY
  expose_by_default: false
  exposed_domains:
    - light
    - media_player
    - script
    - scene
  entity_config:
    light.bureau:
      name: lumiere du bureau
      expose: true
      aliases:
        - lumiere desktop
        - lumiere du bureau
    media_player.shield:
      name: nvidia shield
      expose: true
      aliases:
        - shield
        - nvidia shield

On declare donc dans la balise google assistant :

  • l'id du projet
  • le client_id (doit correspondre à celui précédemment créé)
  • l'acces token
  • le agent_user_id : permet de reconnaitre le user utilisatn l'API
  • api_key si non existant il faudra en créer un pour l'application (https://console.cloud.google.com/apis/dashboard) verifier que vous etes bien sur le projet créé.
  • expose_by_default à mettre à false.
  • exposed_domains : tous les composants controllables par Google Assistant

ensuite pour la partie entity_config :
il s'agit en fait des objets que l'on charge explicitement sur Google Assistant.

Pour qu'un device soit visible sous Google Home nous devons le déclarer en y ajoutant (expose : true). La partie aliases permet de donner des noms diférents pour appeler un meme device.

Redemarrage de Home Assistant et verification

on redémarre via docker.

sudo docker-compose up -d; sudo docker-compose logs -f

on vérifie si tout est ok dans les logs.
Une fois l'application demarrée on va se rendre sur l'application Google Home sur son téléphone.

puis dans contrôle de la maison.

on peut alors ajouter un service via le plus bleu.

après le service ajouté :

Screenshot_20180320-151633

la liste des périphériques :
Screenshot_20180320-151644

Google Home/Assistant et Home Assistant
Share this