Bonjour à tous, c’est Mathieu. Aujourd’hui, nous allons laisser le clavier à Billou02, qui voulait faire la suite de son dernier article, il va donc nous expliquer comment exporter les données d’un virtuel dans une feuille Google Sheet. Pour cela, nous utiliserons le plugin IFTTT.

Exporter les données d’un virtuel dans une feuille Google Sheet : posons les bases

Tout d’abord, il nous faudra quelques prérequis. Dans un premier temps, avoir un compte Google (ça existe encore les gens qui n’en ont pas ?), un compte IFTTT (sur le même compte Google), et un virtuel du type de mon dernier article.

Alors Google Sheet, c’est un Excel à la sauce Google, mais dans le cloud. Ce dernier est associé a votre compte Google. Je ne détaillerai pas ici la procédure pour en obtenir un, on partira du principe que vous avez un compte Google actif (créer un email Gmail suffit) et que vous êtes connectés dessus.

IFTTT (If This Then That) est une application qui permet d’automatiser beaucoup de choses entres elles. Pour ne pas réinventer la roue, je vais vous renvoyer plutôt vers l’article du site Devotics qui traite de ce sujet sur le site Devotics. https://devotics.fr/automatiser-des-taches/

Exporter les données d’un virtuel : configuration du plugin Jeedom IFTTT

D’abord, pour la configuration du plugin IFTTT dans Jeedom, n’oubliez pas de renseigner votre clé API dans la config du plugin.

Cette clé (comme inscrit dans la doc) est située dans le site de IFTTT / My Applets / Services / Webhooks / Settings ou ici

Il faut copier toute la partie située après le https://maker.ifttt.com/use/ et la coller dans la case du plugin Jeedom.

Exporter les données d'un virtuel

Exporter les données d’un virtuel : MAIS COMMENT CA VA FONCTIONNER ?

Notre but va être le suivant : sauvegarder via un scénario simple, le relevé de la consommation électrique par jour et exporter ces données dans un fichier Google Sheet (afin d’en exploiter les données en dehors de Jeedom)

Exporter les données d'un virtuel

ALLEZ ON SE RETROUSSE LES MANCHES !

En premier lieu, nous allons préparer notre feuille de calcul pour pouvoir y déposer les données. Pour plus de clarté, je range l’intégralité de mes feuilles provenant de Jeedom dans le dossier Jeedom (oui, pas très inventif sur l’affaire). Donc rendez vous dans la base du Google Drive : https://drive.google.com/drive/my-drive

On clique sur Nouveau puis Dossier que l’on nomme Jeedom.

Ensuite, l’adresse pour accéder a Google Sheet est la suivante : https://docs.google.com/spreadsheets

Voici de que l’on obtient en ouvrant… Rien de bien palpitant 🙂

Exporter les données d'un virtuel

On va cliquer sur le bouton +.  Une nouvelle feuille s’ouvre, on la renomme (Fichier / Renommer ou clic deux fois sur “Feuille de calcul sans titre”). On l’appellera “Conso_Electrique”. Ensuite, Fichiers / Déplacer vers / Jeedom / Déplacer. Dans la feuille de calcul, pour plus de clarté, on peut renseigner la première ligne avec les noms suivants : Date / Event / Jour / Semaine / Mois

Notre fichier est créé, formaté, et mis au bon endroit. C’est tout pour la partie Google.

Exporter les données d’un virtuel : la partie IFTTT

C’est parti pour la config sur le site IFTTT. Le site fonctionne sur le principe d’Applets. Une Applet c’est une association d’un Trigger (THIS) et d’une action (THAT). En gros,  s’il se passe ceci, alors on fait cela. Si vous avez des scénarios dans Jeedom, vous devriez commencer à connaitre un peu.

Alors, allons y : My Applets / onglet Applets / bouton New Applet. A partir de la, nous allons déterminer un Trigger.

Ici, dans notre cas, comme vu précédemment, nous allons utiliser le trigger Webhooks (anciennement Maker). En effet, c’est grâce à celui la que nous ferons la liaison Jeedom => IFTTT

Ensuite, on clique sur Webhooks et Received a web request.

Puis, on lui donne un nom (on en aura besoin dans Jeedom) : « Sauve_Conso » puis, Create Trigger.

A partir de là, notre condition (THIS) est crée, on va passer à la suite (THAT).

On clique donc sur THAT et on tapes dans la barre de recherche : sheet (pour Google Sheet).

Ici, vous disposez de deux choix : soit rajouter une ligne dans une feuille de calcul (Add row to spreadsheet) ou bien mettre à jour une cellule dans une feuille de calcul (Update cell in spreadsheet). On prend la première.

