OSTEC-Flex Module¶
Type: OSTEC_FLEX
Category: Flexibility
Maturity: DEVELOPMENT 🟡
Two-mode OSTEC for flexibility market participation:
OFFER_CURVES— generates flexibility offer curves to submit to a market operatorDISPATCH— calculates setpoints to dispatch flexible resources when an offer has been activated
Both modes support REC-AGG (energy sharing within the community) or AGG_HEDGE_IOT (no sharing, used for the Hedge-IoT project).
Configuration Schema¶
| Field | Type | Default | Required | Description |
|---|---|---|---|---|
operation_mode |
string | — | Yes | OFFER_CURVES · DISPATCH |
energy_sharing_mode |
string | — | Yes | REC_AGG · AGG_HEDGE_IOT |
flexibility_resources |
UUID[] | — | No | Resource IDs available for flexibility |
solver |
string | "CPLEX" |
No | CPLEX · GUROBI · CBC |
l_extra |
number | 10 |
No | Extra penalty weight |
optimization_timeout |
integer | 300 |
No | Max solver time in seconds |
offer_price_min |
number | 0.0 |
No | Min offer price (€/kWh) — OFFER_CURVES only |
offer_price_max |
number | 0.5 |
No | Max offer price (€/kWh) — OFFER_CURVES only |
offer_curve_points |
integer | 10 |
No | Number of price/quantity points in the offer curve |
{
"operation_mode": "OFFER_CURVES",
"energy_sharing_mode": "REC_AGG",
"offer_price_min": 0.0,
"offer_price_max": 0.5,
"offer_curve_points": 10,
"solver": "CPLEX"
}
Activation¶
curl -X POST \
https://<host>/core/api/communities/{community_id}/energy_management/configs \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"module_type": "OSTEC_FLEX",
"horizon": 24,
"delta_t": 1.0,
"config_data": {
"operation_mode": "OFFER_CURVES",
"energy_sharing_mode": "REC_AGG",
"offer_price_min": 0.0,
"offer_price_max": 0.5
}
}'
curl -X POST \
https://<host>/core/api/communities/{community_id}/energy_management/configs \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"module_type": "OSTEC_FLEX",
"horizon": 24,
"delta_t": 1.0,
"config_data": {
"operation_mode": "DISPATCH",
"energy_sharing_mode": "REC_AGG",
"solver": "CPLEX"
}
}'