Projet

Général

Profil

Noah Cazeaudumec

Je suis un étudiant en BTS CIEL-IR ( Cybersécurité, Informatique et réseaux, Électronique ) au lycée Kastler a Talence.
Je suis en stage du 21 mai 2024 au 28 juin 2024 dans le but de pouvoir gagner en compétence, je suis en stage avec mon coéquipier Nicolas Schmauch.

Le projet que l'on continue
Réécriture Thermo-Bibli
Notre page à Noah et moi pour expliquer par où on a commencé et où on s'est arrêté et expliqué aussi les améliorations avenir.
Tutoriel et les définitions.

Stage

Jour 1: Mardi 21 mai 2024

Jour 2: Mercredi 22 Mai 2024

  • Etude des composants du projet
    dht22
    datasheet esp32 wrover b
    datasheet technique
    datasheet dht22
    Incertitude humidité = 5%, incertitude température 0.5°C
  • Etude du code du projet
  • Analyse des anciens wikis des gens qui ont travaillé sur le projet
  • j'ai regardé la page de margot Dubuisson, mais il n'y a rien
  • création du compte pour git
  • clone du projet + instllation addons vscode
  • étude du logiciel grafana
  • Visonage d'une vidéo sur comment setup grafana

Jour 3: Jeudi 23 Mai 2024

  • On a branché le projet et on a testé le code pour voir s'il fonctionnait.
    • Il fonctionne toujours, mais il manque un capteur.
  • On sait connecter en SSH au Raspberry pi.
    • Installation MQTT + InfluxDB + Python3 avec modules sur le Raspberry pi.
      Installation MQTT Installation InfluxDB Installation Python3
      sudo apt install mosquitto sudo apt install influxdb sudo apt install python3

Mais au final, on ne va pas utiliser le Raspberry pi, car on va se connecter en shh à la V.M.

  • Pour pouvoir se connecter en ssh sur la V.M. il nous fallait nos clés publiques.
    Commande
    ssh-keygen -t ed25519
  • Dans le code, on a modifié (voir dessous) pour pouvoir mettre à l'heure le système.
    Avant Après
    NTPClient TimeClient(NtpUDP, "europe.pool.ntp.org"); NTPClient TimeClient(NtpUDP, "192.168.23.254");

Jour 4: Vendredi 24 Mai 2024

  • aide Installation Grafana + InfluxDB sur le poste pour des tests en attendant que la connexion ssh fonctionne.
    installation Grafana Installation InfluxDB




Influxdb :
id : admin
mdp : admin132
API token : V23m3FViSyrXkZXPL5hvjdsgtqLKb2FjVG2WyUxyZV9ndC43159DhTMSQicaK9AuLEda2mpGI1gwgQ5lIefwgA==

Jour 5: Lundi 27 Mai 2024

  • Visionnage de vidéo pour essayer de configurer influx et grafana autre video
  • essaie d'envoyer les information sur la database de la VM
  • essaie que le microcontrôleur ce connecte au MQTT
  • création du dashboad sur grafana
  • pour ce connecter en ssh a la vm on a du faire un partage de connexion car le ssh ne marché pas avec le reseau filaire du fablab
  • recherche de comment cree une nouvelle table dans la base de donnés afin de pouvoir stocker les qui seront valeur envoyer

Jour 6: Mardi 28 Mai 2024

  • La connexion SSH fonctionne sans passer par un partage de connexion.
  • Nous avons constaté que la connexion MQTT ne fonctionnait pas, donc nous avons essayé un partage de connexion pour vérifier si le problème venait du réseau. En utilisant le partage de connexion, nous avons rencontré un problème avec l'heure, car celle-ci était fournie par le réseau de l'IUT. Nous avons donc configuré l'heure en utilisant le site "europe.pool.ntp.org". Une fois cela fait, sur la VM, on reçoit bien les données des capteurs. Donc, nous avons ainsi conclu que le problème de connexion MQTT n'était pas lié à l'heure, mais aux ports qui ne sont pas ouverts sur le réseau.
