PM2M-2017-MachineSport/Suivi

Le but est de mettre en place une chaîne d'analyse utilisant comme point d'entrée la fonctionnalité NFC d'un smartphone et d'arriver à une analyse via Grafana.

Objectifs
Les objectifs du projet sont de nous faire découvrir le monde de l'IoT. De plus, nous avons du travailler sur une carte Nucleo STM32. Et réaliser la mise en place de Docker et de différents container afin de contenir nos différents modules d'analyse.

Description
Disposant d'un module NFC adaptable sur une carte Nucleo STM32, nous souhaitons réaliser une application permettant de faire un suivi de notre activité physique dans une salle de sport.

Pour cela, il faut suposer qu'un support NFC est présent dans chaque machine de sport de la salle. Lorsqu'un utilisateur arrive et commence son entraînement, il dispose son smartphone sur le socle NFC. Ce socle lit toutes les 10 secondes le tag NFC et envoie une requête en UDP à NodeRed. NodeRed réalise ainsi la transformation du message envoyé par la machine pour le rendre utilisable dans InfluxDB.

Ainsi, à chaque requête un nouveau point est créer dans la base InfluxDB, qui pour un temps donné nous informe de la présence d'une personne où non pour une machine donnée. Par ailleurs, Grafana nous permet de visualiser les utilisations et temps d'utilisation d'une machine.

Matériel
Voici le matériel utilisé pour le module embarqué.

Lorsque c'est 3 éléments sont connectés/assemblés, cela permet de chargé un programme dans la carte qui utilisera les technologies NFC et Wifi.

Le but étant de réaliser un socle sur lequel le smartphone sera posé. Ce socle permet d'obtenir les données utilisateur lorsque celui-ci est présent.

La chaîne d'analyse
Tout d'abord, pour créer et mettre en place notre chaîne d'analyse, nous avons eu besoin d'installer Docker.

Puis nous avons du créer 3 containers : - NodeRed - InfluxDb - Grafana

NodeRed permet de faire le lien entre les requêtes UDP,TCP... entrantes et le serveur influxDB. Il s'occupe de réaliser le parsing du message envoyé par une machine et de le rendre utilisable par InfluxDB.

Ainsi, InfluxDB reçoit une requête qu'il peut transformer en requête adapter à sa base de données. C'est-à-dire, qu'il crée une entrée dans sa base avec le timestamp en temps réel.

Chaque point ainsi obtenu peut être afficher via Grafana afin d'obtenir des courbes permettant une analyse visuelle du flux.

En conclusion, NodeRed est notre porte d'entrée des données qui sont stockées par InfluxDB et affichées via Grafana.

Evolutions possibles
Ce projet est le résultat d'un prototypage d'une idée d'application plus vaste.

En effet, l'idée serait de développer une application pour les sportifs, qui permettrait d'avoir l'historique de leurs efforts et types d'exercices/séances.

Et du côté salle de sport, cela permettrait de monitorer l'affluence dans la salle, prédire les différents profils de clients, savoir qu'elle machine nécessite un entretien... Mais on pourrait aller encore plus loin en prédisant la consommation électrique de la salle en fonction des personnes et des utilisations des machines.

Monitorer
Pour les sportifs :
 * Temps de l'activité physique
 * Les différents ateliers et les temps
 * Les programmes d'entraînement réalisés et envisagés

Pour la salle de sport :
 * L'affluence
 * Les machines utilisées
 * Les profils d'utilisateurs
 * Les types d'entraînement
 * La consommation électrique, ...

Prédire

 * Le nombre d'employés nécessaire en fonction de l'affluence
 * Le taux d'utilisation et la disponibilités
 * Les machines à ajouter, ...
 * La consommation électrique, ...

Liens
MBed https://www.mbed.com/en/

Docker https://www.docker.com/

NodeRed https://nodered.org/

InfluxDB https://docs.influxdata.com/influxdb/v1.2/introduction/

Grafana https://grafana.com/