Aller au contenu principal

Configuration Mode Client

Variables d'environnement​

Le mode client lit le fichier .env à la racine du projet, que Docker Compose charge automatiquement (cp .env.local-client.example .env). L'environnement de développement (make up, make dev) utilise .env.local-client.


Configuration obligatoire​

Credentials API MyElectricalData​

# Client ID de votre compte (format: cli_xxxxxxxxx)
MED_CLIENT_ID=cli_xxxxxxxxxxxxxxxxxxxxxxxxx

# Client Secret de votre compte
MED_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Où trouver ces valeurs ?

  1. Connectez-vous à www.v2.myelectricaldata.fr
  2. Allez dans Paramètres > API
  3. Copiez les valeurs Client ID et Client Secret

Configuration optionnelle​

Réseau et ports​

# Port du frontend (défaut: 8100)
CLIENT_FRONTEND_PORT=8100

# Port du backend API (défaut: 8181)
CLIENT_BACKEND_PORT=8181

# Port PostgreSQL interne, docker-compose.yml seulement (défaut: 5433)
CLIENT_POSTGRES_PORT=5433

Timezone​

# Timezone pour les dates et le scheduler (défaut: Europe/Paris)
TZ=Europe/Paris

Base de données​

Le backend lit DATABASE_URL, que chaque fichier compose fixe :

ComposeDATABASE_URL
docker-compose.sqlite.yml (recommandé)sqlite+aiosqlite:////app/data/myelectricaldata.db (fichier dans le volume myelectricaldata_data)
docker-compose.ymlpostgresql+asyncpg://…@postgres:5432/…, construite depuis les variables ci-dessous

En SQLite, aucune variable de base n'est à renseigner. Le backend crée le fichier et son schéma au premier démarrage, et règle SQLite pour les écritures simultanées du scheduler et de l'interface (journal WAL, attente de 30 s sur un verrou).

Variables propres à docker-compose.yml :

# Credentials PostgreSQL local (défaut: client/client)
POSTGRES_USER=client
POSTGRES_PASSWORD=client
POSTGRES_DB=client

# Tuning PostgreSQL (pour Raspberry Pi)
POSTGRES_SHARED_BUFFERS=128MB
POSTGRES_WORK_MEM=8MB

Scheduler​

Le planning n'est pas configurable : il suit les heures de publication d'Enedis et de RTE (heure de TZ), pour une vingtaine d'appels par jour à la passerelle.

SynchronisationQuand
Données des PDL (conso, production, puissance max, contrat, adresse)au démarrage, toutes les 30 min de 6h à 9h30, puis 12h et 18h
Exports planifiés (Home Assistant, MQTT, VictoriaMetrics)après chaque synchronisation des PDL, et à leur propre intervalle
Tempotoutes les heures de 7h à 23h, tant que la couleur du lendemain est inconnue
EcoWatt17h, vendredi 12h15, et 8h30 / 20h30 si J+3 est incomplet
Consommation France8h, 14h, 20h
Prévisions de production9h, 21h

Une synchronisation des PDL encore en cours au créneau suivant n'est pas relancée en parallèle.

Hôtes acceptés​

# Hôtes acceptés dans l'en-tête Host, séparés par des virgules (`*.domaine` accepté).
# Vide (défaut) : tous les hôtes, pour joindre l'interface par une IP du réseau local ou un domaine perso.
ALLOWED_HOSTS=med.maison.lan,192.168.1.10

La sonde de santé /ping n'est pas soumise à ce contrôle : le healthcheck Docker (localhost) et les sondes Kubernetes (IP du pod) continuent de répondre.

Valeurs par défaut des formulaires d'export​

Variables du conteneur frontend, lues au démarrage. Elles ne servent qu'à préremplir une nouvelle configuration d'export : une configuration enregistrée les remplace.

VITE_DEFAULT_MQTT_BROKER=mqtt.maison.lan
VITE_DEFAULT_MQTT_PORT=1883
VITE_DEFAULT_TOPIC_PREFIX=myelectricaldata # MQTT générique
VITE_DEFAULT_ENTITY_PREFIX=myelectricaldata # Home Assistant (topics et unique_id des entités)
VITE_DEFAULT_DISCOVERY_PREFIX=homeassistant
VITE_DEFAULT_HA_URL=http://homeassistant.local:8123
VITE_DEFAULT_VM_URL=http://victoriametrics:8428

Le préfixe d'entité Home Assistant (entity_prefix) permet à deux instances de publier sur le même Home Assistant sans collision. Le changer sur une configuration existante crée de nouvelles entités (sans l'historique des anciennes) et laisse les anciennes configurations retenues dans le broker. Il ne peut contenir ni espace, ni /, # ou +.

Mode debug​

# Activer les logs détaillés (défaut: false)
DEBUG=true

