Comment remonter ses équipements depuis Home Assistant vers Google Home

google nest mini next to a smartphone android with google home app opened on homescreen

C'est quelque chose qui me semble nécessaire, presque vital si j'ose dire, pour tout habitant ou visiteur d'une maison connectée : pouvoir piloter ses équipements à la voix. On ne peut en effet pas se contenter de l'application Home Assistant (HA) pour contrôler l'intégralité de son système et des équipements qui ne sont pas automatiquement déclenchés par des automatisations (comme avec un détecteur de mouvement). Je pense par exemple à la fois où mon beau-père a passé une soirée tout seul chez moi et n'a pas trouvé de moyen d'éteindre la seule ampoule indépendante de tout interrupteur et qui a donc dévissé l'ampoule directement, parce qu'il n'avait pas l'application HA ni la possibilité de demander l'extinction à haute voix.

Je sais qu'il existe une méthode officielle pour profiter de la reconnaissance vocale par Google Assistant et Amazon Alexa mais elle nécessite un abonnement payant au service Home Assistant Cloud mais elle présente pour moi deux problèmes :

  • déjà c'est payant, et si j'étais prêt à payer pour la partie logicielle de ma domotique je serais parti avec l'écosystème Philips Hue
  • et ça implique de laisser un accès à l'intégralité de mon système à une entreprise tierce supplémentaire, et si je tolérais ça je serais parti avec l'écosystème Philips Hue (ok j'arrête)

Bien sûr, quelle que soit la solution choisie on reste dépendant de Google mais c'est voulu et nécessaire puisqu'on souhaite avoir accès à nos équipements depuis le matériel de la firme de Mountain View donc on ne considère pas ça comme un inconvénient ici.

Le but de cette manipulation est de pouvoir piloter n'importe quel appareil depuis une enceinte Nest avec un simple "ok Google" ou depuis l'application Google Home. Pour ce faire il faudra suivre un certain nombre d'étapes, satisfaire quelques prérequis, ne pas avoir peur de manipuler des interfaces beaucoup trop complexes (merci GCP) et être prêt à faire de la maintenance si les choses cassent dans le futur.

Prérequis

Le premier et le plus bloquant de tous est d'avoir son instance HA accessible en HTTPS depuis internet (nom de domaine + reverse proxy, ou DuckDNS, etc.). Sans ça, Google ne peut pas appeler le fulfillment URL.

Ensuite il faut avoir un compte Google, mais j'imagine que si vous êtes là c'est que ce n'est pas un problème.

Guide de mise en place

C'est à partir de là qu'on va commencer à s'amuser. Il n'y a rien de compliqué mais il faut bien s'assurer de bien configurer chaque brique et de les assembler correctement.

Dans un premier temps on va devoir manipuler l'interface assez complexe de GCP (Google Cloud Platform) qui est l'équivalent californien de AWS.

Chez Google

1. Google Cloud Console — Créer le projet
  1. Aller sur console.cloud.google.com
  2. Crée un nouveau projet (ex: ha-mamaison)
  3. Active l'API HomeGraph : APIs & Services → Bibliothèque → chercher "HomeGraph API" → Activer
2. Google Actions Console — Configurer le Smart Home
  1. Aller sur console.actions.google.com
  2. Crée un nouveau projet → sélectionne le même projet GCP
  3. Type : Smart Home
  4. Dans Actions → configure l'URL de fulfillment : https://[domaine-de-ton-ami]/api/google_assistant
  5. Dans Account Linking → configure OAuth :
    • Grant type : Authorization Code
    • Client ID et Secret : tu les génères à l'étape suivante
    • Authorization URL : https://[domaine]/auth/authorize
    • Token URL : https://[domaine]/auth/token