Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
8998ce9
cli: create toy accounts with kW-scale units
BelhsanHmida Jun 4, 2026
74fafb4
cli/tests: cover kW-scale toy account data
BelhsanHmida Jun 4, 2026
360bac5
ci: use kW-scale toy tutorial inputs
BelhsanHmida Jun 4, 2026
f0be0ca
docs/scripts: run toy tutorials with kW-scale data
BelhsanHmida Jun 4, 2026
9fae10c
docs/tutorial: show battery scheduling in kW units
BelhsanHmida Jun 4, 2026
9f7a6f9
docs/tutorial: align follow-on examples with kW units
BelhsanHmida Jun 4, 2026
1aa0426
docs: add changelog entry
BelhsanHmida Jun 5, 2026
03bc4da
docs/tutorial: import toy prices as EUR per MWh
BelhsanHmida Jun 5, 2026
e4a89c8
ci: import toy prices as EUR per MWh
BelhsanHmida Jun 5, 2026
d3c2d82
docs/tests: keep toy site capacity in kVA
BelhsanHmida Jun 5, 2026
1be8dea
docs/tests: keep toy battery capacity in kVA
BelhsanHmida Jun 5, 2026
d90941a
tests: explain toy schedule power bounds
BelhsanHmida Jun 5, 2026
fe8a95e
Merge branch 'main' into feat/change-toy-tutorial-to-kw-units
BelhsanHmida Jul 5, 2026
c771724
docs: restore main whitespace after merge
BelhsanHmida Jul 5, 2026
6154e50
Merge remote-tracking branch 'origin/main' into feat/change-toy-tutor…
BelhsanHmida Jul 13, 2026
fd829eb
docs: refresh toy setup CLI examples
BelhsanHmida Jul 14, 2026
e05bec3
docs: refresh toy setup price references
BelhsanHmida Jul 14, 2026
7d5d8d7
docs: refresh toy tutorial UI examples
BelhsanHmida Jul 14, 2026
2a40d2a
docs: refresh toy tutorial API examples
BelhsanHmida Jul 14, 2026
3d31955
docs: align toy tutorial outputs
BelhsanHmida Jul 14, 2026
4b49f52
docs: update toy-example-setup
BelhsanHmida Jul 14, 2026
55efe9f
docs: restore toy account setup output
BelhsanHmida Jul 14, 2026
fd04d12
docs: align toy setup CLI output
BelhsanHmida Jul 14, 2026
8d541cc
Merge remote-tracking branch 'origin/main' into feat/change-toy-tutor…
BelhsanHmida Jul 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .claude/hooks/pre-commit-check.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,3 @@ if ! output=$(uv run pre-commit run --all-files 2>&1); then
exit 2
fi
exit 0

