X
    Catégories : Tutos

Google Home et IFTTT

Chose promise chose due, après une brève introduction et prise en main de Google Home je vous propose de découvrir comment l’utiliser avec IFTTT.  Dans cet article, nous verrons ainsi comment étendre les possibilités que nous offrent ce produit en le connectant à des systèmes a priori incompatibles. Afin de ne pas s’éparpiller, je vais suivre un cas d’usage simple mais assez complet. Cependant, ne vous inquiétez pas, si vous ne voulez pas mettre en place les mêmes actions il vous sera très facile d’adapter ces instructions à d’autres usages.

Cas d’usage

Généralités

Avant de voir en détail le fil conducteur de cet article, voyons comment le système fonctionne dans la théorie. L’utilisation de IFTTT va vous permettre de liée Google Assistant, qui gère les commandes et discussions que vous avez avec votre Google Home et d’autres services qui ne sont pas forcément pris en charge de base.

Google Home & IFTTT

Il y a toute une liste de services disponibles. Certains sont très simples et ne nécessitent que très peu de connaissances tandis que d’autre peuvent être plus pointus.

L’exemple de l’article

Dans l’exemple d’aujourd’hui, mon but est de rendre ma télé connectée pilotable par Google Home. Cette dernière n’étant pas toute jeune, il y a peu de services encore compatibles…

Heureusement, Home Assistant (un système de domotique) en fait partie. Ce dernier met à disposition des APIs qui sont justement utilisables via IFTTT. Nous allons donc tenter de lancer des actions Home Assistant lorsqu’une commande vocale est prononcée. Vous pouvez très aisément adapter cet article à d’autres services ou Webhooks, donc pas de panique si vous ne connaissez pas Home Assistant.

Si nous revenons au schéma précédent, il devrait ressembler à ceci avec mon exemple.

 

Home Assistant + IFTTT et Google Home

 

API Home Assistant

Si vous ne souhaitez pas travailler avec Home Assistant, vous pouvez passer directement à l’étape suivante.

Prérequis

Pour fonctionner, vous aurez besoin d’une installation Home Assistant fonctionnelle et accessible d’internet. Si ce n’est pas votre cas vous trouverez plus d’informations dans cette série d’articles.

Découverte de votre installation

Pour déclencher des actions partant d’Home Assistant, nous allons utiliser des requêtes HTTP. Dans un premier temps, il est donc important de préparer les requêtes nécessaires. Dans un précédent article (Utiliser l’API REST Home Assistant) nous avions vu comment utiliser ces APIs. Nous allons nous baser sur ce que nous avions appris pour construire nos différents éléments.

Dans un premier temps, identifions le matériel que nous devons contrôler. Avec postman lancez la requête suivante :

https://gist.github.com/quentinchap/4a1ff4d99c6c30b97440a41d51a50cfc

Je vois que mon périphérique est media_player.living_room_tv je peux avoir plus d’informations sur ce dernier avec la requête suivante :

https://gist.github.com/quentinchap/2898799a032090a92d0fee73945cb5a8

C’est un media_player, partant de ce constat nous allons rechercher les actions disponibles pour ce dernier. Lancez la requête suivante :

https://gist.github.com/quentinchap/4c044eb8809f37d0a62fb8de955c086a

Recherchez « domain »: « media_player » et vous aurez toutes les actions qu’il est possible de lancer sur un media_player.

Grâce à ces informations déduisez les requêtes suivantes:


Je pense qu’avec ces quelques requêtes vous avez de quoi vous amuser. Cependant n’hésitez pas à explorer et à tester d’autres éléments.

IFTTT

Côté IFTTT nous allons utiliser le service Webhooks que nous avons déjà abordé ici. Nous allons donc créer une applet du type IF Google Assistant THEN Webhooks.

Gestion du son

Dans un premier temps, mettons en place la gestion du son de notre télévision.

Cliquez sur this pour choisir un service, sélectionnez Google Assistant et choisissez say a simple phrase

IFTTT trigger

Configurez entre une et trois phrases qui déclencheront l’action et pensez bien à sélectionner votre langue.

Configuration applet Google Assistant

Ensuite, cliquez sur Create trigger et sélectionnez webhook. Ici, cliquez sur Make a web request

