Connectez IFTTT à votre serveur domotique

Nous avons déjà parlé sur ce blog du système IFTTT. Il s’agit d’un service en ligne qui vous permet de créer de l’automatisation depuis différents services et appareils connectés. Nous n’aborderons pas à nouveau le principe de fonctionnement ici, donc si vous êtes passé à côté de ce premier article, je vous suggère d’aller le parcourir pour découvrir le principe des recettes IFTTT et découvrir le type de scénarios (appellés « recette » ou « recipe » dans IFTTT)  que vous pouvez mettre en place avec ce système.

Par défaut, IFTTT embarque déjà une compatibilité avec beaucoup de services et de sites (Tumblr, Wikipedia, Spotify, Pinterest, les services Google, la météo, et des fonctions sur smartphone après avoir installé l’application dédiée). Il est également compatible avec de nombreux objets connectés comme nous pouvons le constater dans la section « Connected Home » :

Section "Connected Home" de IFTTT

Vous pouvez y trouver notamment, parmi plein d’autres possibilités :

Dans cet article, nous allons élargir un peu plus le sujet en vous proposant de connecter sur IFTTT un système qui ne fait pas partie des éléments directement dans les recettes IFTTT. Nous vous montrerons comment relier IFTTT à votre serveur domotique, et ainsi pouvoir profiter de tout ce que proposent les recettes, en complément de l’automatisation déjà offerte par votre serveur domotique existant.

Quelques tutoriels pour aborder la question

Les bloggueurs férus de domotique se sont bien évidemment déjà penchés sur la question. Ils avaient ainsi déjà trouvé des méthodes pour mettre en lien IFTTT et un serveur domotique en utilisant les canaux existants. Nous vous proposons donc ces quelques lectures intéressantes et qui permettent de comprendre le principe d’une inter-connexion entre IFTTT et un système domotique.

À noter : ces systèmes utilisent le principe de l’API à accès externe et public, c’est à dire qu’il est nécessaire que le serveur domotique avec lequel vous souhaitiez réaliser la connexion ait un système qui permette de contacter son API via une adresse http, accompagnée d’identifiants pour éviter que l’API soit contactée par des personnes ou systèmes non autorisés.

Connexion Zibase / IFTTT (balance Withings)

par MrQuellegoule, sur le blog Domotique Zibase

Cet article présente une manière astucieuse de pallier l’absence d’un canal dédié aux API sur IFTTT, en envoyant des requêtes par le biais de Google Drive.

Balance Withings et Zibase par MrQuellegoule

Techniquement, il s’agit d’utiliser l’action qui permet d’envoyer un fichier sur Google Drive, mais au lieu de préciser l’URL d’un fichier, c’est l’URL pour envoyer une commande brute sur la Zibase qui est utilisée. Résultat : l’URL est appelée, donc la Zibase reçoit la commande et la prend en compte. Côté Google Drive, rien n’est envoyé puisque l’adresse ne renvoie pas de fichier quand elle est sollicitée (d’où l’erreur qui s’affiche sur la recette).

Le tutorial est particulièrement intéressant car il exploite un objet connecté compatible avec IFTTT, récupère ses données (appellées « Ingrédients ») et s’en sert pour alimenter les valeurs d’une sonde virtuelle. Il permet donc de bien comprendre le principe de récupérer les valeurs depuis un objet connecté (valeurs appellées ingrédients) et de les utiliser dans une API de box domotique. Concrètement, ce principe de base peut s’adapter à toute box possédant une API externe et permet donc d’interfacer n’importe quel canal d’IFTTT sur une box domotique.

Nous allons le voir plus bas dans cet article, il n’est plus nécessaire de passer par Google Drive pour lancer ce type de requête car IFTTT a ajouté une fonction permettant l’appel direct sur une URL.

IFTTT-2-API : utiliser une feuille de calcul pour faire le lien entre IFTTT et l’API d’un système domotique

par Hervé sur le blog Abavala

Abavala : systeme IFTTT-2-API