Schéma
  • adaptation du code pour avoir les infomations envoyer dans un dossier .json
  • essai de configurer Grafana pour afficher les données par le fichier .json

Jour 7: Mercredi 29 Mai 2024

  • j'ai fini le programme pour que les données soit dans un fichier .json
  • on a réussi à envoyer et à stoker les données envoyer par les capteurs
  • essaie de faire fonctionner le dashboard sur Grafana
  • commencement du tuto.
  • adaptation du code python, Grafana pour nos test
  • réussi à créer un token pour Grafana
  • On a fini le programme pour que les données soient dans un fichier json. "pas utile car on fera la BdD avec InfluxDB"
    On a réussi à envoyer et à stoker les données envoyer par les capteurs dans la VM.
    Essaie de faire fonctionner le dashboard sur Grafana avec les données des capteurs sur InfluxDB.
    On a commencé le tuto du projet.
    Adaptation du code python (test).

Réussi à créer un token pour Grafana avec la commande :
" influx auth create --org <organisation> --read-bucket <bucket_id> --write-bucket <bucket_id> " ce qui donne :
"influx auth create --org Fablab --read-bucket 15ecf2468af9d69d --write-bucket 15ecf2468af9d69d"

Pour savoir l'organisation, on a fait :
influx org list

Pour savoir le bucket id, on a fait :
influx bucket list --org <organisation> donc :
influx bucket list --org Fablab

Jour 8: Jeudi 30 Mai 2024

  • Modification sur le code python pour l'adapter a nos besoin.
  • configuration de Grafana pour visualiser les graph sur les dashboard
    Graphique
  • paramétrage de la datasource
  • adaptation du langage flux dans grafana pour qu'il affiche les données.
    Langage Flux
  • J'ai continué un peu le tuto
  • recherche de comment mettre en place une alerte sur Grafana et l'envoyer par mail
  • les commande utilisé sur la VM :
    Création d'un token pour Grafana avec la commande :
    " influx auth create --org <organisation> --read-bucket <bucket_id> --write-bucket <bucket_id> "

Pour savoir l'organisation, on a fait :
influx org list

Pour savoir le bucket id, on a fait :
influx bucket list --org <organisation>

  • On a trouvé la commande pour afficher les tokens déjà existants :
    influx auth list --org <organisation>
  • Pour voir les données sur le bucket "Fablab" dans "grappe2" :
    influx query 'from(bucket: "Fablab") |> range(start: -1d) |> filter(fn: (r) => r["_measurement"] "grappe2") |> filter(fn: (r) => r["_field"] "humidite") |> limit(n: 10)'

Jour 9: Vendredi 31 Mai 2024

  • Ajustement du code python
  • test sur le réseau wifi du fablab, mais cela ne marche pas, car le port 1883 ne le permet pas
  • essaie de faire marcher le capteur avec les piles ok
  • configuration des dashboard et des alertes dans Grafana
  • configuration des mails pour pouvoir envoyer les alertes
  • J'ai continué le tuto

Jour 10: Lundi 03 Juin 2024

  • essaie de se connecter au MQTT avec le réseau Wifi du fablab, j'ai remarqué qu'il ne recevait pas les requêtes qu'on lui envoie on a donc envoyer un mail pour qu'il ce charge du problème qu'il y a sur le réseau du fablab
  • essaie des alertes pour voir si elles fonctionnent
  • réussi de se connecter au Mqtt avec le réseau fablab, Mais il reste un problème, il n'arrive pas à transmettre les données dans la Grafana.
  • Continuation du tuto

Jour 11: Mardi 04 Juin 2024

  • essai d'envoyer les données sur grafana avec la connexion du Fablab mais il y a un probléme .
  • continuation du tuto
  • debug pour trouver le problème, on ne la toujours pas trouver pour l'instant.
  • Renseignement pour réparer la grappe de capteur