IFTTT: Make a web request

Ensuite, comme l’exemple ci-dessous, configurez le trigger en vous appuyant sur les requêtes que vous avez préalablement préparées. N’oubliez pas d’ajouter ?api_password=votre_mot_de_passe à la fin de l’URL de votre API.

 

Vous n’avez plus qu’a créer deux autres applets sur le même modèle appelant l’API pour baisser le son et pour le couper.

 

Gestion des chaînes

La gestion des chaînes est un peu plus complexe puisque nous allons avoir besoin d’isoler un paramètre dans la phrase. Pour ce faire, IFTTT nous propose d’utiliser les ingredients.

Les APIs Home Assistant demandent que les chaînes soient indiquées d’une manière assez précise. Par exemple pour mettre M6 les termes m6 m 6 ou 6 ne seront pas pris en compte. On voit donc vite le problème qui peut se poser avec de la reconnaissance vocale. Pour pallier celui-ci, j’ai développé un petit Add-on pour Hass.io qui offre des APIs plus flexibles https://github.com/quentinchap/hassio-repo/tree/master/tv-custom-api.

 

Créez une nouvelle applet en sélectionnant cette fois-ci le trigger Say a phrase with a text ingredient.

Trigger say a phrase with text ingredient

La configuration de ce trigger est presque la même que précédemment, il vous suffit juste d’ajouter $ pour symboliser votre paramètre. Par exemple, si je souhaite dire « Ok Google, Zap sur tf1 » mon paramètre (tf1) doit être, comme ci-dessous, remplacé par $.

Text ingredient IFTTT

Ensuite, sélectionnez une fois encore le service webhook. La configuration de ce dernier ne diffère pas des exemples précédents, vous devez seulement insérer le paramètre nécessaire et l’insérer dans le body de votre requête. Pour ce faire, rien de plus simple. Cliquez sur add ingredient en dessous du champ Body et choisissez TextField. Ainsi, la valeur se cachant derrière le $ que nous avons paramétrée juste avant sera insérée à l’endroit où vous avez ajouté l’ingrédient. Ainsi dans l’exemple ci-dessous, pour la phrase « OK Google, Zap sur tf1 » on enverra une requête avec le body :

https://gist.github.com/quentinchap/6ee2f8e747f5e2f461cac7b0220996aa

 

Requête pour changer de chaîne

 

Conclusion

Vous savez tout ! Vous pouvez dès à présent créer toutes sortes de commandes personnalisées à condition qu’il existe un service IFTTT ou qu’il y ait une API Rest. Il est donc très facile d’étendre les fonctionnalités de notre Assistant, cependant, cette méthode a ces limites.

En effet, la communication est unilatérale. Il n’est pas possible d’avoir un retour d’information sur Google Home 🙁 Par exemple, je n’ai pas aujourd’hui trouvé de moyen, via IFTTT d’avoir la température dans ma maison car mon matériel n’est pas supporté (Hue motion + Hack du Hue Motion ) et que je ne peux pas déclencher Google Home via un autre événement que ma voix.

D’autres méthodes existent. Certaines plus complètes que d’autres mais aussi plus techniques. De plus elles ne sont pas toutes disponibles en français pour le moment. Nous les explorerons très certainement rapidement 😉

J’espère que cet article vous a plu. N’hésitez pas à partager les idées/applications que vous avez mis en place.