Dans cet article, c’est une autre méthode qui est proposée pour que IFTTT et l’API d’une box domotique comuniquent ensemble. Plutôt que d’utiliser la requête à l’API « en dur » dans la recette IFTTT, Hervé, l’auteur d’Abavala, vous propose d’utiliser une feuille de calcul avec un script, qui va elle-même construire l’URL qui enverra les informations à l’API pour communiquer les informations au serveur domotique. La feuille de calcul étant hébergée sur Google Drive, IFTTT peut facilement la mettre à jour quand c’est nécessaire.

Avec cette méthode, les identifiants de l’API de votre box sont sur Google Drive et non directement sur IFTTT, ça évite par exemple de les transmettre à tous les internautes si vous publiez une de vos recettes par erreur. Cette méthode est un peu plus compliquée à mettre en œuvre que la précédente (quoique le tutorial explique très bien comment faire), mais a l’avantage d’être plus souple.

Ici, Google Drive est également utilisé, mais non pas pour appeller une URL via la fonction d’envoi de fichier. La recette ajoute une ligne au fichier IFTTT-2-API (proposé en téléchargement sur l’article) à chaque valeur à mettre à jour. C’est ensuite un script, hébergé sur Google Drive également et lancé à des intervalles réguliers

Concrètement, avec le système mis en place dans le tutorial d’Abavala, le fonctionnement est le suivant :

  1. Un E-mail est envoyé par un utilisateur à l’adresse e-mail « déclencheur » d’IFTTT, avec un sujet « gaz » et la valeur du relevé.
  2. Une recette IFTTT (déclencheur = e-mail, action = ajout d’une ligne dans une feuille de calcul) insère dans IFTTT-2-API une ligne correspondant à cette valeur.
  3. Sur la feuille de calcul IFTTT-2-API, le script s’exécute, et il construit l’URL en fonction des informations d’API saisie et des données ajoutées à la feuille de calcul, et déclenche ces appels à l’API.
  4. Le serveur domotique enregistre les différents déclenchements de l’API, il est alors capable de les indiquer sur son interface.

Là, encore, c’est un principe de base : plutôt qu’un e-mail envoyé par l’utilisateur, il peut s’agir d’un objet connecté qui est pris en charge par IFTTT. La recette aura alors comme déclencheur une nouvelle donnée sur l’objet connecté, et pourra saisir de la même façon une ligne dans la feuille de calcul pour que la donnée soit récupérée par la box domotique en bout de ligne.

Cette feuille de calcul IFTTT-2-API propose actuellement la compatibilité avec :

  • eedomus
  • Zibase
  • PushingBox
  • Zipato

Un grand bravo à Hervé pour avoir imaginé cette méthode et l’avoir mise à disposition pour la communauté.

« Maker », le nouveau canal d’IFTTT pour requêtes entrantes et sortantes

De son côté, suite à des demandes répétées des utilisateurs, IFTTT a créé le canal « Maker ». C’est le canal ouvert qui était attendu pour créer une interface directe entre IFTTT et les API sans utiliser de méthode détournée. Sa présence ne rend cependant pas caduque le système IFTTT-2-API proposée ci-dessus.

Le canal Maker est constitué de deux éléments : un déclencheur (celui qui se met après le « If ») et une action (qui se met donc après le « Then »).

Présentation du canal "Maker" de IFTTT

Le déclencheur (ou Trigger) réagit quand une adresse spécifique est atteinte. Il est même possible de passer jusqu’à 3 variables en contactant cette URL, et la date et heure de déclenchement sont également enregistrées par IFTTT.

L’action est proche des méthodes que nous avons eu plus haut : elle consiste à envoyer une requête sur une URL accessible publiquement, avec éventuellement des valeurs.

Une fois identifié sur IFTTT, la page de présentation du « Maker Channel » vous indique ces possibilités, vous indique votre clé d’API (indispensable pour les déclencheurs) et vous propos même un système de construction de déclencheur.

Création d’un déclencheur dans le canal « Maker »