Jour 12: Mercredi 05 Juin 2024

  • Quand l'ESP32 envoie des données avec la date en étant connecté au réseau du fablab, la date n'est pas correcte, bloquer le 7 février 2036 (en boucle) alors qu'avec un partage de connexion, la date est correcte.
    Pour savoir si cela, venez du serveur NTP de l'IUT, on a fait la commande "ntpdig 192.168.23.254" et elle nous bien la bonne date donc ce n'est pas le serveur NTP qui a un problème.
  • Avec Julien, on en a donc déduit que cela pouvez provenir de la ligne de code dans le main.cpp suivante :
    NTPClient TimeClient(NtpUDP, "192.168.23.254");
* Donc le problème, c'est quand on connecte l'ESP32 au réseau du fablab (avec le serveur NTP 192.168.23.254), cela a un impact sur l'envoi vers le lien MQTT qui le fait boucler sur la même date incorrecte (le 7 février 2036) au lieu de donner une date qui avance dans le temps, car là cette date si on attend une heure, la date n'aura pas avancé d'une heure, comme si elle était bloquée sur une date fixe.

Jour 13: Jeudi 06 Juin 2024

  • On a trouvé le problème, cette juste une fonction qui mettait mal à jour la date de l'adresse IP fixe du serveur NTP.
  • On doit tous mettre à jour (code sur Git, tuto, etc)
  • aide Margot pour son tuto
  • réparation de la grappe de capteur
  • ticket sur Git pour aider à régler le problème d'horodatage

Jour 14: Vendredi 07 Juin 2024

  • continuation de la réparation de la grappe de capteur
  • Remaniement du tuto pour qu'il soit plus adapté
  • Tous les capteurs remarche

Jour 15: Lundi 10 Juin 2024

  • Continuation du tuto.
  • On a réussi à faire fonctionner l'envoie de mail quand le seuil est atteint (température et humidité).
  • Essaie de régler le problème de valeur de la batterie, car on a 5V alors que l'on veut le pourcentage (toujours pas réussi)

Jour 16: Mardi 11 Juin 2024

  • Pour que VSCode puisse avoir accès au port ttyUSB0 :
    sudo adduser username dialout
    
  • Débogage pour savoir d'où vient le problème de la batterie qui donne que 5V.
  • On a terminé le tutoriel.
  • Mise à jour du script python sur le Git.

Jour 17: Mercredi 12 Juin 2024

  • Création du deamon pour notre script python.
    • On a mis le script dans /scripts-faits-maison/forwarder-mqtt-influxdb/mqtt-fablab.py
    • Puis on a été dans /etc/systemd/system pour créer le fichier "mqtt-fablab.service".
    • On a mis ce code dans le fichier "mqtt-fablab.service" :
      [Unit]
      Description = MQTT to Influxdb forwarder
      After = network.target
      Conflicts = getty@tty1.service 
      Requires=influxd.service
      Requires=influxdb.service
      Requires=mosquitto.service
      
      [Service]
      Type = simple
      ExecStart = /usr/bin/python3 /root/scripts-faits-maison/forwarder-mqtt-influxdb/mqtt-fablab.py
      User = root
      Group = root
      Restart = always
      SyslogIdentifier = <Name of logs for the service>
      RestartSec = 5
      TimeoutStartSec = infinity
      StandardInput = tty-force 
      
      [Install]
      WantedBy = multi-user.target
      
  • Et on a fait ces commandes :

Recharger systemd pour prendre en compte le nouveau service :

sudo systemctl daemon-reload

Démarrer le service et l'activer au démarrage :

sudo systemctl start mqtt-fablab.service
sudo systemctl enable mqtt-fablab.service

Vérifier le statut du service :

sudo systemctl status mqtt-fablab.service

  • essaie de régler le problème de pourcentage avec les piles

