Actualités | Audio/Vidéo | Evènements | DIY | Domotique | Informatique | Maison | Mobile | Sécurité

#Tutoriel : IFTTT et Intégration Vera

Envoyer Imprimer PDF
Note des utilisateurs: / 4
MauvaisTrès bien 

Ce tutoriel, étape par étape, vous guidera avec des copies d’écran pour une nouvelle intégration de VERA avec IFTTT. Pour ce faire, je vous montre comment utiliser la dernière version de mon plugin ALTUI déjà présenté sur Touteladomotique.com (Voir mon dernier article).

 

Introduction

- IFTTT ( https://ifttt.com ) est un service connu sur internet qui permet la création de mini “applets” qui connectent des sources d’évènements a des actions sur différents objets ( IOT ) ou données ( cloud services ). Il y a un grand nombre de “triggers” possibles ainsi qu’une multitude d’action comme envoyer des emails, des notifications, mettre à jour des documents ou agir sur vos IOT préfères.

- Jusqu’à présent VERA ne parle pas a IFTTT de façon simple.  La société GetVera est en cours de travail sur une intégration IFTTT mais pour le moment limitée a la partie “action” (  IFTTT pourra allumer ou éteindre un switch ,ou lancer une scène ) mais il n’est pas prévu d’intégration dans l’autre sens ou VERA enverrait des événements pour être récupérés par une applet. Le focus de ce tutoriel est de montrer comment il est assez facile, grâce à ALTUI et IFTTT, d’utiliser VERA comme un trigger d’une application IFTTT.

- ALTUI (déjà présenté sur ce site ) est un simple plugin pour VERA qui offre une user interface alternative à celle du fabriquant. ALTUI avait déjà le concept de « data storage provider » qui permettait à chacun d’envoyer les changements des valeurs des variables d’un périphérique sur un  service externe à des fins de stockage (ou de graphique ). Les intégrations prévues étaient jusqu’à présent thingspeak , emoncms, Datayours et cela était extensible a d’autre 3rd party.  Dans la dernière version de ALTUI, un nouveau type de “Data Storage Integration” a été rajoute afin de supporter IFTTT et ainsi permettre à des changements de variables d’un périphérique de devenir un trigger IFTTT déclenchant une applet

 

Exemple de réalisation possibles

- Garder les changements de valeur d’une variable dans le temps dans une feuille google sheet de manière gratuite, sans serveur, sans base de données

- Envoyer un email ou une notification push sur on périphérique mobile lorsque certain périphériques changent d’état

 

Ce tutoriel, étape par étape, vous guidera avec des copies d’écran pour la réalisation de ce premier exemple

 

Pre requis

- Vera or openLuup

- Avoir le plugin ALTUI installé http://apps.mios.com/plugin.php?id=8246

- Un compte IFTTT (gratuit)

- Un compte Google avec un google drive pour stocker la future feuille google sheet


3 étapes fondamentales

 

1- Configuration de IFTTT :  pour préparer l’applet IFTTT

2- Configuration de ALTUI : pour déclarer quel périphérique/quelle variable envoyer vers IFTTT

3- Quelques peaufinages

 

Configuration de IFTTT

- Tout d’abord il vous faut un compte IFTTT https://ifttt.com/discover

- Nous allons utiliser le service “webhooks”.  Allez dans « My Applets » et chercher “WebHooks” afin de le configurer

- Suivre les étapes pour le configurer

- Ensuite, allez dans “My Applets” et créer une nouvelle applet en cliquant sur le bouton

- Un nouvel écran se présente avec la structure de base d’une applet avec une partie THIS et une partie THAT .

 

Step1 – préparer l’applet

- Nous voulons recevoir un web service de ALTUI donc la partie THIS sera un WebHook.

- Cliquer sur on THIS, puis taper WebHook dans le champ de recherche, puis cliquer sur le carré bleu WebHooks

 

Step 2 – configure the webhook

- Cliquons de nouveau sur le carré bleu “Receive a web request” . IFTTT va demander le nom d’un évènement ( event name ). Vous pouvez choisir ce que vous voulez, il est possible d’avoir des choix d’event name différents par périphérique, ou d’utiliser le même si vous voulez juste envoyer tous les changements des périphériques a travers la même applet.  Ce nom d’évènement sera un champs dans notre feuille excel plus tard. Il permet aussi d’avoir éventuellement des fichiers différents , par nom d’event name. C’est au choix, dans mon exemple, j’ai besoin d’un  seul évènement que j’ai choisi d’appeler “vera_data_published”. Tout sera dans le même fichier.

- Se rappeler de cet “event name” pour plus tard

Puis cliquer sur le bouton “Create trigger”

- Maintenant la partie THIS de l’applet est faite mais il nous manque encore la partie THAT. Cliquons donc sur le mot “That”

 

Step 3 – configurer l’action google sheet

- Choisir un service  (attention, si vous êtes dans le beta program de GetVera pour IFTTT vous verrez un service VERA mais ce n’est pas celui qu’il nous faut ici puisque l’on travaille sur un exemple inverse : envoyer des données de la vera vers google sheet)

- Taper google sheet dans le champ recherche et cliquer sur le carré

 

Step4  - quelques formules simples

- Nous voulons ajouter une ligne dans une feuille google sheet chaque fois qu’une variable d’un périphérique vera change ( pour ceux choisis par vous, on verra cela plus tard ).

- Cliquer sur “Add row to spreadsheet”

==> Par défaut, l’action est configure pour utiliser une google sheet nommée “IFTTT_Maker_Webhooks_Events”,  place dans votre répertoire google drive IFTTT/MakerWebooks/{{EventName}}  avec {{EventName}} étant le nom que vous avez choisi en étape 2 ,donc dans notre cas cela sera IFTTT/MakerWebooks/vera_data_source

==> Créer une feuille google sheet avec ce nom dans ce même répertoire maintenant. Normalement IFTTT le fait tout seul si la feuille n’existe pas mais nous allons faire quelques manipulations donc il faut créer le fichier maintenant
Fichier:
/IFTTT/MakerWebooks/vera_data_source/TTT_Maker_Webhooks_Events

==> La partie intéressante est la ligne qui va être insérée dans la feuille. Cela sera toujours une nouvelle ligne, en fin de fichier, de la première page si le fichier en contient plus d’une. Les valeurs des cellules seront ce que vous configurer dans le champ « Formatted row »

==> Vous pouvez ajouter autant de cellules que vous voulez, a condition de bien les séparer par 3 séparateurs verticaux ( pipe ) comme “|||”

==> Nous pouvons améliorer les choix par defaut.

==> OccuredAt est un champ texte qui represente une date/heure comme “December 4, 2017 at 09:33AM” mais ce format n’est pas tres pratique pour un tableur. Fort heureusement nous pouvons utilizer ici n’importe quelle formule google sheet. Donc je propose d’utiliser 2 cellules a la place d’une et de traduire cette chaine en une date et une heure au moyen des formules suivantes:

Date : DATEVALUE(REGEXREPLACE( "{{OccurredAt}}"," at .*",""))

Time: TIMEVALUE(REGEXREPLACE( "{{OccurredAt}}",".* at ",""))

 

ATTENTION :  pour nous français, il y a un problème car les dates ne sont pas reconnues et IFTTT n’offre pas de contrôle. Il faut passer la feuille google sheet en mode Anglais ce qui est fort heureusement possible pour une feuille donnée. Pour cela aller dans le menu Fichier / Paramètres de cette feuille et choisir Anglais / Etats unis.

Pour les valeurs Value1, Value2, Value3 , elles sont prédéterminées par ALTUI qui va envoyer:

Value1 = le altuiid du périphérique ( like 0-123 )

Value2 = la chaine service”:”variable qui a changé. Ex: “urn:micasaverde-com:serviceId:DoorLock1:Status”

Value3 = la nouvelle valeur prise par la variable

 

Donc la formule que nous allons utilizer est finalement:
=DATEVALUE(REGEXREPLACE( "{{OccurredAt}}"," at .*","")) ||| =TIMEVALUE(REGEXREPLACE( "{{OccurredAt}}",".* at ","")) ||| {{EventName}} ||| {{Value1}} ||| {{Value2}} ||| {{Value3}}

Ensuite sauver l’applet !

 

Step5 – récupérer la valeur de la clé WebHook

- Avant de pouvoir allez configurer ALTUI , il nous faut la valeur de la clé allouée par IFTTT a ce WebHook. Pour cela, allez dans l’écran des services IFTTT et chercher encore pour “webhooks »

Puis cliquer sur “documentation” sur cet écran

Maintenant nous abordons un écran très important ou l’on peut voir la clé du webhook qu’il va nous falloir utiliser dans ALTUI.

Copier cette clé et la mettre de coté pour tout a l’heure

 

Configuration de ALTUI

Step1 – configurer les paramètres de data push

Dans ALTUI, le processus est très simple. Tout d’abord allez dans le panneau de contrôle du périphérique qui vous intéresse et choisir de voir les variables. Dans cet écran, cliquer sur le bouton histogramme afin d’ouvrir l’écran des paramètres de la variable que l’on veut envoyer sur IFTTT

- Choisir IFTTT comme type d’intégration

- Entrer la clé que vous avez récupéré lors de l’étape précédente

- Entrer l’ event name que vous avez choisi lorsque vous avez configure l’applet webhook

ATTENTION. Ne pas oublier de fermer la boite des paramètres en cliquant sur l’icône Histogramme avant de fermer la boite de dialogue des variables , sinon les paramètres ne sont pas sauvegardés.


Ensuite, Fermer et déclencher un reload du moteur luup pour que tous les changements soient bien pris en compte

A partir de ce moment, tous les changements de valeur des variables choisies vont être envoyés par web service sur IFTTT ce qui, à leur tour, déclenchera l’exécution d’une applet (ce qui dans notre cas va rajouter une ligne dans votre fichier google sheet )

Voici le résultat



Quelques peaufinages

 

Il y a une amélioration qui serait bienvenue. On voudrait afficher le nom des périphériques plutôt que juste l’id. Pour cela il nous faut une table de référence ( lookup table ) afin de relier un device ID avec son nom.

Step1 – récupérer une table : device altuiid <==> device name

- Pour cela, nous allons dans ALTUI dans la page Plus / Table Périphériques. Utiliser les contrôles pour sélectionner les champs ; ALTUIID & manufacturer, model et name.  Le champ “Name” est donc le quatrième de la ligne normalement


Ensuite sélectionner “All” dans le contrôle de taille de la table puis cliquer sur le bouton ( copy to clipboard ).

 

Step2  - créer une table de référence dans le tableur

- Nous pouvons maintenant allez dans le fichier google sheet créé au préalable et rajoute une nouvelle page ( tab ) en seconde position. (IFTTT remplit toujours la première page ). Vous pouvez l’appeler “Devices” par exemple et cliquer sur la cellule A1 puis faire Coller ( Ctrl + V ) Le texte semblable au suivant devrait être présent dans la feuille

"altuiid","manufacturer","model","name","Commands"
"0-94","test","","(*)iPhone - Alexis",
"0-366","","","3 in 1 sensor (light)",
"0-365","","","3 in 1 sensor (temperature)",
"0-62","Aeon","DSB05","4 in 1 sensor",
"0-343","","","4i1_Humidity Sensor",
"0-342","","","4i1_Light Sensor",
"0-341","","","4i1_Temperature Sensor",
"0-261","","","_Appliance Module",

 

Sélectionner ensuite la zone complète de texte et choisir la commande “scinder le texte en colonne” dans le menu

Ceci devrait vous donner le résultat suivant


- Maintenant cette table peux être utilisée comme table de référence avec une formule utilisant la fonction VLOOKUP() de google sheet. A partir d’un ALTUIID , nous allons trouver le nom du périphérique. Donc si vous avez bien nommé la page de cette table “devices” et en imaginant que la zone s’étend de A2 a D161, alors la fonction suivante nous donne le nom d’un périphérique à partir de son altuiid

=VLOOKUP(TRIM(<the altuiid given by the webhook>), devices!A2:D161, 4, false)

 

Step3 – mettre a jour la feuille Google Sheet

- La formule étant déterminée, il faut maintenant la reporter dans l’action IFTTT afin qu’elle soit mise dans le tableur google sheet automatiquement. Retournons dans IFTTT pour éditer notre applet. C’est le champ “Formatted row” qu’il faut modifier en rajoutant un nouveau champ séparé par le signe ||| et avec la formule suivante et comme indiqué dans l’image suivante

=DATEVALUE(REGEXREPLACE( "{{OccurredAt}}"," at .*","")) ||| =TIMEVALUE(REGEXREPLACE( "{{OccurredAt}}",".* at ","")) ||| {{EventName}} ||| {{Value1}} ||| =VLOOKUP(TRIM("{{Value1}}");devices!A2:D161;4;false)||| {{Value2}} ||| {{Value3}}

 

Ce qui produira les cellules suivantes dans l’ordre :
1.    La date
2.    L’heure
3.    L’event name du webhook
4.    Le altuiid du périphérique source de l’évènement
5.    Le nom du périphérique
6.    Le nom “service:variable” de la variable
7.    La nouvelle valeur prise par la variable

Au final nous obtenons le résultat suivant :



Conclusion

Ceci est juste un exemple des multiples possibilités qui peuvent être accomplies avec ALTUI et l’intégration IFTTT. La seule limite étant l’imagination et bien sur les possibilités de IFTTT. Bon amusement avec ceci et n’hésitez pas à faire part de vos retours et exemples intéressants.

 

Mise à jour le Mardi, 05 Décembre 2017 23:18  

Ajouter un Commentaire


Code de sécurité
Rafraîchir

Recherche

Newsletter ?

Bon Plan

Instagram

Publicité



Connexion