2 changes: 1 addition & 1 deletion .github/instructions/feature-branch-sync.instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ git commit -m "Merge origin/main into feature branch"
```

This ensures your implementation starts from the latest state of the repository.

## Why this matters

- Merging later causes merge conflicts to compound
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/docker-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ jobs:
- name: Add beliefs
run: |
docker exec --env-file .env fm-container flexmeasures \
add beliefs --sensor ${FM_TOY_PRICE_SENSOR_ID} --source toy-user prices-tomorrow.csv --timezone Europe/Amsterdam
add beliefs --sensor ${FM_TOY_PRICE_SENSOR_ID} --source toy-user prices-tomorrow.csv --timezone Europe/Amsterdam --unit EUR/MWh
- name: Export TOMORROW
run: echo "TOMORROW=$(date --date="next day" '+%Y-%m-%d')"
>> $GITHUB_ENV
Expand All @@ -70,4 +70,4 @@ jobs:
run: |
docker exec --env-file .env fm-container flexmeasures add schedule --sensor ${FM_TOY_PROCESS_BREAKABLE_SENSOR_ID} --scheduler ProcessScheduler \
--start ${TOMORROW}T00:00:00+02:00 --duration PT24H --flex-context '{"consumption-price": {"sensor": '"${FM_TOY_PRICE_SENSOR_ID}"'}}' \
--flex-model "{\"duration\": \"PT4H\", \"process-type\": \"BREAKABLE\", \"power\": 0.2, \"time-restrictions\": [{\"start\": \"${TOMORROW}T15:00:00+02:00\", \"duration\": \"PT1H\"}]}"
--flex-model "{\"duration\": \"PT4H\", \"process-type\": \"BREAKABLE\", \"power\": 200, \"time-restrictions\": [{\"start\": \"${TOMORROW}T15:00:00+02:00\", \"duration\": \"PT1H\"}]}"
1 change: 1 addition & 0 deletions documentation/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ New features
* Support configurable lower and upper bounds and snapping for forecast post-processing [see `PR #2273 <https://www.github.com/FlexMeasures/flexmeasures/pull/2273>`_]
* Floor off-clock API datetimes to a non-instantaneous sensor's resolution by default when ingesting sensor data, uploading sensor data, and handling scheduler flex-model timed events; configurable with the ``floor_datetimes_to_resolution`` sensor attribute [see `PR #2146 <https://www.github.com/FlexMeasures/flexmeasures/pull/2146>`_]
* Sensor references in flex-model and flex-context support various ways of filtering by source [see `PR #2209 <https://www.github.com/FlexMeasures/flexmeasures/pull/2209>`_]
* Create toy tutorial accounts with kW-scale power sensors and ``EUR/kWh`` day-ahead prices [see `PR #2223 <https://www.github.com/FlexMeasures/flexmeasures/pull/2223>`_]
* Let storage scheduling infer missing ``power-capacity`` from directional device capacities before falling back to site capacity, and default the missing opposite capacity to zero when only a non-zero ``consumption-capacity`` or ``production-capacity`` is configured [see `PR #2222 <https://www.github.com/FlexMeasures/flexmeasures/pull/2222>`_]
* Support multiple feeders to a shared storage [see `PR #2001 <https://www.github.com/FlexMeasures/flexmeasures/pull/2001>`_ ]
* The flex-context can now define multiple commodities, each specifying their own prices and grid capacities [see `PR #1946 <https://www.github.com/FlexMeasures/flexmeasures/pull/1946>`_, `PR #2172 <https://www.github.com/FlexMeasures/flexmeasures/pull/2172>`_, `PR #2235 <https://www.github.com/FlexMeasures/flexmeasures/pull/2235>`_ and `PR #2271 <https://www.github.com/FlexMeasures/flexmeasures/pull/2271>`_]
Expand Down
6 changes: 3 additions & 3 deletions documentation/dev/docker-compose.rst
Original file line number Diff line number Diff line change
Expand Up @@ -123,23 +123,23 @@ The charging/discharging schedule should be there:
.. code-block:: bash

┌────────────────────────────────────────────────────────────┐
│ ▐ ▐▀▀▌ ▛▀▀│ 0.5MW
│ ▐ ▐▀▀▌ ▛▀▀│ 500kW
│ ▞▌ ▌ ▌ ▌ │
│ ▌▌ ▌ ▐ ▗▘ │
│ ▌▌ ▌ ▐ ▐ │
│ ▐ ▐ ▐ ▐ ▐ │
│ ▐ ▐ ▐ ▝▖ ▞ │
│ ▌ ▐ ▐ ▌ ▌ │
│ ▐ ▝▖ ▌ ▌ ▌ │
│▀▘───▀▀▀▀▖─────▌────▀▀▀▀▀▀▀▀▀▌─────▐▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘───│ 0.0MW
│▀▘───▀▀▀▀▖─────▌────▀▀▀▀▀▀▀▀▀▌─────▐▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘───│ 0kW
│ ▌ ▐ ▚ ▌ │
│ ▌ ▞ ▐ ▗▘ │
│ ▌ ▌ ▐ ▞ │
│ ▐ ▐ ▝▖ ▌ │
│ ▐ ▐ ▌ ▗▘ │
│ ▐ ▌ ▌ ▐ │
│ ▝▖ ▌ ▌ ▞ │
│ ▙▄▟ ▐▄▄▌ │ -0.5MW
│ ▙▄▟ ▐▄▄▌ │ -500kW
└────────────────────────────────────────────────────────────┘
10 20 30 40
██ discharging
Expand Down
2 changes: 0 additions & 2 deletions documentation/features/scheduling.rst
Original file line number Diff line number Diff line change
Expand Up @@ -576,5 +576,3 @@ Here are some thoughts on further innovation:
This is ongoing architecture design work, and therefore happens in development settings, until we are happy with the outcomes.
Thoughts welcome :)
- Aggregating flexibility of a group of assets (e.g. a neighborhood) and optimizing its aggregated usage (e.g. for grid congestion support) is also an exciting direction for expansion.


