1
2025-11-19 17:01:45 +01:00

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 InfluxDB2
  • INFLUXDB_ORG : l'organisation à laquelle le token est rattaché
  • INFLUXDB_BUCKET : le nom du bucket dans lequel les données sont stockées
  • STATION_LATITUDE : latitude GPS de la station météo
  • STATION_LONGITUDE : longitude GPS de la station météo
  • STATION_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.