Intégration capteurs
Introduction
Ce projet possède trois modes :
- devices : permet d’enregistrer un ou plusieurs nouveaux capteurs (devices).
- telemetry : permet d’enregistrer 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 d’environnement 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
- Copiez le fichier
.env.exampleen.envà la racine du projet. - 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.
- Connectez-vous à votre instance ThingsBoard.
- Accédez au menu
Devices. - Sélectionnez le capteur concerné (nom :
numéro_secteur-numéro_inventaire). - Ouvrez l’onglet
Latest telemetry.
Vous y verrez les dernières valeurs envoyées par le script.
Pour repartir de zéro :
- Allez dans le device
- Ouvrez
Latest telemetry. - Supprimez toutes les entrées via l’icône de poubelle.
- 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.
- Connectez-vous à votre instance ThingsBoard.
- Accédez au menu
Devices. - Les nouveaux capteurs apparaissent automatiquement dans le groupe correspondant à l’utilisateur (
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.
- Connectez-vous à votre instance ThingsBoard.
- Accédez au menu
Devices. - Sélectionnez le capteur concerné (nom :
numéro_secteur-numéro_inventaire). - Ouvrez l’onglet
Latest telemetry.
Vous y verrez les dernières valeurs envoyées par le script.