Arduino / ESP8266 / aREST comment récupérer des données météo – automatiser un observatoire.

Arduino / ESP8266 / aREST comment récupérer des données météo – automatiser un observatoire.

  • Présentation

Après plusieurs phases de prototypage et développement, je suis arrivé à la conclusion que les données météo doivent être lues depuis les sondes et transmises dans un format intelligible vers le µP. Le JSON a été le candidat choisi pour cette tâche : les données étant utilisables dans de nombreux langages de développement.

Un serveur domotique ou personnel (Pi, Tinker, …) est capable de centraliser tout cela et de fournir des données et affichages graphiques en temps réel.
 Php, Python, VB,  #C etc …  tous ces langages disposent de librairies facilitant l’intégration des données JSON. Cette phase d’intégration et de développement est à votre appréciation. Je ne traiterai pas ici des nombreux choix qui sont offerts. 

Prenons l’exemple de mon anémomètre en WIFI 
Ce dernier est sur un mat sur site d’observation et mesure la vitesse instantanée et moyenne du vent puis les transmet sur le réseau interne (moyenne, Vinst , Vmax et un critère Safe ou Unsafe). Il joue le rôle d’une sentinelle pour préserver le toit roulant de l’observatoire lorsque les observations ont lieu.

N.B : on ne fait pas de statistiques météo mais plus de la surveillance. Les données transitent chaque minute vers un Raspberry Pi 3  qui traite l’information de façon centralisée.

  • Matériel

La carte de gestion et traitement est un ESP8266 Node MCU v3, elle intègre toutes les fonctionnalités d’un arduino UNO/nano et une carte WIFI un véritable luxe a 7$. Elle est donc à même d’héberger des pages web minimalistes et de transmettre les données vers un serveur par son canal WIFI.

Attention le vin de ma carte avait une plage de tension de 5-9V : bien consulter la fiche technique si vous souhaitez alimenter la carte par les broches vin/gnd et non pas par le micro-USB. La mise en place d’une petite alimentation régulée annexe est peu dispendieuse et fort pratique.

J’ai utilisé un anémomètre analogique 0.4-2V ,  le fil data est connecté sur une entrée analogique de la carte. Il s’alimente entre 5 et 12v.
 

  • Les grandes lignes du programme

L’ESP se programme comme un arduino sous le même environnement IDE fourni par le site officiel.
Il faut bien sûr importer dans l’IDE les plugins de gestion pour l’ESP selon votre modèle.

Nous importerons aussi la librairie aRest de Marco Schwartz qui nous permettra de générer une classe Rest() se comportant comme une API spécifique émettant un flux de données joignable et interrogeable de tout point distant. L’on peut alors à partir d’un navigateur interroger la plateforme comme suit :
http://192.168.X.X/<fonction/paramètre> et récupérer les données exposées par la carte. On peut aussi créer des fonctions personnalisées avec une grande souplesse d’utilisation.

Je vous invite à consulter le livre de l’auteur pour des exemples pratiques ainsi que le lien github

Le flux JSON étant récupérable en .NET par des librairies à présent très performante dans les langages classiques, l’intégration au protocole ASCOM est facilitée. Le développement d’application web en php est possible aussi (les librairies json intégrées depuis la v5.2). 

Le fil DATA de l’anémomètre renvoie une tension sur la broche Analog (A0) ce dernier permettant l’échantillonnage sur 1024 points (de 0 à 1023). Le 0v vent nul, 2v environ 200 km.h (données constructeur).
L’ESP gère un petit algo de traitement des mesures en générant une moyenne glissante et la valeur maximale de 10 pointés (rafales). 

Ci dessous un exemple de codage des données en Json regroupant le cloudsensor et l’anémomètre.

{"date":"2019-10-01 13:09:54","ambient":14.85,"object":12.83,"status":"Unsafe","cover":"100","wind":"calme"}

Qu’en est il des plantages que nous pourrions rencontrer ? C’est là que nous utiliserons le watchdog, dans la boucle principale qui sera à même de contrôler si le code s’exécute, le cas contraire il reboot la carte. Attention ce n’est pas un watchdog qui teste le réseau, uniquement le fonctionnement de la carte.

Je déconseille vivement d’utiliser une liaison wifi directe avec un Raspberry Pi 3 en terme de stabilité. 

Dernier point concernant la consommation d’énergie : la carte NODEMCU est capable de se mettre en sommeil (sleep mode) et de se réveiller (wake up)  sur requête distante.  Cette fonction est très utile si vous alimentez votre carte sur batterie et en solaire. Elle dispose de  3 modes « sleep » en fonction de votre utilisation.

A vous de jouer 🙂

  • Liens

Moyenne pour lissage des données  
Average utilisation de la librairie Average

 


adminfolio