Difference between revisions of "Contribution ChirpStack"

From air
Jump to navigation Jump to search
 
(50 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
[https://air.imag.fr/index.php/Contribution_au_projet_open-souce_ChirpStack Description du projet]
 
[https://air.imag.fr/index.php/Contribution_au_projet_open-souce_ChirpStack Description du projet]
   
  +
[https://github.com/campus-iot/Chirpstack-docker/tree/final-report/Final%20report Rapport final]
=Le projet en quelques mots=
 
Ce projet à pour but de travailler sur la platforme CampusIoT 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.
 
   
  +
[https://docs.google.com/presentation/d/1AuEhaHrHMfaVp9BKJF1YRoHDTcAAnk59moazu95j86U/edit?usp=sharing Présentation Finale]
  +
  +
[https://docs.google.com/presentation/d/1jki9UUmdc6g9Ql5Qc31wcFGkKlHdqY66hVSvVdGPKt0/edit?usp=sharing Présentatation intermédiaire]
  +
  +
[https://github.com/campus-iot Dépôts Github]
  +
  +
=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=
 
=L'équipe et leurs rôles=
   
  +
* Julien Cordat-Auclair - Intégration de TTN Mapper
* Hoël Jalmin - Chef de projet, Développement
 
  +
* Mathieu Dumax Vorzet - DevOps, Intégration contributions de l'an dernier
* Mandresy Rakotoarimalala - Scrum master, Développement, dactylographe
 
  +
* Hoël Jalmin - Chef de projet, Intégration contributions de l’an dernier, Dactylographe
* Iheb Mastoura - DevOps, Développement
 
  +
* Iheb Mastoura - Monitoring avec Grafana
* Jian Zheng - Développement
 
  +
* Mandresy Rakotoarimalala - Scrum master, Monitoring avec Grafana, Dactylographe
* Mathieu Dumax Vorzet - Développement
 
  +
* Jian Zheng - Intégration de Kafka
   
=Avancé équipe=
+
=Avancée équipe=
 
==Sprint 1 - Du 29/01/20 au 02/02/20 ==
 
==Sprint 1 - Du 29/01/20 au 02/02/20 ==
 
Prise en main d'outils :
 
Prise en main d'outils :
Line 19: Line 27:
 
* Prise en main de ChirpStack et LoRa
 
* Prise en main de ChirpStack et LoRa
 
* Discussion sur les contributions que nous souhaitons apporter
 
* Discussion sur les contributions que nous souhaitons apporter
* Récupération de quelques matériels à la Fablab dont:
+
* Récupération de matériel au Fablab dont:
 
** Un gateway Kerlink iFemto
 
** Un gateway Kerlink iFemto
 
** Un field test device Adeunis
 
** Un field test device Adeunis
  +
Documentation sur MQTT, CUPS, Architecture de Chirpstack
 
  +
Lecture de documentation sur MQTT, CUPS, Architecture de Chirpstack
   
 
Julien rejoint le groupe
 
Julien rejoint le groupe
   
  +
Matériel emprunté:
Matériels empruntés:
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
Line 49: Line 58:
 
==Sprint 2 - Du 03/02/20 au 09/02/20 ==
 
==Sprint 2 - Du 03/02/20 au 09/02/20 ==
 
Répartition des rôles au sein du groupe
 
Répartition des rôles au sein du groupe
  +
 
Consensus sur les contributions que l'on souhaite réaliser ie:
 
Consensus sur les contributions que l'on souhaite réaliser ie:
 
* Intégration de Cayenne sur Chirpstack
 
* Intégration de Cayenne sur Chirpstack
  +
* Intégration de monitoring avec Grafana
* Monitoring Grafana de Chirpstack
 
 
* Solveur de géolocalisation TDoA
 
* Solveur de géolocalisation TDoA
* LoRa 2.4Ghz
+
* LoRa 2.4Ghz
 
* Intégration TTN mapper (facultatif)
 
* Intégration TTN mapper (facultatif)
   
 
RDV avec Didier Donsez pour discuter des contributions à réaliser:
 
RDV avec Didier Donsez pour discuter des contributions à réaliser:
 
* Filtrage des packets au niveau du MQTTbroker
 
* Filtrage des packets au niveau du MQTTbroker
* LoRa 2.4Ghz facultatif
+
* LoRa 2.4Ghz (facultatif)
* intégration de TTN mapper
+
* Intégration de TTN mapper
* TTIG TTN to Chirpstack
+
* TTIG TTN to Chirpstack
  +
* Monitoring avec Grafana
* grafana monitoring
 
* push des contributions de l'année d'avant
+
* Intégrer les contributions effectuée l'année dernière
   
Mis en place de l'environnement de travail :
+
Mise en place de l'environnement de travail :
* installation de Go/Docker et les autres packets nécessaire
+
* Installation de Go/Docker et des packets nécessaires
* clonage des composants de chirpstack un par un
+
* Clonage des composants de chirpstack un par un
* edit des fichiers de configurations log.toml
+
* Modification des fichiers de configurations log.toml
* pris en main du code source
+
* 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 03/02/20 au 09/02/20 ==
 
  +
  +
==Sprint 3 - Du 10/02/20 au 16/02/20 ==
 
Séparation en 3 groupes:
 
Séparation en 3 groupes:
* Hoël & Mathieu: Intégration des contributions de l'année d'avant (authentification mqtt, ...)
+
* 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 metrics de network server (avec le docker compose qui va bien). Issue: [https://github.com/brocaar/chirpstack-network-server/issues/468 https://github.com/brocaar/chirpstack-network-server/issues/468]
+
* 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 https://github.com/brocaar/chirpstack-network-server/issues/468]
* Jian: Documentation sur l'intégration de Kafka
+
* Jian: Intégration de Kafka
   
RDV avec Didier Donsez à la fablab:
+
RDV avec Didier Donsez au fablab:
* Enregistrement de la gateway kerlink ifemto sur Chirpsatck
+
* Enregistrement de la gateway Kerlink Ifemto sur son serveur Chirpstack
* Enregistrement de la gateway Multitech sur Chirpstack
+
* Enregistrement de la gateway Multitech sur son serveur Chirpstack
   
  +
'''Groupe Prometheus:''' (Mandresy, Iheb)
==Sprint 4 - Du 09/02/20 au 16/02/20 ==
 
Groupe Prometheus:
 
 
*Travail au niveau du network server
 
*Travail au niveau du network server
*modification du fichier de configuration .toml
+
*Modification du fichier de configuration .toml
*téléchargement et prise en main de prometheus
+
*Téléchargement et prise en main de prometheus
   
Groupe Intégration des anciennes contributions:
+
'''Groupe anciennes contributions''': (Hoël, Mathieu)
 
*Objectifs:
 
*Objectifs:
**visualisation des devices sur une carte
+
**Visualisation des devices sur une carte
**sécurisation des gateway par une clé mqtt
+
**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 Kafka:
 
  +
'''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)
==Sprint 5 - Du 16/02/20 au 21/02/20 ==
 
  +
*Correction d'erreurs liées à l'adaptation du code de l'an dernier
Groupe Prometheus:
 
  +
*Partie visualisation des devices avec une carte intégrée, à tester
*modification du fichier de configuration de Prometheus pour prendre en compte le network server
 
*modification du docker-compose
 
   
  +
'''Groupe Kafka:''' (Jian)
Groupe Intégration des anciennes contributions:
 
  +
*Modification de l'UI au niveau de l'application server
*mis en place des branches d'environnement Git
 
  +
*Ajout du backend de Kafka en local
  +
*Test de fonctionnement
   
  +
Julien commence à travailler avec nous.
Groupe Kafka:
 
  +
* Lecture de documentation LoRa, Chirpstack & Orne Brocaar
*modification de l'UI au niveau de l'application server
 
  +
*Prise de connaissance du travail déjà réalisé
*ajout du backend de kafka
 
  +
  +
==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
 
Préparation de la soutenance de mi-parcours
   
  +
Remise au propre de l'historique Git par Mathieu
==Sprint 6 - Du 24/02/20 au 28/02/20 (Vacance d'hiver) ==
 
  +
Groupe Prometheus:
 
  +
==Sprint 6 - Du 9/03/20 au 15/03/20 ==
*Debug par Mathieu des fichiers qui rendaient difficile l'accès au métriques
 
  +
Réunion avec Didier Donsez:
*Prometheus et Grafana totalement fonctionelle
 
  +
*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)
  +
*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
  +
[EDIT] Ce travail était une mauvaise piste et n'a pas été conservé
  +
  +
Remise au propre de l'historique Git par Mathieu
  +
  +
Pull request pour Prometheus-Grafana
  +
  +
==Sprint 7 - Du 16/03/20 au 27/03/20 ==
  +
Création d'une VM Azure pour la démonstration, installation de nginx
  +
  +
Enregistrement d'une gateway sur la VM et clonage des répertoires du projet
   
  +
'''Groupe TTN Mapper:''' (Julien)
Groupe Intégration des anciennes contributions:
 
  +
*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
  +
*Récupération d'une image docker TTN Mapper
   
  +
Echec de l'intégration par erreur d'adresse locale sur la VM
Groupe Kafka:
 
*Kafka fonctionelle
 
*reflexion sur la mise en place d'un environement docker pour kafka
 
*reflexion sur la mise en place de test pour kafka
 
   
Préparation des slides pour la soutenance de mi-parcours
+
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
  +
*Enregistrement des vidéos de démonstration

Latest revision as of 11:38, 26 March 2020

Description du projet

Rapport final

Présentation Finale

Présentatation intermédiaire

Dépôts Github

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

  • Julien Cordat-Auclair - Intégration de TTN Mapper
  • Mathieu Dumax Vorzet - DevOps, Intégration contributions de l'an dernier
  • Hoël Jalmin - Chef de projet, Intégration contributions de l’an dernier, Dactylographe
  • Iheb Mastoura - Monitoring avec Grafana
  • Mandresy Rakotoarimalala - Scrum master, Monitoring avec Grafana, Dactylographe
  • Jian Zheng - Intégration de Kafka

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é:

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:

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)

  • 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

[EDIT] Ce travail était une mauvaise piste et n'a pas été conservé

Remise au propre de l'historique Git par Mathieu

Pull request pour Prometheus-Grafana

Sprint 7 - Du 16/03/20 au 27/03/20

Création d'une VM Azure pour la démonstration, installation de nginx

Enregistrement d'une gateway sur la VM et clonage des répertoires du projet

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
  • Récupération d'une image docker TTN Mapper

Echec de l'intégration par erreur d'adresse locale sur la VM

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
  • Enregistrement des vidéos de démonstration