2 changes: 1 addition & 1 deletion documentation/tut/scripts/run-tutorial-in-docker.sh
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ ${TOMORROW}T23:00:00,7" > prices-tomorrow.csv
docker cp prices-tomorrow.csv $CONTAINER_NAME:/app

docker exec -it $CONTAINER_NAME flexmeasures add beliefs \
--sensor ${FM_TOY_PRICE_SENSOR_ID} --source toy-user /app/prices-tomorrow.csv --timezone Europe/Amsterdam
--sensor ${FM_TOY_PRICE_SENSOR_ID} --source toy-user /app/prices-tomorrow.csv --timezone Europe/Amsterdam --unit EUR/MWh

echo "[TUTORIAL-RUNNER] creating schedule ..."
docker exec -it $CONTAINER_NAME flexmeasures add schedule \
Expand Down
50 changes: 25 additions & 25 deletions documentation/tut/scripts/run-tutorial2-in-docker.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,38 +13,38 @@ echo "[TUTORIAL-RUNNER] loading solar production data..."
TOMORROW=$(date --date="next day" '+%Y-%m-%d')

echo "Hour,Production
${TOMORROW}T00:00:00,0.0
${TOMORROW}T01:00:00,0.0
${TOMORROW}T02:00:00,0.0
${TOMORROW}T03:00:00,0.0
${TOMORROW}T04:00:00,0.01
${TOMORROW}T05:00:00,0.03
${TOMORROW}T06:00:00,0.06
${TOMORROW}T07:00:00,0.1
${TOMORROW}T08:00:00,0.14
${TOMORROW}T09:00:00,0.17
${TOMORROW}T10:00:00,0.19
${TOMORROW}T11:00:00,0.21
${TOMORROW}T12:00:00,0.22
${TOMORROW}T13:00:00,0.21
${TOMORROW}T14:00:00,0.19
${TOMORROW}T15:00:00,0.17
${TOMORROW}T16:00:00,0.14
${TOMORROW}T17:00:00,0.1
${TOMORROW}T18:00:00,0.06
${TOMORROW}T19:00:00,0.03
${TOMORROW}T20:00:00,0.01
${TOMORROW}T21:00:00,0.0
${TOMORROW}T22:00:00,0.0
${TOMORROW}T23:00:00,0.0" > solar-tomorrow.csv
${TOMORROW}T00:00:00,0
${TOMORROW}T01:00:00,0
${TOMORROW}T02:00:00,0
${TOMORROW}T03:00:00,0
${TOMORROW}T04:00:00,10
${TOMORROW}T05:00:00,30
${TOMORROW}T06:00:00,60
${TOMORROW}T07:00:00,100
${TOMORROW}T08:00:00,140
${TOMORROW}T09:00:00,170
${TOMORROW}T10:00:00,190
${TOMORROW}T11:00:00,210
${TOMORROW}T12:00:00,220
${TOMORROW}T13:00:00,210
${TOMORROW}T14:00:00,190
${TOMORROW}T15:00:00,170
${TOMORROW}T16:00:00,140
${TOMORROW}T17:00:00,100
${TOMORROW}T18:00:00,60
${TOMORROW}T19:00:00,30
${TOMORROW}T20:00:00,10
${TOMORROW}T21:00:00,0
${TOMORROW}T22:00:00,0
${TOMORROW}T23:00:00,0" > solar-tomorrow.csv

docker cp solar-tomorrow.csv $CONTAINER_NAME:/app/

echo "[TUTORIAL-RUNNER] adding source ..."
docker exec -it $CONTAINER_NAME flexmeasures add source --name "toy-forecaster" --type forecaster