Jour 18: Jeudi 13 Juin 2024

  • Adaptation du code pour avoir le bon pourcentage des piles qui s'affiche sur Grafana
  • amélioration de la prise d'information sur l'état de charge des piles (prend 10 mesure et fais la moyenne)
  • amélioration du tableau + changement du facteur de conversion
  • test de plusieurs petits programmes pour enregistrer l'heure comme :
   preferences.begin("test", false);

   preferences.putULong("heure de démarage de la sauvegarde", rawtime);

   long savetime = preferences.putULong("heure", rawtime);
   Serial.print("heure de démarage de la sauvegarde: ");
   Serial.print(savetime);

  • Adaptation du code pour avoir le bon pourcentage des piles qui s'affiche sur Grafana (amélioration du tableau + changement du facteur de conversion).
  • On a refait le tableau % -> Volt et on a modifié cette valeur :
    #define CONV_FACTOR 1.78
    
  • Avant :
    void Pangodream_18650_CL::_initVoltsArray(){
        _vs[0] = 3.200; 
        _vs[1] = 3.250; _vs[2] = 3.300; _vs[3] = 3.350; _vs[4] = 3.400; _vs[5] = 3.450;
        _vs[6] = 3.500; _vs[7] = 3.550; _vs[8] = 3.600; _vs[9] = 3.650; _vs[10] = 3.700;
        _vs[11] = 3.703; _vs[12] = 3.706; _vs[13] = 3.710; _vs[14] = 3.713; _vs[15] = 3.716;
        _vs[16] = 3.719; _vs[17] = 3.723; _vs[18] = 3.726; _vs[19] = 3.729; _vs[20] = 3.732;
        _vs[21] = 3.735; _vs[22] = 3.739; _vs[23] = 3.742; _vs[24] = 3.745; _vs[25] = 3.748;
        _vs[26] = 3.752; _vs[27] = 3.755; _vs[28] = 3.758; _vs[29] = 3.761; _vs[30] = 3.765;
        _vs[31] = 3.768; _vs[32] = 3.771; _vs[33] = 3.774; _vs[34] = 3.777; _vs[35] = 3.781;
        _vs[36] = 3.784; _vs[37] = 3.787; _vs[38] = 3.790; _vs[39] = 3.794; _vs[40] = 3.797;
        _vs[41] = 3.800; _vs[42] = 3.805; _vs[43] = 3.811; _vs[44] = 3.816; _vs[45] = 3.821;
        _vs[46] = 3.826; _vs[47] = 3.832; _vs[48] = 3.837; _vs[49] = 3.842; _vs[50] = 3.847;
        _vs[51] = 3.853; _vs[52] = 3.858; _vs[53] = 3.863; _vs[54] = 3.868; _vs[55] = 3.874;
        _vs[56] = 3.879; _vs[57] = 3.884; _vs[58] = 3.889; _vs[59] = 3.895; _vs[60] = 3.900;
        _vs[61] = 3.906; _vs[62] = 3.911; _vs[63] = 3.917; _vs[64] = 3.922; _vs[65] = 3.928;
        _vs[66] = 3.933; _vs[67] = 3.939; _vs[68] = 3.944; _vs[69] = 3.950; _vs[70] = 3.956;
        _vs[71] = 3.961; _vs[72] = 3.967; _vs[73] = 3.972; _vs[74] = 3.978; _vs[75] = 3.983;
        _vs[76] = 3.989; _vs[77] = 3.994; _vs[78] = 4.000; _vs[79] = 4.008; _vs[80] = 4.015;
        _vs[81] = 4.023; _vs[82] = 4.031; _vs[83] = 4.038; _vs[84] = 4.046; _vs[85] = 4.054;
        _vs[86] = 4.062; _vs[87] = 4.069; _vs[88] = 4.077; _vs[89] = 4.085; _vs[90] = 4.092;
        _vs[91] = 4.100; _vs[92] = 4.111; _vs[93] = 4.122; _vs[94] = 4.133; _vs[95] = 4.144;
        _vs[96] = 4.156; _vs[97] = 4.167; _vs[98] = 4.178; _vs[99] = 4.189; _vs[100] = 4.200;
    }
    
  • Après :
    void Pangodream_18650_CL::_initVoltsArray(){
        _vs[0] = 3.300; 
        _vs[1] = 3.309; _vs[2] = 3.318; _vs[3] = 3.327; _vs[4] = 3.336; _vs[5] = 3.345;
        _vs[6] = 3.354; _vs[7] = 3.363; _vs[8] = 3.372; _vs[9] = 3.381; _vs[10] = 3.390;
        _vs[11] = 3.399; _vs[12] = 3.408; _vs[13] = 3.417; _vs[14] = 3.426; _vs[15] = 3.435;
        _vs[16] = 3.444; _vs[17] = 3.453; _vs[18] = 3.462; _vs[19] = 3.471; _vs[20] = 3.480;
        _vs[21] = 3.489; _vs[22] = 3.498; _vs[23] = 3.507; _vs[24] = 3.516; _vs[25] = 3.525;
        _vs[26] = 3.534; _vs[27] = 3.543; _vs[28] = 3.552; _vs[29] = 3.561; _vs[30] = 3.570;
        _vs[31] = 3.579; _vs[32] = 3.588; _vs[33] = 3.597; _vs[34] = 3.606; _vs[35] = 3.615;
        _vs[36] = 3.624; _vs[37] = 3.633; _vs[38] = 3.642; _vs[39] = 3.651; _vs[40] = 3.660;
        _vs[41] = 3.669; _vs[42] = 3.678; _vs[43] = 3.687; _vs[44] = 3.696; _vs[45] = 3.705;
        _vs[46] = 3.714; _vs[47] = 3.723; _vs[48] = 3.732; _vs[49] = 3.741; _vs[50] = 3.750;
        _vs[51] = 3.759; _vs[52] = 3.768; _vs[53] = 3.777; _vs[54] = 3.786; _vs[55] = 3.795;
        _vs[56] = 3.804; _vs[57] = 3.813; _vs[58] = 3.822; _vs[59] = 3.831; _vs[60] = 3.840;
        _vs[61] = 3.849; _vs[62] = 3.858; _vs[63] = 3.867; _vs[64] = 3.876; _vs[65] = 3.885;
        _vs[66] = 3.894; _vs[67] = 3.903; _vs[68] = 3.912; _vs[69] = 3.921; _vs[70] = 3.930;
        _vs[71] = 3.939; _vs[72] = 3.948; _vs[73] = 3.957; _vs[74] = 3.966; _vs[75] = 3.975;
        _vs[76] = 3.984; _vs[77] = 3.993; _vs[78] = 4.002; _vs[79] = 4.011; _vs[80] = 4.020;
        _vs[81] = 4.029; _vs[82] = 4.038; _vs[83] = 4.047; _vs[84] = 4.056; _vs[85] = 4.065;
        _vs[86] = 4.074; _vs[87] = 4.083; _vs[88] = 4.092; _vs[89] = 4.101; _vs[90] = 4.110;
        _vs[91] = 4.119; _vs[92] = 4.128; _vs[93] = 4.137; _vs[94] = 4.146; _vs[95] = 4.155;
        _vs[96] = 4.164; _vs[97] = 4.173; _vs[98] = 4.182; _vs[99] = 4.191; _vs[100] = 4.200;
    }
    
  • Amélioration de la prise d'information sur l'état de charge des piles (prend 10 mesures et fais la moyenne de ses mesures).

