# 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)