Contribution ChirpStack
Le projet en quelques mots
Ce projet à pour but de travailler sur la platforme Chirpstack en rajoutant certaines fonctionnalitées, sécuriser l'application et améliorer la gestion de l'authentification. La plateforme CampusIoT est un réseau LoRaWAN pour l'enseignement pratiques des technologies IoT long-range dans les établissements d'enseignement supérieur sur Grenoble et Valence. Ce réseau comporte plusieurs stations de base réparties dans des batiments des Campus.
L'équipe et leurs rôles
- Hoël Jalmin - Chef de projet, Intégration contributions de l’an dernier
- Mandresy Rakotoarimalala - Scrum master, Monitoring avec Grafana, Dactylographe
- Iheb Mastoura - Monitoring avec Grafana
- Jian Zheng - Intégration Kafka
- Mathieu Dumax Vorzet - DevOps, Intégration contributions de l'an dernier
Avancé équipe
Sprint 1 - Du 29/01/20 au 02/02/20
Prise en main d'outils :
- Installation Docker
- Prise en main de ChirpStack et LoRa
- Discussion sur les contributions que nous souhaitons apporter
- Récupération de matériel au Fablab dont:
- Un gateway Kerlink iFemto
- Un field test device Adeunis
Lecture de documentation sur MQTT, CUPS, Architecture de Chirpstack
Julien rejoint le groupe
Matériel emprunté:
Matériel | Quantité |
---|---|
TTIG gateway | 2 |
Kerlink iFemtoCell gateway | 1 |
Testeur réseau | 2 |
Multitech gateway | 1 |
Sprint 2 - Du 03/02/20 au 09/02/20
Répartition des rôles au sein du groupe
Consensus sur les contributions que l'on souhaite réaliser ie:
- Intégration de Cayenne sur Chirpstack
- Intégration de monitoring avec Grafana
- Solveur de géolocalisation TDoA
- LoRa 2.4Ghz
- Intégration TTN mapper (facultatif)
RDV avec Didier Donsez pour discuter des contributions à réaliser:
- Filtrage des packets au niveau du MQTTbroker
- LoRa 2.4Ghz (facultatif)
- Intégration de TTN mapper
- TTIG TTN to Chirpstack
- Monitoring avec Grafana
- Intégrer les contributions effectuée l'année dernière
Mise en place de l'environnement de travail :
- Installation de Go/Docker et des packets nécessaires
- Clonage des composants de chirpstack un par un
- Modification des fichiers de configurations log.toml
- Prise en main du code source
[EDIT]
L'environnement de travail final était sur docker donc les configurations effectuées cette semaine n'ont pas été conservées
Sprint 3 - Du 10/02/20 au 16/02/20
Séparation en 3 groupes:
- Hoël & Mathieu: Intégration des contributions de l'année d'avant (authentification mqtt des gateways, visualisation des devices sur une carte). Issue Mqtt: https://github.com/brocaar/chirpstack-application-server/issues/427. Issue map: https://github.com/brocaar/chirpstack-application-server/issues/439
- Mandresy & Iheb: Intégration d'un dashboard Grafana pour les métriques du network server (en changeant le docker compose). Issue: https://github.com/brocaar/chirpstack-network-server/issues/468
- Jian: Intégration de Kafka
RDV avec Didier Donsez au fablab:
- Enregistrement de la gateway Kerlink Ifemto sur son serveur Chirpstack
- Enregistrement de la gateway Multitech sur son serveur Chirpstack
Sprint 4 - Du 17/02/20 au 23/02/20
Groupe Prometheus: (Mandresy, Iheb et Mathieu)
- Travail au niveau du network server
- Modification du fichier de configuration .toml
- Téléchargement et prise en main de prometheus
- Modification du fichier de configuration de Prometheus pour prendre en compte le network server
- Modification du docker-compose
Groupe anciennes contributions: (Hoël et Mathieu)
- Objectifs:
- Visualisation des devices sur une carte
- Sécurisation des gateways par une clé mqtt
- Adaptation du code de l'année précédente à l'architecture actuelle de Chirpstack
Groupe Kafka: (Jian)
- Lecture de documentation sur Kafka et prise en main en local
Sprint 5 - Du 2/03/20 au 8/03/20
Groupe Prometheus: (Iheb, Mandresy, Mathieu et Hoël)
- Debug par Mathieu des fichiers qui rendaient difficile l'accès au métriques
- Suppression de l'authentification pour accéder au dashboard Grafana
- Prometheus et Grafana fonctionels, manque certaines métriques
Groupe anciennes contributions: (Hoël)
- Modification du code de l'API pour la partie authentification MQTT
- Clé MQTT rendue facultative pour les gateways
- Partie visualisation des devices avec une carte intégrée
Groupe Kafka: (Jian et Mandresy)
- Modification de l'UI au niveau de l'application server
- Ajout du backend de Kafka en local
- Test de fonctionnement
- Kafka fonctionel en local
- Réflexion sur la mise en place d'un environnement docker pour Kafka
- Réflexion sur la mise en place de test uniques pour kafka
Préparation de la soutenance de mi-parcours
Remise au propre de l'historique Git par Mathieu
Julien commence à travailler sur sa partie (TTN Mapper)
Groupe TTN Mapper: (Julien) ...
Sprint 6 - Du 9/03/20 au 15/03/20
Réunion avec Didier Donsez:
- Retourner au Fablab pour faire des tests avec le gateway Kerlink Ifemto
- Les métriques manquantes sont liées au manque de gateway et device sur l'application
Enregistrement de la gateway Kerlink sur notre server Chirpstack local.
Groupe Prometheus: (Iheb, Hoël)
- Suppression de l'authentification pour accéder au dashboard Grafana
- Prometheus et Grafana fonctionels, manque certaines métriques
- Accès à de nouvelles métriques
- Mise à jour du dashboard Grafana
Groupe Intégration des anciennes contributions: (Hoël)
- Partie authentification MQTT fonctionnelle, utilisation du plugin go-auth
- Partie visualisation des devices à tester avec un gateway branché
Groupe Kafka: (Jian, Mandresy, Hoël)
- Kafka fonctionel en local
- Réflexion sur la mise en place d'un environnement docker pour Kafka
- Réflexion sur la mise en place de test uniques pour kafka
- Problème d'intégration au niveau de l'UI
- Utilisation de Apache Nifi pour configurer un consommateur Kafka en local
- Ajout de fonctions manquantes sur l'API Chirpstack
Pull request pour Prometheus-Grafana
Sprint 7 - Du 16/03/20 au 22/03/20
Préparation à la soutenance finale:
- Slides
- Rédaction des rapports et de tutoriels pour le prochain groupe qui travaillera sur le projet
- Pull request pour l'intégration du MQTT auth
Utilisation d'une VM Azure pour la démonstration