Exporter les données d'un virtuel

Vous suivez toujours ?

Alors, dans Spreadsheet name (nom de la feuille de calcul), on met Conso_Electrique.

Ensuite, dans Formated Row (sous quelle forme sont envoyées les données) : on laisse les valeurs par défaut. Notez ici que les données possibles sont les suivantes :

  • Occured AT = Date et heure a laquelle la ligne a été créée
  • EventName = Nom de la commande qui a créé la ligne
  • Value 1 – 2 – 3 = Données envoyées

Enfin, dans Drive Folder Path (chemin du dossier contenant la feuille) : Jeedom/

A noter trois choses :
  • On ne peux envoyer qu’un maximum de 3 valeurs d’un coup
  • On change de colonne avec 3 barres verticales (ALT GR + 6 sur PC) : |||
  • Le texte est modifiable a volonté dans cette case

Pour terminer cette partie, on clique sur le bouton Create Trigger.

Dans la dernière page de config, on peut ou non recevoir une notif sur le smartphone dans le cas ou se déclenche le trigger, on termine par le bouton Finish.

C’est fini pour IFTTT.

Exporter les données d’un virtuel : l’automatisation de l’export

Il ne reste plus qu’à automatiser cela, car comme le dit le proverbe bien connu :

« Si c’est pas automatique, c’est inutile. »

 

J’ai créé un scénario programmé à 23h59 tous les soirs, avec comme actions plusieurs choses.
Un bloc de code qui permets de transformer la valeur avant envoi et la notion d’envoi via IFTTT (on verra cela ensuite).

Pourquoi transformer la valeur avant envoi ?

C’est simple. Pour Jeedom, la décimale s’écrit avec un point. En France, la décimale est une virgule. Si vous voulez pouvoir faire des opérations facilement dans votre feuille de calcul ultérieurement, il est nécessaire que les valeurs soient au bon format.

Comme je suis un bon élève, j’ai donc parcouru le blog du Doc, et je suis tombé la dessus :
http://sarakha63-domotique.fr/synchroniser-son-reveil-avec-jeedom-et-tasker/

En effet, on y trouve une ligne intéressante vers la fin de l’article :

