85 lines
2.5 KiB
Python
85 lines
2.5 KiB
Python
# meteo/station_config.py
|
|
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass
|
|
from typing import Tuple
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class SensorDefinition:
|
|
"""
|
|
Décrit un capteur individuel de la station météo, tel qu'il est stocké dans InfluxDB.
|
|
"""
|
|
|
|
name: str # nom logique dans nos fichiers (ex: "temperature")
|
|
measurement: str # nom du measurement InfluxDB (ex: "°C")
|
|
entity_id: str # valeur du tag `entity_id` (ex: "station_meteo_bresser_exterieur_temperature")
|
|
unit: str # unité humaine (ex: "°C", "%", "hPa")
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class StationConfig:
|
|
"""
|
|
Configuration complète de la station météo.
|
|
|
|
Pour l'instant, c'est simplement une liste immuable de capteurs.
|
|
"""
|
|
|
|
sensors: Tuple[SensorDefinition, ...]
|
|
|
|
|
|
def default_station_config() -> StationConfig:
|
|
"""
|
|
Retourne la configuration par défaut de la station météo Bresser extérieure.
|
|
|
|
Cette config est basée sur :
|
|
- les measurements (°, °C, %, hPa, km/h, lx, mm/h)
|
|
- les entity_id trouvés dans le bucket "weather".
|
|
"""
|
|
sensors = (
|
|
SensorDefinition(
|
|
name="temperature",
|
|
measurement="°C",
|
|
entity_id="station_meteo_bresser_exterieur_temperature",
|
|
unit="°C",
|
|
),
|
|
SensorDefinition(
|
|
name="humidity",
|
|
measurement="%",
|
|
entity_id="station_meteo_bresser_exterieur_humidite_relative",
|
|
unit="%",
|
|
),
|
|
SensorDefinition(
|
|
name="pressure",
|
|
measurement="hPa",
|
|
entity_id="station_meteo_bresser_exterieur_pression_atmospherique",
|
|
unit="hPa",
|
|
),
|
|
SensorDefinition(
|
|
name="illuminance",
|
|
measurement="lx",
|
|
entity_id="station_meteo_bresser_exterieur_luminance",
|
|
unit="lx",
|
|
),
|
|
SensorDefinition(
|
|
name="wind_speed",
|
|
measurement="km/h",
|
|
entity_id="station_meteo_bresser_exterieur_vitesse_du_vent",
|
|
unit="km/h",
|
|
),
|
|
SensorDefinition(
|
|
name="wind_direction",
|
|
measurement="°",
|
|
entity_id="station_meteo_bresser_exterieur_direction_du_vent",
|
|
unit="°",
|
|
),
|
|
SensorDefinition(
|
|
name="rain_rate",
|
|
measurement="mm/h",
|
|
entity_id="station_meteo_bresser_exterieur_precipitations",
|
|
unit="mm/h",
|
|
),
|
|
)
|
|
|
|
return StationConfig(sensors=sensors)
|