Jour 19: Vendredi 14 Juin 2024

  • Mise en place de l'enregistrement des données sur le micro-contrôleur.
  • code mis en place :
     /*début de l'enregistrement des données */
    
      preferences.begin("chargelvl-hum-temp", false);
      int chargelvl = preferences.getInt("chargelvl", 1);
    
      for (int i = 0; i < 5; i++) // debut de la boucle pour récuperer les valeur dans le tableau puis les enregistrer
      {
    
        char Temp[5];
        char Humi[5];
        float newTemp = preferences.getFloat(Temp, temp[i]);
        float newHum = preferences.getFloat(Humi, hum[i]);
    
        preferences.putFloat("temp", newTemp);
        preferences.putFloat("hum", newHum);
    
        Serial.printf("temp: %0.2f\n", newTemp); // print pour vérifier si les valeurs enregistrées sont les bonnes
        Serial.printf("hum: %0.2f\n", newHum);
      }
    
      chargelvl = (chargelvl1 + chargelvl2 + chargelvl3 + chargelvl4 + chargelvl5 + chargelvl6 + chargelvl7 + chargelvl8 + chargelvl9 + chargelvl10) / 10; // Calcul de la moyenne du niveau de charge de la batterie
      // time_t rawtime = TimeClient.getEpochTime();
    
      Serial.printf("chargelvl: %d\n", chargelvl); // print pour vérifier si les valeurs enregistrées sont les bonnes
      preferences.putInt("chargelvl", chargelvl);
      preferences.end();
    
      /* Fin de l'enregistrement des données sur le micro-controleur*/
    
    
  • essaie de faire en sorte que quand on perd la connexion ou autre les données enregistrées sur le micro contrôleur s'envoie quand même quand la connexion est rétablie