time_op(str_replace(‘:’,”,#[Chambre Parentale][Réveil Ludo][Heure]#),-20)
La fonction time_op permet d’enlever 20 minutes à l’heure de réveil
Une autre fonction str_replace permet de remplacer les : par rien pour que 8:30 devienne 830

Alors, la fonction str_replace() aurait pu fonctionner… Mais ce con de Jeedom (enfin son interpréteur) en a décidé autrement. Cette fonction fonctionne pour tout SAUF…… pour la virgule…..

Donc, on va le faire dans un bloc CODE (merci @Toregreb pour ce dernier)

/* Conversion #[Appartement][Historique conso][Aujourdhui]# */
/* Lecture de la variable */
$aconvertiraujourdhui=’#[Appartement][Historique conso][Aujourdhui]#’;
$cmd = cmd::byString($aconvertiraujourdhui);
$valeurUS=$cmd->execCmd();
/* Conversion */
$valeurFR=number_format($valeurUS, 1 , ‘,’ , ‘ ‘);
$scenario->setLog(‘Conversion : ‘.$valeurUS.’—>’.$valeurFR);
/* Ecrire dans une variable */
$scenario->setData(“AujourdhuiFR”,$valeurFR);

En gros, ce bloc convertit la valeur (nombre décimal) en chaîne de caractères, retire le point et le remplace par la virgule et stocke le tout dans une variable (en l’occurrence : AujourdhuiFR)

Faire ce bloc de code à chaque valeur à transférer en prenant soin de changer $aconvertiraujourdhui par $aconvertirautrechose et AujourdhuiFR par autrechoseFR

Maintenant que la variable est au bon format, il faut déclencher la tache Sauve_Conso. Si comme moi vous avez plusieurs taches à sauvegarder sur des feuilles Google Sheet, pensez à mettre une petite pause de une ou deux secondes entre chaque commande, pour être sur que IFTTT digère bien toutes vos demandes.

Exporter les données d'un virtuel

 

Exporter les données d’un virtuel : the Jeedom comes back

Allez, finis les blagues, on revient du côté de Jeedom. Tout se passe dans la configuration du plugin.

Nous allons ajouter une nouvelle commande. Nous l’appellerons « Sauve_Conso » et elle sera du type ACTION / MESSAGE.

Important : dans la case Evènement, renseigner (en respectant la casse) le nom que nous lui avons donné sur le site IFTTT (dans notre cas « Sauve_Conso ») et sur la ligne tu expliques que tu envoie les valeurs contenues dans les variables. Enfin, dans la case valeur, on renseigne les valeurs a envoyer (les variables AujourdhuiFR, etc…)

Sauvegardez. Et c’est ok

Exporter les données d'un virtuel

En appuyant sur le bouton Tester, sous quelques secondes, votre feuille de calcul va se remplir avec les données envoyées. Cette méthode fonctionne pour tout ce que vous voulez comme valeur.

 

Exporter les données d’un virtuel : conclusion

Cet article un peu technique est désormais terminé, il n’est pas facilement digérable du premier coup (relisez le plusieurs fois, on vous interroge après) mais il ouvre pas mal de possibilités. Si vous avez des questions, n’hésitez pas à revenir vers nous dans les commentaires. Billou02, que nous remercions pour cet article, se fera un grand plaisir de vous répondre.



Partager sur :

Infos de l'auteur

Je m'appelle Mathieu, j'ai 35 ans, et je vis à Limoges. Je suis prof d'EPS, et passionné de domotique. Amateur de DIY et de bricolage, j'aime aussi la cuisine, le bon vin.

19 commentaires

  1. TaG - Pierre-Yves le

    Hello,
    Merci Billou02 pppo cet article
    C’est très interrintér et prouve une nouvelle fois, s’il en était necessnéce, que jeedom est vraiment un couteau suisse

    Merci

  2. Erreur execution de la commande [Aucun][Sauve_Conso][Sauve_Conso] : Echec de la requête http : https://maker.ifttt.com/trigger/Sauve_Conso/with/key/MaCLef……………1Ul6hamyt?value1=14.53 Curl error : Resolving timed out after 5515 milliseconds

    Bonjour j ai le message ci dessus lorsque je test l envoie vers Ιfttt dans jeedom
    lorsque je tape : https://maker.ifttt.com/trigger/Sauve_Conso/with/key/MaCLef……………1Ul6hamyt?value1=14.53

    dans mon navigateur ça passe… quelqu un a une idée du probleme
    Merci

    • Alex Louis, je te conseille de venir sur le canal Entraide de Telegram. ce sera plus simple pour essayer de diagnostiquer ton soucis. N’hésite pas a me contacter dessus.

  3. Pingback: Notre Veille : Exporter les données d'un virtuel dans une feuille Google Sheet -

  4. Excellent…un tuto original et interessant
    Les données sont bien importées bien sur google sheet, mais sont toutes “” entre guillemet

    • Je me réponds, car j’ai trouvé.

      Attention au copier /coller
      /* Conversion #[Appartement][Historique conso][Aujourdhui]# */
      /* Lecture de la variable */
      $aconvertiraujourdhui=’#[Appartement][Historique conso][Aujourdhui]#’;
      $cmd = cmd::byString($aconvertiraujourdhui);
      $valeurUS=$cmd->execCmd();
      /* Conversion */
      $valeurFR=number_format($valeurUS, 1 , ‘,’ , ‘ ‘);
      $scenario->setLog(‘Conversion : ‘.$valeurUS.’—>’.$valeurFR);
      /* Ecrire dans une variable */
      $scenario->setData(“AujourdhuiFR”,$valeurFR);

      les ‘ sont modifiés à la copie

  5. Bonjour Mathieu,

    je suis toujours avec mon probleme de:Echec de la requête http :

    Resolving timed out after 5515 milliseconds lorsque le fait un test sous Jeedom

    auriez vous une idée ou je doit agir pour résoudre cela.

    Merci

  6. Alex Louis, je te conseille de venir sur le canal Entraide de Telegram. ce sera plus simple pour essayer de diagnostiquer ton soucis. N’hésite pas a me contacter dessus.

  7. Pingback: Bilan de la Semaine 15 et vacances - La Domotique de Sarakha63

  8. Purée mais dès que j’écris ce que je n’arrive pas a faire avec ifttt et l’export de données vers googlesheets(le message est assez long) le message ne passe pas et ca m’écrit token de sécurité invalide… Pourtant j’ai vraiment besoin d’aide…snifff

  9. Salut tout le monde,
    J ai l impression qu il n y a pas ame qui vive sur ce forum mais je tente a nouveau de jeter une bouteille a la mer au cas ou quelqu un pourrait m aider …
    Merci d avance

  10. Ouff… un premier contact… je reprend espoir… j avais bien entendu parler du channel d entraide telegram mais ça se trouve ou ? C est une appli a installer … en tout cas merci d avoir repondu

Laisser un commentaire