# Logs SQL (défaut: false)
DEBUG_SQL=true

Configuration des exports​

Home Assistant​

# URL de votre instance Home Assistant
HOMEASSISTANT_URL=http://homeassistant.local:8123

# Token d'accès longue durée
# Créer dans : Profil > Tokens d'accès longue durée
HOMEASSISTANT_TOKEN=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...

# Activer l'export automatique (défaut: false)
HOMEASSISTANT_ENABLED=false

# Intervalle d'export en minutes (défaut: 60)
HOMEASSISTANT_INTERVAL=60

MQTT​

# URL du broker MQTT
MQTT_BROKER=mqtt://localhost:1883

# Ou avec authentification
MQTT_BROKER=mqtt://user:password@localhost:1883

# Topic de base (défaut: myelectricaldata)
MQTT_TOPIC_PREFIX=myelectricaldata

# Activer l'export automatique (défaut: false)
MQTT_ENABLED=false

# QoS level (défaut: 1)
MQTT_QOS=1

# Retain messages (défaut: true)
MQTT_RETAIN=true

VictoriaMetrics​

# URL de l'API d'import
VICTORIAMETRICS_URL=http://localhost:8428

# Headers additionnels (format JSON)
VICTORIAMETRICS_HEADERS={"Authorization": "Bearer token123"}

# Activer l'export automatique (défaut: false)
VICTORIAMETRICS_ENABLED=false

Jeedom​

# URL de votre instance Jeedom
JEEDOM_URL=http://jeedom.local

# Clé API Jeedom
# Trouver dans : Réglages > Système > Configuration > API
JEEDOM_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

# Activer l'export automatique (défaut: false)
JEEDOM_ENABLED=false

Exemple complet​

# === OBLIGATOIRE ===
MED_CLIENT_ID=cli_abc123def456ghi789
MED_CLIENT_SECRET=jkl012mno345pqr678stu901vwx234yz

# === RÉSEAU ===
CLIENT_FRONTEND_PORT=8100
CLIENT_BACKEND_PORT=8181
TZ=Europe/Paris

# === SCHEDULER ===
SYNC_HOUR=6
SYNC_MINUTE=0
SCHEDULER_ENABLED=true

# === EXPORTS ===

# Home Assistant
HOMEASSISTANT_URL=http://192.168.1.100:8123
HOMEASSISTANT_TOKEN=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...
HOMEASSISTANT_ENABLED=true
HOMEASSISTANT_INTERVAL=60

# MQTT
MQTT_BROKER=mqtt://mosquitto:1883
MQTT_TOPIC_PREFIX=energy
MQTT_ENABLED=true

# VictoriaMetrics (désactivé)
VICTORIAMETRICS_URL=http://victoriametrics:8428
VICTORIAMETRICS_ENABLED=false

# Jeedom (désactivé)
JEEDOM_URL=http://jeedom.local
JEEDOM_API_KEY=xxx
JEEDOM_ENABLED=false

# === DEBUG ===
DEBUG=false
DEBUG_SQL=false

Configuration via l'interface​

La plupart des paramètres d'export peuvent également être configurés depuis l'interface web :

  1. Accéder à http://localhost:8100/export
  2. Configurer chaque destination dans les onglets dédiés
  3. Tester la connexion avant d'activer

Les configurations sauvegardées via l'interface sont stockées dans la table export_configs de la base locale et prennent le pas sur les variables d'environnement.


Priorité des configurations​

1. Interface web (export_configs)     ← Priorité haute
2. Variables d'environnement (.env)
3. Valeurs par défaut ← Priorité basse

Validation de la configuration​

Vérifier les variables chargées​

docker compose -f docker-compose.yml exec backend \
python -c "from config.settings import settings; print(settings.model_dump())"

Tester la connexion à l'API​

docker compose -f docker-compose.yml exec backend \
python -c "
import asyncio
from adapters.myelectricaldata import MyElectricalDataAdapter

async def test():
adapter = MyElectricalDataAdapter()
pdls = await adapter.get_pdls()
print(f'PDLs trouvés: {len(pdls)}')
for pdl in pdls:
print(f' - {pdl.usage_point_id}')

asyncio.run(test())
"

Tester les exports​

# Test Home Assistant
docker compose -f docker-compose.yml exec backend \
python -c "
import asyncio
from services.exporters.home_assistant import HomeAssistantExporter

async def test():
exporter = HomeAssistantExporter()
result = await exporter.test_connection()
print(f'Connexion: {\"OK\" if result.success else \"ERREUR\"}')
if not result.success:
print(f'Message: {result.error}')

asyncio.run(test())
"

Rechargement de la configuration​

Après modification de .env, recréer le backend (restart ne relit pas le fichier) :

docker compose -f docker-compose.yml up -d backend

Les modifications de configuration via l'interface web sont prises en compte immédiatement, sans redémarrage.