La manière la plus simple de générer une adresse http pour activer le déclencheur est d’aller sur la page du canal « Maker » et de cliquer sur « How to Trigger Events ». Cela vous amène à une page pour construire votre déclencheur.

Là, vous pouvez simplement modifier la partie personnalisable de l’adresse (qui correspondra à un champ « Event Name »/ »Nom de l’évènement »), et copier-coller l’intégralité de l’adresse (qui comprend à la fin une longue clé secrète pour pouvoir déclencher les évènements sur votre propre compte IFTTT).

IFTTT : déclencheur sur le Maker channel

Notez aussi sur cette page que vous pouvez non seulement déclencher une URL mais également une commande -curl en ligne de commande (un aspect qui se destine plutôt aux plus techniciens d’entre vous). Dans les deux cas, il est possible d’envoyer jusqu’à trois variables en JSON (dans le corps du message ou dans la ligne de commande), variables qui peuvent être ensuite exploitées dans les recettes.

Un exemple tout simple d’application côté box domotique, avec une eedomus : nous créons un actionneur http qui peut ensuite être déclenché dans une règle.

Dans les valeurs de cet actionneur, nous mettons plusieurs adresses de requête, qui correspondent à différents éléments du Maker Channel :

Déclencher un évènement IFTTT Maker Channel avec l'eedomus

N.B. : il est possible d’utiliser un seul actionneur http pour déclencher de nombreux évènements différents sur le canal Maker de IFTTT. La pertinence de cette méthode dépend principalement des recettes correspondant à ces évènements au niveau de IFTTT. L’essentiel est que les actionneurs http soient créés de façon à s’y retrouver lors de la création des règles côté eedomus.

Il ne nous reste plus qu’à créer la recette en utilisant notre évènement chauffage_confort.

IFTTT Maker - début d'une recette avec un trigger

… puis d’associer un comportement lorsque cet évènement est appellé. Pour l’exemple, prenons un thermostat Nest (notez que l’eedomus gère le thermostat Nest en direct, ceci est juste un eexemple pour le cas général).

Recette finale avec canal Maker de IFTTT et Thermostat Nest

Notre recette est prète pour être créée ! Après création, il suffit de la tester, soit depuis la page de « construction » des déclencheurs évoquée plus haut, soit en appellant l’url depuis le serveur domotique qui la gère.

Un dernier point sur ce déclencheur du canal « Maker » : non seulement vous disposez du nom de l’évènement, mais aussi de l’heure et date de déclenchement, et des trois variables faculatives qui peuvent être passées en JSON (ces éléments sont appellés « ingrédients » dans IFTTT). Ainsi, nous pouvons aisément imaginer un système qui passe trois valeurs et qui permet de les utiliser (certains canaux de IFTTT peuvent envoyer directement une valeur de fonctionnement à un objet connecté) ou de les communiquer (canal e-mail, notification, SMS…).

Ci-dessous, un exemple d’un système qui communique une zone de chauffage, un mode et la température de consigne : IFTTT est capable de communiquer ces variables dans un e-mail (ou tout autre canal de notre choix). Nous utilisons donc cinq ingrédients différents, tous utilisés dans le corps du message et deux d’entre eux également présents dans le sujet.

IFTTT Maker Channel : e-mail avec 3 valeurs

Sur la page qui vous permet de créer un déclencheur, tous les cas de figure peuvent être testés : vous pouvez faire un test en modifiant le nom de l’évènement, mais également en ajoutant une valeur pour chacune des trois variables facultatives.

Cela couvre la partie « déclencheur » qui permet donc de connecter votre système domotique à tous les canaux de IFTTT que vous aurez relié à votre compte. Voyons maintenant l’inverse, c’est à dire comment IFTTT peut déclencher un scénario ou un appareil domotique.

Création d’une action dans le canal « Maker »

L’action proposée par le canal « Maker » permet de faire une requête web, et par conséquent d’actionner tout serveur qui est accessible par requête sur une adresse externe.

Exemple d'action dans le channel "Maker" de IFTTT

