Fix config and prediction revamp. (#259)

Extend single_test_optimization.py to be able to use real world data from new prediction classes.
- .venv/bin/python single_test_optimization.py --real_world --verbose
Can also be run with profiling "--profile".

Add single_test_prediction.py to fetch predictions from remote prediction providers
- .venv/bin/python single_test_prediction.py --verbose --provider-id PVForecastAkkudoktor | more
- .venv/bin/python single_test_prediction.py --verbose --provider-id LoadAkkudoktor | more
- .venv/bin/python single_test_prediction.py --verbose --provider-id ElecPriceAkkudoktor | more
- .venv/bin/python single_test_prediction.py --verbose --provider-id BrightSky | more
- .venv/bin/python single_test_prediction.py --verbose --provider-id ClearOutside | more
Can also be run with profiling "--profile".

single_test_optimization.py is an example on how to retrieve prediction data for optimization and
use it to set up the optimization parameters.

Changes:
- load: Only one load provider at a time (vs. 5 before)

Bug fixes:
- prediction: only use providers that are enabled to retrieve or set data.
- prediction: fix pre pendulum format strings
- dataabc: Prevent error when resampling data with no datasets.

Signed-off-by: Bobby Noelte <b0661n0e17e@gmail.com>
This commit is contained in:
Bobby Noelte
2024-12-16 20:26:08 +01:00
committed by GitHub
parent 810cc17c0b
commit 31bd2de18b
21 changed files with 415 additions and 713 deletions

View File

@@ -605,8 +605,7 @@
}
],
"title": "Weather Provider",
"description": "Weather provider id of provider to be used.",
"default": "ClearOutside"
"description": "Weather provider id of provider to be used."
},
"pvforecastimport_file_path": {
"anyOf": [
@@ -1865,7 +1864,7 @@
"title": "Pvforecast5 Strings Per Inverter",
"description": "Number of the strings of the inverter of this plane."
},
"load0_import_file_path": {
"load_import_file_path": {
"anyOf": [
{
"type": "string"
@@ -1878,10 +1877,10 @@
"type": "null"
}
],
"title": "Load0 Import File Path",
"title": "Load Import File Path",
"description": "Path to the file to import load data from."
},
"load0_import_json": {
"load_import_json": {
"anyOf": [
{
"type": "string"
@@ -1890,119 +1889,7 @@
"type": "null"
}
],
"title": "Load0 Import Json",
"description": "JSON string, dictionary of load forecast value lists."
},
"load1_import_file_path": {
"anyOf": [
{
"type": "string"
},
{
"type": "string",
"format": "path"
},
{
"type": "null"
}
],
"title": "Load1 Import File Path",
"description": "Path to the file to import load data from."
},
"load1_import_json": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Load1 Import Json",
"description": "JSON string, dictionary of load forecast value lists."
},
"load2_import_file_path": {
"anyOf": [
{
"type": "string"
},
{
"type": "string",
"format": "path"
},
{
"type": "null"
}
],
"title": "Load2 Import File Path",
"description": "Path to the file to import load data from."
},
"load2_import_json": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Load2 Import Json",
"description": "JSON string, dictionary of load forecast value lists."
},
"load3_import_file_path": {
"anyOf": [
{
"type": "string"
},
{
"type": "string",
"format": "path"
},
{
"type": "null"
}
],
"title": "Load3 Import File Path",
"description": "Path to the file to import load data from."
},
"load3_import_json": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Load3 Import Json",
"description": "JSON string, dictionary of load forecast value lists."
},
"load4_import_file_path": {
"anyOf": [
{
"type": "string"
},
{
"type": "string",
"format": "path"
},
{
"type": "null"
}
],
"title": "Load4 Import File Path",
"description": "Path to the file to import load data from."
},
"load4_import_json": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Load4 Import Json",
"title": "Load Import Json",
"description": "JSON string, dictionary of load forecast value lists."
},
"loadakkudoktor_year_energy": {
@@ -2017,7 +1904,7 @@
"title": "Loadakkudoktor Year Energy",
"description": "Yearly energy consumption (kWh)."
},
"load0_provider": {
"load_provider": {
"anyOf": [
{
"type": "string"
@@ -2026,10 +1913,10 @@
"type": "null"
}
],
"title": "Load0 Provider",
"title": "Load Provider",
"description": "Load provider id of provider to be used."
},
"load0_name": {
"load_name": {
"anyOf": [
{
"type": "string"
@@ -2038,103 +1925,7 @@
"type": "null"
}
],
"title": "Load0 Name",
"description": "Name of the load source."
},
"load1_provider": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Load1 Provider",
"description": "Load provider id of provider to be used."
},
"load1_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Load1 Name",
"description": "Name of the load source."
},
"load2_provider": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Load2 Provider",
"description": "Load provider id of provider to be used."
},
"load2_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Load2 Name",
"description": "Name of the load source."
},
"load3_provider": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Load3 Provider",
"description": "Load provider id of provider to be used."
},
"load3_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Load3 Name",
"description": "Name of the load source."
},
"load4_provider": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Load4 Provider",
"description": "Load provider id of provider to be used."
},
"load4_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Load4 Name",
"title": "Load Name",
"description": "Name of the load source."
},
"elecpriceimport_file_path": {
@@ -2175,8 +1966,7 @@
}
],
"title": "Elecprice Provider",
"description": "Electicity price provider id of provider to be used.",
"default": "ElecPriceAkkudoktor"
"description": "Electicity price provider id of provider to be used."
},
"prediction_hours": {
"anyOf": [
@@ -2630,22 +2420,6 @@
"description": "Compute a list of the maximum power rating of the inverter per active planes.",
"readOnly": true
},
"load_count": {
"type": "integer",
"title": "Load Count",
"description": "Maximum number of loads.",
"readOnly": true
},
"load_providers": {
"items": {
"type": "string"
},
"type": "array",
"uniqueItems": true,
"title": "Load Providers",
"description": "Load providers.",
"readOnly": true
},
"timezone": {
"anyOf": [
{
@@ -2703,8 +2477,6 @@
"pvforecast_planes_tilt",
"pvforecast_planes_userhorizon",
"pvforecast_planes_inverter_paco",
"load_count",
"load_providers",
"timezone",
"data_output_path",
"data_cache_path",
@@ -3310,8 +3082,7 @@
}
],
"title": "Weather Provider",
"description": "Weather provider id of provider to be used.",
"default": "ClearOutside"
"description": "Weather provider id of provider to be used."
},
"pvforecastimport_file_path": {
"anyOf": [
@@ -4570,7 +4341,7 @@
"title": "Pvforecast5 Strings Per Inverter",
"description": "Number of the strings of the inverter of this plane."
},
"load0_import_file_path": {
"load_import_file_path": {
"anyOf": [
{
"type": "string"
@@ -4583,10 +4354,10 @@
"type": "null"
}
],
"title": "Load0 Import File Path",
"title": "Load Import File Path",
"description": "Path to the file to import load data from."
},
"load0_import_json": {
"load_import_json": {
"anyOf": [
{
"type": "string"
@@ -4595,119 +4366,7 @@
"type": "null"
}
],
"title": "Load0 Import Json",
"description": "JSON string, dictionary of load forecast value lists."
},
"load1_import_file_path": {
"anyOf": [
{
"type": "string"
},
{
"type": "string",
"format": "path"
},
{
"type": "null"
}
],
"title": "Load1 Import File Path",
"description": "Path to the file to import load data from."
},
"load1_import_json": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Load1 Import Json",
"description": "JSON string, dictionary of load forecast value lists."
},
"load2_import_file_path": {
"anyOf": [
{
"type": "string"
},
{
"type": "string",
"format": "path"
},
{
"type": "null"
}
],
"title": "Load2 Import File Path",
"description": "Path to the file to import load data from."
},
"load2_import_json": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Load2 Import Json",
"description": "JSON string, dictionary of load forecast value lists."
},
"load3_import_file_path": {
"anyOf": [
{
"type": "string"
},
{
"type": "string",
"format": "path"
},
{
"type": "null"
}
],
"title": "Load3 Import File Path",
"description": "Path to the file to import load data from."
},
"load3_import_json": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Load3 Import Json",
"description": "JSON string, dictionary of load forecast value lists."
},
"load4_import_file_path": {
"anyOf": [
{
"type": "string"
},
{
"type": "string",
"format": "path"
},
{
"type": "null"
}
],
"title": "Load4 Import File Path",
"description": "Path to the file to import load data from."
},
"load4_import_json": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Load4 Import Json",
"title": "Load Import Json",
"description": "JSON string, dictionary of load forecast value lists."
},
"loadakkudoktor_year_energy": {
@@ -4722,7 +4381,7 @@
"title": "Loadakkudoktor Year Energy",
"description": "Yearly energy consumption (kWh)."
},
"load0_provider": {
"load_provider": {
"anyOf": [
{
"type": "string"
@@ -4731,10 +4390,10 @@
"type": "null"
}
],
"title": "Load0 Provider",
"title": "Load Provider",
"description": "Load provider id of provider to be used."
},
"load0_name": {
"load_name": {
"anyOf": [
{
"type": "string"
@@ -4743,103 +4402,7 @@
"type": "null"
}
],
"title": "Load0 Name",
"description": "Name of the load source."
},
"load1_provider": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Load1 Provider",
"description": "Load provider id of provider to be used."
},
"load1_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Load1 Name",
"description": "Name of the load source."
},
"load2_provider": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Load2 Provider",
"description": "Load provider id of provider to be used."
},
"load2_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Load2 Name",
"description": "Name of the load source."
},
"load3_provider": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Load3 Provider",
"description": "Load provider id of provider to be used."
},
"load3_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Load3 Name",
"description": "Name of the load source."
},
"load4_provider": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Load4 Provider",
"description": "Load provider id of provider to be used."
},
"load4_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Load4 Name",
"title": "Load Name",
"description": "Name of the load source."
},
"elecpriceimport_file_path": {
@@ -4880,8 +4443,7 @@
}
],
"title": "Elecprice Provider",
"description": "Electicity price provider id of provider to be used.",
"default": "ElecPriceAkkudoktor"
"description": "Electicity price provider id of provider to be used."
},
"prediction_hours": {
"anyOf": [