PM2M-2016-LoRaMote/Suivi
LoRaMote Wyres
Etudiants M2PGI PM2M: Erwan CROZE - Alexandre SAHUC
Dépôt Git : github
Documents : Rapport - Transparents - Flyer - Video
Contexte
Ce projet est réalisé dans le cadre de l'UE M2M du Master 2 P GI.
Objectif du projet
Le but (initial) du projet est de faire comminquer deux motes Wyres entres elles
Matériel utilisé
- Motes Wyres
- Gateway(carte SX1301 IMST iC880A)
- AWS EC2
Technologies utilisées (initialement)
Technologies utilisées
- LoRa
- TheThingNetwork : un serveur clé en main pour la gestion des paquets LoRa envoyés via UDP.
- utilise RabbitMQ
- utilise MongoDB
- Les modules permettant la réception des paquets LoRa (croft) et leur stockage en base (jolie) sont écrits en Go.
- La partie visualisation des data est écrit en Javascript, avec un back-end utilisant NodeJS.
- Les programmes client permettant de récupérer des données des PC et de les envoyer sur la gateway sont écrits en C.
Plan de développement
Mise en place de la gateway
- Installation du packet_forwarder pour la carte IMST iC880A sur le RPI
Mise en place de l'infrastructure
- Création d'un compte sur AWS EC2
- Déployer TheThingsNetwork sur une instance t2.micro gratuite
- Visualiser les métriques radio avec Grafana
Traitement des données
- Décoder le payload des messages envoyés par les motes Wyres avec un flow Node-RED
- Visualiser les données des motes Wyres avec Grafana
- Décoder le payload des messages envoyés par les LoRaMotes Semtech avec un flow Node-RED
- Visualiser les données des LoRaMotes Semtech avec Grafana et les positions avec Kibana
Expérimentations et Résultats
- 8/03 : Nous recevons les Motes et une documentation fournie par M. Donsez. Notre première tâche sera donc de communiquer via le port USB/série afin de pouvoir envoyer des commandes aux Motes.
- 15/03 : La machine Amazon a été démarrée dans la semaine et nous avons installé dessus NodeJS, InfluxDB et Grafana, la base (a priori) nécessaire pour le traitement des paquets LoRa coté serveur. Du coté des Motes, nous essayons tant bien que mal de communiquer avec le port série et le développement d'un logiciel nous simplifiant la tâche est en cours. Nous décidons aussi que le but du projet sera de remonter les données des capteurs internes des Motes au serveur Amazon. Le schéma sera le suivant : L'une des Motes envoie ses données à l'autre en pair à pair. Cette dernière, reliée à internet (au moyen d'un partage de connexion si nécessaire) enverra ces données sur le serveur Amazon où l'utilisateur pourra les visualiser.
- 22/03 : Après un petit échange avec M. Boulet dans la semaine, nous apprenons que les motes ne peuvent pas communiquer en pair à pair. Il nous faudra donc une gateway afin d'établir un réseau LoRa. Nous en informons M. Donsez qui nous donne la gateway en fin de séance. Du côté Motes, le programme (serialcom) permettant d'envoyer des commandes au motes est terminé.
- 29/03 : Durant la semaine, nous avons intallé le packet forwarder sur la raspberry. Sur la machine Amazon, nous installons TheThingsNetwork. Nous décidons de modifier légèrement le projet pour pouvoir utiliser une version locale de croft et jolie que l'on pourra donc modifier. Par ailleurs, un coup de fil de M. Boulet nous apprend qu'il n'est pas possible de remonter les données des capteurs internes des Motes. Qu'à cela ne tienne, nous décidons donc d'utiliser les motes pour remonter des données de nos propres ordinateurs. Un nouveau problème se présente : TheThingsNetwork utilise MongoDB et non InfluxDB. Or, MongoDB n'est pas supporté par Grafana, initialement prévu pour visualiser les données en base. Il nous faudra donc trouver un autre outil pour visualiser ces données.
En fin de séance, les Motes communiquent avec la gateway ! Cette dernière envoie même les paquets sur la machine Amazon mais elles sont chiffrées. Nous allons donc devoir résoudre 3 problèmes :
- Il n'existe pas de véritable outil pour visualiser des données stockées dans MongoDB.
- Trouver un moyen pour récupérer les données de nos ordinateurs et les envoyés sur la gateway via les Motes.
- Déchiffrer les données des paquets.
- 5/04 :
La partie visualisation du serveur est terminée. Nous nous sommes basés sur un projet (node-dc-mongo) utilisant NodeJS pour récupérer les données de MongoDB et dc.js, d3.js pour générer des graphes en Javascript. Le programme (sensor) aussi et peut être utilisé pour envoyer la température du PC sur la gateway. Problème : ces données sont chiffrées et nous n'avons toujours pas réussi à les déchiffrer même en utilisant la clé utilisée sur la mote.