Aller au contenu

Exercices Projet Station Météo

Station météo connectée#

Présentation#

Il s'agit de réaliser la partie Software d'une station météo composé de sondes et d'une centrale. Chaque sonde est relié à plusieurs capteurs qui donnent des informations diverses :

  • Température
  • Hygrométrie
  • Pression atmosphérique
  • Pluviométrie
  • Luminosité
  • Vitesse et direction du vent
  • Position GPS et heure
  • ...

Une centrale météo peut être abonnée à plusieurs sondes et présente les données de ces dernières.

sonde & centrale

Votre travail consiste à réaliser la partie logicielle des deux éléments, en utilisant exclusivement des technologies WEB (html/CSS/javascript/node.js).

Chaque groupe réalisera une sonde ET une centrale. Chaque centrale devra être capable de s'abonner à toutes les sondes. Vous devrez donc vous entendre entre groupe pour utiliser un échange de donnée et un protocole commun.

Travail à réaliser#

Sonde#

La sonde sera constituée d'un raspberry pi. Vous utiliserez l'image de base fournie (pré-installé) le login est : pi / raspberry

Accès ssh : Nous vous invitons à configurer l'accès avec une paire de clé ssh pour faciliter l'accès https://www.ssh.com/ssh/keygen/

Chaque sonde contient par défaut 2 services :

  • un service en Python qui récupère les données du capteur disponible sur le raspberry pi (senseHat) et les rends disponible sous /dev/shm/tph.log
  • un service (configurable) qui génère des données factices pour chacun des capteurs.
  • configuration fakeSonde : /home/pi/fakesonde/config.yml
  • fichiers data :
    • /dev/shm/rainCounter.log
    • /dev/shm/gpsNmea
    • /dev/shm/sensors (n'utilisez que les données qui ne sont pas disponibles dans le vrai capteur)

Git de fakeSonde: https://gitlab.com/cedricici/fakesonde

Vous devrez réaliser un (ou des) programme(s) (en node.js) qui lit ces données, les stockes (de la façon de votre choix, https://www.influxdata.com/ semble assez adapté non?) puis les expose au travers d'un service Web (port 80 ou 443).

Rappel : le format d'échange de ce service Web est à établir entre tous les groupes.

Ce service Web devra au minimum fournir les API suivantes :

  • Récupération de la dernière valeur d'une donnée d'un capteur ou de l'ensemble des capteurs.
  • Récupération d'un échantillon de données (un ou plusieurs capteurs) sur une période donnée

En bonus, Vous pourrez fournir un service d'abonnement "push" utilisant des Websocket afin que ce soit la sonde qui mette à jour les données des clients abonnés.

Vous pouvez vous inspirer du travail réalisé sur http://developers.pioupiou.fr/ , un anémomètre autonome et connecté.

Centrale#

La centrale sera elle aussi installée sur les raspberry pi mais vous devez considérer que votre centrale et votre sonde n'ont pas de lien privilégié parce qu'elle sont sur la même machine. Cette centrale, devra pouvoir récupérer (coté client donc) les données de toutes les sondes (interopérabilité). La centrale fourni un site Web de présentation des données récoltées sous formes de Dashboard configurables. L'utilisateur pourra donc choisir de visualiser les données qui l'intéresse sur une ou plusieurs sondes sur des durées définies. La centrale ne stocke pas de données mis à part peut être des configurations utilisateurs.

Cette centrale sera servie soit par un serveur Node (sur un autre port que la sonde) ou un autre programme. Une autre option sera de servire la centrale sur une route spécifique de l'api (http://piensg030/centrale/) par exemple.(Attention alors de n'avoir aucune interraction entre la sonde et la centrale)

Le éléments que nous souhaitons voir absolument:

  • Un Dashboard prédéfini présentant toutes les dernières données disponible pour une sonde (inspirez vous des centrales météo du commerce pour le design) :

  • L'historique sur 1semaine/1mois/1an des données d'une sonde

  • Un comparatif d'une donnée sur toutes les sondes (instantanée ou en mode graphique sur une durée définie)
  • Une cartographie représentant les sondes (Utilisez la configuration des générateurs factices pour changer la position approchée des sondes)

Des idées d'éléments intéressants:

  • Un système d'abonnement/désabonnement
  • Des max/min par périodes
  • Des icônes météo en fonctions des données hygrométrie/luminosité/Pression
  • ...

Votre application sera bien entendu responsive et accessible, utiliser Vue-cli nous semble un bon point de départ.

Bon travail.