Voir les commentaires (73)

  • Bonjour, merci pour ce tuto. Cependant je bute sur une bêtise, coté IFTTT et webhook, l'applet plante : Applet failed ou skipped (Ingredients
    CreatedAt (none)),d'apres les log il attend l'ingredient. Néanmoins mon Google repond bien aux nouvelles questions parametrées dans IFTTT. Une idée ?

    • Bonjour,
      J'ai déjà rencontré des problèmes similaires. La causes étant dans mon cas un problème de configuration côté webhook.

      Pouvez-vous m'en dire plus sur les configurations de votre applet? (en remplaçant les données sensible bien-sure)

      Merci :)

  • Salut, pour ton retour d'état, pourquoi tu balance pas un simple text-to-speech sur une sonos ou un simple hp relié à un raspberry pi, c'est simple et efficace.

  • Bonjour,
    Le text-to-speech est une possibilité à laquelle j'ai pensé mais les résultats que j'ai obtenu pour le moment ne sont pas extra... En théorie il est même possible d'utiliser cette méthode directement sur le Google Home puisqu'il est considéré comme étant un media player par home assistant. As-tu essayé cette solution ? Si oui les résultats sont-ils satisfaisants chez toi ?

    Je suis entrain de regarder en détail les solutions possibles mais ce que je voulais dire dans cette article c'est qu'il n'y a pas de moyen "intégré" pour avoir ce type de retour.

    • Non, GH est encore trop jeune pour faciliter ce genre de manip.
      En attendant, utilises tes sonos pour faire causer ta maison, node-sonos-http-api est très simple à installer et à utiliser, avec le choix entre plusieurs moteurs tts de qualité.
      En bonus tu peux t'amuser à faire converser GH et sonos, et créer des scénarii via ta box domotique ou node.red

    • Avez vous testez l'api avec un client REST comme Postman ? Car l'ingrédient manquant n'est pas forcément le problème. De mon côté j'ai systématiquement ce message mais l'applet n'est pas en erreur et tout est ok.

      J'ai tester de mon côté sur un switch et la requête semble bonne (à condition que l'entity_id soit le bon). Êtes vous certain que votre installation est disponible de l'extérieur?

  • Bonjour, suivant vos conseils et après une rapide vérification via Postman, j'ai pu identifier un problème de routage vers home assistant. une histoire de virgule. Que de temps perdu. Dans tous les cas merci pour ce tuto qui me permet desormais de TOUT piloter avec mon Google Home.
    Merci ;-)

  • Bonjour,

    Je suis a la recherche d'interrupteurs connectés que je pourrai gérer depuis Google Home juste pour "ok google, allume la cuisine" ou "ok google, éteint la cuisine" rien de plus que allumer ou éteindre mes pièces a la voix.

    Pourriez vous me donner des modèles d’interrupteurs compatible ? Je ne crois pas qu'il en existe des compatible google assistant mais peut etre qu'il est possible de faire fonctionner certains modèles via IFTTT par exemple...

    Merci d'avance pour votre aide

    • Bonjour,

      Si je comprend bien vous ne souhaitez pas un simple bouton mais un interrupteur traditionnel, encastrable et télécommandé.
      Je ne connais pas d'appareil de ce genre prêt à l'emploi compatible IFTTT ou Google Assistant. Cependant, si vous n'avez pas peur de bricoler un peu j'ai trouvé deux solutions.

      • Utiliser un commutateur intélligent comme le Sonoff avec un raspberry Pi ayant Home Assistant ou un solution équivalente. Vous serez en mesure de contrôler votre installation via IFTTT et Google Assistant
      • Autre solution, des interrupteurs encastrables télécommandés. Il en existe utilisant en wifi comme celui-ci, communiquant par onde radio comme celui-là, etc. Je n'ai cependant pas trouvé de système directement compatible IFTTT et encastrable. Il vous faudra donc là encore un raspberry Pi avec un système de domotique

      Bref, il existe beaucoup de solutions mais une installation centrale type Home Assistant semble incontournable pour le moment. Il faut juste faire attention aux choix de matériel et à la compatibilité de ce dernier.

      Bonne journée

  • Merci pour votre réponse.

    Mais je ne veux pas compliquer l’installation avec un raspberry donc je vais attendre que d'autre produits se développe pour la google home sa sera plus simple et je pense que le nombre de produits compatible vas vite augmenter...

    Je prends donc mon mal en patience le temps de trouver une solution simple et efficace.

    Encore merci pour votre réponse.

    Bonne journée

  • Bonjour. Merci pour cet article.
    Je me heurte à un problème simple : je veux utiliser plusieurs fois l'applet "Say a simple phrase" mais contrairement aux autres applets, je n'ai pas la possibilité "Create a different version of this Applet" avec le bouton Start en dessous.
    Avez vous pu créer plusieurs versions avec cette applets ?
    Merci encore.

    • Pas de soucis, n'hésitez pas si vous avez d'autres questions ou si vous voulez partager ce que vous avez mis en place.

      Bonne journée.

Articles similaires