Vous disposez d'un assistant Google Home et vous souhaitez exécuter rapidement une action de type domotique dans votre maison dès qu'une phrase est captée par l'assistant ?

google-nest-thermostat

Je vous avais précédemment expliqué comment envoyer un message vocal sur son Google Home depuis Node-Red et aussi comment créer un chatbot avec Dialogflow, voici aujourd'hui une petite astuce utilisant IFTTT pour déclencher une intention générique dans votre maison en utilisant Node-Red.

IFTTT étant limité à 3 applets personnalisés, l'astuce pour capter toutes les intentions consiste à créer une intention générique permettant de transmettre à votre serveur de domotique Node-Red toutes les demandes de domotique captées par votre assistant.

Création de l'Applet IFTTT pour Google Home

La première étape consiste à connecter votre Google Home à votre compte IFTTT en recherchant "Google Assistant" sur le portail IFTTT.

Une fois votre assistant connecté à votre compte IFTTT, vous pouvez cliquer sur l'option Create pour créer une nouvelle Applet, sélectionnez l'assistant Google dans la partie "IF THIS".

ifttt-new-applet

Sélectionnez l'option "Say a phrase with a text ingredient".

google-home-ifttt-applet

Puis, remplissez le formulaire avec l'intention :

"Peux-tu $ ?".

À chaque fois que vous prononcerez "Ok Google, Peux-tu ...", une API REST de votre serveur Node-Red sera sollicitée par IFTTT avec le contenu de la phrase transmise à l'assistant.

En réponse pour votre assistant, vous pouvez tout simplement préciser

"Très bien, je $ !".

Le caractère "$" sera remplacé par IFTTT par la chaine de caractères captée par l'assistant.

google-home-ifttt

Une fois cette étape réalisée, il vous reste à sélectionner la réaction qu'exécutera IFTTT quand cette action se produira. Pour cela sur le "THEN THAT" sélectionnez une action de type Webhooks.

Remplissez l'URL sur lequel votre serveur Node-Red peut-être joignable depuis Internet :
https://ma-maison/api/ifttt

Pour permettre à votre serveur Node-Red d'être accessible depuis Internet, vous devrez probablement réaliser un transfert de port sur votre box Internet et sécuriser le portail d'administration de Node-Red en positionnant un mot de passe depuis son fichier de configuration "settings.js". Le chemin "/api/ifttt" est précisé plus bas dans l'article, il s'agit d'une API qui captera vos intentions sur Node-Red.

Pour terminer, utilisez une méthode "POST", avec un content-type de type JSON et un Body avec la valeur suivante :

{"intent":"{{TextField}}";"key":"123456"}

Vous l'aurez compris, il s'agit d'un message JSON composé de deux valeurs :

  • L'intention captée par votre Google Home qui sera remplacée par IFTTT grâce au tag {{TextField}}.
  • Une clef de protection que vous vérifierez sur votre API afin d'assurer une sécurité minimale à votre API. N'oubliez pas de la modifier.

Création de l'API Webhooks sur Node-Red

La dernière étape consiste à créer un flow Node-Red qui prendra en entrée une requête HTTP, qui vérifiera la clef et qui en fonction de l'intention appellera le flow Node-Red correspondant via les "Internal Links".

node-red-ifttt-1

Pour analyser le contenu de l'intention facilement, vous pouvez utiliser le "Contains" du node "Switch" qui vous permettra de router chacune des intentions sans complexifier le flow :
node-red-check-intent

Conclusion

Votre système de domotique Node-Red est désormais connecté à votre assistant Google ! Vous êtes libre de mapper chaque intention à un flow Node-Red. L'intention générique vous permettra à travers d'un simple applet IFTTT de capter l'ensemble des intentions que vous souhaitez réaliser au sein de votre maison.
La seule limitation de la solution concerne les quotas d'appels WebHooks de la plateforme IFTTT.

Vous vous intéressez à la domotique ? N'hésitez pas à faire un tour sur mes articles sur le sujet et à découvrir comment mettre en place une baie informatique dans sa maison.