IFTTT-2-API : Intégrer ses données Withings dans son système domotique Zibase5 minute(s) de lecture

La santé ou plutôt la e-santé est un secteur en plein essor en ce moment.  L’anglicisme qui correspond au fait de mesurer différents aspect de sa personne par des moyens électroniques pour en conserver une trace de ses relevés est le “quantified self”.Voici comment participer à cette mouvance en intégrant les données de votre balance ou bien de votre tensiomètre Withngs, afin de les communiquer à votre système domotique Zibase.

Le Quantified Self est un mouvement qui englobe à la fois les outils, les principes et les méthodes permettant à chaque personne de mesurer ses données personnelles, de les analyser et de les partager. Les outils du Quantified Self peuvent être des capteurs, des applications mobiles ou des applications Web.  Parmi les pionniers français du secteur on retrouve Withings avec ses offres de balances permettant la pesée mais également la mesure de la masse graisseuse ou via son tensiomètre connecté à Internet.

Afin de collecter ses données sur soi afin de les remonter dans un système domotique capable d’exécuter des scenarii en fonction de critères pré établis, la Zibase peut être d’une bonne aide.  Le lien entre les 2 système peut être réalisé en utilisant le service IFTTT.  Le lien entre IFTTT et la Zibase est alors assuré par le développement IFTTT-2-API que je vous ai proposé il y a quelques jours.  Si vous ne possédez pas de Zibase, IFTTT-2-API vous permet de communiquer ces données à tout système proposant des API sur Internet.  C’est le cas des box Eedomus ou Zipato par exemple.  Le tutoriel devra être adapté en conséquence.

Ah oui, dernière chose avant le tutoriel de mise en oeuvre. Si comme moi vous n’avez pas la chance d’être propriétaire de tels objets connectés, pas de soucis.  Il vous suffit de télécharger tout simplement l’application Withings sur votre smartphone préféré iOS ou Android et de l’utiliser comme écran de saisie.  Votre balance classique ou votre tensiomètre non communicant pourront tout de même être utilisés.  Cette application permet également de saisir à la main les données qui sont normalement collectés par les objets connectés de Withings. C’est toujours bon à savoir pour ne pas se priver de cette application sympathique et bien pensée.

Voici comment faire pour lier votre Zibase à vos données de santé mesurées ou bien récupérées via les services de Withings:

  • s’enregistrer sur IFTTT (si ce n’est pas déjà fait)
  • mettre en œuvre IFTTT-2-API (si ce n’est pas déjà fait)
  • s’enregistrer sur Withings (si ce n’est pas déjà fait).  Cela peut se faire très simplement via l’application pour smartphone iOS ou Android que vous avez téléchargé et installé.
  • sur la Zibase créer une sonde de température THx128 et affectez-lui l’identifiant radio du style OSxxxxx.  J’ai opté pour OS6000. Sauvegarder.

 

  • sur IFTTT créer le lien vers le “Channel” Withings.  Une autorisation explicite vers ce service vous sera demandé.
  • sur IFTTT créer la règle suivante:

 

Le champ « Formatted Row » contiendra la formule suivante:

Zibase|||6|||6000 |||=({{WeightKg}}*10)|||17
Enregistrer votre règle et s’en est terminé pour la mise en place.

Lorsque la pesée ou le relevé de votre tension est faite en utilisant les service de Withings, la donnée arrivera dans la feuille de calcul IFTTT-2-API et elle sera communiquée à votre Zibase!

Une petite explication de la ZAPI (API Zibase) est nécessaire pour comprendre la formule si cela vous intéresse. Les ||| permettent de séparer les données pour qu’elles soient communiquées dans des cellules séparées d’une même ligne par IFTTT à la feuille de calcul IFTTT-2-API sur Google Drive.  Voici à quoi correspondent les données:

  • Zibase : nom du serveur vers qui IFTTT-2-API doit communiquer la donnée
  • 6 : indique qu’il s’agit d’une “Commande VIRTUAL_PROBE_EVENT”.  Elle permet à IFTTT-2-API d’envoyer dans la ZiBASE une information de sonde virtuelle comme si celle-ci était reçue sur la RF. Voire la documentation de la ZAPI si vous être plus curieux.
  • 6000 : identifiant de la sonde virtuelle créée dans la Zibase. Il s’agit des “xxxxxx” de l’identifiant “OSxxxxxx” donnée par vos soins à la sonde.
  • =({{WeightKg}}*10) : permet d’indiquer à IFTTT-2-API que le poids en kg doit être multiplié par 10 avant d’être communiqué à la Zibase qui s’attend à recevoir une donnée avec une décimale mais sans séparateur.  C’est un autre exemple d’utilisation de fonction pour gérer vos données dans IFTTT-2-API.
  • 17 : Permet d’indiquer à la Zibase que l’on donne une donnée à une sonde de type Scientific Oregon (OS)

