Balance Withings et Zibase via IFTTT et sans aucune ligne de code


BALANCE WITHINGS ET INTERACTIONS POSSIBLES AVEC ZIBASE VIA IFTTT



Le but

L'objet de cet article est de pouvoir obtenir les données de la balance Withings (poids et masse graisseuse pas exemple) dans la Zibase sans script Google ni PHP à l'aide de IFTTT (voir article précédent pour comprendre ce qu'est IFTTT).

Préambule

Une technique de remontée des informations de la balance Withings existe déjà et fonctionne très bien : IFTTT-2-API décrit ici créée et mise à disposition par nos amis abavala. L'idée de cet article est de mettre en place une solution alternative en évitant l'utilisation de scripts Google...la rendant plus simple...en espérant avoir réussi même si elle est imparfaite...

Les grands principes

Nous allons créer une sonde virtuelle de type Thermo-Hygro THGR328 qui permet de prendre en compte deux valeurs (température et hygrométrie) qui seront alimentées par deux variables (de mon côté V6 et V7 représentation repectivement le poids et la masse graisseuse).

Nous allons créer deux "recettes" (Recipe) dans IFTTT permettant à chaque mesure de poids sur la balance Withings pour une personne donnée  :

  • d'alimenter la variable V6 avec le poids pour le premier "recipe", 
  • d'alimenter  la variable V7 avec la masse graisseuse pour le deuxième "recipe" 

Cette solution peut paraître simple mais la mise en oeuvre nécessite d'être précautionneux et de bien suivre les étapes du tutoriel ci-dessous.

Mise en oeuvre

  • Eléments à mettre en place sur la ZIBASE

Il faut commencer par créer une sonde virtuelle dans la Zibase. Voici le scénario créant la sonde virtuelle et assurant le chargement des variables V6 et V7 dans la sonde virtuelle :



Quelques explications sur ce scénario :

  • Nous avons choisi de lancer le scénario une fois par jour à 8 heure du matin selon un calendrier fixe (je ne me pèse qu'une fois par jour);
  • Le scénario est arrêté si la variable V6 est égale à 0. Cela permet de ne lancer le scénario que si une nouvelle pesée à été effectuée sur la balance (dans ce cas V6 est alimentée par IFTTT via l'API de la Zibase..voir plus loin). Ne pas mettre cette action dans un premier temps à la création de la sonde virtuelle pour que le scénario puisse s'exécuter en appuyant sur le bouton "Tester le scénario";
  • Il faut prendre une sonde de type Thermo-Hygro THGR328 afin de pouvoir gérer deux entrées (I0 pour le poids et I1 pour la masse graisseuse);
  • La variable V6 alimente l'entrée I0 de la sonde virtuelle (Poids) et V7 l'entrée I1 de la sonde virtuelle (Masse graisseuse);
  • Le coefficient de conversion sur IO sera de 4.536 car nous allons récupérer le poids de la balance en livre (pound / lb) pour pouvoir profiter de la valeur décimale du poids en kilo. 1 livre vaut 0.45359237 kg et I0 doit être exprimé en dixième de degrés (ou de kilos en l’occurrence). Par exemple si votre poids est de 72.64 kg, la Zibase ne pourrait récupérer que 72 dans le cas où on remonterait le poids en kilo. De ce fait on le récupère en lb, soit 160.14. La zibase ne récupère dans V6 que la partie entière 160 qui multiplié par 4.536 va donner 725.76 soit 72.6 kg quand elle est exprimé en dixième...donc proche de la réalité;
  • Nous ne mettons de coefficient de conversion sur la variable I1 car un pourcentage est attendu. La Zibase va récupérer la Masse Graisseuse de la balance mais vous perdrez malheureusement la décimale et je n'ai pas trouvé de solutions;
  • Nous réaffectons 0 à la variable V6 pour que le scénario ne soit pas relancé tant que la variable V6 n'a pas été réalimentée en externe via IFTTT et l'API de la ZIbase;
  • Il faut également choisir le canal de votre sonde virtuelle en fonction de celle que vous possédez déjà. 
Après création, enregistrer ce scénario et attendre le redémarrage de la Zibase. Lancer ensuite ce scénario via "Tester le scénario". Une ligne de la forme suivante est générée dans le suivi d'activité :

Dans cet exemple, la sonde virtuelle va prendre l'identifiant OS3391881218. Il faut donc aller créer le périphérique de sonde virtuelle avec cet identifiant. Ajouter donc un nouveau périphérique selon l'écran suivant :


Quelques explications sur cette sonde virtuelle :

  • Il faut créer une sonde de mesure de type THGR328N afin de pouvoir gérer deux informations;
  • Prendre Générale comme logo (cela permet de redéfinir les unités des axes);
  • Dans l'identifiant radio, entrer l'identifiant précédemment renvoyé par le scénario; dans notre cas, OS3391881218.
  • Redéfinir les unités avec en mesure principale le poids et secondaire la masse Graisseuse ainsi que les unités associées. Cela devrait avoir pour effet de changer les unités dans le PCPAD ou l'Appli ZIBASE. Malheureusement, cela ne fonctionne pas (et n'a jamais fonctionné à ma connaissance depuis la mise en place). J'ai à nouveau remonté ce problème auprès de Zodianet.
Enregistrer ce périphérique et votre sonde virtuelle est maintenant active. Avant de passer à la suite, n'oublier pas de remettre dans votre scénario l'action de "Stopper le scénario selon une condition calculée" comme indiqué ci-dessus.

Il suffit maintenant de mettre en place les "recipe" sur IFTTT pour alimenter les variables V6 et V7. 

  • Eléments à mettre en place sur IFTTT
L'idée est qu'à chaque pesée par une personne donnée sur la Balance Withings, nous utilisons l'action "Upload File from URL" mis à disposition dans le service DRIVE de Google. 

Cette fonction permet normalement d'uploader un document sur Drive à partir d'une URL. Cela signifie que ce service lance donc l'URL. Nous allons détourner ce service pour lancer l'action d'enregistrement du poids dans la variable V6 et de la masse graisseuse dans la variable V7. à partir de la ZAPI (API de la Zibase). 

L'enregistrement d'une valeur dans une variable Zibase se fait via l'appel http suivant :

https://zibase.net/m/zapi_remote_zibase_set.php?action=rowzibasecommand&device=ZiBASEXXXXXX&token=YYYYYYYYYY&&param1=5&param2=[Valeur]&param3=1&param4=[NUM_VARIABLE]
  • ZiBASEXXXXXX est votre identifiant principal et YYYYYYYYYY votre token disponible dans votre interface de configuration Zibase en mode expert dans la partie système;
  • [Valeur] sera remplacée par un ingrédient dans IFTTT et en l'occurence le poids en pound dans le premier "recipe" et la masse graisseuse dans le second "recipe";
  • [NUM_VARIABLE] doit prendre comme valeur le numéro de la variable Zibase dans laquelle va être stockée le poids ou la masse graisseuse (0 à 14 pour les variables V0 à V14 qui sont les seules variables volatiles publiques et donc visibles depuis l'extérieur). 
Il faut activer sur IFTTT le Channel Withing et Drive.

Ci-dessous toutes les étapes pour créer le "recipe" sur IFTTT permettant de récupérer le poids (ingrédient "WeightLB" de la balance) et de le mettre dans la variable V6 de la Zibase :

Cliquer ensuite sur "create recipe" et le tour est joué. Répéter cette même opération pour créer un nouveau "Recipe" permettant d'alimenter la variable V7 avec la masse graisseuse (ingrédient "FatPercent" de la balance) : vos deux recettes sont alors créées : 


A noter que l'URL alimentant les variables de la ZIBASE ne renvoyant aucune information, l'erreur ci-dessous remonte au niveau du log des "recipe" car le fichier vide ne peut être uploadé sur Drive.


Cela n'affecte en rien le fonctionnement et les variables sont bien alimentées

A noter également que lors d'une pesée sur la balance Withings, les "recipe" peuvent mettre jusqu'à 30 minutes pour se lancer; donc il faut être patient. Néanmoins, cela n'a aucune conséquence car les variables V6 et V7 seront alimentées à un moment et le scénario de la Zibase se lancera à l'heure que vous avez déterminée pour alimenter la sonde virtuelle à partir des valeur contenues dans V6 et V7.

Vous pouvez ensuite forcer l’exécution du scénario sur la Zibase pour tester et forcer l'alimentation de la sonde virtuelle (désolé pour l'exemple ma masse graisseuse n'a pas fonctionné car en chaussette :)). Vous devez voir cela dans le suivi d'activité :


Et sur l'interface de l'application android, votre poids s'affiche comme ceci :



Voilà, c'est terminé. Bons tests à vous et désolé pour cet article un peu long, mais je trouvais cette approche sympa pour "facilement" intégrer les données de la balance Withings dans la Zibase. 

Et vous, vous en pensez-quoi ? N'hésitez pas à laisser des commentaires et partager des trucs si vous optimisez cette solution.

Je vous laisse également imaginer les différents scénari possibles sur des seuils de déclenchement ou à l'ouverture du frigo...Vous n'aurez plus d'excuses pour ne pas avoir la taille mannequin pour cet été :)

Dans un prochain article, nous reviendrons sur les volets roulants via motorisation SOMFY RTS et les actions possibles avec la zibase (article disponible ici depuis le 15/02/2015)..