Jour 20: Lundi 17 Juin 2024

  • Mise en place de l'enregistrement de l'heure dans le code
  • recherche de comment faire pour qu'il enregistre les infos quand il n'y a plus de connexion et qu'il n'enregistre rien quand tout est bon
  • optimisation de code + documentation
  • essaie de programmation (pas réussi)
  • Présentation du système , diagramme de déploiement (Uml), cas d'utilisation , cahier charges , diagramme d'exigence

Jour 21: Mardi 18 Juin 2024

  • essaie de faire le code qui envoie les données perdues au mqqt puis Grafana (pas réussi)
  • réparation de connecteur du capteur

Jour 22: Mercredi 19 Juin 2024

  • On a corrigé une erreur que l'on avait faite au tout début qui nous a pénalisé aujourd'hui.
  • L'erreur était que l'on avait modifié le fichier de MdP de Mosquitto (MQTT) et quand aujourd'hui, on a voulu relancer le service, on ne pouvait plus si connecter, mais je m'en suis rappelé, donc on a pu vite régler le problème.
  • On a juste recréé le fichier de MdP avec cette commande et supprimer l'ancien :
    sudo mosquitto_passwd -c /etc/mosquitto/passwd capteurs
    
  • réparation du dernier connecteur qui dysfonctionner
  • toujours sur le même problème d'envoyer des données stocker en local
  • erreur constante sur le script python que l'on essaie de régler
  • Débogage du code

Jour 23: Jeudi 20 Juin 2024

  • debug du code
  • Création de la fonction sendlocaldata
void SendLocalData()
{
  preferences.begin("capteurs", true);
  time_t rawtime = preferences.getInt("time", 0);
  int chargelvl = preferences.getInt("chargelvl", 0);

  temp[4] = preferences.getFloat("temp", 0);
  hum[4] = preferences.getFloat("hum", 0);

  char msgsld[150];
  sprintf(msgsld, "%lu|%s|%0.2f %0.2f %0.2f %0.2f %0.2f|%0.2f %0.2f %0.2f %0.2f %0.2f|%d", rawtime, CLUSTER, temp[0], temp[1], temp[2], temp[3], temp[4], hum[0], hum[1], hum[2], hum[3], hum[4], chargelvl);

  MqttClient.publish(TOPIC, msgsld);
  Serial.println("msgsld : ");
  Serial.println(msgsld);

  preferences.clear();
  preferences.end();
}
  • Réussi à envoyer les données enregistrées sur l'esp32 sur Grafana, mais il y a un problème avec les valeurs envoyé qui reste la même

Jour 24 : Vendredi 21 juin 2024

  • debug du code + commentaire
  • réussi à stoker plusieurs données puis à les envoyer, mais elle ne se supprime pas après envoie et s'envoie en boucle

Jour 25: Lundi 24 Juin 2024

  • rapport de stage
  • debug de code + essaie de faire un log rotate pour les données