Maintenant vous avez les outils pour déclencher une alarme lorsque le réfrigérateur est ouvert alors que vous n’avez toujours pas perdu un gramme…

Plus sérieusement cette solution pourra trouver son intérêt dans le cadre d’un régime nécessitant une pesée régulière. C’est tout de même moins contraignant que de devoir annoter manuellement une feuille de suivi.  La surveillance des personnes âgées ou malades pourraient être intéressées par ce système. La pesée régulière effectuée à leur domicile peut être communiquée par ce biais à un proche qui en fonction des fluctuations inquiétantes pourrait en informer le médecin traitant.  Les oublis de pesées peuvent également être détectées.

22 Comments

  1. Cédric said:

    Excellent ! Je n’ai plus qu’à adapter ca pour mon eedomus, ca me fera un script php de moins 😀

    29 mai 2013
    Reply
  2. David said:

    Ouahhhhh trop fort, c’est exactement ce que je cherchais … MERCI BEAUCOUP BEAUCOUP …
    Par contre est il possible de m’indiquer la syntaxe à rentrer dans le champs « Formatted Row » SVP ???

    Merci

    29 mai 2013
    Reply
    • David said:

      oups j’ai oublié de préciser que c’est pour un parametrage sur EEDOMUS …

      29 mai 2013
      Reply
  3. Avatar photo Hervé said:

    Je t’en prie!

    Il te suffit de créer dans Eedomus un état virtuel ayant comme type de données un “Nombre décimal” puis de relever son “code API”. Admettons que l’on ait la valeur 34178.

    La syntaxe pour “formatted row” sera alors:
    Eedomus|||periph.value|||34178|||{{WeightKg}}

    Bons relevés!

    29 mai 2013
    Reply
    • David said:

      Merci ça fonctionne.
      Par contre j’ai un souci car dans le fichier excel, j’obtiens 2 lignes : 1 ligne avec mon poids et la seconde (qui est le dernière) avec un -.
      Du coup mon capteur eedomus prend la valeur du –

      Avez vous une idée ?

      29 mai 2013
      Reply
      • Avatar photo Hervé said:

        C’est plutôt original. Es-tu sûr de ne pas avoir 2 règles dans IFTTT qui seraient déclenchées lorsque le poids arrive?

        29 mai 2013
        Reply
        • David said:

          Non je n’ai qu’une règle.
          Par contre j’ai 3 personnes enregistres sur la balance (WS50).

          29 mai 2013
          Reply
          • Avatar photo Hervé said:

            Ça peut être une bonne piste. Dans mon cas je n’ai qu’une seule personne. Quand dans IFTTT tu va comme pour modifier ta règle tu as la possibilité de visualiser les log de la règle: “View activity”. Que disent ces traces? Lorsque IFTTT tourne combien de relevés sont communiqués à Google Drive?

            30 mai 2013
  4. Cédric said:

    Je viens de le mettre en place chez moi, plus qu’à aller me peser ce soir pour vérifier :p
    Mais je risque d’avoir le même problème que David, j’ai 4 personnes qui s’en servent. Et vu qu’à aucun moment on ne demande quelle personne est concernée pour la mesure qu’on veut récupérer, forcément au mieux tout risque de tomber sur le même état 🙁

    30 mai 2013
    Reply
    • Avatar photo Hervé said:

      Il n’y avait pas de mémoire lorsque dans IFTTT on lie son compte IFTTT avec son compte Withings un menu déroulant permettant de sélectionner l’utilisateur Withings souhaité?

      30 mai 2013
      Reply
    • Avatar photo Hervé said:

      Je viens de rajouter un utilisateur sur mon compte. Il y en a 2 maintenant. J’ai saisi une mesure et l’ai récupéré uniquement la mienne dans la Zibase. Je n’ai pas été “pollué” par le deuxième compte. J’ai fait une mesure pour le 2ème compte et rien ne s’est passé. Tout semble OK. Pour info on peut voir quel est l’utilisateur lié à IFTTT si l’on va dans IFTTT sur le Channel Withings puis “Edit Channel”.

      30 mai 2013
      Reply
  5. David said:

    Bonjour,

    Herve pour te répondre :
    1. IFTTT m’envoi bien 2 requetes pour une seule pesée mais des fois il ne m’en envoi qu’une !!
    2. Google drive reçoit donc bien 2 lignes (ou 1 lorsque je n’ai qu’un envoi d’IFTTT). La 1ere est ma valeure et la 2eme (dernière ligne) est un “-“.
    3. Lorsqu’on crée notre channel, on a bien une liste déroulante permettant de choisir la personne.

    Ne peut on pas obliger google à ne prendre qu’une ligne ?

    30 mai 2013
    Reply
    • Avatar photo Hervé said:

      La manière la plus simple c’est d’utiliser pour le champ formatted row la formule suivante:

      =if({{WeightKg}}="-";"";"Eedomus")|||periph.value|||34178|||{{WeightKg}}

      En faisant cela, on dit alors à Google Spreadsheet de comparer le poids reçu. S’il est égal à “-” alors il remplacera le nom du serveur par “”. Comme il n’y a pas de nom de serveur l’enregistrement partira à la poubelle c’est à dire dans l’onglet “DataErr”. Pas de soucis non plus de voir s’empiler les erreurs dans cet onglet. Il ne garde qui les 100 dernières erreurs. 😉

      30 mai 2013
      Reply
  6. David said:

    Bonjour Hervé,

    Je n’ai qu’une chose à dire : T’ES UN GENIE !!!
    Ça marche exactement comme tu le dis et ça à réglé mon problème.
    Je te remercie beaucoup pour ton aide et ta réactivité en plus.
    Ça me tarde de lire tes prochains articles comme d’habitude.

    MERCI

    30 mai 2013
    Reply
    • Avatar photo Hervé said:

      🙂
      Je suis content que l’on ait trouvé un contournement pour ce doublon envoyé par IFTTT aussi bizarre soit-il.
      Profites-en bien!

      30 mai 2013
      Reply
  7. David said:

    J’ai juste une petite question : Entre le temps ou je me pèse et ou je reçois l’info dans eedomus, il se passe environ 20-30 mn. Est ce normal ?

    30 mai 2013
    Reply
    • Avatar photo Hervé said:

      Si tu as ordonnancé IFTTT-2-API comme dans le billet de mise en place tu l’as programmé pour qu’il soit exécuté toutes les 10 minutes. Tu peux modifier et réduire ce délai. IFTTT de son côté vérifie les données de Withings toutes les 15 minutes.

      31 mai 2013
      Reply
  8. David said:

    J’ai cherché mais je ne vois pas ou réduire le délai d’exécution.
    Peux tu m’éclairer STP ?
    J’ai une autre question : Comment puis je faire pour avoir le poids de mes 2 autres personnes enregistrées sur withings ? Parce que on peut choisir dans la liste lors de la création du channel mais ensuite cette personne devient la personne par défaut.

    Merci

    31 mai 2013
    Reply
    • Avatar photo Hervé said:

      Si tu reprends l’article de mise en oeuvre de IFTTT-2-API au chapitre “Ordonnancement de l’exécution de IFTTT-2-API” tu peux réduire la fréquence à 1 minute si tu veux.

      Si tu souhaites récupérer les mesures faites pour d’autres personnes il faut leur ouvrir des comptes IFTTT à chacun pour effectuer le branchement avec Withings. Par contre tu pourras utiliser la même feuille de calcul IFTTT-2-API.

      2 juin 2013
      Reply
  9. David said:

    Merci pour ta réponse …
    J’ai relu ton article mais je suis passé à coté comme un imbécile ! Désolé.

    Pour les autres personnes tu confirmes ce que je pensais.

    Merci beaucoup de ton aide.

    3 juin 2013
    Reply
  10. Kulg said:

    Bon en fait c’était l’ID de la sonde qui passait pas 60000 ne marche pas, j’ai mis 99990 et c’est bon.

    27 avril 2014
    Reply

Laisser un commentaire

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

Prouvez que vous êtes humain: * Time limit is exhausted. Please reload CAPTCHA.