From ecd382fa74f32c900de77071ae9cabc66b6fc7a1 Mon Sep 17 00:00:00 2001 From: Eric F Date: Mon, 8 Jun 2026 17:37:11 -0400 Subject: [PATCH] Add EMS automation script, Grid Singularity installs, FM branding complete --- scripts/cariflex_ems_automation.sh | 63 ++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 scripts/cariflex_ems_automation.sh diff --git a/scripts/cariflex_ems_automation.sh b/scripts/cariflex_ems_automation.sh new file mode 100644 index 0000000..6a147f0 --- /dev/null +++ b/scripts/cariflex_ems_automation.sh @@ -0,0 +1,63 @@ +#!/bin/bash +# Cariflex - FlexMeasures EMS Automation Script +# This script runs forecasting, scheduling, and ingestion tasks + +FM_HOST="https://cariflex.digitribe.fr" +FM_EMAIL="admin@digitribe.fr" +FM_PASSWORD="Digitribe972" + +echo "=== Cariflex EMS Automation ===" +echo "Date: $(date)" + +# 1. FORECASTING - Generate forecasts for all PV sensors (41-50) +echo "" +echo "=== 1. Forecasting PV sensors ===" +for sensor in $(seq 41 50); do + echo " Forecasting sensor $sensor..." + docker exec flexmeasures-server bash -c " + cd /app && .venv/bin/flexmeasures add forecasts \ + --sensor $sensor \ + --to-date \$(date -u -d '+24 hours' +'%Y-%m-%dT%H:%M:%S+00:00') \ + 2>&1 | grep -E 'Successfully|Error' | head -1 + " 2>/dev/null +done + +# 2. SCHEDULING - Create schedules for batteries (51-60) +echo "" +echo "=== 2. Scheduling Batteries ===" +for sensor in $(seq 51 60); do + echo " Scheduling sensor $sensor..." + # Get the schedule from FM API + SCHEDULE=$(curl -sk -X POST "$FM_HOST/api/v3_0/sensors/$sensor/schedules/trigger" \ + -H "Content-Type: application/json" \ + -u "$FM_EMAIL:$FM_PASSWORD" \ + -d '{ + "start": "'"$(date -u +'%Y-%m-%dT%H:%M:%S+00:00')"'", + "duration": "PT24H", + "flex_model": { + "soc-min": "0.1 kWh", + "soc-max": "100 kWh", + "power-capacity": "50 kW" + } + }' 2>/dev/null) + echo " Response: $(echo $SCHEDULE | python3 -c "import json,sys; d=json.load(sys.stdin); print(d.get('message','?'))" 2>/dev/null)" +done + +# 3. INGESTION - Check sensor data status +echo "" +echo "=== 3. Ingestion Status ===" +docker exec flexmeasures-db psql -U flexmeasures -d flexmeasures -c " +SELECT + s.name as sensor, + COUNT(t.id) as data_points, + MAX(t.event_start) as latest_data +FROM sensor s +LEFT JOIN timed_belief t ON t.sensor_id = s.id +WHERE s.id BETWEEN 41 AND 80 +GROUP BY s.name +ORDER BY s.id +LIMIT 10; +" 2>/dev/null + +echo "" +echo "=== EMS Automation Complete ==="