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

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

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 :

GET https://url-home-assistant/api/states

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 :

GET https://url-home-assistant/api/states/media_player.living_room_tv

 

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

GET https://url-home-assistant/api/services

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

IFTTT trigger

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

Configuration applet google assistant

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

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

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

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 :

{
"chaine":"tf1",
"key" : "key"
}

 

Requête pour changer de chaîne

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.

Cadre en informatique dans une multinationale je suis un touche-à-tout passionné de nouvelles technologies.

Tu aimes cet article ? Alors partage le Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInPin on PinterestShare on RedditShare on Tumblr

36 réponses

  1. cedb dit :

    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 🙂

  2. rodymary dit :

    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.

  3. 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.

    • rodymary dit :

      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

  4. cedb dit :

    If You say “Éteint le décodeur”, then make a web request :
    Make a web request
    URL :
    http://xxxxxxxxx:8123/api/services/switch/turn_off?api_password=xxxxxxxxxxx
    Method POST
    Content Type(optional) :
    apllication/json
    Optional
    Body(optional) :
    {“entity_id”:”switch.fibaro_system_fgwpef_wall_plug_switch”}

    l’applet est sythematiquement skipped sans ingrédient ( details : Ingredients CreatedAt(none) )
    Je comprend pas…

    • 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?

  5. cedb dit :

    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 😉

  6. Content d’avoir pu aider 😉
    A bientôt 🙂

  7. Mickael dit :

    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

  8. Mickael dit :

    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

  9. Luccio dit :

    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.

  10. Luccio dit :

    OK, un collègue vient de me montrer comment faire. J’ai honte.

  11. Txus dit :

    Merci pour ce post très intéressant.
    J’utilise Webhooks pour commander des équipements en HTTP depuis Google Home. Ca fonctionne très bien, juste un peu de latence entre la commande et l’action.
    Comme vous l’avez écrit, c’est unilatéral et comme vous je recherche une solution pour que Google assistant interprète la réponse HTTP à une action.
    Je pense que la solution viendra de IFTTT mais je suis preneur d’une idée, même biscornue !
    Merci encore te très bonne journée.

    Txus

    • Bonjour,
      Merci de votre retour 🙂 il y a plusieurs possibilités en effet, plus ou moins complexes.

      La première consiste à passer par un système tiers tel qu’Home Assistant qui est capable d’utiliser les capacités de cast du Google Home. C’est facile à mettre en place mais le résultat n’est pas optimales…
      La seconde, plus technique consiste à développer soit même ces actions via le sdk de Google. Je prépare justement un article sur le sujet 😉

      Bonne journée.

  12. Txus dit :

    Très bien, je surveillerai vos post.
    Si par ailleurs je trouvais une solution, j’en ferais part sur votre site.

  13. Benjamin dit :

    Bonjour, j’ai souhaité installer votre addon pour la gestion des chaines, mais impossible. Voici le log :

    17-11-27 20:27:07 INFO (MainThread) [hassio.addons.git] Clone addon https://github.com/quentinchap/hassio-repo/tree/master/tv-custom-api repository
    17-11-27 20:27:08 ERROR (MainThread) [hassio.addons.git] Can’t clone https://github.com/quentinchap/hassio-repo/tree/master/tv-custom-api repo: Cmd(‘git’) failed due to: exit code(128)
    cmdline: git clone –recursive -v https://github.com/quentinchap/hassio-repo/tree/master/tv-custom-api /data/addons/git/04bd30bc
    stderr: ‘Cloning into ‘/data/addons/git/04bd30bc’…
    remote: Not Found
    fatal: repository ‘https://github.com/quentinchap/hassio-repo/tree/master/tv-custom-api/’ not found
    ‘.
    17-11-27 20:27:08 ERROR (MainThread) [hassio.addons] Can’t load from repository https://github.com/quentinchap/hassio-repo/tree/master/tv-custom-api
    17-11-27 20:27:08 INFO (MainThread) [hassio.addons] Load addons: 18 all – 0 new – 0 remove

    Une idée d’où le problème pourrait venir ?

    Merci d’avance.

    • Bonjour,
      Pouvez-vous m’expliquez comment vous avez procédez pour l’installer ? Cela pourrait m’apporté des pistes afin de vous aider. De plus, avez-vous tester d’installer un autre addon? Juste pour vérifier que ce n’est pas un problème “réseau”.

  14. Benjamin dit :

    Bonjour,

    Je fais comme indiqué dans la doc : Je copie le client Github, je le colle dans “Add-On Repositories” sur ma page home assistant (Onglet Hassio puis le petit panier).

    Concernant un autre modules, aucun bug de ce côté.

  15. Vincent dit :

    Bonjour,
    tout d’abord merci pour tous ces tutos qui sont une véritable mine d’or pour le débutant++ que je suis.
    Je rencontre un problème en lançant mon applet depuis IFTTT soit applet Failed, soit problème with webhook service. J’ai test mon script sur postman pas de probleme. je me connecte à HomeAssistant depuis l’extérieur sans souci donc la j’avoue je sèche.

    • Bonjour,
      Heureux d’avoir pu vous aider avec cet article 😉 J’aurais plusieurs questions pour tenter de vous aider d’avantage:

      • Passez-vous directement par IFTTT et les APIs Home Assistant ou via un Add-on ?
      • Avez vous testez seulement l’accés à Home assistant de l’extérieur ou bien aussi vos script via postman ?
      • Avez vous plus d’informations dans les logs d’Home Assistant ?
  16. Vincent dit :

    Bonjour merci de tenter de m’aider. Je passe en direct par IFTTT et j’ai bien accès à homeassistant depuis l’exterieur mais je n’ai testé mes scripts postman que depuis chez moi. Concernant le log, ce dernier ne me donne aucune info autre que sur le démarrage d’homeassistant lui même.

    Cordialement
    Vincent

    • Bonjour,
      Encore quelques questions car c’est assez difficile de vous aidez avec aussi peu d’éléments:

      • Pouvez-vous tenter postman depuis l’extérieur ?
      • Dans vos script postman comment passez-vous le mode passe Home Assistant (Dans l’URL ou via les headers de la requête)?
  17. Benjamin dit :

    Bonjour,

    Je me permets de revenir vers vous car je n’arrive toujours pas à installer l’addon. Voici le log :
    “17-12-09 08:57:40 INFO (MainThread) [hassio.addons.git] Clone addon https://github.com/quentinchap/hassio-repo/tree/master/tv-custom-api repository
    17-12-09 08:57:41 ERROR (MainThread) [hassio.addons.git] Can’t clone https://github.com/quentinchap/hassio-repo/tree/master/tv-custom-api repo: Cmd(‘git’) failed due to: exit code(128)
    cmdline: git clone –recursive -v https://github.com/quentinchap/hassio-repo/tree/master/tv-custom-api /data/addons/git/04bd30bc
    stderr: ‘Cloning into ‘/data/addons/git/04bd30bc’…
    remote: Not Found
    fatal: repository ‘https://github.com/quentinchap/hassio-repo/tree/master/tv-custom-api/’ not found
    ‘.
    17-12-09 08:57:41 ERROR (MainThread) [hassio.addons] Can’t load from repository https://github.com/quentinchap/hassio-repo/tree/master/tv-custom-api
    17-12-09 08:57:41 INFO (MainThread) [hassio.addons] Load addons: 19 all – 0 new – 0 remove”

    De plus, même sans l’addon, je suis incapable de detecter les chaines que je regarde. Je vois juste “Live TV”. Ma télé est une LG tournant sur WEBOS.

    • Bonjour,

      Mes instructions ne sont pas très claire veuillez m’en excuser. C’est pour cela que vous n’avez pas réussi à l’installer. Le repo que vous devez ajouter ce trouve à cette adresse https://github.com/quentinchap/hassio-repo et non pas à c’elle-ci https://github.com/quentinchap/hassio-repo/tree/master/tv-custom-api (qui est en fait l’adresse du code source de l’add-on et non pas du repo).
      Une fois la bonne adresse ajoutée vous devriez enfin pouvoir ajouter l’Add-on.

      Concernant votre télévision, le changement de chaîne via Home Assistant fonctionne-t’il? (Je possède aussi une TV LG sous WebOS et je n’ai pas ce comportement)

      Pour le moment cet Add-on vous permet simplement de rendre le nommage des chaînes paramètrable et plus flexible. Je suis en train de réfléchir à d’autre fonctionnalités mais pour le moment il n’utilise pas d’information issue de la télévision.

  18. Vincent dit :

    J’ai refais des tests : postman depuis l’extérieur fonctionne (partage de ma connexion mobile chez moi) et je passe par l’URL et non par les headers si je comprends bien votre question et je post mon script dans body. Cependant j’ai fais un test qui me paraissait moins complexe. J’ai suivi votre tuto sur telegram et IFTTT. Quand je fais le test par service de homeassistant il me créer bien le fichier google drive pas de souci en revanche quand je passe par automation en modifiant le config.yaml la, IFTTT me signale une erreur soit connexion refused soit timeout. Mais le plus bizzare ce que telegram me repond ok et que mon system reboot mais pas de maj du fichier dans mon drive.J’ai pourtant bien inséré la key_api de ifttt dans mon fichier config. Petite précision j’edite mon fichier configuration par notepad++ car je n’ai pas configurer l’acces a mon ssh.
    J’avoue que je patoge un peu…

  19. Benjamin dit :

    Bonjour,

    En effet maintenant aucun souci pour l’installation ! Merci !

    Par contre, non en effet, je n’arrive pas à changer les chaînes de HA. Que j’utilise le bouton suivant, ou que je tente de le faire par le “service data” en JSON avec
    ” {
    “entity_id”: “media_player.lg_tv”,
    “source”: “M6″
    }”

    Cependant, faut-il renseigner les chaines dans sources dans le configuration.yaml ?

  20. Benjamin dit :

    Aujourd’hui, mon fichier ressemble à ça :

    “media_player TV:
    – platform: webostv
    host: MONIP
    name: LG TV
    timeout: 5
    filename: webostv.conf
    customize:
    sources:
    – livetv
    – youtube
    – makotv
    – netflix

    Si je tente de mettre autre chose, j’ai un fichier configuration invalide ou alors mon HA ne redémarre pas.

    En tout cas merci de prendre au tant de temps pour mon problème !

    • Bonjour,
      Avez-vous tenter de retirer la partie customize de votre configuration? Je ne peu pas le vérifier actuellement mais il ne me semble pas l’avoir utilisée de mon côté et j’ai les chaînes qui descendent en tant que sources.

      Update: Je vient de vérifier chez moi j’utilise l’autre composant, lg_netcast. Il me semble cependant que toutes les tv lg webos ne sont pas compatibles

Laisser un commentaire