Jour 26: Mardi 25 Juin 2024

  • On a réussi à faire la sauvegarde de données en local quand la connexion au MQTT échoue et on arrive aussi à les renvoyer quand la connexion est rétablie (avec les fonctions "void LocalSave()", "void clearOldData(int index)" et "void SendLocalData()"
  • On a commencé la page d'explication aux futurs stagiaires pour qu'ils ne soient pas comme nous, perdu à lire tous les documents de tout le monde et aussi savoir les améliorations que nous avons pensées à faire.

Jour 27: Mercredi 26 Juin 2024

  • Continuation de la page d'explication + rapport de stage.
  • Créer une organisation :
    influx organization create --name <nom_organisation>
    
  • Créer un bucket dans une organisation :
    influx bucket create --name <nom_organisation> --org-id <id_organisation>
    
  • Créer un token avec permission lecture/écriture dans un bucket :
    influx auth create --org-id <id_organisation> --read-bucket <id_bucket> --write-bucket <id_bucket> --description <votre_description>
    
  • Afficher toutes les organisations :
    influx org list
    
  • Afficher les buckets d'une organisation :
    influx bucket list --org <nom_organisation>
    
  • Afficher tous les tokens :
    influx auth list
    

Jour 28: Jeudi 27 Juin 2024

  • Rapport de stage + Nettoyage de l'ordinateur.

Jour 29: Vendredi 28 Juin 2024

Tuto comment envoyer les données sur la v.m puis configurer Grafana

VM = machine virtuelle

  • si vous êtes sur ce tuto ce que vous en êtes a la parti du projet ou il faut envoyer les données grâce au lien MQTT vers InfluxDB.

Code

  • Dans un premier temps, cloner le code du projet sur le git du fablab
  • ouvrer le lien vers le git du fablab et connecter vous si vous n'avez pas de compte git demandé à Jean-Baptiste ou à Pierre,
    une fois arriver sur la page cliquer sur les trois petits points et télécharger la version zip du projet.
    Image

Après avoir Télécharger le fichier zip, l'extraire/Dézipper dans l'endroit voulu.

  • ensuite ouvrir le projet cloné dans vsCode si vous n'avez pas vs code voici le lien pour le Téléchargé
    une fois sur vscode Télécharger l'addon(Platformio IDE) de vscode puis ouvrir le dossier contenant le code du projet.
  • une fois le code ouvert cliquer sur le dépliant include, et ensuite sur le fichier secret.h, ensuite changer le nom du wifi et le mot de passe, mettez celui que vous souhaitez.
Image
  • Ensuite, après avoir choisi le Wifi que vous souhaitez, si vous avez choisi le réseau du Fablab alors, il faut changer dans la Class NtpClient la valeur qu'il y a entre les parenthèses et mettre l'adresse du serveur de l'IUT qui est "192.168.23.254" (Le ntp et un protocole qui sert à mettre tous les appareils à la même heure depuis le serveur désigné)
    Image
  • Il y a une petite erreur dans le fichier platformio.ini a la ligne 12, il faut changer les espace par des "_"
Avant Après
Après avoir tout modifié appuyer sur les touches Ctrl + S (pour sauvegarder les modifacations), compiler le code et l'envoyer vers la carte (pour l'envoyer, il faut que le micro-contrôleur doit être branché sur le pc en USB), pour cela dans vscode regarder tout en bas de la page et appuyer sur la flèche et ensuite la prise pour voir les actions en cours du programme.
Image
  • /!\ Pour voir si le code fonctionne comme il faut dans le terminal, il faut voir une adresse IP, l'heure et la connexion MQTT apparaitre, dès que cela et faits, vous devriez avoir des données des capteurs qui devrait s'afficher comme sur l'image, précédente ensuite vous pourrait passer à la prochaine étape
  • /!\ pour l'instant avec le réseau Wifi du fablab la connexion au MQTT est impossible, il faut donc passer par un partage de connexion ou autre.