echo "[TUTORIAL-RUNNER] adding beliefs ..."
docker exec -it $CONTAINER_NAME flexmeasures add beliefs --sensor ${FM_TOY_SOLAR_SENSOR_ID} --source 4 /app/solar-tomorrow.csv --timezone Europe/Amsterdam
docker exec -it $CONTAINER_NAME flexmeasures add beliefs --sensor ${FM_TOY_SOLAR_SENSOR_ID} --source 2 /app/solar-tomorrow.csv --timezone Europe/Amsterdam
echo "[TUTORIAL-RUNNER] showing beliefs ..."
docker exec -it $CONTAINER_NAME flexmeasures show beliefs --sensor ${FM_TOY_SOLAR_SENSOR_ID} --start ${TOMORROW}T07:00:00+01:00 --duration PT12H

Expand Down
12 changes: 6 additions & 6 deletions documentation/tut/scripts/run-tutorial3-in-docker.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ echo "[TUTORIAL-RUNNER] Computing schedule for PV curtailment (using artificial

echo '''{
"consumption-price": [
{"start": "'${TOMORROW}'T00:00+01", "duration": "PT24H", "value": "10 EUR/MWh"}
{"start": "'${TOMORROW}'T00:00+01", "duration": "PT24H", "value": "0.010 EUR/kWh"}
],
"production-price": [
{"start": "'${TOMORROW}'T05:00+01", "duration": "PT7H", "value": "4 EUR/MWh"},
{"start": "'${TOMORROW}'T12:00+01", "duration": "PT2H", "value": "-10 EUR/MWh"},
{"start": "'${TOMORROW}'T14:00+01", "duration": "PT7H", "value": "4 EUR/MWh"}
{"start": "'${TOMORROW}'T05:00+01", "duration": "PT7H", "value": "0.004 EUR/kWh"},
{"start": "'${TOMORROW}'T12:00+01", "duration": "PT2H", "value": "-0.010 EUR/kWh"},
{"start": "'${TOMORROW}'T14:00+01", "duration": "PT7H", "value": "0.004 EUR/kWh"}
]
}''' > tutorial3-priceprofile-flex-context.json
docker cp tutorial3-priceprofile-flex-context.json $CONTAINER_NAME:/app/
Expand All @@ -36,7 +36,7 @@ docker exec -it $CONTAINER_NAME flexmeasures show beliefs --sensor ${FM_TOY_SOLA
echo "[TUTORIAL-RUNNER] Cleaning solar data for the next steps ..."
# remove all previous beliefs on PV sensor so we don't have schedules mixed in the next run (issue 1807 can help with this, so selection by source works)
docker exec -it $CONTAINER_NAME flexmeasures delete beliefs --sensor ${FM_TOY_SOLAR_SENSOR_ID} --force
docker exec -it $CONTAINER_NAME flexmeasures add beliefs --sensor ${FM_TOY_SOLAR_SENSOR_ID} --source 4 /app/solar-tomorrow.csv --timezone Europe/Amsterdam
docker exec -it $CONTAINER_NAME flexmeasures add beliefs --sensor ${FM_TOY_SOLAR_SENSOR_ID} --source 2 /app/solar-tomorrow.csv --timezone Europe/Amsterdam

echo "[TUTORIAL-RUNNER] Now running both battery and PV together, still using block price profiles ..."
docker exec -it $CONTAINER_NAME flexmeasures add schedule --asset ${FM_TOY_BUILDING_ASSET_ID} \
Expand All @@ -48,7 +48,7 @@ echo "[TUTORIAL-RUNNER] showing PV and battery schedule ..."
docker exec -it $CONTAINER_NAME flexmeasures show beliefs --sensor ${FM_TOY_SOLAR_SENSOR_ID} --sensor ${FM_TOY_BATTERY_SENSOR_ID} --start ${TOMORROW}T07:00:00+01:00 --duration PT12H

docker exec -it $CONTAINER_NAME flexmeasures delete beliefs --sensor ${FM_TOY_SOLAR_SENSOR_ID} --force
docker exec -it $CONTAINER_NAME flexmeasures add beliefs --sensor ${FM_TOY_SOLAR_SENSOR_ID} --source 4 /app/solar-tomorrow.csv --timezone Europe/Amsterdam
docker exec -it $CONTAINER_NAME flexmeasures add beliefs --sensor ${FM_TOY_SOLAR_SENSOR_ID} --source 2 /app/solar-tomorrow.csv --timezone Europe/Amsterdam

echo "[TUTORIAL-RUNNER] Now running both battery and PV together, with realistic DA prices and larger battery ..."
docker exec -it $CONTAINER_NAME flexmeasures add schedule --asset ${FM_TOY_BUILDING_ASSET_ID} \
Expand Down
8 changes: 4 additions & 4 deletions documentation/tut/scripts/run-tutorial4-in-docker.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,16 @@ echo "[TUTORIAL-RUNNER] Creating three process schedules ..."
docker exec -it $CONTAINER_NAME flexmeasures add schedule --sensor ${FM_TOY_PROCESS_INFLEXIBLE_SENSOR_ID} --scheduler ProcessScheduler \
--start ${TOMORROW}T00:00:00+02:00 --duration PT24H \
--flex-context '{"consumption-price": {"sensor": '"${FM_TOY_PRICE_SENSOR_ID}"'}}' \
--flex-model '{"duration": "PT4H", "process-type": "INFLEXIBLE", "power": 0.2, "time-restrictions": [{"start": "'"${TOMORROW}"'T15:00:00+02:00", "duration": "PT1H"}]}'
--flex-model '{"duration": "PT4H", "process-type": "INFLEXIBLE", "power": 200, "time-restrictions": [{"start": "'"${TOMORROW}"'T15:00:00+02:00", "duration": "PT1H"}]}'

docker exec -it $CONTAINER_NAME flexmeasures add schedule --sensor ${FM_TOY_PROCESS_BREAKABLE_SENSOR_ID} --scheduler ProcessScheduler \
--start ${TOMORROW}T00:00:00+02:00 --duration PT24H \
--flex-context '{"consumption-price": {"sensor": '"${FM_TOY_PRICE_SENSOR_ID}"'}}' \
--flex-model '{"duration": "PT4H", "process-type": "BREAKABLE", "power": 0.2, "time-restrictions": [{"start": "'"${TOMORROW}"'T15:00:00+02:00", "duration": "PT1H"}]}'
--flex-model '{"duration": "PT4H", "process-type": "BREAKABLE", "power": 200, "time-restrictions": [{"start": "'"${TOMORROW}"'T15:00:00+02:00", "duration": "PT1H"}]}'

docker exec -it $CONTAINER_NAME flexmeasures add schedule --sensor ${FM_TOY_PROCESS_SHIFTABLE_SENSOR_ID} --scheduler ProcessScheduler \
--start ${TOMORROW}T00:00:00+02:00 --duration PT24H \
--flex-context '{"consumption-price": {"sensor": '"${FM_TOY_PRICE_SENSOR_ID}"'}}' \
--flex-model '{"duration": "PT4H", "process-type": "SHIFTABLE", "power": 0.2, "time-restrictions": [{"start": "'"${TOMORROW}"'T15:00:00+02:00", "duration": "PT1H"}]}'
--flex-model '{"duration": "PT4H", "process-type": "SHIFTABLE", "power": 200, "time-restrictions": [{"start": "'"${TOMORROW}"'T15:00:00+02:00", "duration": "PT1H"}]}'

echo "Now visit http://localhost:5000/assets/6/graphs to see all three schedules."
echo "Now visit http://localhost:5000/assets/8/graphs to see all three schedules."
22 changes: 11 additions & 11 deletions documentation/tut/scripts/run-tutorial5-in-docker.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ echo "[TUTORIAL-RUNNER] Setting up toy account with reporters..."
echo "[TUTORIAL-RUNNER] Show grid connection capacity ..."
docker exec -it $CONTAINER_NAME flexmeasures show beliefs --sensor ${FM_TOY_GRID_CAPACITY_SENSOR_ID} --start ${TOMORROW}T00:00:00+02:00 --duration PT24H --resolution PT1H

docker exec -it $CONTAINER_NAME flexmeasures show data-sources --show-attributes --id 6
docker exec -it $CONTAINER_NAME flexmeasures show data-sources --show-attributes --id 3

echo "[TUTORIAL-RUNNER] Configure headroom reporter ..."

Expand All @@ -33,7 +33,7 @@ docker cp headroom-config.json $CONTAINER_NAME:/app
echo "
{
'input': [{'name': 'grid connection capacity', 'sensor': ${FM_TOY_GRID_CAPACITY_SENSOR_ID}},
{'name': 'PV', 'sensor': ${FM_TOY_SOLAR_SENSOR_ID}, 'sources': [4]}],
{'name': 'PV', 'sensor': ${FM_TOY_SOLAR_SENSOR_ID}, 'sources': [2]}],
'output': [{'sensor': ${FM_TOY_HEADROOM_SENSOR_ID}}]
}" > headroom-parameters.json
docker cp headroom-parameters.json $CONTAINER_NAME:/app
Expand All @@ -56,35 +56,35 @@ echo "[TUTORIAL-RUNNER] now the inflexible process ..."
echo "
{
'input': [{'sensor': ${FM_TOY_PROCESS_INFLEXIBLE_SENSOR_ID}}],
'output': [{'sensor': 9}]
'output': [{'sensor': 15}]
}" > inflexible-parameters.json

