231 lines
10 KiB
Markdown
231 lines
10 KiB
Markdown
# 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
|
||
```
|