from __future__ import annotations import os from pathlib import Path def _bool(name: str, default: bool) -> bool: value = os.getenv(name) return default if value is None else value.lower() in {"1", "true", "yes", "on"} def _prefix(value: str) -> str: value = value.strip() if not value or value == "/": return "" return "/" + value.strip("/") class Config: URL_PREFIX = _prefix(os.getenv("URL_PREFIX", "")) RRD_FOLDER = Path(os.getenv("RRD_FOLDER", "./rrd")).expanduser().resolve() LOG_FILE = Path( os.getenv("LOG_FILE", str(RRD_FOLDER / "netatmo_service.log")) ).expanduser().resolve() LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO").upper() LOG_MAX_BYTES = int(os.getenv("LOG_MAX_BYTES", str(5 * 1024 * 1024))) LOG_BACKUP_COUNT = int(os.getenv("LOG_BACKUP_COUNT", "5")) NETATMO_TOKEN_FILE = Path( os.getenv("NETATMO_TOKEN_FILE", str(RRD_FOLDER / "netatmo_tokens.json")) ).expanduser().resolve() GRAPH_WIDTH = int(os.getenv("GRAPH_WIDTH", "900")) GRAPH_HEIGHT = int(os.getenv("GRAPH_HEIGHT", "240")) POLL_INTERVAL = int(os.getenv("POLL_INTERVAL", "600")) START_COLLECTOR = _bool("START_COLLECTOR", True) NETATMO_CLIENT_ID = os.getenv("NETATMO_CLIENT_ID", "") NETATMO_CLIENT_SECRET = os.getenv("NETATMO_CLIENT_SECRET", "") NETATMO_REFRESH_TOKEN = os.getenv("NETATMO_REFRESH_TOKEN", "") NETATMO_ACCESS_TOKEN = os.getenv("NETATMO_ACCESS_TOKEN", "") NETATMO_DEVICE_ID = os.getenv("NETATMO_DEVICE_ID", "") NETATMO_TOKEN_URL = os.getenv("NETATMO_TOKEN_URL", "https://api.netatmo.com/oauth2/token") NETATMO_STATIONS_URL = os.getenv( "NETATMO_STATIONS_URL", "https://api.netatmo.com/api/getstationsdata" ) MODULE_OUTDOOR = os.getenv("MODULE_OUTDOOR", "Outdoor") MODULE_WIND = os.getenv("MODULE_WIND", "Wind") MODULE_BEDROOM = os.getenv("MODULE_BEDROOM", "Bedroom") MODULE_STUDY = os.getenv("MODULE_STUDY", "Study") MODULE_LIVING = os.getenv("MODULE_LIVING", "Living")