Machine Virtuel

  • Après avoir fait la partie Code, Dans un premier temps, il faut créer une clé privée (/!\ ne jamais partager sa clé privé) pour cela, il faut utiliser la commande suivante :
    Commande Clé
    ssh-keygen -t ed25519

une fois fait donner la clé publique à pierre et lui demander de créer un compte sur la machine virtuel, dés que le compte est créé vous pouvez vous connecter grâce à la commande suivante :

Commande
ssh -p 55555

vous devez arrivé sur cet page :

Connexion SSH
  • une fois connecté sûr la vm , il faut rajouter le code python qui est sûr vscode qui se nomme mqtt-python.py, il faut le copier via le git et ensuite le collé dans un fichier que vous allez créer par la suite.
  • Ensuite sur la V.M faire la commande suivante pour créer un fichier :
    Commande
    sudo nano mqtt-python.py

vous devez arriver sur ce fichier vide :

Image

faire Ctrl + Maj + V cela copie le code dans le fichier, Ctrl +S (pour enregistrer) puis Ctrl + X pour quitter le fichier

/!\ il faut quand même change quelques informations dans le code

  • Ensuite lancer le programme python avec la commande suivante :
    Commande
    sudo python3 mqtt-python.py

Si vous avez le code 0 cela veut dire que la liaison est ok ensuite plein de print "message reçu" vont apparaitre ce qui veut dire qu'il reçoit bien les données

  • ensuite il faut vérifier que c'est données ce stock bien au bonne endroit dans la base de données pour cela il fau utiliser la commande suivante
    Commande
    cd /debug & sudo cat le fichier que vous voulez
  • Pour les étapes d'après, vous aurez besoin des commandes suivantes :
  • Commande Pour savoir l'organisation, on a fait :
     influx org list
    
  • Commande Pour savoir le bucket id, on a fait :
    influx bucket list --org <organisation>
    
    • Commande pour afficher les tokens déjà existants :
          influx auth list --org <organisation>
      

Configuration Grafana

  • Pour avoir accès à Grafana, il faut demander un compte avec les droits Administrateur à Pierre ou à Jean-Baptiste, une fois le compte crée se connecter à Grafana
  • une fois sur Grafana aller dans configuration et dans l'onglet "Data source" puis cliquer sur "add data source"
    Image
  • vous arrivez sur cette page ou il faut chercher le mon clé influx et prendre la source suivante.
    Image
  • ensuite, vous arrivez sur une page ou plusieurs informations sont demandé:
    Image
  • donner le nom que vous voulez a votre data source.
  • 1, dans le menu déroulant " Query Language" choisir Flux.
  • 2, Dans URL mettre celle qui est inscrit par défaut "http://localhost/8086" et ne pas toucher aux autre paramètre
  • 3, Vérifier que tout soit désactivé
  • 4, dans header mettre "Authorization" et dans value mettre votre Token de cet maniére, "token Votre_Token"
  • 5
    • Dans Organisation Mettre le nom de la base de donnée que vous utilisez
    • Dans Token mettre le même Token que vous avez mis en haut (juste le Token sans mettre devant "token")
    • Dans Bucket Mettre le nom du Bucket que vous utilisez
    • ne pas toucher au autre paramètre
  • /!\ ne jamais mettre le token admin
  • cliquer sûre "Save&test" cela doit afficher un message en vert
  • Après cela, il faut créer un dashboard pour se faire aller dans "Dashboard → manage"
    Image
  • crée le nouveau dashboard dans le dossier que vous souhaitez
  • une fois crée cliquer sur "add an empty panel" vous allez arriver sur une page avec un nouveau panel qu'il faut configurer
    Image
  • 1, mettre la data source que vous avez créé juste avant.
  • 2, écrire ou prendre le code flux pour permettre de sélectionner les bonnes données à visualiser
  • 3, choisir la bonne unité sur le bon axe
  • Après avoir effectué la configuration, vous devez avoir les données qui s'affichent sur le dashboard
  • si vous souhaitez configurer une alerte je vous conseille de suivre le tuto suivent lien

*Fin