Files
cariflex/docs/ems_operations.md

231 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Cariflex - EMS Operations Guide
> Guide d'opération du Energy Management System Cariflex
## 1. Architecture EMS
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ CARIFLEX EMS │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────────────────────────────────────────────────────────┐ │
│ │ DATA INGESTION │ │
│ │ │ │
│ │ Sources: │ │
│ │ • Cariflex Simulator (API REST, 30s interval) │ │
│ │ • MQTT Broker (cariflex-mqtt:1886) │ │
│ │ • CitrineOS (OCPP 2.0.1) │ │
│ │ • Weather API (Solcast) │ │
│ │ • EPEX SPOT (Day-ahead prices) │ │
│ │ │ │
│ │ Workers: │ │
│ │ • cariflex-ingestion (RQ worker) │ │
│ │ • fm-worker-zedlkc (forecasting) │ │
│ │ • 235f252af21e4b63b412dfd6016c72d8 (scheduling) │ │
│ └──────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────────────────────┐ │
│ │ FORECASTING │ │
│ │ │ │
│ │ Model: TrainPredictPipeline (autoregressive) │ │
│ │ Training window: 30 days │ │
│ │ Prediction window: 24 hours │ │
│ │ Resolution: 5 minutes │ │
│ │ │ │
│ │ Sensors: │ │
│ │ • PV (41-50): 82 forecasts each │ │
│ │ • Battery (51-60): SOC forecasts │ │
│ │ • EV Charger (61-70): Power forecasts │ │
│ │ • EV (71-80): SOC forecasts │ │
│ └──────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────────────────────┐ │
│ │ SCHEDULING │ │
│ │ │ │
│ │ Scheduler: StorageScheduler │ │
│ │ Optimization: Linear programming │ │
│ │ Duration: 24 hours │ │
│ │ Resolution: 5 minutes │ │
│ │ │ │
│ │ Flex Model: │ │
│ │ • soc_min: 10 kWh (batteries), 15 kWh (EVs) │ │
│ │ • soc_max: 100 kWh (batteries), 75 kWh (EVs) │ │
│ │ • power_capacity: 50 kW (batteries), 11 kW (EVs) │ │
│ │ • charging_efficiency: 0.95 │ │
│ │ • discharging_efficiency: 0.95 │ │
│ └──────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
```
## 2. Opérations Quotidiennes
### 2.1 Démarrage des Services
```bash
# 1. Vérifier que FlexMeasures tourne
docker ps | grep flexmeasures
# 2. Vérifier que le worker RQ tourne
docker exec flexmeasures-worker ps aux | grep rq
# 3. Vérifier que le simulateur tourne
ps aux | grep cariflex_simulator
# 4. Vérifier les données en temps réel
docker exec flexmeasures-db psql -U flexmeasures -d flexmeasures -c "
SELECT MAX(event_start) FROM timed_belief;
"
```
### 2.2 Forecasting
```bash
# Générer les forecasts pour tous les capteurs PV
docker exec flexmeasures-server bash -c "
cd /app && for sensor in \$(seq 41 50); do
.venv/bin/flexmeasures add forecasts --sensor \$sensor --to-date \$(date -u -d '+24 hours' +'%Y-%m-%dT%H:%M:%S+00:00')
done
"
# Vérifier les forecasts
docker exec flexmeasures-db psql -U flexmeasures -d flexmeasures -c "
SELECT COUNT(*) FROM timed_belief WHERE source_id IN (SELECT id FROM data_source WHERE name LIKE '%forecast%');
"
```
### 2.3 Scheduling
```bash
# Créer les schedules pour les batteries
bash /home/eric/cariflex/scripts/fm_scheduling.sh
# Vérifier les schedules
docker exec flexmeasures-db psql -U flexmeasures -d flexmeasures -c "
SELECT s.name, COUNT(t.id) as schedule_points
FROM sensor s
JOIN timed_belief t ON t.sensor_id = s.id
WHERE s.id BETWEEN 51 AND 60
AND t.source_id IN (SELECT id FROM data_source WHERE name LIKE '%schedule%')
GROUP BY s.name;
"
```
### 2.4 Monitoring
```bash
# Vérifier les queues Redis
docker exec flexmeasures-redis redis-cli -a Digitribe972 SMEMBERS rq:workers
# Vérifier les logs du simulateur
tail -f /tmp/simulator.log
# Vérifier les logs du worker FM
docker logs -f flexmeasures-worker --tail 50
```
## 3. Commandes Utiles
### 3.1 Gestion des Workers
```bash
# Lancer un worker RQ pour l'ingestion
docker exec -d flexmeasures-worker bash -c "
cd /app && .venv/bin/flexmeasures jobs run-worker --queue ingestion --name cariflex-ingestion
"
# Lancer un worker RQ pour le forecasting
docker exec -d flexmeasures-worker bash -c "
cd /app && .venv/bin/flexmeasures jobs run-worker --queue forecasting --name cariflex-forecast
"
# Lancer un worker RQ pour le scheduling
docker exec -d flexmeasures-worker bash -c "
cd /app && .venv/bin/flexmeasures jobs run-worker --queue scheduling --name cariflex-scheduling
"
```
### 3.2 Gestion du Simulateur
```bash
# Démarrer le simulateur
bash /home/eric/cariflex/scripts/start_simulator.sh
# Arrêter le simulateur
pkill -f cariflex_simulator
# Vérifier le statut
ps aux | grep cariflex_simulator
```
### 3.3 Nettoyage
```bash
# Nettoyer les anciens workers RQ
docker exec flexmeasures-redis redis-cli -a Digitribe972 DEL rq:workers
# Nettoyer les anciennes données (plus de 30 jours)
docker exec flexmeasures-db psql -U flexmeasures -d flexmeasures -c "
DELETE FROM timed_belief WHERE event_start < NOW() - INTERVAL '30 days';
"
```
## 4. Métriques et KPIs
### 4.1 Données d'Ingestion
- **Fréquence** : 30 secondes
- **Capteurs** : 40 (10 PV, 10 Bat, 10 Chg, 10 EV)
- **Données/jour** : ~115,000 beliefs
### 4.2 Forecasting
- **Fréquence** : Quotidien (cron)
- **Horizon** : 24 heures
- **Résolution** : 5 minutes
- **Forecasts/jour** : 820 (82 per sensor × 10 sensors)
### 4.3 Scheduling
- **Fréquence** : Quotidien ou sur demande
- **Horizon** : 24 hours
- **Résolution** : 5 minutes
- **Schedules/jour** : 20 (10 batteries + 10 EVs)
## 5. Dépannage
### 5.1 Le simulateur n'envoie plus de données
```bash
# Vérifier le processus
ps aux | grep cariflex_simulator
# Redémarrer
pkill -f cariflex_simulator
bash /home/eric/cariflex/scripts/start_simulator.sh
# Vérifier les logs
tail -f /tmp/simulator.log
```
### 5.2 Le worker RQ ne traite pas les jobs
```bash
# Vérifier les workers
docker exec flexmeasures-redis redis-cli -a Digitribe972 SMEMBERS rq:workers
# Redémarrer le worker
docker exec -d flexmeasures-worker bash -c "
cd /app && .venv/bin/flexmeasures jobs run-worker --queue ingestion --name cariflex-ingestion
"
```
### 5.3 Les données ne s'affichent pas dans Grafana
```bash
# Vérifier la connexion DB
docker exec flexmeasures-db psql -U flexmeasures -d flexmeasures -c "SELECT 1;"
# Vérifier les données récentes
docker exec flexmeasures-db psql -U flexmeasures -d flexmeasures -c "
SELECT MAX(event_start) FROM timed_belief;
"
# Vérifier le datasource Grafana
curl -s -u admin:admin "http://localhost:3001/api/datasources" | python3 -m json.tool | head -20
```