dimanche 3 mai 2020

Envoi de données de l'ESP32 / ESP8266 vers Google Sheets

Dans ce tutoriel, un ESP32 ou un ESP8266 va envoyer des données vers une feuille de calcul Google Sheets. De cette façon, les données pourront s'accumuler sans qu'on ait à  se préoccuper de l'espace mémoire nécessaire, et nous pourrons les consulter à partir de n'importe quel appareil branché à  internet.

J'ai constaté que la plupart des tutos disponibles sur le web préconisent l'utilisation d'un site web intermédiaire comme par exemple IFTTT ou Temboo, en prétextant que ça simplifie les choses, surtout en ce qui concerne l'établissement d'une connexion sécurisée.

J'admets que c'est un tout petit peu plus compliqué, mais j'ai préféré utiliser une méthode sans intermédiaire: notre microcontrôleur enverra une requête "GET" qui sera traitée par un "Google app script" lié à notre feuille Google Sheet. Étant totalement néophyte dans l'art d'écrire ce genre de script (basé sur le langage javascript), j'ai utilisé, comme point de départ, cet article du blog Electrosome.

Créer une feuille Google Sheets

J'imagine qu'il n'est pas nécessaire que j'insiste outre mesure sur la nécessité d'être détenteur d'un compte Google pour réussir ce tuto... Nous allons donc sur le site de Google Sheets afin de créer une nouvelle feuille de calcul.  Vous lui donnez le nom que vous voulez et vous pouvez, si vous le désirez, écrire le nom de chaque colonne sur la première ligne


Puisque certaines des données envoyées par l'ESP seront des nombres comportant un point décimal, je dois régler ma feuille pour qu'elle utilise le point plutôt que la virgule (menu Fichier, "Paramètres de la feuille de calcul").


Dans mon cas, j'ai remplacé le réglage par défaut "Canada (français)", basé sur la virgule, à "Canada (anglais)", basé sur le point. Bien entendu, ce réglage n'est pas nécessaire si votre ESP n'envoie que des nombres entiers.



Création d'un App Script

Nous allons maintenant créer le script qui gérera les messages émis par l'ESP:  menu Outils / Éditeur de scripts.

Vous donnez à votre projet le nom que vous voulez, et vous copiez le code situé ci-dessous.



Voici le script complet:

-
-

Ce script comporte deux fonctions:  doGet reçoit les requêtes GET émises par l'ESP et lui retourne un message pour indiquer que tout a bien fonctionné, et add_data ajoute dans la feuille de calcul les nouvelles données reçues à l'intérieur de la requête GET.

Attention: vous devez modifier l'URL de la feuille de calcul sur la première ligne de la fonction add_data: il faut y placer l'URL de la feuille de calcul que nous venons de créer.

De plus, pour l'affichage de la date et de l'heure, j'ai utilisé "America/Montreal". Si vous habitez en France, vous préférerez probablement remplacer ça par "Europe/Paris".

Déploiement du script en application web

Nous allons maintenant faire en sorte que ce script soit accessible à partir du web: il s'agit du menu Publier - Déployer en tant qu'application Web...


À la question "Who has access to the app", nous sélectionnons "Anyone, even anonymous".


À partir de là, Google panique un peu et vous demande de confirmer que vous accordez à ce script non-vérifié la permission de jouer dans vos fichiers.










Finalement, une dernière boîte de dialogue vous fournit l'URL de notre application web: il est important de la copier, car nous en aurons besoin dans le sketch de l'ESP32 / ESP8266.


Notez que chaque fois que vous apporterez une modification à votre script, il sera nécessaire de le "redéployer" en tant qu'application web, en prenant bien soin de régler "Project version" à "Nouveau". Sinon, c'est l'ancienne version non-modifiée qui continuera de s'exécuter.

Test du script

Si vous le désirez, vous pouvez immédiatement vérifier le fonctionnement correct de votre script directement dans le navigateur web en ajoutant 
"?func=addData&val1=10&val2=20" à la fin de l'URL de votre script.

Ça devrait avoir pour effet d'ajouter une ligne à votre feuille de calcul.



Programmation de l'ESP32 ou de l'ESP8266

Il ne nous reste plus qu'à programmer notre ESP32 ou notre ESP8266. Pour ce faire, nous utilisons l'IDE Arduino et vous pouvez, au besoin, vous référez des précédentes publications pour voir comment procéder: ESP32 ou ESP8266.

Puisque le présent tutoriel porte sur la communication avec Google Sheets et non sur l'utilisation d'un capteur en particulier, j'ai choisi de transmettre deux valeurs obtenues au moyen d'une équation mathématique. Bien entendu, dans une application réelle, il serait plus pertinent de transmettre une ou plusieurs valeurs mesurées au moyen de capteurs branchés à l'ESP (température, luminosité, etc.).  Ces valeurs sont calculées aux lignes 68 et 69, puis intégrées à l'URL de notre requête GET sous les noms de val1 et val2 (ligne 72).

Ici encore, vous devrez modifier certaines informations dans le sketch avant de pouvoir l'utiliser:

  • le nom et le mot de passe de votre réseau Wi-Fi (lignes 17 et 18)
  • l'URL de votre application web (ligne 72)
  • si vous utilisez un ESP8266: le fingerprint SHA1 de votre app script (ligne 24)

Pour récupérer ce fingerprint SHA1, allez sur la page de votre feuille de calcul ou de votre script avec un navigateur web, cliquez sur le cadenas à gauche de l'URL, et visionnez le certificat de sécurité de google.com. Copiez les octets correspondant au fingerprint SHA1 et copiez-le dans votre sketch.





---

---

Résultat

Pendant l'exécution du sketch, toutes les 10 secondes, une nouvelle ligne s'ajoute dans la feuille de calcul.


À lire aussi:

Pour consigner des événements qui ne se destinent pas à un traitement mathématique, vous préférerez peut-être écrire dans un document Google Docs avec l'ESP32 ou l'ESP8266. Vous serez peut-être intéressés à consulter la liste des projets impliquant l'ESP32 ou l'ESP8266.

Yves Pelletier (TwitterFacebook)

Aucun commentaire:

Publier un commentaire