Contribution ChirpStack

Description du projet

=Le projet en quelques mots= Ce projet à pour but d'améliorer le projet open-source Chirpstack en y ajoutant certaines fonctionnalitées comme l'intégration d'une carte pour géolocaliser les devices ou intégrer un monitoring de l'application avec Grafana.

=L'équipe et leurs rôles=


 * Hoël Jalmin - Chef de projet, Intégration contributions de l’an dernier, Dactylographe
 * 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ée é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é:

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

Groupe Prometheus: (Mandresy, Iheb)
 * Travail au niveau du network server
 * Modification du fichier de configuration .toml
 * Téléchargement et prise en main de prometheus

Groupe anciennes contributions: (Hoël, 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 4 - Du 17/02/20 au 23/02/20
Groupe Prometheus: (Mandresy, Iheb, Mathieu)
 * Debug par Mathieu des fichiers qui rendaient difficile l'accès au métriques
 * Modification du fichier de configuration de Prometheus pour prendre en compte le network server
 * Modification du docker-compose

Groupe anciennes contributions: (Hoël)
 * Correction d'erreurs liées à l'adaptation du code de l'an dernier
 * Partie visualisation des devices avec une carte intégrée, à tester

Groupe Kafka: (Jian)
 * Modification de l'UI au niveau de l'application server
 * Ajout du backend de Kafka en local
 * Test de fonctionnement

Julien commence à travailler avec nous.
 * Lecture de documentation LoRa, Chirpstack & Orne Brocaar
 * Prise de connaissance du travail déjà réalisé

Sprint 5 - Du 2/03/20 au 8/03/20
Groupe Prometheus: (Iheb, Mandresy, Hoël)
 * Suppression de l'authentification pour accéder au dashboard Grafana
 * Prometheus et Grafana fonctionels, manque certaines métriques

Groupe anciennes contributions: (Hoël, Mathieu)
 * Modification du code de l'API pour la partie authentification MQTT
 * Clé MQTT rendue facultative pour les gateways
 * Ajout d'un cas de manque de localisation pour afficher une carte sans erreur

Groupe Kafka: (Jian, Mandresy)
 * 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

Groupe TTN Mapper: (Julien)
 * Lecture de documentation TTN (TheThingsNetwork), TTNMapper, MQTT (Mosquitto) & Node-RED
 * Début de la mise en place de la récupération des données en local via MQTT

Préparation de la soutenance de mi-parcours

Remise au propre de l'historique Git par Mathieu

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)
 * Accès à de nouvelles métriques
 * Mise à jour du dashboard Grafana

Groupe Intégration des anciennes contributions: (Hoël, Mathieu)
 * Partie authentification MQTT fonctionnelle, utilisation du plugin go-auth
 * Partie visualisation des devices à tester avec un gateway branché

Groupe Kafka: (Jian, Mandresy, Hoël)
 * 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

Groupe TTN Mapper: (Julien) [EDIT] Ce travail était une mauvaise piste et n'a pas été conservé
 * Récupération des données par MQTT
 * Intégration du bridge entre MQTT et TTN via Node-RED
 * Formatage & Décodage des données pour la reconnaissance de ces dernières par TNN

Remise au propre de l'historique Git par Mathieu

Pull request pour Prometheus-Grafana

Sprint 7 - Du 16/03/20 au 22/03/20
Groupe TTN Mapper: (Julien)
 * Poursuite de la recherche de l'interprétation des données par TTN (mauvaise piste)
 * Début du travail avec docker de manière à créer une instance privée de TTNMapper

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