docker cp inflexible-parameters.json $CONTAINER_NAME:/app

docker exec -it $CONTAINER_NAME flexmeasures add report --source 6 \
docker exec -it $CONTAINER_NAME flexmeasures add report --source 3 \
--parameters inflexible-parameters.json \
--start-offset DB,1D --end-offset DB,2D

echo "[TUTORIAL-RUNNER] showing reported data ..."
docker exec -it $CONTAINER_NAME bash -c "flexmeasures show beliefs --sensor 9 --start ${TOMORROW}T00:00:00+01:00 --duration PT24H"
docker exec -it $CONTAINER_NAME bash -c "flexmeasures show beliefs --sensor 15 --start ${TOMORROW}T00:00:00+01:00 --duration PT24H"


echo "[TUTORIAL-RUNNER] now the breakable process ..."

echo "
{
'input': [{'sensor': ${FM_TOY_PROCESS_BREAKABLE_SENSOR_ID}}],
'output': [{'sensor': 10}]
'output': [{'sensor': 16}]
}" > breakable-parameters.json

docker cp breakable-parameters.json $CONTAINER_NAME:/app

docker exec -it $CONTAINER_NAME flexmeasures add report --source 6 \
docker exec -it $CONTAINER_NAME flexmeasures add report --source 3 \
--parameters breakable-parameters.json \
--start-offset DB,1D --end-offset DB,2D