Cette partie est largement couverte par les deux tutoriaux proposés en début d’article, il suffit d’ajouter l’URL à appeller dans le champ URL. Selon les capacités du système contacté, il est possible d’envoyer un contenu complémentaire dans le corps de la requête (par exemple des ingrédients récupérés depuis notre déclencheur).

Un exemple avec la Zibase :

Pour déclencher un scénario sur la Zibase, il suffit d’envoyer une requête sur l’adresse d’appelle à ZAPI construite de cette façon.

https://zibase.net/api/get/ZAPI.php?zibase=[ID ZiBASE]&token=[Token ZiBASE]&service=execute&target=scenario&id=[ID du scénario]

En remplaçant bien sûr [ID ZiBASE] et [Token ZiBASE] par l’identifiant et le token de l’API Zibase (vous pouvez les trouver sur l’interface de votre ZiBASE, mode Expert, rubrique « Systeme » et section « Identifiants de ZiBASE »).

Pour obtenir l’identifiant du scénario [ID du scénario], vous pouvez simplement lancer un test sur ce scénario : son ID apparaîtra dans le suivi d’activité (le chiffre entre parenthèses). Notez également que la case « Nom référencé par ZAPI » doit être cochée pour pouvoir l’activer via l’API.

IFTTT ID d'un scénario sur Zibase

Un exemple concret de recette : lorsque le GPS de mon téléphone détecte que je suis sorti de chez moi, je déclenche un scénario qui passe le chauffage de la maison en mode hors gel, s’assure que toutes les lumières sont éteintes, etc. (ça n’est cohérent que lorsqu’on habite tout seul, bien sûr…).

Recette sous IFTTT avec action du canal Maker

Cette méthode permet de mettre en place l’appel à l’API d’une box domotique via une adresse externe, cependant la méthode IFTTT-2-API proposée sur le blog Abavala semble un meilleur compromis (plus souple, évite d’héberger des identifiants directement dans une recette et de les partager par erreur, etc.).

Donc l’action du canal « Maker » est plutôt à réserver aux cas où le nombre de requêtes à faire sur une API externe est simple et limité (si vous voulez juste la mise en place très rapide d’une action sur votre box domotique via IFTTT), ou alors au cas où le système présent en sortie aura le bénéfice de ce que peut envoyer IFTTT dans le corps de la requête (le champ « body »).

Une myriade de possibilités

IFTTT progresse et il reste toujours excellente méthode pour ajouter des interactions entre des systèmes qui à priori pourraient sembler opaques entre eux. À ce jour, il n’a probablement pas fini d’évoluer et proposera peut-être dans le futur une prise en charge des API encore plus complète.

Mais comme vous l’aurez constaté en début de cet article, ce qui fait la force d’IFTTT, c’est aussi la créativité de la communauté qui l’utilise. Car même quand il n’y a pas de canaux prévus à cet effet, il est toujours possible d’arriver à nos fins via des méthodes détournées.

A propos Pierre

Technophile, ludophile et bidouilleur dans l'âme, j'aborde les nouvelles technologies avec passion, curiosité et ouverture d'esprit. Je faisais partie de l'équipe de Planète Domotique de juin 2013 à mai 2017, d'où l'écriture de nombreux articles de blog pendant cette période.

A voir aussi

Intégration Chacon

Orno Smart Living : Ajouter un actionneur à une box domotique

Suite à une question posée par un de nos clients, nous souhaitons vous présenter la …

Un commentaire

  1. Jean Neymar (@espacebroderie)

    tres bon tuto,
    je cherche a recuperer les infos d’un agenda google (date, heure et intitulé) pour les envoyer sur ma box domotique pour pouvoir les exploiter dans un scenario reveil, mais je ne vois pas comment faire pour recuperer les valeurs dans ifttt et les envoyer dans ma box, bon je sais comment communiquer entre ifttt et ma box mais c’est les valeurs que je n’arrive pas a gerer (les « ingredients  » dans ifttt), une idée de comment recuperer ces valeurs?

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *