Intégration de Google Assistant dans Home Assistant

licence

Etant amené comme certains d’entre vous à trouver d’autres alternatives à IFTTT, j’ai décidé de basculer à des commandes vocales de GA vers HA.

Pour ce tutoriel, j’ai déroulé la procédure officielle : Google Assistant - Home Assistant

Niveau requis

  • Débutant / Intermédiaire / Avancé

Matériels nécessaires / Matériels utilisés / Prérequis

  • L’intégration manuelle de Google Assistant nécessite plus de configurations que la version cloud en raison de la façon dont Google exige que les apps Assistant soient configurées. Donc prenez du temps devant vous, car il faut un peu s’accrocher :wink:
  • Posséder un compte Google
  • Votre configuration HA doit être accessible à l’extérieur avec un nom d’hôte et un certificat SSL.

Créer un compte de service

Vous devrez créer un compte de service Create Service account key qui vous permettra de mettre à jour vos devices sans avoir à reconnecter votre compte (voir ci-dessous).

Si vous ne fournissez pas le compte de service, le service « google_assistant.request_sync » ne sera pas exposé sous HA.

Il est recommandé de configurer cette clé car elle permet également l’utilisation de la commande suivante, « Ok Google, synchronise mes appareils ».

Une fois que vous aurez configuré ce composant, vous devrez appeler ce service (ou commande) chaque fois que vous ajoutez un nouvel appareil dans Home Assistant que vous souhaitez contrôler via l’intégration de l’Assistant Google.

  1. Dans la console Google Cloud Platform, accédez à la page Create Service account key.
  2. En haut à gauche de la page à côté du logo « Google Cloud Platform », sélectionnez votre projet créé dans les actions de la console Google. Confirmez cela en examinant le project_id et assurez-vous qu’il correspond.
  3. Dans la liste de compte Service, sélectionnez « Nouveau compte de service ».
  4. Dans le champ Nom de compte Service, entrez un nom.
  5. Dans le champ ID de compte de service, entrez un ID.
  6. Dans la liste Rôle, sélectionnez Comptes de service > Créateur de jetons de compte de service.
  7. Pour le type de clé, sélectionnez l’option JSON.
  8. Cliquez sur Créer. Un fichier JSON qui contient vos clés sur votre ordinateur.
  9. Utilisez les informations de ce fichier ou directement le fichier pour ajouter les clés « service_account » dans configuration.yaml (cf. le code ci-dessous.
  10. Accédez à Google API Console.
  11. Sélectionnez votre projet et cliquez sur Activer « HomeGraph API ».

Créez un nouveau projet dans Actions on Google console

  1. Cliquez sur New project et donnez un nom à votre projet.
  2. Cliquez sur Smart Home, puis cliquez sur le bouton Start Building.
  3. Cliquez sur Build your Action, puis sur Add Action(s).
  4. Ajoutez votre URL de votre HA : https://xxxxx.duckdns.org:8123/api/google_assistant dans la zone Fulfillment URL
  5. Cliquez sur Save.
  6. Cliquez sur l’onglet Overview, ce qui vous ramène à l’écran des détails de l’application.

'Account linking` est nécessaire pour que votre application interagisse avec Home Assistant

  1. Configurez cette mise en place en cliquant sur Setup account linking sous la section Quick Setup de la page Overview.
  2. Si demandé, laisser les options comme ils sont par défaut No, I only want to allow account creation on my website et sélectionnez Next.
  3. Ensuite, si demandé, pour le Linking type sélectionnez OAuth et Authorization Code. Cliquez sur Next
  4. Entrez ce qui suit : 1. client ID: https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID. (Trouvez votre YOUR_PROJECT_ID en cliquant sur l’icône 3 petits points dans le coin supérieur droit de la console, en sélectionnant Project Settings, votre ID de projet sera répertorié sous l’onglet GENERAL de la page Settings.) 2. Client secret: Tout ce que vous voulez, Home Assistant n’a pas besoin de ce champ. 3. URL d’autorisation (remplacer par votre URL réelle) : https://[YOUR HOME ASSISTANT URL:PORT]/auth/authorize. 4. URL de jeton (remplacer par votre URL actuelle) : https://[YOUR HOME ASSISTANT URL:PORT]/auth/token. Cliquez sur Next, puis Next à nouveau.
  5. Dans Configure your client Scopes, tapez mail et cliquez sur Add scope, puis tapez name, puis cliquez à nouveau sur Add scope.
  6. Ne vérifiez PAS Google to transmit clientID and secret via HTTP basic auth header.
  7. Cliquez sur Next, puis sur Save

Générer l’application

  • Sélectionnez l’onglet Develop en haut de la page, puis, dans le coin supérieur droit, sélectionnez le bouton Test pour générer l’application de test de version préliminaire. Si cette option ne s’affiche pas, accédez plutôt à l’onglet Test, cliquez sur le bouton Settings en haut à droite sous l’en-tête et assurez-vous que On device testing est activé (si ce n’est pas le cas, activez-le).

  • Ajoutez la configuration d’intégration google_assistant à votre fichier configuration.yaml de la manière ci-dessous et redémarrez HA.

google_assistant:
  project_id: home-assistant-votre_project_ID
  service_account: !include le_fichier_json_que_vous avez_genere_precedemment.json
  exposed_domains:
    - script

Se référer au tuto officiel pour affiner vos possibilités HA.

Synchroniser HA dans Google Home

  • Sous l’app Home Cliquez sur + en haut à gauche de l’application, + Configurer un appareil, puis cliquez sur Vous avez déjà configuré des services. Vous devez avoir [test] + votre nom d’application répertorié sous ‹ Ajouter nouveau ›.
    La sélection qui devrait vous conduire à un navigateur pour connecter votre instance Home Assistant, puis rediriger vers un écran où vous pouvez définir des chambres et des surnoms pour vos appareils si vous le souhaitez.

Routines

Enfin, je reprends intégralement le tuto de routines sous l’app Home de @Clemalex pour la dernière étape (merci à lui :wink: ):

Sur l’application Home : image

Tu clique sur Routines :

Puis, en bas sur Gérer les routines :

Puis Ajouter une routine :

Ensuite sur Ajouter des commandes (requis) :

Il faut maintenant renseigner la commande vocale (ou manuscrite) puis cliquer sur OK :

Il faut maintenant cliquer sur Ajouter une action :

Il faut passer sur l’onglet Parcourir les actions populaires , puis cliquer sur la roue dentée pour afficher la fenêtre de choix d’exécution de script :

Il faut cliquer sur le script qui est a lancer puis cliquer sur OK (le script provient de HA) :

Dans la fenêtre de choix des actions, faire défiler tous en bas pour sélectionner Dire quelque chose puis inscrire la réponse de l’Assistant Google :

Une fois la phrase de retour configurer, tu devrais avoir ça :

Il suffit maintenant de cliquer sur Enregistrer tout en haut et ta routine est créé et disponible sur tous les appareils connectés à ce compte :

Autre source que je vous conseille de suivre en parallèle pour trouver des similitudes : le tutoriel de @fredarro et la video de Paradis Artificiels, commençant à dater un peu, on retrouve à peu près les mêmes instructions

Suivi des modifications

3 « J'aime »

Merci pour le partage.
:+1:

2 « J'aime »

Bonjour, j’ai bien réussi à intégrer google assistant dans home assistant mais j’ai été obligé pour cela de ouvrir à toute les adresses mon pare-feu sur le port 443. Je voudrais restreindre par région mais je n’arrive pas à trouver de quelle pays viennent les requêtes de google assistant. Est ce quelqu’un sait ? merci

Super merci beaucoup !