echo "[TUTORIAL-RUNNER] showing reported data ..."
docker exec -it $CONTAINER_NAME bash -c "flexmeasures show beliefs --sensor 10 --start ${TOMORROW}T00:00:00+01:00 --duration PT24H"
docker exec -it $CONTAINER_NAME bash -c "flexmeasures show beliefs --sensor 16 --start ${TOMORROW}T00:00:00+01:00 --duration PT24H"



Expand All @@ -93,14 +93,14 @@ echo "[TUTORIAL-RUNNER] now the breakable process ..."
echo "
{
'input' : [{'sensor': ${FM_TOY_PROCESS_SHIFTABLE_SENSOR_ID}}],
'output' : [{'sensor': 11}]
'output' : [{'sensor': 17}]
}" > shiftable-parameters.json

docker cp shiftable-parameters.json $CONTAINER_NAME:/app

docker exec -it $CONTAINER_NAME flexmeasures add report --source 6 \
docker exec -it $CONTAINER_NAME flexmeasures add report --source 3 \
--parameters shiftable-parameters.json \
--start-offset DB,1D --end-offset DB,2D

echo "[TUTORIAL-RUNNER] showing reported data ..."
docker exec -it $CONTAINER_NAME bash -c "flexmeasures show beliefs --sensor 11 --start ${TOMORROW}T00:00:00+01:00 --duration PT24H"
docker exec -it $CONTAINER_NAME bash -c "flexmeasures show beliefs --sensor 17 --start ${TOMORROW}T00:00:00+01:00 --duration PT24H"
Loading
Loading