Add a fixed electricity prediction that supports prices per time window.
The time windows may flexible be defined by day or date.
The prediction documentation is updated to also cover the ElecPriceFixed
provider.
The feature includes several changes that are not directly related to the
electricity price prediction implementation but are necessary to keep
EOS running properly and to test and document the changes.
* feat: add value time windows
Add time windows with an associated float value.
* feat: harden eos measurements endpoints error detection and reporting
Cover more errors that may be raised during endpoint access. Report the
errors including trace information to ease debugging.
* feat: extend server configuration to cover all arguments
Make the argument controlled options also available in server configuration.
* fix: eos config configuration by cli arguments
Move the command line argument handling to config eos so that it is
excuted whenever eos config is rebuild or reset.
* chore: extend measurement endpoint system test
* chore: refactor time windows
Move time windows to configabc as they are only used in configurations.
Also move all tests to test_configabc.
* chore: provide config update errors in eosdash with summarized error text
If there is an update error provide the error text as a summary. On click
provide the full error text.
* chore: force eosdash ip address and port in makefile dev run
Ensure eosdash ip address and port are correctly set for development runs.
Signed-off-by: Bobby Noelte <b0661n0e17e@gmail.com>
9.4 KiB
Electricity Price Prediction Configuration
:::{table} elecprice :widths: 10 20 10 5 5 30 :align: left
| Name | Environment Variable | Type | Read-Only | Default | Description |
|---|---|---|---|---|---|
| charges_kwh | EOS_ELECPRICE__CHARGES_KWH |
Optional[float] |
rw |
None |
Electricity price charges [€/kWh]. Will be added to variable market price. |
| elecpricefixed | EOS_ELECPRICE__ELECPRICEFIXED |
ElecPriceFixedCommonSettings |
rw |
required |
Fixed electricity price provider settings. |
| elecpriceimport | EOS_ELECPRICE__ELECPRICEIMPORT |
ElecPriceImportCommonSettings |
rw |
required |
Import provider settings. |
| energycharts | EOS_ELECPRICE__ENERGYCHARTS |
ElecPriceEnergyChartsCommonSettings |
rw |
required |
Energy Charts provider settings. |
| provider | EOS_ELECPRICE__PROVIDER |
Optional[str] |
rw |
None |
Electricity price provider id of provider to be used. |
| providers | list[str] |
ro |
N/A |
Available electricity price provider ids. | |
| vat_rate | EOS_ELECPRICE__VAT_RATE |
Optional[float] |
rw |
1.19 |
VAT rate factor applied to electricity price when charges are used. |
| ::: |
Example Input
{
"elecprice": {
"provider": "ElecPriceAkkudoktor",
"charges_kwh": 0.21,
"vat_rate": 1.19,
"elecpricefixed": {
"time_windows": {
"windows": []
}
},
"elecpriceimport": {
"import_file_path": null,
"import_json": null
},
"energycharts": {
"bidding_zone": "DE-LU"
}
}
}
Example Output
{
"elecprice": {
"provider": "ElecPriceAkkudoktor",
"charges_kwh": 0.21,
"vat_rate": 1.19,
"elecpricefixed": {
"time_windows": {
"windows": []
}
},
"elecpriceimport": {
"import_file_path": null,
"import_json": null
},
"energycharts": {
"bidding_zone": "DE-LU"
},
"providers": [
"ElecPriceAkkudoktor",
"ElecPriceEnergyCharts",
"ElecPriceFixed",
"ElecPriceImport"
]
}
}
Common settings for Energy Charts electricity price provider
:::{table} elecprice::energycharts :widths: 10 10 5 5 30 :align: left
| Name | Type | Read-Only | Default | Description |
|---|---|---|---|---|
| bidding_zone | <enum 'EnergyChartsBiddingZones'> |
rw |
EnergyChartsBiddingZones.DE_LU |
Bidding Zone: 'AT', 'BE', 'CH', 'CZ', 'DE-LU', 'DE-AT-LU', 'DK1', 'DK2', 'FR', 'HU', 'IT-NORTH', 'NL', 'NO2', 'PL', 'SE4' or 'SI' |
| ::: |
Example Input/Output
{
"elecprice": {
"energycharts": {
"bidding_zone": "AT"
}
}
}
Common settings for elecprice data import from file or JSON String
:::{table} elecprice::elecpriceimport :widths: 10 10 5 5 30 :align: left
| Name | Type | Read-Only | Default | Description |
|---|---|---|---|---|
| import_file_path | Union[str, pathlib.Path, NoneType] |
rw |
None |
Path to the file to import elecprice data from. |
| import_json | Optional[str] |
rw |
None |
JSON string, dictionary of electricity price forecast value lists. |
| ::: |
Example Input/Output
{
"elecprice": {
"elecpriceimport": {
"import_file_path": null,
"import_json": "{\"elecprice_marketprice_wh\": [0.0003384, 0.0003318, 0.0003284]}"
}
}
}
Value applicable during a specific time window
This model extends TimeWindow by associating a value with the defined time interval.
:::{table} elecprice::elecpricefixed::time_windows::windows::list :widths: 10 10 5 5 30 :align: left
| Name | Type | Read-Only | Default | Description |
|---|---|---|---|---|
| date | Optional[pydantic_extra_types.pendulum_dt.Date] |
rw |
None |
Optional specific calendar date for the time window. Naive — matched against the local date of the datetime passed to contains(). Overrides day_of_week if set. |
| day_of_week | Union[int, str, NoneType] |
rw |
None |
Optional day of the week restriction. Can be specified as integer (0=Monday to 6=Sunday) or localized weekday name. If None, applies every day unless date is set. |
| duration | Duration |
rw |
required |
Duration of the time window starting from start_time. |
| locale | Optional[str] |
rw |
None |
Locale used to parse weekday names in day_of_week when given as string. If not set, Pendulum's default locale is used. Examples: 'en', 'de', 'fr', etc. |
| start_time | Time |
rw |
required |
Naive start time of the time window (time of day, no timezone). Interpreted in the timezone of the datetime passed to contains() or earliest_start_time(). |
| value | Optional[float] |
rw |
None |
Value applicable during this time window. |
| ::: |
Example Input/Output
{
"elecprice": {
"elecpricefixed": {
"time_windows": {
"windows": [
{
"start_time": "00:00:00.000000",
"duration": "2 hours",
"day_of_week": null,
"date": null,
"locale": null,
"value": 0.288
}
]
}
}
}
}
Sequence of value time windows
This model specializes TimeWindowSequence to ensure that all
contained windows are instances of ValueTimeWindow.
It provides the full set of sequence operations (containment checks,
availability, start time calculations) for value windows.
:::{table} elecprice::elecpricefixed::time_windows :widths: 10 10 5 5 30 :align: left
| Name | Type | Read-Only | Default | Description |
|---|---|---|---|---|
| windows | list[akkudoktoreos.config.configabc.ValueTimeWindow] |
rw |
required |
Ordered list of value time windows. Each window defines a time interval and an associated value. |
| ::: |
Example Input/Output
{
"elecprice": {
"elecpricefixed": {
"time_windows": {
"windows": []
}
}
}
}
Common configuration settings for fixed electricity pricing
This model defines a fixed electricity price schedule using a sequence of time windows. Each window specifies a time interval and the electricity price applicable during that interval.
:::{table} elecprice::elecpricefixed :widths: 10 10 5 5 30 :align: left
| Name | Type | Read-Only | Default | Description |
|---|---|---|---|---|
| time_windows | ValueTimeWindowSequence |
rw |
required |
Sequence of time windows defining the fixed price schedule. If not provided, no fixed pricing is applied. |
| ::: |
Example Input/Output
{
"elecprice": {
"elecpricefixed": {
"time_windows": {
"windows": [
{
"start_time": "00:00:00.000000",
"duration": "8 hours",
"day_of_week": null,
"date": null,
"locale": null,
"value": 0.288
},
{
"start_time": "08:00:00.000000",
"duration": "16 hours",
"day_of_week": null,
"date": null,
"locale": null,
"value": 0.34
}
]
}
}
}
}