5.1 KiB
5.1 KiB
Installation, configuration et tests
Installation de l'environnement de base
Après avoir cloné le dépôt :
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txt
python -c "import pandas, influxdb_client, sklearn; print('OK')"
- On installe l'environnement virtuel de python
- On entre dans cet environnement
- On met à jour le gestionnaire de paquets pip
- On installe les dépendances définies dans
requirements.txt - On vérifie que les dépendances sont correctement installées
Configuration
cp .env.example .env
On copie le fichier de configuration d'exemple, puis on l'ouvre pour l'adapter à notre cas.
INFLUXDB_URL: URL de l'api du serveur InfluxDB2 (cela inclue probablement le port 8086)INFLUXDB_TOKEN: le jeton d'authentification à créer dans votre compte InfluxDB2INFLUXDB_ORG: l'organisation à laquelle le token est rattachéINFLUXDB_BUCKET: le nom du bucket dans lequel les données sont stockéesSTATION_LATITUDE: latitude GPS de la station météoSTATION_LONGITUDE: longitude GPS de la station météoSTATION_ELEVATION: altitude de la station météo
Tests de l'environnement de travail
python "docs/01 - Installation, configuration et tests/scripts/test_influx_connection.py"
Configuration InfluxDB chargée :
URL : http://10.0.3.2:8086
Org : Dern
Bucket : weather
→ Ping du serveur InfluxDB…
✔ Ping OK
→ Requête de test sur le bucket…
✔ Requête de test réussie : 18 table(s), 58 enregistrement(s) trouvés.
Exemple de point :
time : 2025-11-16 22:30:50.263360+00:00
measurement : %
field : device_class_str
value : humidity
Ensuite, on peut demander à InfluxDB de nous détailler ce qu'il stocke :
python "docs/01 - Installation, configuration et tests/scripts/test_influx_schema.py"
Bucket InfluxDB : weather
Measurements disponibles :
- %
- hPa
- km/h
- lx
- mm/h
- °
- °C
Champs pour measurement « % » :
- device_class_str (type: unknown)
- friendly_name_str (type: unknown)
- state_class_str (type: unknown)
- value (type: unknown)
Champs pour measurement « hPa » :
- device_class_str (type: unknown)
- friendly_name_str (type: unknown)
- state_class_str (type: unknown)
- value (type: unknown)
Champs pour measurement « km/h » :
- device_class_str (type: unknown)
- friendly_name_str (type: unknown)
- state_class_str (type: unknown)
- value (type: unknown)
Champs pour measurement « lx » :
- device_class_str (type: unknown)
- friendly_name_str (type: unknown)
- value (type: unknown)
Champs pour measurement « mm/h » :
- device_class_str (type: unknown)
- friendly_name_str (type: unknown)
- state_class_str (type: unknown)
- value (type: unknown)
Champs pour measurement « ° » :
- friendly_name_str (type: unknown)
- value (type: unknown)
Champs pour measurement « °C » :
- device_class_str (type: unknown)
- friendly_name_str (type: unknown)
- state_class_str (type: unknown)
- value (type: unknown)
Mais pour obtenir les données dont on a besoin, il faut aussi connaitre les entités manipulées par Influx :
python "docs/01 - Installation, configuration et tests/scripts/test_influx_entities.py"
Bucket InfluxDB : weather
Measurement « % »
Tag keys :
- _field
- _measurement
- _start
- _stop
- domain
- entity_id
entity_id possibles :
- station_meteo_bresser_exterieur_humidite_relative
Measurement « hPa »
Tag keys :
- _field
- _measurement
- _start
- _stop
- domain
- entity_id
entity_id possibles :
- station_meteo_bresser_exterieur_pression_atmospherique
Measurement « km/h »
Tag keys :
- _field
- _measurement
- _start
- _stop
- domain
- entity_id
entity_id possibles :
- station_meteo_bresser_exterieur_vitesse_du_vent
Measurement « lx »
Tag keys :
- _field
- _measurement
- _start
- _stop
- domain
- entity_id
entity_id possibles :
- station_meteo_bresser_exterieur_luminance
Measurement « mm/h »
Tag keys :
- _field
- _measurement
- _start
- _stop
- domain
- entity_id
entity_id possibles :
- station_meteo_bresser_exterieur_precipitations
Measurement « ° »
Tag keys :
- _field
- _measurement
- _start
- _stop
- domain
- entity_id
entity_id possibles :
- station_meteo_bresser_exterieur_direction_du_vent
Measurement « °C »
Tag keys :
- _field
- _measurement
- _start
- _stop
- domain
- entity_id
entity_id possibles :
- station_meteo_bresser_exterieur_temperature
Ces informations combinées se retrouvent dans le fichier meteo/station_config.py et dans meteo/variables.py.
On aurait pu se passer de ces scripts pour déterminer la structure des données stockées dans Influx, mais ils évitent de se reposer sur des intuitions : ici, on demande à Influx de nous donner les informations dont on va avoir besoin au lieu de les deviner.