208 lines
5.1 KiB
Markdown
208 lines
5.1 KiB
Markdown
# Installation, configuration et tests
|
|
|
|
## Installation de l'environnement de base
|
|
|
|
Après avoir cloné le dépôt :
|
|
|
|
```shell
|
|
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
|
|
|
|
```shell
|
|
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
|
|
|
|
```shell
|
|
python "docs/01 - Installation, configuration et tests/scripts/test_influx_connection.py"
|
|
```
|
|
|
|
```output
|
|
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 :
|
|
|
|
```shell
|
|
python "docs/01 - Installation, configuration et tests/scripts/test_influx_schema.py"
|
|
```
|
|
|
|
```output
|
|
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 :
|
|
|
|
```shell
|
|
python "docs/01 - Installation, configuration et tests/scripts/test_influx_entities.py"
|
|
```
|
|
|
|
```output
|
|
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.
|