Giovanni Josserand 3daa2e6f83 Import from Gitlab
2026-06-19 10:05:00 +02:00
2026-06-19 10:05:00 +02:00
2026-06-19 10:05:00 +02:00
2026-06-19 10:05:00 +02:00
2026-06-19 10:05:00 +02:00
2026-06-19 10:05:00 +02:00
2026-06-19 10:05:00 +02:00
2026-06-19 10:05:00 +02:00

Intégration capteurs

Introduction

Ce projet possède trois modes :

  • devices : permet denregistrer un ou plusieurs nouveaux capteurs (devices).
  • telemetry : permet denregistrer des données de télémétrie sur un capteur donné.
  • history : permet d'enregistrer des données de télémétrie issue du Data INRAE sur un capteur donné.

Dans les trois cas, les opérations sont effectuées avec le compte ThingsBoard dont le nom correspond à la valeur de la variable denvironnement THINGSBOARD_USER_SITE (Bresle, Oir ou Scorff).

Des fichiers de tests sont accessibles sur le dossier de partage projets :

  • pour les devices : projets/BDPOISSON/Stage_Giovanni/Fichiers%20test/Appareils/
  • pour les telemetry : projets/BDPOISSON/Stage_Giovanni/Fichiers%20test/Temperatures/20230111-TEMPA-TEMP_BRE_01-BRESLE_Eu-21164191.txt
  • pour les history : projets/BDPOISSON/Stage_Giovanni/Fichiers%20test/Historiques/

Installation

Cloner le dépôt

Pour installer le projet sur votre serveur ou ordinateur, clonez le dépôt à l'endroit souhaitez :

git clone <adresse du dépôt>  
cd integration_capteurs  

Environnement virtuel

À la racine du projet, créez et activez un environnement virtuel :

python3 -m venv .venv source .venv/bin/activate # Linux/Mac # .\.venv\Scripts\activate # Windows`  

Installez ensuite les dépendances :

pip install -r requirements.txt  

Configuration

Variables d'environnements

  1. Copiez le fichier .env.example en .env à la racine du projet.
  2. Remplissez les variables suivantes dans le fichier .env :
Variables Explications
THINGSBOARD_URL URL de l'outil ThingsBoard, terminée par /api/.
THINGSBOARD_USER_SITE Nom du bassin versant de l'utilisateur ThingsBoard (Bresle, Scorff ou Oir)
DB_HOST Adresse du serveur de base de données.
DB_USERNAME Nom d'utilisateur pour la connection à la base de données.
DB_PASSWORD Mot de passe de cet utilisateur.
DB_PORT Port de la base de données.
DB_DATABASE Nom de la base de données à utiliser.
SAVE_WHAT Ce que vous souhaitez sauvegarder (devices pour un capteur, telemetry pour des données ou history pour des données historiques)

Conventions

Fichier de données de télémétrie

Le nom du fichier doit respecter le format suivant : date_du_releve-type_de_donnee-code_secteur-libelle_secteur-numero_serie.txt

Par exemple : 20261025-TEMPA-TEMP_BRE_01-BRESLE_Eu-32268041.txt

Si vous devez ajouter des informations supplémentaires, placer-les à la fin du nom de fichier, après le numéro de série.

Pour plus de détails concernant les conventions de fichier de données, veuillez vous référer au guide utilisateur.

Pour les fichiers de télémétrie, la première ligne du fichier doit contenir au moins un caractère avant la ligne listant les noms de colonnes. Cette ligne est utilisée par le script lors de l'import des données.

Fichier de capteur

Les fichiers de capteurs doivent respecter les contraintes suivantes afin dêtre correctement interprétés par le script :

  • Le séparateur de valeurs est le point-virgule ( ; ).
  • Le fichier peux être au format .csv ou .txt.
  • Le fichier doit contenir les colonnes suivantes dans le même ordre :
Ordre Nom Descritpion Optionnel
1 sector_code Numéro du secteur Non
2 serial_number Numéro de série du capteur Non
3 data_type Type de données mesuré (voir le guide utilisateur pour prendre connaissance de la liste des type de données) Non
4 sector_wording Libellé du secteur Non
5 description Peux contenir ce que vous souhaitez comme par exemple le ou les projets/expérimentations associés au capteur avec les dates correspondantes. Oui

Fichier de données historique

Les fichiers de données historique doivent respecter les contraintes suivantes afin dêtre correctement interprétés par le script :

  • Nom de fichier au format : code_secteur-type_de_donnee.txt
  • Que toutes les données d'un fichier ne correspondent qu'à un seul et unique secteur.
  • Que la date et l'heure soit dans 2 colonnes différentes.

Lancement du projet

Si vous n'avez pas activé votre environnement virtuel :

source .venv/bin/activate # Linux/Mac # .\.venv\Scripts\activate # Windows`  

Tout en étant à la racine du projet, exécutez le script Python :

python3 main.py  

Visualisation

Visualiser des données de télémétrie

Lorsque SAVE_WHAT=telemetry, le script envoie des données vers un capteur existant dans ThingsBoard. Cependant si le capteur n'existe pas encore sur ThingsBoard, veuillez commencer par le créer.

  1. Connectez-vous à votre instance ThingsBoard.
  2. Accédez au menu Devices.
  3. Sélectionnez le capteur concerné (nom : numéro_secteur-numéro_inventaire).
  4. Ouvrez longlet Latest telemetry.

Vous y verrez les dernières valeurs envoyées par le script.

Pour repartir de zéro :

  1. Allez dans le device
  2. Ouvrez Latest telemetry.
  3. Supprimez toutes les entrées via licône de poubelle.
  4. Relancez le script pour vérifier que de nouvelles données apparaissent.

Visualiser des capteurs

Lorsque SAVE_WHAT=devices, le script crée automatiquement des capteurs dans ThingsBoard.

  1. Connectez-vous à votre instance ThingsBoard.
  2. Accédez au menu Devices.
  3. Les nouveaux capteurs apparaissent automatiquement dans le groupe correspondant à lutilisateur (THINGSBOARD_USER_SITE) avec un nom au format : numéro_secteur-numéro_inventaire

Visualiser des données historique

Lorsque SAVE_WHAT=history, le script fonctionne presque de la même manière qu'en mode telemetry. Il envoie les données vers un capteur existant dans ThingsBoard. Cependant si le capteur n'existe pas encore sur ThingsBoard, veuillez commencer par le créer.

  1. Connectez-vous à votre instance ThingsBoard.
  2. Accédez au menu Devices.
  3. Sélectionnez le capteur concerné (nom : numéro_secteur-numéro_inventaire).
  4. Ouvrez longlet Latest telemetry.

Vous y verrez les dernières valeurs envoyées par le script.

S
Description
No description provided
Readme 37 KiB
Languages
Python 100%