From 214768795f2c929321a4f9fb6f90326da261abe0 Mon Sep 17 00:00:00 2001 From: Bobby Noelte Date: Mon, 6 Jan 2025 16:27:57 +0100 Subject: [PATCH] Adapt documentation generation to be compliant to ReadTheDocs and Windows. (#341) Use documentation generation tools that are available for Windows and Linux. Use python instead of shell scripts to generate documentation. For ReadTheDocs make generated documentation content static to avoid running scripts outside of the docs/ path which is the default path for ReadTheDOcs. Add tests that check if generated content does go out of sync with latest source. Use tabs to show commands for Windows and Linux to improve user experience. Signed-off-by: Bobby Noelte --- .gitignore | 1 + Makefile | 12 +- docs/_generated/config.md | 309 + .../testdata => docs/_generated}/openapi.md | 52 +- docs/akkudoktoreos/configuration.md | 6 +- docs/akkudoktoreos/serverapi.md | 6 +- docs/conf.py | 2 +- docs/develop/CONTRIBUTING.md | 5 +- docs/develop/getting_started.md | 108 +- openapi.json | 17902 ++++++++-------- requirements-dev.txt | 3 +- scripts/generate_config_md.py | 4 + scripts/generate_openapi_md.py | 70 +- tests/test_doc.py | 100 + tests/test_openapi.py | 56 - 15 files changed, 9586 insertions(+), 9050 deletions(-) create mode 100644 docs/_generated/config.md rename {tests/testdata => docs/_generated}/openapi.md (86%) create mode 100644 tests/test_doc.py delete mode 100644 tests/test_openapi.py diff --git a/.gitignore b/.gitignore index 795b01a..0d62700 100644 --- a/.gitignore +++ b/.gitignore @@ -259,3 +259,4 @@ visualize_output_*.pdf tests/testdata/new_optimize_result* tests/testdata/openapi-new.json tests/testdata/openapi-new.md +tests/testdata/config-new.md diff --git a/Makefile b/Makefile index 9bde50c..08cc203 100644 --- a/Makefile +++ b/Makefile @@ -17,6 +17,7 @@ help: @echo " docker-build - Rebuild docker image" @echo " docs - Generate HTML documentation (in build/docs/html/)." @echo " read-docs - Read HTML documentation in your browser." + @echo " gen-docs - Generate openapi.json and docs/_generated/*."" @echo " clean-docs - Remove generated documentation."" @echo " run - Run FastAPI production server in the virtual environment." @echo " run-dev - Run FastAPI development server in the virtual environment (automatically reloads)." @@ -51,10 +52,17 @@ dist: pip .venv/bin/python -m build --wheel @echo "Distribution created (see dist/)." -# Target to generate HTML documentation +# Target to generate documentation +gen-docs: pip-dev + .venv/bin/python ./scripts/generate_config_md.py --output-file docs/_generated/config.md + .venv/bin/python ./scripts/generate_openapi_md.py --output-file docs/_generated/openapi.md + .venv/bin/python ./scripts/generate_openapi.py --output-file openapi.json + @echo "Documentation generated to openapi.json and docs/_generated." + +# Target to build HTML documentation docs: pip-dev .venv/bin/sphinx-build -M html docs build/docs - @echo "Documentation generated to build/docs/html/." + @echo "Documentation build to build/docs/html/." # Target to read the HTML documentation read-docs: docs diff --git a/docs/_generated/config.md b/docs/_generated/config.md new file mode 100644 index 0000000..79842b5 --- /dev/null +++ b/docs/_generated/config.md @@ -0,0 +1,309 @@ +# Configuration Table + +## General Configuration Values + +:::{table} General Configuration Values +:widths: 10 10 5 5 30 +:align: left + +| Name | Type | Read-Only | Default | Description | +| ---- | ---- | --------- | ------- | ----------- | +| `config_default_file_path` | `` | `ro` | `N/A` | Compute the default config file path. | +| `config_file_path` | `Optional[pathlib.Path]` | `ro` | `N/A` | Path to EOS configuration file. | +| `config_folder_path` | `Optional[pathlib.Path]` | `ro` | `N/A` | Path to EOS configuration directory. | +| `config_keys` | `List[str]` | `ro` | `N/A` | Returns the keys of all fields in the configuration. | +| `config_keys_read_only` | `List[str]` | `ro` | `N/A` | Returns the keys of all read only fields in the configuration. | +| `data_cache_path` | `Optional[pathlib.Path]` | `ro` | `N/A` | Compute data_cache_path based on data_folder_path. | +| `data_cache_subpath` | `Optional[pathlib.Path]` | `rw` | `cache` | Sub-path for the EOS cache data directory. | +| `data_folder_path` | `Optional[pathlib.Path]` | `rw` | `None` | Path to EOS data directory. | +| `data_output_path` | `Optional[pathlib.Path]` | `ro` | `N/A` | Compute data_output_path based on data_folder_path. | +| `data_output_subpath` | `Optional[pathlib.Path]` | `rw` | `output` | Sub-path for the EOS output data directory. | +| `latitude` | `Optional[float]` | `rw` | `None` | Latitude in decimal degrees, between -90 and 90, north is positive (ISO 19115) (°) | +| `longitude` | `Optional[float]` | `rw` | `None` | Longitude in decimal degrees, within -180 to 180 (°) | +| `package_root_path` | `` | `ro` | `N/A` | Compute the package root path. | +| `timezone` | `Optional[str]` | `ro` | `N/A` | Compute timezone based on latitude and longitude. | +::: + +## Battery Device Simulation Configuration + +:::{table} Battery Device Simulation Configuration +:widths: 10 10 5 5 30 +:align: left + +| Name | Type | Read-Only | Default | Description | +| ---- | ---- | --------- | ------- | ----------- | +| `battery_capacity` | `Optional[int]` | `rw` | `None` | Battery capacity [Wh]. | +| `battery_charging_efficiency` | `Optional[float]` | `rw` | `None` | Battery charging efficiency [%]. | +| `battery_discharging_efficiency` | `Optional[float]` | `rw` | `None` | Battery discharging efficiency [%]. | +| `battery_initial_soc` | `Optional[int]` | `rw` | `None` | Battery initial state of charge [%]. | +| `battery_max_charging_power` | `Optional[int]` | `rw` | `None` | Battery maximum charge power [W]. | +| `battery_provider` | `Optional[str]` | `rw` | `None` | Id of Battery simulation provider. | +| `battery_soc_max` | `Optional[int]` | `rw` | `None` | Battery maximum state of charge [%]. | +| `battery_soc_min` | `Optional[int]` | `rw` | `None` | Battery minimum state of charge [%]. | +::: + +## Battery Electric Vehicle Device Simulation Configuration + +:::{table} Battery Electric Vehicle Device Simulation Configuration +:widths: 10 10 5 5 30 +:align: left + +| Name | Type | Read-Only | Default | Description | +| ---- | ---- | --------- | ------- | ----------- | +| `bev_capacity` | `Optional[int]` | `rw` | `None` | Battery Electric Vehicle capacity [Wh]. | +| `bev_charging_efficiency` | `Optional[float]` | `rw` | `None` | Battery Electric Vehicle charging efficiency [%]. | +| `bev_discharging_efficiency` | `Optional[float]` | `rw` | `None` | Battery Electric Vehicle discharging efficiency [%]. | +| `bev_initial_soc` | `Optional[int]` | `rw` | `None` | Battery Electric Vehicle initial state of charge [%]. | +| `bev_max_charging_power` | `Optional[int]` | `rw` | `None` | Battery Electric Vehicle maximum charge power [W]. | +| `bev_provider` | `Optional[str]` | `rw` | `None` | Id of Battery Electric Vehicle simulation provider. | +| `bev_soc_max` | `Optional[int]` | `rw` | `None` | Battery Electric Vehicle maximum state of charge [%]. | +::: + +## Dishwasher Device Simulation Configuration + +:::{table} Dishwasher Device Simulation Configuration +:widths: 10 10 5 5 30 +:align: left + +| Name | Type | Read-Only | Default | Description | +| ---- | ---- | --------- | ------- | ----------- | +| `dishwasher_consumption` | `Optional[int]` | `rw` | `None` | Dish Washer energy consumption [Wh]. | +| `dishwasher_duration` | `Optional[int]` | `rw` | `None` | Dish Washer usage duration [h]. | +| `dishwasher_provider` | `Optional[str]` | `rw` | `None` | Id of Dish Washer simulation provider. | +::: + +## Electricity Price Prediction Configuration + +:::{table} Electricity Price Prediction Configuration +:widths: 10 10 5 5 30 +:align: left + +| Name | Type | Read-Only | Default | Description | +| ---- | ---- | --------- | ------- | ----------- | +| `elecprice_charges_kwh` | `Optional[float]` | `rw` | `None` | Electricity price charges (€/kWh). | +| `elecprice_provider` | `Optional[str]` | `rw` | `None` | Electricity price provider id of provider to be used. | +| `elecpriceimport_file_path` | `Union[str, pathlib.Path, NoneType]` | `rw` | `None` | Path to the file to import elecprice data from. | +| `elecpriceimport_json` | `Optional[str]` | `rw` | `None` | JSON string, dictionary of electricity price forecast value lists. | +::: + +## General Optimization Configuration + +:::{table} General Optimization Configuration +:widths: 10 10 5 5 30 +:align: left + +| Name | Type | Read-Only | Default | Description | +| ---- | ---- | --------- | ------- | ----------- | +| `optimization_ev_available_charge_rates_percent` | `Optional[typing.List[float]]` | `rw` | `[0.0, 0.375, 0.5, 0.625, 0.75, 0.875, 1.0]` | Charge rates available for the EV in percent of maximum charge. | +| `optimization_hours` | `Optional[int]` | `rw` | `24` | Number of hours into the future for optimizations. | +| `optimization_penalty` | `Optional[int]` | `rw` | `10` | Penalty factor used in optimization. | +::: + +## General Prediction Configuration + +:::{table} General Prediction Configuration +:widths: 10 10 5 5 30 +:align: left + +| Name | Type | Read-Only | Default | Description | +| ---- | ---- | --------- | ------- | ----------- | +| `prediction_historic_hours` | `Optional[int]` | `rw` | `48` | Number of hours into the past for historical predictions data | +| `prediction_hours` | `Optional[int]` | `rw` | `48` | Number of hours into the future for predictions | +::: + +## Inverter Device Simulation Configuration + +:::{table} Inverter Device Simulation Configuration +:widths: 10 10 5 5 30 +:align: left + +| Name | Type | Read-Only | Default | Description | +| ---- | ---- | --------- | ------- | ----------- | +| `inverter_power_max` | `Optional[float]` | `rw` | `None` | Inverter maximum power [W]. | +| `inverter_provider` | `Optional[str]` | `rw` | `None` | Id of PV Inverter simulation provider. | +::: + +## Load Prediction Configuration + +:::{table} Load Prediction Configuration +:widths: 10 10 5 5 30 +:align: left + +| Name | Type | Read-Only | Default | Description | +| ---- | ---- | --------- | ------- | ----------- | +| `load_import_file_path` | `Union[str, pathlib.Path, NoneType]` | `rw` | `None` | Path to the file to import load data from. | +| `load_import_json` | `Optional[str]` | `rw` | `None` | JSON string, dictionary of load forecast value lists. | +| `load_provider` | `Optional[str]` | `rw` | `None` | Load provider id of provider to be used. | +| `loadakkudoktor_year_energy` | `Optional[float]` | `rw` | `None` | Yearly energy consumption (kWh). | +::: + +## Logging Configuration + +:::{table} Logging Configuration +:widths: 10 10 5 5 30 +:align: left + +| Name | Type | Read-Only | Default | Description | +| ---- | ---- | --------- | ------- | ----------- | +| `logging_level_default` | `Optional[str]` | `rw` | `None` | EOS default logging level. | +| `logging_level_root` | `` | `ro` | `N/A` | Root logger logging level. | +::: + +## Measurement Configuration + +:::{table} Measurement Configuration +:widths: 10 10 5 5 30 +:align: left + +| Name | Type | Read-Only | Default | Description | +| ---- | ---- | --------- | ------- | ----------- | +| `measurement_load0_name` | `Optional[str]` | `rw` | `None` | Name of the load0 source (e.g. 'Household', 'Heat Pump') | +| `measurement_load1_name` | `Optional[str]` | `rw` | `None` | Name of the load1 source (e.g. 'Household', 'Heat Pump') | +| `measurement_load2_name` | `Optional[str]` | `rw` | `None` | Name of the load2 source (e.g. 'Household', 'Heat Pump') | +| `measurement_load3_name` | `Optional[str]` | `rw` | `None` | Name of the load3 source (e.g. 'Household', 'Heat Pump') | +| `measurement_load4_name` | `Optional[str]` | `rw` | `None` | Name of the load4 source (e.g. 'Household', 'Heat Pump') | +::: + +## PV Forecast Configuration + +:::{table} PV Forecast Configuration +:widths: 10 10 5 5 30 +:align: left + +| Name | Type | Read-Only | Default | Description | +| ---- | ---- | --------- | ------- | ----------- | +| `pvforecast0_albedo` | `Optional[float]` | `rw` | `None` | Proportion of the light hitting the ground that it reflects back. | +| `pvforecast0_inverter_model` | `Optional[str]` | `rw` | `None` | Model of the inverter of this plane. | +| `pvforecast0_inverter_paco` | `Optional[int]` | `rw` | `None` | AC power rating of the inverter. [W] | +| `pvforecast0_loss` | `Optional[float]` | `rw` | `14.0` | Sum of PV system losses in percent | +| `pvforecast0_module_model` | `Optional[str]` | `rw` | `None` | Model of the PV modules of this plane. | +| `pvforecast0_modules_per_string` | `Optional[int]` | `rw` | `None` | Number of the PV modules of the strings of this plane. | +| `pvforecast0_mountingplace` | `Optional[str]` | `rw` | `free` | Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated. | +| `pvforecast0_optimal_surface_tilt` | `Optional[bool]` | `rw` | `False` | Calculate the optimum tilt angle. Ignored for two-axis tracking. | +| `pvforecast0_optimalangles` | `Optional[bool]` | `rw` | `False` | Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking. | +| `pvforecast0_peakpower` | `Optional[float]` | `rw` | `None` | Nominal power of PV system in kW. | +| `pvforecast0_pvtechchoice` | `Optional[str]` | `rw` | `crystSi` | PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'. | +| `pvforecast0_strings_per_inverter` | `Optional[int]` | `rw` | `None` | Number of the strings of the inverter of this plane. | +| `pvforecast0_surface_azimuth` | `Optional[float]` | `rw` | `None` | Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270). | +| `pvforecast0_surface_tilt` | `Optional[float]` | `rw` | `None` | Tilt angle from horizontal plane. Ignored for two-axis tracking. | +| `pvforecast0_trackingtype` | `Optional[int]` | `rw` | `None` | Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south. | +| `pvforecast0_userhorizon` | `Optional[typing.List[float]]` | `rw` | `None` | Elevation of horizon in degrees, at equally spaced azimuth clockwise from north. | +| `pvforecast1_albedo` | `Optional[float]` | `rw` | `None` | Proportion of the light hitting the ground that it reflects back. | +| `pvforecast1_inverter_model` | `Optional[str]` | `rw` | `None` | Model of the inverter of this plane. | +| `pvforecast1_inverter_paco` | `Optional[int]` | `rw` | `None` | AC power rating of the inverter. [W] | +| `pvforecast1_loss` | `Optional[float]` | `rw` | `14.0` | Sum of PV system losses in percent | +| `pvforecast1_module_model` | `Optional[str]` | `rw` | `None` | Model of the PV modules of this plane. | +| `pvforecast1_modules_per_string` | `Optional[int]` | `rw` | `None` | Number of the PV modules of the strings of this plane. | +| `pvforecast1_mountingplace` | `Optional[str]` | `rw` | `free` | Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated. | +| `pvforecast1_optimal_surface_tilt` | `Optional[bool]` | `rw` | `False` | Calculate the optimum tilt angle. Ignored for two-axis tracking. | +| `pvforecast1_optimalangles` | `Optional[bool]` | `rw` | `False` | Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking. | +| `pvforecast1_peakpower` | `Optional[float]` | `rw` | `None` | Nominal power of PV system in kW. | +| `pvforecast1_pvtechchoice` | `Optional[str]` | `rw` | `crystSi` | PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'. | +| `pvforecast1_strings_per_inverter` | `Optional[int]` | `rw` | `None` | Number of the strings of the inverter of this plane. | +| `pvforecast1_surface_azimuth` | `Optional[float]` | `rw` | `None` | Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270). | +| `pvforecast1_surface_tilt` | `Optional[float]` | `rw` | `None` | Tilt angle from horizontal plane. Ignored for two-axis tracking. | +| `pvforecast1_trackingtype` | `Optional[int]` | `rw` | `None` | Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south. | +| `pvforecast1_userhorizon` | `Optional[typing.List[float]]` | `rw` | `None` | Elevation of horizon in degrees, at equally spaced azimuth clockwise from north. | +| `pvforecast2_albedo` | `Optional[float]` | `rw` | `None` | Proportion of the light hitting the ground that it reflects back. | +| `pvforecast2_inverter_model` | `Optional[str]` | `rw` | `None` | Model of the inverter of this plane. | +| `pvforecast2_inverter_paco` | `Optional[int]` | `rw` | `None` | AC power rating of the inverter. [W] | +| `pvforecast2_loss` | `Optional[float]` | `rw` | `14.0` | Sum of PV system losses in percent | +| `pvforecast2_module_model` | `Optional[str]` | `rw` | `None` | Model of the PV modules of this plane. | +| `pvforecast2_modules_per_string` | `Optional[int]` | `rw` | `None` | Number of the PV modules of the strings of this plane. | +| `pvforecast2_mountingplace` | `Optional[str]` | `rw` | `free` | Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated. | +| `pvforecast2_optimal_surface_tilt` | `Optional[bool]` | `rw` | `False` | Calculate the optimum tilt angle. Ignored for two-axis tracking. | +| `pvforecast2_optimalangles` | `Optional[bool]` | `rw` | `False` | Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking. | +| `pvforecast2_peakpower` | `Optional[float]` | `rw` | `None` | Nominal power of PV system in kW. | +| `pvforecast2_pvtechchoice` | `Optional[str]` | `rw` | `crystSi` | PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'. | +| `pvforecast2_strings_per_inverter` | `Optional[int]` | `rw` | `None` | Number of the strings of the inverter of this plane. | +| `pvforecast2_surface_azimuth` | `Optional[float]` | `rw` | `None` | Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270). | +| `pvforecast2_surface_tilt` | `Optional[float]` | `rw` | `None` | Tilt angle from horizontal plane. Ignored for two-axis tracking. | +| `pvforecast2_trackingtype` | `Optional[int]` | `rw` | `None` | Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south. | +| `pvforecast2_userhorizon` | `Optional[typing.List[float]]` | `rw` | `None` | Elevation of horizon in degrees, at equally spaced azimuth clockwise from north. | +| `pvforecast3_albedo` | `Optional[float]` | `rw` | `None` | Proportion of the light hitting the ground that it reflects back. | +| `pvforecast3_inverter_model` | `Optional[str]` | `rw` | `None` | Model of the inverter of this plane. | +| `pvforecast3_inverter_paco` | `Optional[int]` | `rw` | `None` | AC power rating of the inverter. [W] | +| `pvforecast3_loss` | `Optional[float]` | `rw` | `14.0` | Sum of PV system losses in percent | +| `pvforecast3_module_model` | `Optional[str]` | `rw` | `None` | Model of the PV modules of this plane. | +| `pvforecast3_modules_per_string` | `Optional[int]` | `rw` | `None` | Number of the PV modules of the strings of this plane. | +| `pvforecast3_mountingplace` | `Optional[str]` | `rw` | `free` | Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated. | +| `pvforecast3_optimal_surface_tilt` | `Optional[bool]` | `rw` | `False` | Calculate the optimum tilt angle. Ignored for two-axis tracking. | +| `pvforecast3_optimalangles` | `Optional[bool]` | `rw` | `False` | Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking. | +| `pvforecast3_peakpower` | `Optional[float]` | `rw` | `None` | Nominal power of PV system in kW. | +| `pvforecast3_pvtechchoice` | `Optional[str]` | `rw` | `crystSi` | PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'. | +| `pvforecast3_strings_per_inverter` | `Optional[int]` | `rw` | `None` | Number of the strings of the inverter of this plane. | +| `pvforecast3_surface_azimuth` | `Optional[float]` | `rw` | `None` | Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270). | +| `pvforecast3_surface_tilt` | `Optional[float]` | `rw` | `None` | Tilt angle from horizontal plane. Ignored for two-axis tracking. | +| `pvforecast3_trackingtype` | `Optional[int]` | `rw` | `None` | Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south. | +| `pvforecast3_userhorizon` | `Optional[typing.List[float]]` | `rw` | `None` | Elevation of horizon in degrees, at equally spaced azimuth clockwise from north. | +| `pvforecast4_albedo` | `Optional[float]` | `rw` | `None` | Proportion of the light hitting the ground that it reflects back. | +| `pvforecast4_inverter_model` | `Optional[str]` | `rw` | `None` | Model of the inverter of this plane. | +| `pvforecast4_inverter_paco` | `Optional[int]` | `rw` | `None` | AC power rating of the inverter. [W] | +| `pvforecast4_loss` | `Optional[float]` | `rw` | `14.0` | Sum of PV system losses in percent | +| `pvforecast4_module_model` | `Optional[str]` | `rw` | `None` | Model of the PV modules of this plane. | +| `pvforecast4_modules_per_string` | `Optional[int]` | `rw` | `None` | Number of the PV modules of the strings of this plane. | +| `pvforecast4_mountingplace` | `Optional[str]` | `rw` | `free` | Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated. | +| `pvforecast4_optimal_surface_tilt` | `Optional[bool]` | `rw` | `False` | Calculate the optimum tilt angle. Ignored for two-axis tracking. | +| `pvforecast4_optimalangles` | `Optional[bool]` | `rw` | `False` | Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking. | +| `pvforecast4_peakpower` | `Optional[float]` | `rw` | `None` | Nominal power of PV system in kW. | +| `pvforecast4_pvtechchoice` | `Optional[str]` | `rw` | `crystSi` | PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'. | +| `pvforecast4_strings_per_inverter` | `Optional[int]` | `rw` | `None` | Number of the strings of the inverter of this plane. | +| `pvforecast4_surface_azimuth` | `Optional[float]` | `rw` | `None` | Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270). | +| `pvforecast4_surface_tilt` | `Optional[float]` | `rw` | `None` | Tilt angle from horizontal plane. Ignored for two-axis tracking. | +| `pvforecast4_trackingtype` | `Optional[int]` | `rw` | `None` | Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south. | +| `pvforecast4_userhorizon` | `Optional[typing.List[float]]` | `rw` | `None` | Elevation of horizon in degrees, at equally spaced azimuth clockwise from north. | +| `pvforecast5_albedo` | `Optional[float]` | `rw` | `None` | Proportion of the light hitting the ground that it reflects back. | +| `pvforecast5_inverter_model` | `Optional[str]` | `rw` | `None` | Model of the inverter of this plane. | +| `pvforecast5_inverter_paco` | `Optional[int]` | `rw` | `None` | AC power rating of the inverter. [W] | +| `pvforecast5_loss` | `Optional[float]` | `rw` | `14.0` | Sum of PV system losses in percent | +| `pvforecast5_module_model` | `Optional[str]` | `rw` | `None` | Model of the PV modules of this plane. | +| `pvforecast5_modules_per_string` | `Optional[int]` | `rw` | `None` | Number of the PV modules of the strings of this plane. | +| `pvforecast5_mountingplace` | `Optional[str]` | `rw` | `free` | Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated. | +| `pvforecast5_optimal_surface_tilt` | `Optional[bool]` | `rw` | `False` | Calculate the optimum tilt angle. Ignored for two-axis tracking. | +| `pvforecast5_optimalangles` | `Optional[bool]` | `rw` | `False` | Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking. | +| `pvforecast5_peakpower` | `Optional[float]` | `rw` | `None` | Nominal power of PV system in kW. | +| `pvforecast5_pvtechchoice` | `Optional[str]` | `rw` | `crystSi` | PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'. | +| `pvforecast5_strings_per_inverter` | `Optional[int]` | `rw` | `None` | Number of the strings of the inverter of this plane. | +| `pvforecast5_surface_azimuth` | `Optional[float]` | `rw` | `None` | Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270). | +| `pvforecast5_surface_tilt` | `Optional[float]` | `rw` | `None` | Tilt angle from horizontal plane. Ignored for two-axis tracking. | +| `pvforecast5_trackingtype` | `Optional[int]` | `rw` | `None` | Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south. | +| `pvforecast5_userhorizon` | `Optional[typing.List[float]]` | `rw` | `None` | Elevation of horizon in degrees, at equally spaced azimuth clockwise from north. | +| `pvforecast_planes` | `List[str]` | `ro` | `N/A` | Compute a list of active planes. | +| `pvforecast_planes_azimuth` | `List[float]` | `ro` | `N/A` | Compute a list of the azimuths per active planes. | +| `pvforecast_planes_inverter_paco` | `Any` | `ro` | `N/A` | Compute a list of the maximum power rating of the inverter per active planes. | +| `pvforecast_planes_peakpower` | `List[float]` | `ro` | `N/A` | Compute a list of the peak power per active planes. | +| `pvforecast_planes_tilt` | `List[float]` | `ro` | `N/A` | Compute a list of the tilts per active planes. | +| `pvforecast_planes_userhorizon` | `Any` | `ro` | `N/A` | Compute a list of the user horizon per active planes. | +| `pvforecast_provider` | `Optional[str]` | `rw` | `None` | PVForecast provider id of provider to be used. | +| `pvforecastimport_file_path` | `Union[str, pathlib.Path, NoneType]` | `rw` | `None` | Path to the file to import PV forecast data from. | +| `pvforecastimport_json` | `Optional[str]` | `rw` | `None` | JSON string, dictionary of PV forecast value lists. | +::: + +## Server Configuration + +:::{table} Server Configuration +:widths: 10 10 5 5 30 +:align: left + +| Name | Type | Read-Only | Default | Description | +| ---- | ---- | --------- | ------- | ----------- | +| `server_fastapi_host` | `Optional[pydantic.networks.IPvAnyAddress]` | `rw` | `0.0.0.0` | FastAPI server IP address. | +| `server_fastapi_port` | `Optional[int]` | `rw` | `8503` | FastAPI server IP port number. | +| `server_fastapi_startup_server_fasthtml` | `Optional[bool]` | `rw` | `True` | FastAPI server to startup application FastHTML server. | +| `server_fastapi_verbose` | `Optional[bool]` | `rw` | `False` | Enable debug output | +| `server_fasthtml_host` | `Optional[pydantic.networks.IPvAnyAddress]` | `rw` | `0.0.0.0` | FastHTML server IP address. | +| `server_fasthtml_port` | `Optional[int]` | `rw` | `8504` | FastHTML server IP port number. | +::: + +## Weather Forecast Configuration + +:::{table} Weather Forecast Configuration +:widths: 10 10 5 5 30 +:align: left + +| Name | Type | Read-Only | Default | Description | +| ---- | ---- | --------- | ------- | ----------- | +| `weather_provider` | `Optional[str]` | `rw` | `None` | Weather provider id of provider to be used. | +| `weatherimport_file_path` | `Union[str, pathlib.Path, NoneType]` | `rw` | `None` | Path to the file to import weather data from. | +| `weatherimport_json` | `Optional[str]` | `rw` | `None` | JSON string, dictionary of weather forecast value lists. | +::: diff --git a/tests/testdata/openapi.md b/docs/_generated/openapi.md similarity index 86% rename from tests/testdata/openapi.md rename to docs/_generated/openapi.md index 3f30f14..0bcab6d 100644 --- a/tests/testdata/openapi.md +++ b/docs/_generated/openapi.md @@ -10,7 +10,7 @@ ## POST /gesamtlast -**Links**: [local](http://localhost:8503/docs#/default/fastapi_gesamtlast_gesamtlast_post), [swagger](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_gesamtlast_gesamtlast_post) +**Links**: [local](http://localhost:8503/docs#/default/fastapi_gesamtlast_gesamtlast_post), [eos](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_gesamtlast_gesamtlast_post) Fastapi Gesamtlast @@ -46,7 +46,7 @@ Note: ## GET /gesamtlast_simple -**Links**: [local](http://localhost:8503/docs#/default/fastapi_gesamtlast_simple_gesamtlast_simple_get), [swagger](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_gesamtlast_simple_gesamtlast_simple_get) +**Links**: [local](http://localhost:8503/docs#/default/fastapi_gesamtlast_simple_gesamtlast_simple_get), [eos](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_gesamtlast_simple_gesamtlast_simple_get) Fastapi Gesamtlast Simple @@ -80,7 +80,7 @@ Note: ## POST /optimize -**Links**: [local](http://localhost:8503/docs#/default/fastapi_optimize_optimize_post), [swagger](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_optimize_optimize_post) +**Links**: [local](http://localhost:8503/docs#/default/fastapi_optimize_optimize_post), [eos](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_optimize_optimize_post) Fastapi Optimize @@ -104,7 +104,7 @@ Fastapi Optimize ## GET /pvforecast -**Links**: [local](http://localhost:8503/docs#/default/fastapi_pvforecast_pvforecast_get), [swagger](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_pvforecast_pvforecast_get) +**Links**: [local](http://localhost:8503/docs#/default/fastapi_pvforecast_pvforecast_get), [eos](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_pvforecast_pvforecast_get) Fastapi Pvforecast @@ -133,7 +133,7 @@ Note: ## GET /strompreis -**Links**: [local](http://localhost:8503/docs#/default/fastapi_strompreis_strompreis_get), [swagger](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_strompreis_strompreis_get) +**Links**: [local](http://localhost:8503/docs#/default/fastapi_strompreis_strompreis_get), [eos](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_strompreis_strompreis_get) Fastapi Strompreis @@ -163,7 +163,7 @@ Note: ## GET /v1/config -**Links**: [local](http://localhost:8503/docs#/default/fastapi_config_get_v1_config_get), [swagger](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_config_get_v1_config_get) +**Links**: [local](http://localhost:8503/docs#/default/fastapi_config_get_v1_config_get), [eos](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_config_get_v1_config_get) Fastapi Config Get @@ -182,7 +182,7 @@ Returns: ## PUT /v1/config -**Links**: [local](http://localhost:8503/docs#/default/fastapi_config_put_v1_config_put), [swagger](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_config_put_v1_config_put) +**Links**: [local](http://localhost:8503/docs#/default/fastapi_config_put_v1_config_put), [eos](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_config_put_v1_config_put) Fastapi Config Put @@ -516,7 +516,7 @@ Returns: ## GET /v1/config/file -**Links**: [local](http://localhost:8503/docs#/default/fastapi_config_file_get_v1_config_file_get), [swagger](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_config_file_get_v1_config_file_get) +**Links**: [local](http://localhost:8503/docs#/default/fastapi_config_file_get_v1_config_file_get), [eos](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_config_file_get_v1_config_file_get) Fastapi Config File Get @@ -535,7 +535,7 @@ Returns: ## PUT /v1/config/file -**Links**: [local](http://localhost:8503/docs#/default/fastapi_config_file_put_v1_config_file_put), [swagger](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_config_file_put_v1_config_file_put) +**Links**: [local](http://localhost:8503/docs#/default/fastapi_config_file_put_v1_config_file_put), [eos](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_config_file_put_v1_config_file_put) Fastapi Config File Put @@ -554,7 +554,7 @@ Returns: ## POST /v1/config/update -**Links**: [local](http://localhost:8503/docs#/default/fastapi_config_update_post_v1_config_update_post), [swagger](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_config_update_post_v1_config_update_post) +**Links**: [local](http://localhost:8503/docs#/default/fastapi_config_update_post_v1_config_update_post), [eos](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_config_update_post_v1_config_update_post) Fastapi Config Update Post @@ -573,7 +573,7 @@ Returns: ## PUT /v1/config/value -**Links**: [local](http://localhost:8503/docs#/default/fastapi_config_value_put_v1_config_value_put), [swagger](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_config_value_put_v1_config_value_put) +**Links**: [local](http://localhost:8503/docs#/default/fastapi_config_value_put_v1_config_value_put), [eos](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_config_value_put_v1_config_value_put) Fastapi Config Value Put @@ -604,7 +604,7 @@ Returns: ## PUT /v1/measurement/data -**Links**: [local](http://localhost:8503/docs#/default/fastapi_measurement_data_put_v1_measurement_data_put), [swagger](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_measurement_data_put_v1_measurement_data_put) +**Links**: [local](http://localhost:8503/docs#/default/fastapi_measurement_data_put_v1_measurement_data_put), [eos](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_measurement_data_put_v1_measurement_data_put) Fastapi Measurement Data Put @@ -628,7 +628,7 @@ Merge the measurement data given as datetime data into EOS measurements. ## PUT /v1/measurement/dataframe -**Links**: [local](http://localhost:8503/docs#/default/fastapi_measurement_dataframe_put_v1_measurement_dataframe_put), [swagger](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_measurement_dataframe_put_v1_measurement_dataframe_put) +**Links**: [local](http://localhost:8503/docs#/default/fastapi_measurement_dataframe_put_v1_measurement_dataframe_put), [eos](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_measurement_dataframe_put_v1_measurement_dataframe_put) Fastapi Measurement Dataframe Put @@ -652,7 +652,7 @@ Merge the measurement data given as dataframe into EOS measurements. ## GET /v1/measurement/keys -**Links**: [local](http://localhost:8503/docs#/default/fastapi_measurement_keys_get_v1_measurement_keys_get), [swagger](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_measurement_keys_get_v1_measurement_keys_get) +**Links**: [local](http://localhost:8503/docs#/default/fastapi_measurement_keys_get_v1_measurement_keys_get), [eos](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_measurement_keys_get_v1_measurement_keys_get) Fastapi Measurement Keys Get @@ -668,7 +668,7 @@ Get a list of available measurement keys. ## GET /v1/measurement/load-mr/series/by-name -**Links**: [local](http://localhost:8503/docs#/default/fastapi_measurement_load_mr_series_by_name_get_v1_measurement_load-mr_series_by-name_get), [swagger](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_measurement_load_mr_series_by_name_get_v1_measurement_load-mr_series_by-name_get) +**Links**: [local](http://localhost:8503/docs#/default/fastapi_measurement_load_mr_series_by_name_get_v1_measurement_load-mr_series_by-name_get), [eos](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_measurement_load_mr_series_by_name_get_v1_measurement_load-mr_series_by-name_get) Fastapi Measurement Load Mr Series By Name Get @@ -690,7 +690,7 @@ Get the meter reading of given load name as series. ## PUT /v1/measurement/load-mr/series/by-name -**Links**: [local](http://localhost:8503/docs#/default/fastapi_measurement_load_mr_series_by_name_put_v1_measurement_load-mr_series_by-name_put), [swagger](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_measurement_load_mr_series_by_name_put_v1_measurement_load-mr_series_by-name_put) +**Links**: [local](http://localhost:8503/docs#/default/fastapi_measurement_load_mr_series_by_name_put_v1_measurement_load-mr_series_by-name_put), [eos](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_measurement_load_mr_series_by_name_put_v1_measurement_load-mr_series_by-name_put) Fastapi Measurement Load Mr Series By Name Put @@ -718,7 +718,7 @@ Merge the meter readings series of given load name into EOS measurements at give ## PUT /v1/measurement/load-mr/value/by-name -**Links**: [local](http://localhost:8503/docs#/default/fastapi_measurement_load_mr_value_by_name_put_v1_measurement_load-mr_value_by-name_put), [swagger](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_measurement_load_mr_value_by_name_put_v1_measurement_load-mr_value_by-name_put) +**Links**: [local](http://localhost:8503/docs#/default/fastapi_measurement_load_mr_value_by_name_put_v1_measurement_load-mr_value_by-name_put), [eos](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_measurement_load_mr_value_by_name_put_v1_measurement_load-mr_value_by-name_put) Fastapi Measurement Load Mr Value By Name Put @@ -744,7 +744,7 @@ Merge the meter reading of given load name and value into EOS measurements at gi ## GET /v1/measurement/series -**Links**: [local](http://localhost:8503/docs#/default/fastapi_measurement_series_get_v1_measurement_series_get), [swagger](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_measurement_series_get_v1_measurement_series_get) +**Links**: [local](http://localhost:8503/docs#/default/fastapi_measurement_series_get_v1_measurement_series_get), [eos](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_measurement_series_get_v1_measurement_series_get) Fastapi Measurement Series Get @@ -766,7 +766,7 @@ Get the measurements of given key as series. ## PUT /v1/measurement/series -**Links**: [local](http://localhost:8503/docs#/default/fastapi_measurement_series_put_v1_measurement_series_put), [swagger](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_measurement_series_put_v1_measurement_series_put) +**Links**: [local](http://localhost:8503/docs#/default/fastapi_measurement_series_put_v1_measurement_series_put), [eos](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_measurement_series_put_v1_measurement_series_put) Fastapi Measurement Series Put @@ -794,7 +794,7 @@ Merge measurement given as series into given key. ## PUT /v1/measurement/value -**Links**: [local](http://localhost:8503/docs#/default/fastapi_measurement_value_put_v1_measurement_value_put), [swagger](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_measurement_value_put_v1_measurement_value_put) +**Links**: [local](http://localhost:8503/docs#/default/fastapi_measurement_value_put_v1_measurement_value_put), [eos](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_measurement_value_put_v1_measurement_value_put) Fastapi Measurement Value Put @@ -820,7 +820,7 @@ Merge the measurement of given key and value into EOS measurements at given date ## GET /v1/prediction/keys -**Links**: [local](http://localhost:8503/docs#/default/fastapi_prediction_keys_get_v1_prediction_keys_get), [swagger](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_prediction_keys_get_v1_prediction_keys_get) +**Links**: [local](http://localhost:8503/docs#/default/fastapi_prediction_keys_get_v1_prediction_keys_get), [eos](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_prediction_keys_get_v1_prediction_keys_get) Fastapi Prediction Keys Get @@ -836,7 +836,7 @@ Get a list of available prediction keys. ## GET /v1/prediction/list -**Links**: [local](http://localhost:8503/docs#/default/fastapi_prediction_list_get_v1_prediction_list_get), [swagger](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_prediction_list_get_v1_prediction_list_get) +**Links**: [local](http://localhost:8503/docs#/default/fastapi_prediction_list_get_v1_prediction_list_get), [eos](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_prediction_list_get_v1_prediction_list_get) Fastapi Prediction List Get @@ -873,7 +873,7 @@ Args: ## GET /v1/prediction/series -**Links**: [local](http://localhost:8503/docs#/default/fastapi_prediction_series_get_v1_prediction_series_get), [swagger](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_prediction_series_get_v1_prediction_series_get) +**Links**: [local](http://localhost:8503/docs#/default/fastapi_prediction_series_get_v1_prediction_series_get), [eos](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_prediction_series_get_v1_prediction_series_get) Fastapi Prediction Series Get @@ -906,7 +906,7 @@ Args: ## POST /v1/prediction/update -**Links**: [local](http://localhost:8503/docs#/default/fastapi_prediction_update_v1_prediction_update_post), [swagger](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_prediction_update_v1_prediction_update_post) +**Links**: [local](http://localhost:8503/docs#/default/fastapi_prediction_update_v1_prediction_update_post), [eos](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_prediction_update_v1_prediction_update_post) Fastapi Prediction Update @@ -936,7 +936,7 @@ Args: ## POST /v1/prediction/update/{provider_id} -**Links**: [local](http://localhost:8503/docs#/default/fastapi_prediction_update_provider_v1_prediction_update__provider_id__post), [swagger](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_prediction_update_provider_v1_prediction_update__provider_id__post) +**Links**: [local](http://localhost:8503/docs#/default/fastapi_prediction_update_provider_v1_prediction_update__provider_id__post), [eos](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_prediction_update_provider_v1_prediction_update__provider_id__post) Fastapi Prediction Update Provider @@ -969,7 +969,7 @@ Args: ## GET /visualization_results.pdf -**Links**: [local](http://localhost:8503/docs#/default/get_pdf_visualization_results_pdf_get), [swagger](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/get_pdf_visualization_results_pdf_get) +**Links**: [local](http://localhost:8503/docs#/default/get_pdf_visualization_results_pdf_get), [eos](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/get_pdf_visualization_results_pdf_get) Get Pdf diff --git a/docs/akkudoktoreos/configuration.md b/docs/akkudoktoreos/configuration.md index a8c498b..2bdd853 100644 --- a/docs/akkudoktoreos/configuration.md +++ b/docs/akkudoktoreos/configuration.md @@ -84,6 +84,8 @@ and default settings are loaded into it. Some of the `configuration keys` have default values by definition. For most of the `configuration keys` the default value is just `None`, which means no default value. -```{eval-sh} -./scripts/generate_config_md.py | ./scripts/extract_markdown.py --input-stdin --heading-level 1 +```{include} /_generated/config.md +:heading-offset: 1 +:relative-docs: .. +:relative-images: ``` diff --git a/docs/akkudoktoreos/serverapi.md b/docs/akkudoktoreos/serverapi.md index 39011eb..362da73 100644 --- a/docs/akkudoktoreos/serverapi.md +++ b/docs/akkudoktoreos/serverapi.md @@ -2,6 +2,8 @@ # Server API -```{eval-sh} -./scripts/generate_openapi_md.py | ./scripts/extract_markdown.py --input-stdin --start-line "**Version**:" +```{include} /_generated/openapi.md +:start-line: 2 +:relative-docs: .. +:relative-images: ``` diff --git a/docs/conf.py b/docs/conf.py index 3551dea..f03f9e9 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -24,7 +24,7 @@ extensions = [ "sphinx.ext.napoleon", "sphinx_rtd_theme", "myst_parser", - "sphinxcontrib.eval", + "sphinx_tabs.tabs", ] templates_path = ["_templates"] diff --git a/docs/develop/CONTRIBUTING.md b/docs/develop/CONTRIBUTING.md index 3c75cc3..b801cb1 100644 --- a/docs/develop/CONTRIBUTING.md +++ b/docs/develop/CONTRIBUTING.md @@ -1,3 +1,4 @@ -```{eval-sh} -./scripts/extract_markdown.py --input-file CONTRIBUTING.md +```{include} ../../CONTRIBUTING.md +:relative-docs: ../ +:relative-images: ``` diff --git a/docs/develop/getting_started.md b/docs/develop/getting_started.md index 6e55472..3424b0c 100644 --- a/docs/develop/getting_started.md +++ b/docs/develop/getting_started.md @@ -1,5 +1,109 @@ # Getting Started -```{eval-sh} -./scripts/extract_markdown.py --input-file README.md --start-line "## Getting Involved" +## Installation + +The project requires Python 3.10 or newer. Currently there are no official packages or images published. + +Following sections describe how to locally start the EOS server on `http://localhost:8503`. + +### Run from source + +Install the dependencies in a virtual environment: + +```{eval-rst} +.. tabs:: + + .. tab:: Windows + + .. code-block:: powershell + + python -m venv .venv + .venv\Scripts\pip install -r requirements.txt + + .. tab:: Linux + + .. code-block:: bash + + python -m venv .venv + .venv/bin/pip install -r requirements.txt + ``` + +Start the EOS fastapi server: + +```{eval-rst} +.. tabs:: + + .. tab:: Windows + + .. code-block:: powershell + + .venv\Scripts\fastapi run src/akkudoktoreos/server/fastapi_server.py + + .. tab:: Linux + + .. code-block:: bash + + .venv/bin/fastapi run src/akkudoktoreos/server/fastapi_server.py + +``` + +### Docker + +```{eval-rst} +.. tabs:: + + .. tab:: Windows + + .. code-block:: powershell + + docker compose up --build + + .. tab:: Linux + + .. code-block:: bash + + docker compose up --build + +``` + +## Configuration + +This project uses the `EOS.config.json` file to manage configuration settings. + +### Default Configuration + +A default configuration file `default.config.json` is provided. This file contains all the necessary configuration keys with their default values. + +### Custom Configuration + +Users can specify a custom configuration directory by setting the environment variable `EOS_DIR`. + +- If the directory specified by `EOS_DIR` contains an existing `config.json` file, the application will use this configuration file. +- If the `EOS.config.json` file does not exist in the specified directory, the `default.config.json` file will be copied to the directory as `EOS.config.json`. + +### Configuration Updates + +If the configuration keys in the `EOS.config.json` file are missing or different from those in `default.config.json`, they will be automatically updated to match the default settings, ensuring that all required keys are present. + +## Classes and Functionalities + +This project uses various classes to simulate and optimize the components of an energy system. Each class represents a specific aspect of the system, as described below: + +- `Battery`: Simulates a battery storage system, including capacity, state of charge, and now charge and discharge losses. + +- `PVForecast`: Provides forecast data for photovoltaic generation, based on weather data and historical generation data. + +- `Load`: Models the load requirements of a household or business, enabling the prediction of future energy demand. + +- `Heatpump`: Simulates a heat pump, including its energy consumption and efficiency under various operating conditions. + +- `Strompreis`: Provides information on electricity prices, enabling optimization of energy consumption and generation based on tariff information. + +- `EMS`: The Energy Management System (EMS) coordinates the interaction between the various components, performs optimization, and simulates the operation of the entire energy system. + +These classes work together to enable a detailed simulation and optimization of the energy system. For each class, specific parameters and settings can be adjusted to test different scenarios and strategies. + +### Customization and Extension + +Each class is designed to be easily customized and extended to integrate additional functions or improvements. For example, new methods can be added for more accurate modeling of PV system or battery behavior. Developers are invited to modify and extend the system according to their needs. diff --git a/openapi.json b/openapi.json index 684cc45..64409be 100644 --- a/openapi.json +++ b/openapi.json @@ -1,8961 +1,8961 @@ { - "components": { - "schemas": { - "ConfigEOS": { - "description": "Singleton configuration handler for the EOS application.\n\nConfigEOS extends `SettingsEOS` with support for default configuration paths and automatic\ninitialization.\n\n`ConfigEOS` ensures that only one instance of the class is created throughout the application,\nallowing consistent access to EOS configuration settings. This singleton instance loads\nconfiguration data from a predefined set of directories or creates a default configuration if\nnone is found.\n\nInitialization Process:\n - Upon instantiation, the singleton instance attempts to load a configuration file in this order:\n 1. The directory specified by the `EOS_CONFIG_DIR` environment variable\n 2. The directory specified by the `EOS_DIR` environment variable.\n 3. A platform specific default directory for EOS.\n 4. The current working directory.\n - The first available configuration file found in these directories is loaded.\n - If no configuration file is found, a default configuration file is created in the platform\n specific default directory, and default settings are loaded into it.\n\nAttributes from the loaded configuration are accessible directly as instance attributes of\n`ConfigEOS`, providing a centralized, shared configuration object for EOS.\n\nSingleton Behavior:\n - This class uses the `SingletonMixin` to ensure that all requests for `ConfigEOS` return\n the same instance, which contains the most up-to-date configuration. Modifying the configuration\n in one part of the application reflects across all references to this class.\n\nAttributes:\n _settings (ClassVar[SettingsEOS]): Holds application-wide settings.\n _file_settings (ClassVar[SettingsEOS]): Stores configuration loaded from file.\n config_folder_path (Optional[Path]): Path to the configuration directory.\n config_file_path (Optional[Path]): Path to the configuration file.\n\nRaises:\n FileNotFoundError: If no configuration file is found, and creating a default configuration fails.\n\nExample:\n To initialize and access configuration attributes (only one instance is created):\n ```python\n config_eos = ConfigEOS() # Always returns the same instance\n print(config_eos.prediction_hours) # Access a setting from the loaded configuration\n ```", - "properties": { - "battery_capacity": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Battery capacity [Wh].", - "title": "Battery Capacity" - }, - "battery_charging_efficiency": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Battery charging efficiency [%].", - "title": "Battery Charging Efficiency" - }, - "battery_discharging_efficiency": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Battery discharging efficiency [%].", - "title": "Battery Discharging Efficiency" - }, - "battery_initial_soc": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Battery initial state of charge [%].", - "title": "Battery Initial Soc" - }, - "battery_max_charging_power": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Battery maximum charge power [W].", - "title": "Battery Max Charging Power" - }, - "battery_provider": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Id of Battery simulation provider.", - "title": "Battery Provider" - }, - "battery_soc_max": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Battery maximum state of charge [%].", - "title": "Battery Soc Max" - }, - "battery_soc_min": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Battery minimum state of charge [%].", - "title": "Battery Soc Min" - }, - "bev_capacity": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Battery Electric Vehicle capacity [Wh].", - "title": "Bev Capacity" - }, - "bev_charging_efficiency": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Battery Electric Vehicle charging efficiency [%].", - "title": "Bev Charging Efficiency" - }, - "bev_discharging_efficiency": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Battery Electric Vehicle discharging efficiency [%].", - "title": "Bev Discharging Efficiency" - }, - "bev_initial_soc": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Battery Electric Vehicle initial state of charge [%].", - "title": "Bev Initial Soc" - }, - "bev_max_charging_power": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Battery Electric Vehicle maximum charge power [W].", - "title": "Bev Max Charging Power" - }, - "bev_provider": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Id of Battery Electric Vehicle simulation provider.", - "title": "Bev Provider" - }, - "bev_soc_max": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Battery Electric Vehicle maximum state of charge [%].", - "title": "Bev Soc Max" - }, - "config_default_file_path": { - "description": "Compute the default config file path.", - "format": "path", - "readOnly": true, - "title": "Config Default File Path", - "type": "string" - }, - "config_file_path": { - "anyOf": [ - { - "format": "path", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Path to EOS configuration file.", - "readOnly": true, - "title": "Config File Path" - }, - "config_folder_path": { - "anyOf": [ - { - "format": "path", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Path to EOS configuration directory.", - "readOnly": true, - "title": "Config Folder Path" - }, - "config_keys": { - "description": "Returns the keys of all fields in the configuration.", - "items": { - "type": "string" - }, - "readOnly": true, - "title": "Config Keys", - "type": "array" - }, - "config_keys_read_only": { - "description": "Returns the keys of all read only fields in the configuration.", - "items": { - "type": "string" - }, - "readOnly": true, - "title": "Config Keys Read Only", - "type": "array" - }, - "data_cache_path": { - "anyOf": [ - { - "format": "path", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Compute data_cache_path based on data_folder_path.", - "readOnly": true, - "title": "Data Cache Path" - }, - "data_cache_subpath": { - "anyOf": [ - { - "format": "path", - "type": "string" - }, - { - "type": "null" - } - ], - "default": "cache", - "description": "Sub-path for the EOS cache data directory.", - "title": "Data Cache Subpath" - }, - "data_folder_path": { - "anyOf": [ - { - "format": "path", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Path to EOS data directory.", - "title": "Data Folder Path" - }, - "data_output_path": { - "anyOf": [ - { - "format": "path", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Compute data_output_path based on data_folder_path.", - "readOnly": true, - "title": "Data Output Path" - }, - "data_output_subpath": { - "anyOf": [ - { - "format": "path", - "type": "string" - }, - { - "type": "null" - } - ], - "default": "output", - "description": "Sub-path for the EOS output data directory.", - "title": "Data Output Subpath" - }, - "dishwasher_consumption": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Dish Washer energy consumption [Wh].", - "title": "Dishwasher Consumption" - }, - "dishwasher_duration": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Dish Washer usage duration [h].", - "title": "Dishwasher Duration" - }, - "dishwasher_provider": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Id of Dish Washer simulation provider.", - "title": "Dishwasher Provider" - }, - "elecprice_charges_kwh": { - "anyOf": [ - { - "minimum": 0.0, - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Electricity price charges (\u20ac/kWh).", - "title": "Elecprice Charges Kwh" - }, - "elecprice_provider": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Electricity price provider id of provider to be used.", - "title": "Elecprice Provider" - }, - "elecpriceimport_file_path": { - "anyOf": [ - { - "type": "string" - }, - { - "format": "path", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Path to the file to import elecprice data from.", - "title": "Elecpriceimport File Path" - }, - "elecpriceimport_json": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "JSON string, dictionary of electricity price forecast value lists.", - "title": "Elecpriceimport Json" - }, - "inverter_power_max": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Inverter maximum power [W].", - "title": "Inverter Power Max" - }, - "inverter_provider": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Id of PV Inverter simulation provider.", - "title": "Inverter Provider" - }, - "latitude": { - "anyOf": [ - { - "maximum": 90.0, - "minimum": -90.0, - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Latitude in decimal degrees, between -90 and 90, north is positive (ISO 19115) (\u00b0)", - "title": "Latitude" - }, - "load_import_file_path": { - "anyOf": [ - { - "type": "string" - }, - { - "format": "path", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Path to the file to import load data from.", - "title": "Load Import File Path" - }, - "load_import_json": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "JSON string, dictionary of load forecast value lists.", - "title": "Load Import Json" - }, - "load_provider": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Load provider id of provider to be used.", - "title": "Load Provider" - }, - "loadakkudoktor_year_energy": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Yearly energy consumption (kWh).", - "title": "Loadakkudoktor Year Energy" - }, - "logging_level_default": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "EOS default logging level.", - "title": "Logging Level Default" - }, - "logging_level_root": { - "description": "Root logger logging level.", - "readOnly": true, - "title": "Logging Level Root", - "type": "string" - }, - "longitude": { - "anyOf": [ - { - "maximum": 180.0, - "minimum": -180.0, - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Longitude in decimal degrees, within -180 to 180 (\u00b0)", - "title": "Longitude" - }, - "measurement_load0_name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Name of the load0 source (e.g. 'Household', 'Heat Pump')", - "title": "Measurement Load0 Name" - }, - "measurement_load1_name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Name of the load1 source (e.g. 'Household', 'Heat Pump')", - "title": "Measurement Load1 Name" - }, - "measurement_load2_name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Name of the load2 source (e.g. 'Household', 'Heat Pump')", - "title": "Measurement Load2 Name" - }, - "measurement_load3_name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Name of the load3 source (e.g. 'Household', 'Heat Pump')", - "title": "Measurement Load3 Name" - }, - "measurement_load4_name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Name of the load4 source (e.g. 'Household', 'Heat Pump')", - "title": "Measurement Load4 Name" - }, - "optimization_ev_available_charge_rates_percent": { - "anyOf": [ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": [ - 0.0, - 0.375, - 0.5, - 0.625, - 0.75, - 0.875, - 1.0 - ], - "description": "Charge rates available for the EV in percent of maximum charge.", - "title": "Optimization Ev Available Charge Rates Percent" - }, - "optimization_hours": { - "anyOf": [ - { - "minimum": 0.0, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": 24, - "description": "Number of hours into the future for optimizations.", - "title": "Optimization Hours" - }, - "optimization_penalty": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": 10, - "description": "Penalty factor used in optimization.", - "title": "Optimization Penalty" - }, - "package_root_path": { - "description": "Compute the package root path.", - "format": "path", - "readOnly": true, - "title": "Package Root Path", - "type": "string" - }, - "prediction_historic_hours": { - "anyOf": [ - { - "minimum": 0.0, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": 48, - "description": "Number of hours into the past for historical predictions data", - "title": "Prediction Historic Hours" - }, - "prediction_hours": { - "anyOf": [ - { - "minimum": 0.0, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": 48, - "description": "Number of hours into the future for predictions", - "title": "Prediction Hours" - }, - "pvforecast0_albedo": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Proportion of the light hitting the ground that it reflects back.", - "title": "Pvforecast0 Albedo" - }, - "pvforecast0_inverter_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the inverter of this plane.", - "title": "Pvforecast0 Inverter Model" - }, - "pvforecast0_inverter_paco": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "AC power rating of the inverter. [W]", - "title": "Pvforecast0 Inverter Paco" - }, - "pvforecast0_loss": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": 14.0, - "description": "Sum of PV system losses in percent", - "title": "Pvforecast0 Loss" - }, - "pvforecast0_module_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the PV modules of this plane.", - "title": "Pvforecast0 Module Model" - }, - "pvforecast0_modules_per_string": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the PV modules of the strings of this plane.", - "title": "Pvforecast0 Modules Per String" - }, - "pvforecast0_mountingplace": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "free", - "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", - "title": "Pvforecast0 Mountingplace" - }, - "pvforecast0_optimal_surface_tilt": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", - "title": "Pvforecast0 Optimal Surface Tilt" - }, - "pvforecast0_optimalangles": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", - "title": "Pvforecast0 Optimalangles" - }, - "pvforecast0_peakpower": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Nominal power of PV system in kW.", - "title": "Pvforecast0 Peakpower" - }, - "pvforecast0_pvtechchoice": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "crystSi", - "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", - "title": "Pvforecast0 Pvtechchoice" - }, - "pvforecast0_strings_per_inverter": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the strings of the inverter of this plane.", - "title": "Pvforecast0 Strings Per Inverter" - }, - "pvforecast0_surface_azimuth": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", - "title": "Pvforecast0 Surface Azimuth" - }, - "pvforecast0_surface_tilt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", - "title": "Pvforecast0 Surface Tilt" - }, - "pvforecast0_trackingtype": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", - "title": "Pvforecast0 Trackingtype" - }, - "pvforecast0_userhorizon": { - "anyOf": [ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", - "title": "Pvforecast0 Userhorizon" - }, - "pvforecast1_albedo": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Proportion of the light hitting the ground that it reflects back.", - "title": "Pvforecast1 Albedo" - }, - "pvforecast1_inverter_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the inverter of this plane.", - "title": "Pvforecast1 Inverter Model" - }, - "pvforecast1_inverter_paco": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "AC power rating of the inverter. [W]", - "title": "Pvforecast1 Inverter Paco" - }, - "pvforecast1_loss": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": 14.0, - "description": "Sum of PV system losses in percent", - "title": "Pvforecast1 Loss" - }, - "pvforecast1_module_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the PV modules of this plane.", - "title": "Pvforecast1 Module Model" - }, - "pvforecast1_modules_per_string": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the PV modules of the strings of this plane.", - "title": "Pvforecast1 Modules Per String" - }, - "pvforecast1_mountingplace": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "free", - "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", - "title": "Pvforecast1 Mountingplace" - }, - "pvforecast1_optimal_surface_tilt": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", - "title": "Pvforecast1 Optimal Surface Tilt" - }, - "pvforecast1_optimalangles": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", - "title": "Pvforecast1 Optimalangles" - }, - "pvforecast1_peakpower": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Nominal power of PV system in kW.", - "title": "Pvforecast1 Peakpower" - }, - "pvforecast1_pvtechchoice": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "crystSi", - "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", - "title": "Pvforecast1 Pvtechchoice" - }, - "pvforecast1_strings_per_inverter": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the strings of the inverter of this plane.", - "title": "Pvforecast1 Strings Per Inverter" - }, - "pvforecast1_surface_azimuth": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", - "title": "Pvforecast1 Surface Azimuth" - }, - "pvforecast1_surface_tilt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", - "title": "Pvforecast1 Surface Tilt" - }, - "pvforecast1_trackingtype": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", - "title": "Pvforecast1 Trackingtype" - }, - "pvforecast1_userhorizon": { - "anyOf": [ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", - "title": "Pvforecast1 Userhorizon" - }, - "pvforecast2_albedo": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Proportion of the light hitting the ground that it reflects back.", - "title": "Pvforecast2 Albedo" - }, - "pvforecast2_inverter_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the inverter of this plane.", - "title": "Pvforecast2 Inverter Model" - }, - "pvforecast2_inverter_paco": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "AC power rating of the inverter. [W]", - "title": "Pvforecast2 Inverter Paco" - }, - "pvforecast2_loss": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": 14.0, - "description": "Sum of PV system losses in percent", - "title": "Pvforecast2 Loss" - }, - "pvforecast2_module_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the PV modules of this plane.", - "title": "Pvforecast2 Module Model" - }, - "pvforecast2_modules_per_string": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the PV modules of the strings of this plane.", - "title": "Pvforecast2 Modules Per String" - }, - "pvforecast2_mountingplace": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "free", - "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", - "title": "Pvforecast2 Mountingplace" - }, - "pvforecast2_optimal_surface_tilt": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", - "title": "Pvforecast2 Optimal Surface Tilt" - }, - "pvforecast2_optimalangles": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", - "title": "Pvforecast2 Optimalangles" - }, - "pvforecast2_peakpower": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Nominal power of PV system in kW.", - "title": "Pvforecast2 Peakpower" - }, - "pvforecast2_pvtechchoice": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "crystSi", - "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", - "title": "Pvforecast2 Pvtechchoice" - }, - "pvforecast2_strings_per_inverter": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the strings of the inverter of this plane.", - "title": "Pvforecast2 Strings Per Inverter" - }, - "pvforecast2_surface_azimuth": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", - "title": "Pvforecast2 Surface Azimuth" - }, - "pvforecast2_surface_tilt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", - "title": "Pvforecast2 Surface Tilt" - }, - "pvforecast2_trackingtype": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", - "title": "Pvforecast2 Trackingtype" - }, - "pvforecast2_userhorizon": { - "anyOf": [ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", - "title": "Pvforecast2 Userhorizon" - }, - "pvforecast3_albedo": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Proportion of the light hitting the ground that it reflects back.", - "title": "Pvforecast3 Albedo" - }, - "pvforecast3_inverter_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the inverter of this plane.", - "title": "Pvforecast3 Inverter Model" - }, - "pvforecast3_inverter_paco": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "AC power rating of the inverter. [W]", - "title": "Pvforecast3 Inverter Paco" - }, - "pvforecast3_loss": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": 14.0, - "description": "Sum of PV system losses in percent", - "title": "Pvforecast3 Loss" - }, - "pvforecast3_module_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the PV modules of this plane.", - "title": "Pvforecast3 Module Model" - }, - "pvforecast3_modules_per_string": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the PV modules of the strings of this plane.", - "title": "Pvforecast3 Modules Per String" - }, - "pvforecast3_mountingplace": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "free", - "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", - "title": "Pvforecast3 Mountingplace" - }, - "pvforecast3_optimal_surface_tilt": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", - "title": "Pvforecast3 Optimal Surface Tilt" - }, - "pvforecast3_optimalangles": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", - "title": "Pvforecast3 Optimalangles" - }, - "pvforecast3_peakpower": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Nominal power of PV system in kW.", - "title": "Pvforecast3 Peakpower" - }, - "pvforecast3_pvtechchoice": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "crystSi", - "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", - "title": "Pvforecast3 Pvtechchoice" - }, - "pvforecast3_strings_per_inverter": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the strings of the inverter of this plane.", - "title": "Pvforecast3 Strings Per Inverter" - }, - "pvforecast3_surface_azimuth": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", - "title": "Pvforecast3 Surface Azimuth" - }, - "pvforecast3_surface_tilt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", - "title": "Pvforecast3 Surface Tilt" - }, - "pvforecast3_trackingtype": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", - "title": "Pvforecast3 Trackingtype" - }, - "pvforecast3_userhorizon": { - "anyOf": [ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", - "title": "Pvforecast3 Userhorizon" - }, - "pvforecast4_albedo": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Proportion of the light hitting the ground that it reflects back.", - "title": "Pvforecast4 Albedo" - }, - "pvforecast4_inverter_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the inverter of this plane.", - "title": "Pvforecast4 Inverter Model" - }, - "pvforecast4_inverter_paco": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "AC power rating of the inverter. [W]", - "title": "Pvforecast4 Inverter Paco" - }, - "pvforecast4_loss": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": 14.0, - "description": "Sum of PV system losses in percent", - "title": "Pvforecast4 Loss" - }, - "pvforecast4_module_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the PV modules of this plane.", - "title": "Pvforecast4 Module Model" - }, - "pvforecast4_modules_per_string": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the PV modules of the strings of this plane.", - "title": "Pvforecast4 Modules Per String" - }, - "pvforecast4_mountingplace": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "free", - "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", - "title": "Pvforecast4 Mountingplace" - }, - "pvforecast4_optimal_surface_tilt": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", - "title": "Pvforecast4 Optimal Surface Tilt" - }, - "pvforecast4_optimalangles": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", - "title": "Pvforecast4 Optimalangles" - }, - "pvforecast4_peakpower": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Nominal power of PV system in kW.", - "title": "Pvforecast4 Peakpower" - }, - "pvforecast4_pvtechchoice": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "crystSi", - "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", - "title": "Pvforecast4 Pvtechchoice" - }, - "pvforecast4_strings_per_inverter": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the strings of the inverter of this plane.", - "title": "Pvforecast4 Strings Per Inverter" - }, - "pvforecast4_surface_azimuth": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", - "title": "Pvforecast4 Surface Azimuth" - }, - "pvforecast4_surface_tilt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", - "title": "Pvforecast4 Surface Tilt" - }, - "pvforecast4_trackingtype": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", - "title": "Pvforecast4 Trackingtype" - }, - "pvforecast4_userhorizon": { - "anyOf": [ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", - "title": "Pvforecast4 Userhorizon" - }, - "pvforecast5_albedo": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Proportion of the light hitting the ground that it reflects back.", - "title": "Pvforecast5 Albedo" - }, - "pvforecast5_inverter_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the inverter of this plane.", - "title": "Pvforecast5 Inverter Model" - }, - "pvforecast5_inverter_paco": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "AC power rating of the inverter. [W]", - "title": "Pvforecast5 Inverter Paco" - }, - "pvforecast5_loss": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": 14.0, - "description": "Sum of PV system losses in percent", - "title": "Pvforecast5 Loss" - }, - "pvforecast5_module_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the PV modules of this plane.", - "title": "Pvforecast5 Module Model" - }, - "pvforecast5_modules_per_string": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the PV modules of the strings of this plane.", - "title": "Pvforecast5 Modules Per String" - }, - "pvforecast5_mountingplace": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "free", - "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", - "title": "Pvforecast5 Mountingplace" - }, - "pvforecast5_optimal_surface_tilt": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", - "title": "Pvforecast5 Optimal Surface Tilt" - }, - "pvforecast5_optimalangles": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", - "title": "Pvforecast5 Optimalangles" - }, - "pvforecast5_peakpower": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Nominal power of PV system in kW.", - "title": "Pvforecast5 Peakpower" - }, - "pvforecast5_pvtechchoice": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "crystSi", - "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", - "title": "Pvforecast5 Pvtechchoice" - }, - "pvforecast5_strings_per_inverter": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the strings of the inverter of this plane.", - "title": "Pvforecast5 Strings Per Inverter" - }, - "pvforecast5_surface_azimuth": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", - "title": "Pvforecast5 Surface Azimuth" - }, - "pvforecast5_surface_tilt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", - "title": "Pvforecast5 Surface Tilt" - }, - "pvforecast5_trackingtype": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", - "title": "Pvforecast5 Trackingtype" - }, - "pvforecast5_userhorizon": { - "anyOf": [ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", - "title": "Pvforecast5 Userhorizon" - }, - "pvforecast_planes": { - "description": "Compute a list of active planes.", - "items": { - "type": "string" - }, - "readOnly": true, - "title": "Pvforecast Planes", - "type": "array" - }, - "pvforecast_planes_azimuth": { - "description": "Compute a list of the azimuths per active planes.", - "items": { - "type": "number" - }, - "readOnly": true, - "title": "Pvforecast Planes Azimuth", - "type": "array" - }, - "pvforecast_planes_inverter_paco": { - "description": "Compute a list of the maximum power rating of the inverter per active planes.", - "readOnly": true, - "title": "Pvforecast Planes Inverter Paco" - }, - "pvforecast_planes_peakpower": { - "description": "Compute a list of the peak power per active planes.", - "items": { - "type": "number" - }, - "readOnly": true, - "title": "Pvforecast Planes Peakpower", - "type": "array" - }, - "pvforecast_planes_tilt": { - "description": "Compute a list of the tilts per active planes.", - "items": { - "type": "number" - }, - "readOnly": true, - "title": "Pvforecast Planes Tilt", - "type": "array" - }, - "pvforecast_planes_userhorizon": { - "description": "Compute a list of the user horizon per active planes.", - "readOnly": true, - "title": "Pvforecast Planes Userhorizon" - }, - "pvforecast_provider": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "PVForecast provider id of provider to be used.", - "title": "Pvforecast Provider" - }, - "pvforecastimport_file_path": { - "anyOf": [ - { - "type": "string" - }, - { - "format": "path", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Path to the file to import PV forecast data from.", - "title": "Pvforecastimport File Path" - }, - "pvforecastimport_json": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "JSON string, dictionary of PV forecast value lists.", - "title": "Pvforecastimport Json" - }, - "server_fastapi_host": { - "anyOf": [ - { - "format": "ipvanyaddress", - "type": "string" - }, - { - "type": "null" - } - ], - "default": "0.0.0.0", - "description": "FastAPI server IP address.", - "title": "Server Fastapi Host" - }, - "server_fastapi_port": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": 8503, - "description": "FastAPI server IP port number.", - "title": "Server Fastapi Port" - }, - "server_fastapi_startup_server_fasthtml": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": true, - "description": "FastAPI server to startup application FastHTML server.", - "title": "Server Fastapi Startup Server Fasthtml" - }, - "server_fastapi_verbose": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Enable debug output", - "title": "Server Fastapi Verbose" - }, - "server_fasthtml_host": { - "anyOf": [ - { - "format": "ipvanyaddress", - "type": "string" - }, - { - "type": "null" - } - ], - "default": "0.0.0.0", - "description": "FastHTML server IP address.", - "title": "Server Fasthtml Host" - }, - "server_fasthtml_port": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": 8504, - "description": "FastHTML server IP port number.", - "title": "Server Fasthtml Port" - }, - "timezone": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Compute timezone based on latitude and longitude.", - "readOnly": true, - "title": "Timezone" - }, - "weather_provider": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Weather provider id of provider to be used.", - "title": "Weather Provider" - }, - "weatherimport_file_path": { - "anyOf": [ - { - "type": "string" - }, - { - "format": "path", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Path to the file to import weather data from.", - "title": "Weatherimport File Path" - }, - "weatherimport_json": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "JSON string, dictionary of weather forecast value lists.", - "title": "Weatherimport Json" - } - }, - "required": [ - "pvforecast_planes", - "pvforecast_planes_peakpower", - "pvforecast_planes_azimuth", - "pvforecast_planes_tilt", - "pvforecast_planes_userhorizon", - "pvforecast_planes_inverter_paco", - "timezone", - "logging_level_root", - "data_output_path", - "data_cache_path", - "config_folder_path", - "config_file_path", - "config_default_file_path", - "package_root_path", - "config_keys", - "config_keys_read_only" - ], - "title": "ConfigEOS", - "type": "object" + "openapi": "3.1.0", + "info": { + "title": "Akkudoktor-EOS", + "description": "This project provides a comprehensive solution for simulating and optimizing an energy system based on renewable energy sources. With a focus on photovoltaic (PV) systems, battery storage (batteries), load management (consumer requirements), heat pumps, electric vehicles, and consideration of electricity price data, this system enables forecasting and optimization of energy flow and costs over a specified period.", + "version": "0.0.1" + }, + "paths": { + "/v1/config/value": { + "put": { + "summary": "Fastapi Config Value Put", + "description": "Set the configuration option in the settings.\n\nArgs:\n key (str): configuration key\n value (Any): configuration value\n\nReturns:\n configuration (ConfigEOS): The current configuration after the write.", + "operationId": "fastapi_config_value_put_v1_config_value_put", + "parameters": [ + { + "name": "key", + "in": "query", + "required": true, + "schema": { + "type": "string", + "description": "configuration key", + "title": "Key" }, - "ElectricVehicleParameters": { - "description": "Parameters specific to an electric vehicle (EV).", - "properties": { - "capacity_wh": { - "description": "An integer representing the capacity of the battery in watt-hours.", - "exclusiveMinimum": 0.0, - "title": "Capacity Wh", - "type": "integer" - }, - "charging_efficiency": { - "default": 0.88, - "description": "A float representing the charging efficiency of the battery.", - "exclusiveMinimum": 0.0, - "maximum": 1.0, - "title": "Charging Efficiency", - "type": "number" - }, - "discharging_efficiency": { - "default": 1.0, - "title": "Discharging Efficiency", - "type": "number" - }, - "initial_soc_percentage": { - "default": 0, - "description": "An integer representing the current state of charge (SOC) of the battery in percentage.", - "maximum": 100.0, - "minimum": 0.0, - "title": "Initial Soc Percentage", - "type": "integer" - }, - "max_charge_power_w": { - "anyOf": [ - { - "exclusiveMinimum": 0.0, - "type": "number" - }, - { - "type": "null" - } - ], - "default": 5000, - "description": "Maximum charging power in watts.", - "title": "Max Charge Power W" - }, - "max_soc_percentage": { - "default": 100, - "description": "An integer representing the maximum state of charge (SOC) of the battery in percentage.", - "maximum": 100.0, - "minimum": 0.0, - "title": "Max Soc Percentage", - "type": "integer" - }, - "min_soc_percentage": { - "default": 0, - "description": "An integer representing the minimum state of charge (SOC) of the battery in percentage.", - "maximum": 100.0, - "minimum": 0.0, - "title": "Min Soc Percentage", - "type": "integer" - } - }, - "required": [ - "capacity_wh" - ], - "title": "ElectricVehicleParameters", - "type": "object" + "description": "configuration key" + }, + { + "name": "value", + "in": "query", + "required": true, + "schema": { + "description": "configuration value", + "title": "Value" }, - "ElectricVehicleResult": { - "description": "Result class containing information related to the electric vehicle's charging and discharging behavior.", - "properties": { - "capacity_wh": { - "description": "Capacity of the EV\u2019s battery in watt-hours.", - "title": "Capacity Wh", - "type": "integer" - }, - "charge_array": { - "description": "Hourly charging status (0 for no charging, 1 for charging).", - "items": { - "type": "number" - }, - "title": "Charge Array", - "type": "array" - }, - "charging_efficiency": { - "description": "Charging efficiency as a float..", - "title": "Charging Efficiency", - "type": "number" - }, - "discharge_array": { - "description": "Hourly discharging status (0 for no discharging, 1 for discharging).", - "items": { - "type": "integer" - }, - "title": "Discharge Array", - "type": "array" - }, - "discharging_efficiency": { - "description": "The discharge efficiency as a float..", - "title": "Discharging Efficiency", - "type": "number" - }, - "hours": { - "description": "Number of hours in the simulation.", - "title": "Hours", - "type": "integer" - }, - "initial_soc_percentage": { - "description": "State of charge at the start of the simulation in percentage.", - "title": "Initial Soc Percentage", - "type": "integer" - }, - "max_charge_power_w": { - "description": "Maximum charging power in watts.", - "title": "Max Charge Power W", - "type": "integer" - }, - "soc_wh": { - "description": "State of charge of the battery in watt-hours at the start of the simulation.", - "title": "Soc Wh", - "type": "number" - } - }, - "required": [ - "charge_array", - "discharge_array", - "discharging_efficiency", - "hours", - "capacity_wh", - "charging_efficiency", - "max_charge_power_w", - "soc_wh", - "initial_soc_percentage" - ], - "title": "ElectricVehicleResult", - "type": "object" - }, - "EnergieManagementSystemParameters": { - "properties": { - "einspeiseverguetung_euro_pro_wh": { - "anyOf": [ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "number" - } - ], - "description": "A float or array of floats representing the feed-in compensation in euros per watt-hour.", - "title": "Einspeiseverguetung Euro Pro Wh" - }, - "gesamtlast": { - "description": "An array of floats representing the total load (consumption) in watts for different time intervals.", - "items": { - "type": "number" - }, - "title": "Gesamtlast", - "type": "array" - }, - "preis_euro_pro_wh_akku": { - "description": "A float representing the cost of battery energy per watt-hour.", - "title": "Preis Euro Pro Wh Akku", - "type": "number" - }, - "pv_prognose_wh": { - "description": "An array of floats representing the forecasted photovoltaic output in watts for different time intervals.", - "items": { - "type": "number" - }, - "title": "Pv Prognose Wh", - "type": "array" - }, - "strompreis_euro_pro_wh": { - "description": "An array of floats representing the electricity price in euros per watt-hour for different time intervals.", - "items": { - "type": "number" - }, - "title": "Strompreis Euro Pro Wh", - "type": "array" - } - }, - "required": [ - "pv_prognose_wh", - "strompreis_euro_pro_wh", - "einspeiseverguetung_euro_pro_wh", - "preis_euro_pro_wh_akku", - "gesamtlast" - ], - "title": "EnergieManagementSystemParameters", - "type": "object" - }, - "ForecastResponse": { - "properties": { - "pvpower": { - "items": { - "type": "number" - }, - "title": "Pvpower", - "type": "array" - }, - "temperature": { - "items": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "title": "Temperature", - "type": "array" - } - }, - "required": [ - "temperature", - "pvpower" - ], - "title": "ForecastResponse", - "type": "object" - }, - "GesamtlastRequest": { - "properties": { - "hours": { - "title": "Hours", - "type": "integer" - }, - "measured_data": { - "items": { - "type": "object" - }, - "title": "Measured Data", - "type": "array" - }, - "year_energy": { - "title": "Year Energy", - "type": "number" - } - }, - "required": [ - "year_energy", - "measured_data", - "hours" - ], - "title": "GesamtlastRequest", - "type": "object" - }, - "HTTPValidationError": { - "properties": { - "detail": { - "items": { - "$ref": "#/components/schemas/ValidationError" - }, - "title": "Detail", - "type": "array" - } - }, - "title": "HTTPValidationError", - "type": "object" - }, - "HomeApplianceParameters": { - "properties": { - "consumption_wh": { - "description": "An integer representing the energy consumption of a household device in watt-hours.", - "exclusiveMinimum": 0.0, - "title": "Consumption Wh", - "type": "integer" - }, - "duration_h": { - "description": "An integer representing the usage duration of a household device in hours.", - "exclusiveMinimum": 0.0, - "title": "Duration H", - "type": "integer" - } - }, - "required": [ - "consumption_wh", - "duration_h" - ], - "title": "HomeApplianceParameters", - "type": "object" - }, - "InverterParameters": { - "properties": { - "max_power_wh": { - "default": 10000, - "exclusiveMinimum": 0.0, - "title": "Max Power Wh", - "type": "number" - } - }, - "title": "InverterParameters", - "type": "object" - }, - "OptimizationParameters": { - "properties": { - "dishwasher": { - "anyOf": [ - { - "$ref": "#/components/schemas/HomeApplianceParameters" - }, - { - "type": "null" - } - ] - }, - "eauto": { - "anyOf": [ - { - "$ref": "#/components/schemas/ElectricVehicleParameters" - }, - { - "type": "null" - } - ] - }, - "ems": { - "$ref": "#/components/schemas/EnergieManagementSystemParameters" - }, - "inverter": { - "$ref": "#/components/schemas/InverterParameters", - "default": { - "max_power_wh": 10000.0 - } - }, - "pv_akku": { - "$ref": "#/components/schemas/SolarPanelBatteryParameters" - }, - "start_solution": { - "anyOf": [ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Can be `null` or contain a previous solution (if available).", - "title": "Start Solution" - }, - "temperature_forecast": { - "anyOf": [ - { - "items": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "An array of floats representing the temperature forecast in degrees Celsius for different time intervals.", - "title": "Temperature Forecast" - } - }, - "required": [ - "ems", - "pv_akku", - "eauto" - ], - "title": "OptimizationParameters", - "type": "object" - }, - "OptimizeResponse": { - "description": "**Note**: The first value of \"Last_Wh_per_hour\", \"Netzeinspeisung_Wh_per_hour\", and \"Netzbezug_Wh_per_hour\", will be set to null in the JSON output and represented as NaN or None in the corresponding classes' data returns. This approach is adopted to ensure that the current hour's processing remains unchanged.", - "properties": { - "ac_charge": { - "description": "Array with AC charging values as relative power (0-1), other values set to 0.", - "items": { - "type": "number" - }, - "title": "Ac Charge", - "type": "array" - }, - "dc_charge": { - "description": "Array with DC charging values as relative power (0-1), other values set to 0.", - "items": { - "type": "number" - }, - "title": "Dc Charge", - "type": "array" - }, - "discharge_allowed": { - "description": "Array with discharge values (1 for discharge, 0 otherwise).", - "items": { - "type": "integer" - }, - "title": "Discharge Allowed", - "type": "array" - }, - "eauto_obj": { - "anyOf": [ - { - "$ref": "#/components/schemas/ElectricVehicleResult" - }, - { - "type": "null" - } - ] - }, - "eautocharge_hours_float": { - "anyOf": [ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "TBD", - "title": "Eautocharge Hours Float" - }, - "result": { - "$ref": "#/components/schemas/SimulationResult" - }, - "start_solution": { - "anyOf": [ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "An array of binary values (0 or 1) representing a possible starting solution for the simulation.", - "title": "Start Solution" - }, - "washingstart": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Can be `null` or contain an object representing the start of washing (if applicable).", - "title": "Washingstart" - } - }, - "required": [ - "ac_charge", - "dc_charge", - "discharge_allowed", - "eautocharge_hours_float", - "result", - "eauto_obj" - ], - "title": "OptimizeResponse", - "type": "object" - }, - "PydanticDateTimeData": { - "additionalProperties": { - "anyOf": [ - { - "type": "string" - }, - { - "items": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "integer" - }, - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "type": "array" - } - ] - }, - "description": "Pydantic model for time series data with consistent value lengths.\n\nThis model validates a dictionary where:\n- Keys are strings representing data series names\n- Values are lists of numeric or string values\n- Special keys 'start_datetime' and 'interval' can contain string values\nfor time series indexing\n- All value lists must have the same length\n\nExample:\n {\n \"start_datetime\": \"2024-01-01 00:00:00\", # optional\n \"interval\": \"1 Hour\", # optional\n \"load_mean\": [20.5, 21.0, 22.1],\n \"load_min\": [18.5, 19.0, 20.1]\n }", - "title": "PydanticDateTimeData", - "type": "object" - }, - "PydanticDateTimeDataFrame": { - "description": "Pydantic model for validating pandas DataFrame data with datetime index.", - "properties": { - "data": { - "additionalProperties": { - "type": "object" - }, - "title": "Data", - "type": "object" - }, - "datetime_columns": { - "description": "Columns to be treated as datetime", - "items": { - "type": "string" - }, - "title": "Datetime Columns", - "type": "array" - }, - "dtypes": { - "additionalProperties": { - "type": "string" - }, - "title": "Dtypes", - "type": "object" - }, - "tz": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Timezone for datetime values", - "title": "Tz" - } - }, - "required": [ - "data" - ], - "title": "PydanticDateTimeDataFrame", - "type": "object" - }, - "PydanticDateTimeSeries": { - "description": "Pydantic model for validating pandas Series with datetime index in JSON format.\n\nThis model handles Series data serialized with orient='index', where the keys are\ndatetime strings and values are the series values. Provides validation and\nconversion between JSON and pandas Series with datetime index.\n\nAttributes:\n data (Dict[str, Any]): Dictionary mapping datetime strings to values.\n dtype (str): The data type of the series values.\n tz (str | None): Timezone name if the datetime index is timezone-aware.", - "properties": { - "data": { - "title": "Data", - "type": "object" - }, - "dtype": { - "default": "float64", - "title": "Dtype", - "type": "string" - }, - "tz": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Tz" - } - }, - "required": [ - "data" - ], - "title": "PydanticDateTimeSeries", - "type": "object" - }, - "SettingsEOS": { - "description": "Settings for all EOS.", - "properties": { - "battery_capacity": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Battery capacity [Wh].", - "title": "Battery Capacity" - }, - "battery_charging_efficiency": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Battery charging efficiency [%].", - "title": "Battery Charging Efficiency" - }, - "battery_discharging_efficiency": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Battery discharging efficiency [%].", - "title": "Battery Discharging Efficiency" - }, - "battery_initial_soc": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Battery initial state of charge [%].", - "title": "Battery Initial Soc" - }, - "battery_max_charging_power": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Battery maximum charge power [W].", - "title": "Battery Max Charging Power" - }, - "battery_provider": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Id of Battery simulation provider.", - "title": "Battery Provider" - }, - "battery_soc_max": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Battery maximum state of charge [%].", - "title": "Battery Soc Max" - }, - "battery_soc_min": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Battery minimum state of charge [%].", - "title": "Battery Soc Min" - }, - "bev_capacity": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Battery Electric Vehicle capacity [Wh].", - "title": "Bev Capacity" - }, - "bev_charging_efficiency": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Battery Electric Vehicle charging efficiency [%].", - "title": "Bev Charging Efficiency" - }, - "bev_discharging_efficiency": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Battery Electric Vehicle discharging efficiency [%].", - "title": "Bev Discharging Efficiency" - }, - "bev_initial_soc": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Battery Electric Vehicle initial state of charge [%].", - "title": "Bev Initial Soc" - }, - "bev_max_charging_power": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Battery Electric Vehicle maximum charge power [W].", - "title": "Bev Max Charging Power" - }, - "bev_provider": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Id of Battery Electric Vehicle simulation provider.", - "title": "Bev Provider" - }, - "bev_soc_max": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Battery Electric Vehicle maximum state of charge [%].", - "title": "Bev Soc Max" - }, - "data_cache_path": { - "anyOf": [ - { - "format": "path", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Compute data_cache_path based on data_folder_path.", - "readOnly": true, - "title": "Data Cache Path" - }, - "data_cache_subpath": { - "anyOf": [ - { - "format": "path", - "type": "string" - }, - { - "type": "null" - } - ], - "default": "cache", - "description": "Sub-path for the EOS cache data directory.", - "title": "Data Cache Subpath" - }, - "data_folder_path": { - "anyOf": [ - { - "format": "path", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Path to EOS data directory.", - "title": "Data Folder Path" - }, - "data_output_path": { - "anyOf": [ - { - "format": "path", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Compute data_output_path based on data_folder_path.", - "readOnly": true, - "title": "Data Output Path" - }, - "data_output_subpath": { - "anyOf": [ - { - "format": "path", - "type": "string" - }, - { - "type": "null" - } - ], - "default": "output", - "description": "Sub-path for the EOS output data directory.", - "title": "Data Output Subpath" - }, - "dishwasher_consumption": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Dish Washer energy consumption [Wh].", - "title": "Dishwasher Consumption" - }, - "dishwasher_duration": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Dish Washer usage duration [h].", - "title": "Dishwasher Duration" - }, - "dishwasher_provider": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Id of Dish Washer simulation provider.", - "title": "Dishwasher Provider" - }, - "elecprice_charges_kwh": { - "anyOf": [ - { - "minimum": 0.0, - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Electricity price charges (\u20ac/kWh).", - "title": "Elecprice Charges Kwh" - }, - "elecprice_provider": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Electricity price provider id of provider to be used.", - "title": "Elecprice Provider" - }, - "elecpriceimport_file_path": { - "anyOf": [ - { - "type": "string" - }, - { - "format": "path", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Path to the file to import elecprice data from.", - "title": "Elecpriceimport File Path" - }, - "elecpriceimport_json": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "JSON string, dictionary of electricity price forecast value lists.", - "title": "Elecpriceimport Json" - }, - "inverter_power_max": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Inverter maximum power [W].", - "title": "Inverter Power Max" - }, - "inverter_provider": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Id of PV Inverter simulation provider.", - "title": "Inverter Provider" - }, - "latitude": { - "anyOf": [ - { - "maximum": 90.0, - "minimum": -90.0, - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Latitude in decimal degrees, between -90 and 90, north is positive (ISO 19115) (\u00b0)", - "title": "Latitude" - }, - "load_import_file_path": { - "anyOf": [ - { - "type": "string" - }, - { - "format": "path", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Path to the file to import load data from.", - "title": "Load Import File Path" - }, - "load_import_json": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "JSON string, dictionary of load forecast value lists.", - "title": "Load Import Json" - }, - "load_provider": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Load provider id of provider to be used.", - "title": "Load Provider" - }, - "loadakkudoktor_year_energy": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Yearly energy consumption (kWh).", - "title": "Loadakkudoktor Year Energy" - }, - "logging_level_default": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "EOS default logging level.", - "title": "Logging Level Default" - }, - "logging_level_root": { - "description": "Root logger logging level.", - "readOnly": true, - "title": "Logging Level Root", - "type": "string" - }, - "longitude": { - "anyOf": [ - { - "maximum": 180.0, - "minimum": -180.0, - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Longitude in decimal degrees, within -180 to 180 (\u00b0)", - "title": "Longitude" - }, - "measurement_load0_name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Name of the load0 source (e.g. 'Household', 'Heat Pump')", - "title": "Measurement Load0 Name" - }, - "measurement_load1_name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Name of the load1 source (e.g. 'Household', 'Heat Pump')", - "title": "Measurement Load1 Name" - }, - "measurement_load2_name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Name of the load2 source (e.g. 'Household', 'Heat Pump')", - "title": "Measurement Load2 Name" - }, - "measurement_load3_name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Name of the load3 source (e.g. 'Household', 'Heat Pump')", - "title": "Measurement Load3 Name" - }, - "measurement_load4_name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Name of the load4 source (e.g. 'Household', 'Heat Pump')", - "title": "Measurement Load4 Name" - }, - "optimization_ev_available_charge_rates_percent": { - "anyOf": [ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": [ - 0.0, - 0.375, - 0.5, - 0.625, - 0.75, - 0.875, - 1.0 - ], - "description": "Charge rates available for the EV in percent of maximum charge.", - "title": "Optimization Ev Available Charge Rates Percent" - }, - "optimization_hours": { - "anyOf": [ - { - "minimum": 0.0, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": 24, - "description": "Number of hours into the future for optimizations.", - "title": "Optimization Hours" - }, - "optimization_penalty": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": 10, - "description": "Penalty factor used in optimization.", - "title": "Optimization Penalty" - }, - "prediction_historic_hours": { - "anyOf": [ - { - "minimum": 0.0, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": 48, - "description": "Number of hours into the past for historical predictions data", - "title": "Prediction Historic Hours" - }, - "prediction_hours": { - "anyOf": [ - { - "minimum": 0.0, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": 48, - "description": "Number of hours into the future for predictions", - "title": "Prediction Hours" - }, - "pvforecast0_albedo": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Proportion of the light hitting the ground that it reflects back.", - "title": "Pvforecast0 Albedo" - }, - "pvforecast0_inverter_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the inverter of this plane.", - "title": "Pvforecast0 Inverter Model" - }, - "pvforecast0_inverter_paco": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "AC power rating of the inverter. [W]", - "title": "Pvforecast0 Inverter Paco" - }, - "pvforecast0_loss": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": 14.0, - "description": "Sum of PV system losses in percent", - "title": "Pvforecast0 Loss" - }, - "pvforecast0_module_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the PV modules of this plane.", - "title": "Pvforecast0 Module Model" - }, - "pvforecast0_modules_per_string": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the PV modules of the strings of this plane.", - "title": "Pvforecast0 Modules Per String" - }, - "pvforecast0_mountingplace": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "free", - "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", - "title": "Pvforecast0 Mountingplace" - }, - "pvforecast0_optimal_surface_tilt": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", - "title": "Pvforecast0 Optimal Surface Tilt" - }, - "pvforecast0_optimalangles": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", - "title": "Pvforecast0 Optimalangles" - }, - "pvforecast0_peakpower": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Nominal power of PV system in kW.", - "title": "Pvforecast0 Peakpower" - }, - "pvforecast0_pvtechchoice": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "crystSi", - "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", - "title": "Pvforecast0 Pvtechchoice" - }, - "pvforecast0_strings_per_inverter": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the strings of the inverter of this plane.", - "title": "Pvforecast0 Strings Per Inverter" - }, - "pvforecast0_surface_azimuth": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", - "title": "Pvforecast0 Surface Azimuth" - }, - "pvforecast0_surface_tilt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", - "title": "Pvforecast0 Surface Tilt" - }, - "pvforecast0_trackingtype": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", - "title": "Pvforecast0 Trackingtype" - }, - "pvforecast0_userhorizon": { - "anyOf": [ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", - "title": "Pvforecast0 Userhorizon" - }, - "pvforecast1_albedo": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Proportion of the light hitting the ground that it reflects back.", - "title": "Pvforecast1 Albedo" - }, - "pvforecast1_inverter_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the inverter of this plane.", - "title": "Pvforecast1 Inverter Model" - }, - "pvforecast1_inverter_paco": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "AC power rating of the inverter. [W]", - "title": "Pvforecast1 Inverter Paco" - }, - "pvforecast1_loss": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": 14.0, - "description": "Sum of PV system losses in percent", - "title": "Pvforecast1 Loss" - }, - "pvforecast1_module_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the PV modules of this plane.", - "title": "Pvforecast1 Module Model" - }, - "pvforecast1_modules_per_string": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the PV modules of the strings of this plane.", - "title": "Pvforecast1 Modules Per String" - }, - "pvforecast1_mountingplace": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "free", - "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", - "title": "Pvforecast1 Mountingplace" - }, - "pvforecast1_optimal_surface_tilt": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", - "title": "Pvforecast1 Optimal Surface Tilt" - }, - "pvforecast1_optimalangles": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", - "title": "Pvforecast1 Optimalangles" - }, - "pvforecast1_peakpower": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Nominal power of PV system in kW.", - "title": "Pvforecast1 Peakpower" - }, - "pvforecast1_pvtechchoice": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "crystSi", - "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", - "title": "Pvforecast1 Pvtechchoice" - }, - "pvforecast1_strings_per_inverter": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the strings of the inverter of this plane.", - "title": "Pvforecast1 Strings Per Inverter" - }, - "pvforecast1_surface_azimuth": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", - "title": "Pvforecast1 Surface Azimuth" - }, - "pvforecast1_surface_tilt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", - "title": "Pvforecast1 Surface Tilt" - }, - "pvforecast1_trackingtype": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", - "title": "Pvforecast1 Trackingtype" - }, - "pvforecast1_userhorizon": { - "anyOf": [ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", - "title": "Pvforecast1 Userhorizon" - }, - "pvforecast2_albedo": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Proportion of the light hitting the ground that it reflects back.", - "title": "Pvforecast2 Albedo" - }, - "pvforecast2_inverter_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the inverter of this plane.", - "title": "Pvforecast2 Inverter Model" - }, - "pvforecast2_inverter_paco": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "AC power rating of the inverter. [W]", - "title": "Pvforecast2 Inverter Paco" - }, - "pvforecast2_loss": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": 14.0, - "description": "Sum of PV system losses in percent", - "title": "Pvforecast2 Loss" - }, - "pvforecast2_module_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the PV modules of this plane.", - "title": "Pvforecast2 Module Model" - }, - "pvforecast2_modules_per_string": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the PV modules of the strings of this plane.", - "title": "Pvforecast2 Modules Per String" - }, - "pvforecast2_mountingplace": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "free", - "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", - "title": "Pvforecast2 Mountingplace" - }, - "pvforecast2_optimal_surface_tilt": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", - "title": "Pvforecast2 Optimal Surface Tilt" - }, - "pvforecast2_optimalangles": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", - "title": "Pvforecast2 Optimalangles" - }, - "pvforecast2_peakpower": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Nominal power of PV system in kW.", - "title": "Pvforecast2 Peakpower" - }, - "pvforecast2_pvtechchoice": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "crystSi", - "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", - "title": "Pvforecast2 Pvtechchoice" - }, - "pvforecast2_strings_per_inverter": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the strings of the inverter of this plane.", - "title": "Pvforecast2 Strings Per Inverter" - }, - "pvforecast2_surface_azimuth": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", - "title": "Pvforecast2 Surface Azimuth" - }, - "pvforecast2_surface_tilt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", - "title": "Pvforecast2 Surface Tilt" - }, - "pvforecast2_trackingtype": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", - "title": "Pvforecast2 Trackingtype" - }, - "pvforecast2_userhorizon": { - "anyOf": [ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", - "title": "Pvforecast2 Userhorizon" - }, - "pvforecast3_albedo": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Proportion of the light hitting the ground that it reflects back.", - "title": "Pvforecast3 Albedo" - }, - "pvforecast3_inverter_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the inverter of this plane.", - "title": "Pvforecast3 Inverter Model" - }, - "pvforecast3_inverter_paco": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "AC power rating of the inverter. [W]", - "title": "Pvforecast3 Inverter Paco" - }, - "pvforecast3_loss": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": 14.0, - "description": "Sum of PV system losses in percent", - "title": "Pvforecast3 Loss" - }, - "pvforecast3_module_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the PV modules of this plane.", - "title": "Pvforecast3 Module Model" - }, - "pvforecast3_modules_per_string": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the PV modules of the strings of this plane.", - "title": "Pvforecast3 Modules Per String" - }, - "pvforecast3_mountingplace": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "free", - "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", - "title": "Pvforecast3 Mountingplace" - }, - "pvforecast3_optimal_surface_tilt": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", - "title": "Pvforecast3 Optimal Surface Tilt" - }, - "pvforecast3_optimalangles": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", - "title": "Pvforecast3 Optimalangles" - }, - "pvforecast3_peakpower": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Nominal power of PV system in kW.", - "title": "Pvforecast3 Peakpower" - }, - "pvforecast3_pvtechchoice": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "crystSi", - "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", - "title": "Pvforecast3 Pvtechchoice" - }, - "pvforecast3_strings_per_inverter": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the strings of the inverter of this plane.", - "title": "Pvforecast3 Strings Per Inverter" - }, - "pvforecast3_surface_azimuth": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", - "title": "Pvforecast3 Surface Azimuth" - }, - "pvforecast3_surface_tilt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", - "title": "Pvforecast3 Surface Tilt" - }, - "pvforecast3_trackingtype": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", - "title": "Pvforecast3 Trackingtype" - }, - "pvforecast3_userhorizon": { - "anyOf": [ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", - "title": "Pvforecast3 Userhorizon" - }, - "pvforecast4_albedo": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Proportion of the light hitting the ground that it reflects back.", - "title": "Pvforecast4 Albedo" - }, - "pvforecast4_inverter_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the inverter of this plane.", - "title": "Pvforecast4 Inverter Model" - }, - "pvforecast4_inverter_paco": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "AC power rating of the inverter. [W]", - "title": "Pvforecast4 Inverter Paco" - }, - "pvforecast4_loss": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": 14.0, - "description": "Sum of PV system losses in percent", - "title": "Pvforecast4 Loss" - }, - "pvforecast4_module_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the PV modules of this plane.", - "title": "Pvforecast4 Module Model" - }, - "pvforecast4_modules_per_string": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the PV modules of the strings of this plane.", - "title": "Pvforecast4 Modules Per String" - }, - "pvforecast4_mountingplace": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "free", - "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", - "title": "Pvforecast4 Mountingplace" - }, - "pvforecast4_optimal_surface_tilt": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", - "title": "Pvforecast4 Optimal Surface Tilt" - }, - "pvforecast4_optimalangles": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", - "title": "Pvforecast4 Optimalangles" - }, - "pvforecast4_peakpower": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Nominal power of PV system in kW.", - "title": "Pvforecast4 Peakpower" - }, - "pvforecast4_pvtechchoice": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "crystSi", - "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", - "title": "Pvforecast4 Pvtechchoice" - }, - "pvforecast4_strings_per_inverter": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the strings of the inverter of this plane.", - "title": "Pvforecast4 Strings Per Inverter" - }, - "pvforecast4_surface_azimuth": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", - "title": "Pvforecast4 Surface Azimuth" - }, - "pvforecast4_surface_tilt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", - "title": "Pvforecast4 Surface Tilt" - }, - "pvforecast4_trackingtype": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", - "title": "Pvforecast4 Trackingtype" - }, - "pvforecast4_userhorizon": { - "anyOf": [ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", - "title": "Pvforecast4 Userhorizon" - }, - "pvforecast5_albedo": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Proportion of the light hitting the ground that it reflects back.", - "title": "Pvforecast5 Albedo" - }, - "pvforecast5_inverter_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the inverter of this plane.", - "title": "Pvforecast5 Inverter Model" - }, - "pvforecast5_inverter_paco": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "AC power rating of the inverter. [W]", - "title": "Pvforecast5 Inverter Paco" - }, - "pvforecast5_loss": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": 14.0, - "description": "Sum of PV system losses in percent", - "title": "Pvforecast5 Loss" - }, - "pvforecast5_module_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the PV modules of this plane.", - "title": "Pvforecast5 Module Model" - }, - "pvforecast5_modules_per_string": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the PV modules of the strings of this plane.", - "title": "Pvforecast5 Modules Per String" - }, - "pvforecast5_mountingplace": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "free", - "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", - "title": "Pvforecast5 Mountingplace" - }, - "pvforecast5_optimal_surface_tilt": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", - "title": "Pvforecast5 Optimal Surface Tilt" - }, - "pvforecast5_optimalangles": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", - "title": "Pvforecast5 Optimalangles" - }, - "pvforecast5_peakpower": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Nominal power of PV system in kW.", - "title": "Pvforecast5 Peakpower" - }, - "pvforecast5_pvtechchoice": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "crystSi", - "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", - "title": "Pvforecast5 Pvtechchoice" - }, - "pvforecast5_strings_per_inverter": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the strings of the inverter of this plane.", - "title": "Pvforecast5 Strings Per Inverter" - }, - "pvforecast5_surface_azimuth": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", - "title": "Pvforecast5 Surface Azimuth" - }, - "pvforecast5_surface_tilt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", - "title": "Pvforecast5 Surface Tilt" - }, - "pvforecast5_trackingtype": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", - "title": "Pvforecast5 Trackingtype" - }, - "pvforecast5_userhorizon": { - "anyOf": [ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", - "title": "Pvforecast5 Userhorizon" - }, - "pvforecast_planes": { - "description": "Compute a list of active planes.", - "items": { - "type": "string" - }, - "readOnly": true, - "title": "Pvforecast Planes", - "type": "array" - }, - "pvforecast_planes_azimuth": { - "description": "Compute a list of the azimuths per active planes.", - "items": { - "type": "number" - }, - "readOnly": true, - "title": "Pvforecast Planes Azimuth", - "type": "array" - }, - "pvforecast_planes_inverter_paco": { - "description": "Compute a list of the maximum power rating of the inverter per active planes.", - "readOnly": true, - "title": "Pvforecast Planes Inverter Paco" - }, - "pvforecast_planes_peakpower": { - "description": "Compute a list of the peak power per active planes.", - "items": { - "type": "number" - }, - "readOnly": true, - "title": "Pvforecast Planes Peakpower", - "type": "array" - }, - "pvforecast_planes_tilt": { - "description": "Compute a list of the tilts per active planes.", - "items": { - "type": "number" - }, - "readOnly": true, - "title": "Pvforecast Planes Tilt", - "type": "array" - }, - "pvforecast_planes_userhorizon": { - "description": "Compute a list of the user horizon per active planes.", - "readOnly": true, - "title": "Pvforecast Planes Userhorizon" - }, - "pvforecast_provider": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "PVForecast provider id of provider to be used.", - "title": "Pvforecast Provider" - }, - "pvforecastimport_file_path": { - "anyOf": [ - { - "type": "string" - }, - { - "format": "path", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Path to the file to import PV forecast data from.", - "title": "Pvforecastimport File Path" - }, - "pvforecastimport_json": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "JSON string, dictionary of PV forecast value lists.", - "title": "Pvforecastimport Json" - }, - "server_fastapi_host": { - "anyOf": [ - { - "format": "ipvanyaddress", - "type": "string" - }, - { - "type": "null" - } - ], - "default": "0.0.0.0", - "description": "FastAPI server IP address.", - "title": "Server Fastapi Host" - }, - "server_fastapi_port": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": 8503, - "description": "FastAPI server IP port number.", - "title": "Server Fastapi Port" - }, - "server_fastapi_startup_server_fasthtml": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": true, - "description": "FastAPI server to startup application FastHTML server.", - "title": "Server Fastapi Startup Server Fasthtml" - }, - "server_fastapi_verbose": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Enable debug output", - "title": "Server Fastapi Verbose" - }, - "server_fasthtml_host": { - "anyOf": [ - { - "format": "ipvanyaddress", - "type": "string" - }, - { - "type": "null" - } - ], - "default": "0.0.0.0", - "description": "FastHTML server IP address.", - "title": "Server Fasthtml Host" - }, - "server_fasthtml_port": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": 8504, - "description": "FastHTML server IP port number.", - "title": "Server Fasthtml Port" - }, - "timezone": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Compute timezone based on latitude and longitude.", - "readOnly": true, - "title": "Timezone" - }, - "weather_provider": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Weather provider id of provider to be used.", - "title": "Weather Provider" - }, - "weatherimport_file_path": { - "anyOf": [ - { - "type": "string" - }, - { - "format": "path", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Path to the file to import weather data from.", - "title": "Weatherimport File Path" - }, - "weatherimport_json": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "JSON string, dictionary of weather forecast value lists.", - "title": "Weatherimport Json" - } - }, - "required": [ - "pvforecast_planes", - "pvforecast_planes_peakpower", - "pvforecast_planes_azimuth", - "pvforecast_planes_tilt", - "pvforecast_planes_userhorizon", - "pvforecast_planes_inverter_paco", - "timezone", - "logging_level_root", - "data_output_path", - "data_cache_path" - ], - "title": "SettingsEOS", - "type": "object" - }, - "SimulationResult": { - "description": "This object contains the results of the simulation and provides insights into various parameters over the entire forecast period.", - "properties": { - "EAuto_SoC_pro_Stunde": { - "description": "The state of charge of the EV for each hour.", - "items": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "title": "Eauto Soc Pro Stunde", - "type": "array" - }, - "Einnahmen_Euro_pro_Stunde": { - "description": "The revenue from grid feed-in or other sources in euros per hour.", - "items": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "title": "Einnahmen Euro Pro Stunde", - "type": "array" - }, - "Electricity_price": { - "description": "Used Electricity Price, including predictions", - "items": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "title": "Electricity Price", - "type": "array" - }, - "Gesamt_Verluste": { - "description": "The total losses in watt-hours over the entire period.", - "title": "Gesamt Verluste", - "type": "number" - }, - "Gesamtbilanz_Euro": { - "description": "The total balance of revenues minus costs in euros.", - "title": "Gesamtbilanz Euro", - "type": "number" - }, - "Gesamteinnahmen_Euro": { - "description": "The total revenues in euros.", - "title": "Gesamteinnahmen Euro", - "type": "number" - }, - "Gesamtkosten_Euro": { - "description": "The total costs in euros.", - "title": "Gesamtkosten Euro", - "type": "number" - }, - "Home_appliance_wh_per_hour": { - "description": "The energy consumption of a household appliance in watt-hours per hour.", - "items": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "title": "Home Appliance Wh Per Hour", - "type": "array" - }, - "Kosten_Euro_pro_Stunde": { - "description": "The costs in euros per hour.", - "items": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "title": "Kosten Euro Pro Stunde", - "type": "array" - }, - "Last_Wh_pro_Stunde": { - "description": "TBD", - "items": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "title": "Last Wh Pro Stunde", - "type": "array" - }, - "Netzbezug_Wh_pro_Stunde": { - "description": "The grid energy drawn in watt-hours per hour.", - "items": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "title": "Netzbezug Wh Pro Stunde", - "type": "array" - }, - "Netzeinspeisung_Wh_pro_Stunde": { - "description": "The energy fed into the grid in watt-hours per hour.", - "items": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "title": "Netzeinspeisung Wh Pro Stunde", - "type": "array" - }, - "Verluste_Pro_Stunde": { - "description": "The losses in watt-hours per hour.", - "items": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "title": "Verluste Pro Stunde", - "type": "array" - }, - "akku_soc_pro_stunde": { - "description": "The state of charge of the battery (not the EV) in percentage per hour.", - "items": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "title": "Akku Soc Pro Stunde", - "type": "array" - } - }, - "required": [ - "Last_Wh_pro_Stunde", - "EAuto_SoC_pro_Stunde", - "Einnahmen_Euro_pro_Stunde", - "Gesamt_Verluste", - "Gesamtbilanz_Euro", - "Gesamteinnahmen_Euro", - "Gesamtkosten_Euro", - "Home_appliance_wh_per_hour", - "Kosten_Euro_pro_Stunde", - "Netzbezug_Wh_pro_Stunde", - "Netzeinspeisung_Wh_pro_Stunde", - "Verluste_Pro_Stunde", - "akku_soc_pro_stunde", - "Electricity_price" - ], - "title": "SimulationResult", - "type": "object" - }, - "SolarPanelBatteryParameters": { - "properties": { - "capacity_wh": { - "description": "An integer representing the capacity of the battery in watt-hours.", - "exclusiveMinimum": 0.0, - "title": "Capacity Wh", - "type": "integer" - }, - "charging_efficiency": { - "default": 0.88, - "description": "A float representing the charging efficiency of the battery.", - "exclusiveMinimum": 0.0, - "maximum": 1.0, - "title": "Charging Efficiency", - "type": "number" - }, - "discharging_efficiency": { - "default": 0.88, - "description": "A float representing the discharge efficiency of the battery.", - "exclusiveMinimum": 0.0, - "maximum": 1.0, - "title": "Discharging Efficiency", - "type": "number" - }, - "initial_soc_percentage": { - "default": 0, - "description": "An integer representing the state of charge of the battery at the **start** of the current hour (not the current state).", - "maximum": 100.0, - "minimum": 0.0, - "title": "Initial Soc Percentage", - "type": "integer" - }, - "max_charge_power_w": { - "anyOf": [ - { - "exclusiveMinimum": 0.0, - "type": "number" - }, - { - "type": "null" - } - ], - "default": 5000, - "description": "Maximum charging power in watts.", - "title": "Max Charge Power W" - }, - "max_soc_percentage": { - "default": 100, - "description": "An integer representing the maximum state of charge (SOC) of the battery in percentage.", - "maximum": 100.0, - "minimum": 0.0, - "title": "Max Soc Percentage", - "type": "integer" - }, - "min_soc_percentage": { - "default": 0, - "description": "An integer representing the minimum state of charge (SOC) of the battery in percentage.", - "maximum": 100.0, - "minimum": 0.0, - "title": "Min Soc Percentage", - "type": "integer" - } - }, - "required": [ - "capacity_wh" - ], - "title": "SolarPanelBatteryParameters", - "type": "object" - }, - "ValidationError": { - "properties": { - "loc": { - "items": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "integer" - } - ] - }, - "title": "Location", - "type": "array" - }, - "msg": { - "title": "Message", - "type": "string" - }, - "type": { - "title": "Error Type", - "type": "string" - } - }, - "required": [ - "loc", - "msg", - "type" - ], - "title": "ValidationError", - "type": "object" + "description": "configuration value" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigEOS" + } + } } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } } + } }, - "info": { - "description": "This project provides a comprehensive solution for simulating and optimizing an energy system based on renewable energy sources. With a focus on photovoltaic (PV) systems, battery storage (batteries), load management (consumer requirements), heat pumps, electric vehicles, and consideration of electricity price data, this system enables forecasting and optimization of energy flow and costs over a specified period.", - "title": "Akkudoktor-EOS", - "version": "0.0.1" - }, - "openapi": "3.1.0", - "paths": { - "/gesamtlast": { - "post": { - "description": "Deprecated: Total Load Prediction with adjustment.\n\nEndpoint to handle total load prediction adjusted by latest measured data.\n\nTotal load prediction starts at 00.00.00 today and is provided for 48 hours.\nIf no prediction values are available the missing ones at the start of the series are\nfilled with the first available prediction value.\n\nNote:\n Use '/v1/prediction/list?key=load_mean_adjusted' instead.\n Load energy meter readings to be added to EOS measurement by:\n '/v1/measurement/load-mr/value/by-name' or\n '/v1/measurement/value'", - "operationId": "fastapi_gesamtlast_gesamtlast_post", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GesamtlastRequest" - } - } - }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "items": { - "type": "number" - }, - "title": "Response Fastapi Gesamtlast Gesamtlast Post", - "type": "array" - } - } - }, - "description": "Successful Response" - }, - "422": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - }, - "description": "Validation Error" - } - }, - "summary": "Fastapi Gesamtlast" - } - }, - "/gesamtlast_simple": { - "get": { - "description": "Deprecated: Total Load Prediction.\n\nEndpoint to handle total load prediction.\n\nTotal load prediction starts at 00.00.00 today and is provided for 48 hours.\nIf no prediction values are available the missing ones at the start of the series are\nfilled with the first available prediction value.\n\nNote:\n Set LoadAkkudoktor as load_provider, then update data with\n '/v1/prediction/update'\n and then request data with\n '/v1/prediction/list?key=load_mean' instead.", - "operationId": "fastapi_gesamtlast_simple_gesamtlast_simple_get", - "parameters": [ - { - "in": "query", - "name": "year_energy", - "required": true, - "schema": { - "title": "Year Energy", - "type": "number" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "items": { - "type": "number" - }, - "title": "Response Fastapi Gesamtlast Simple Gesamtlast Simple Get", - "type": "array" - } - } - }, - "description": "Successful Response" - }, - "422": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - }, - "description": "Validation Error" - } - }, - "summary": "Fastapi Gesamtlast Simple" - } - }, - "/optimize": { - "post": { - "operationId": "fastapi_optimize_optimize_post", - "parameters": [ - { - "description": "Defaults to current hour of the day.", - "in": "query", - "name": "start_hour", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Defaults to current hour of the day.", - "title": "Start Hour" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OptimizationParameters" - } - } - }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OptimizeResponse" - } - } - }, - "description": "Successful Response" - }, - "422": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - }, - "description": "Validation Error" - } - }, - "summary": "Fastapi Optimize" - } - }, - "/pvforecast": { - "get": { - "description": "Deprecated: PV Forecast Prediction.\n\nEndpoint to handle PV forecast prediction.\n\nPVForecast starts at 00.00.00 today and is provided for 48 hours.\nIf no forecast values are available the missing ones at the start of the series are\nfilled with the first available forecast value.\n\nNote:\n Set PVForecastAkkudoktor as pvforecast_provider, then update data with\n '/v1/prediction/update'\n and then request data with\n '/v1/prediction/list?key=pvforecast_ac_power' and\n '/v1/prediction/list?key=pvforecastakkudoktor_temp_air' instead.", - "operationId": "fastapi_pvforecast_pvforecast_get", - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ForecastResponse" - } - } - }, - "description": "Successful Response" - } - }, - "summary": "Fastapi Pvforecast" - } - }, - "/strompreis": { - "get": { - "description": "Deprecated: Electricity Market Price Prediction per Wh (\u20ac/Wh).\n\nElectricity prices start at 00.00.00 today and are provided for 48 hours.\nIf no prices are available the missing ones at the start of the series are\nfilled with the first available price.\n\nNote:\n Electricity price charges are added.\n\nNote:\n Set ElecPriceAkkudoktor as elecprice_provider, then update data with\n '/v1/prediction/update'\n and then request data with\n '/v1/prediction/list?key=elecprice_marketprice_wh' or\n '/v1/prediction/list?key=elecprice_marketprice_kwh' instead.", - "operationId": "fastapi_strompreis_strompreis_get", - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "items": { - "type": "number" - }, - "title": "Response Fastapi Strompreis Strompreis Get", - "type": "array" - } - } - }, - "description": "Successful Response" - } - }, - "summary": "Fastapi Strompreis" - } - }, - "/v1/config": { - "get": { - "description": "Get the current configuration.\n\nReturns:\n configuration (ConfigEOS): The current configuration.", - "operationId": "fastapi_config_get_v1_config_get", - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConfigEOS" - } - } - }, - "description": "Successful Response" - } - }, - "summary": "Fastapi Config Get" - }, - "put": { - "description": "Write the provided settings into the current settings.\n\nThe existing settings are completely overwritten. Note that for any setting\nvalue that is None, the configuration will fall back to values from other sources such as\nenvironment variables, the EOS configuration file, or default values.\n\nArgs:\n settings (SettingsEOS): The settings to write into the current settings.\n\nReturns:\n configuration (ConfigEOS): The current configuration after the write.", - "operationId": "fastapi_config_put_v1_config_put", - "parameters": [ - { - "description": "FastAPI server IP address.", - "in": "query", - "name": "server_fastapi_host", - "required": false, - "schema": { - "anyOf": [ - { - "format": "ipvanyaddress", - "type": "string" - }, - { - "type": "null" - } - ], - "default": "0.0.0.0", - "description": "FastAPI server IP address.", - "title": "Server Fastapi Host" - } - }, - { - "description": "FastAPI server IP port number.", - "in": "query", - "name": "server_fastapi_port", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": 8503, - "description": "FastAPI server IP port number.", - "title": "Server Fastapi Port" - } - }, - { - "description": "Enable debug output", - "in": "query", - "name": "server_fastapi_verbose", - "required": false, - "schema": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Enable debug output", - "title": "Server Fastapi Verbose" - } - }, - { - "description": "FastAPI server to startup application FastHTML server.", - "in": "query", - "name": "server_fastapi_startup_server_fasthtml", - "required": false, - "schema": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": true, - "description": "FastAPI server to startup application FastHTML server.", - "title": "Server Fastapi Startup Server Fasthtml" - } - }, - { - "description": "FastHTML server IP address.", - "in": "query", - "name": "server_fasthtml_host", - "required": false, - "schema": { - "anyOf": [ - { - "format": "ipvanyaddress", - "type": "string" - }, - { - "type": "null" - } - ], - "default": "0.0.0.0", - "description": "FastHTML server IP address.", - "title": "Server Fasthtml Host" - } - }, - { - "description": "FastHTML server IP port number.", - "in": "query", - "name": "server_fasthtml_port", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": 8504, - "description": "FastHTML server IP port number.", - "title": "Server Fasthtml Port" - } - }, - { - "description": "Path to the file to import weather data from.", - "in": "query", - "name": "weatherimport_file_path", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "format": "path", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Path to the file to import weather data from.", - "title": "Weatherimport File Path" - } - }, - { - "description": "JSON string, dictionary of weather forecast value lists.", - "in": "query", - "name": "weatherimport_json", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "JSON string, dictionary of weather forecast value lists.", - "title": "Weatherimport Json" - } - }, - { - "description": "Weather provider id of provider to be used.", - "in": "query", - "name": "weather_provider", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Weather provider id of provider to be used.", - "title": "Weather Provider" - } - }, - { - "description": "Path to the file to import PV forecast data from.", - "in": "query", - "name": "pvforecastimport_file_path", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "format": "path", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Path to the file to import PV forecast data from.", - "title": "Pvforecastimport File Path" - } - }, - { - "description": "JSON string, dictionary of PV forecast value lists.", - "in": "query", - "name": "pvforecastimport_json", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "JSON string, dictionary of PV forecast value lists.", - "title": "Pvforecastimport Json" - } - }, - { - "description": "PVForecast provider id of provider to be used.", - "in": "query", - "name": "pvforecast_provider", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "PVForecast provider id of provider to be used.", - "title": "Pvforecast Provider" - } - }, - { - "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", - "in": "query", - "name": "pvforecast0_surface_tilt", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", - "title": "Pvforecast0 Surface Tilt" - } - }, - { - "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", - "in": "query", - "name": "pvforecast0_surface_azimuth", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", - "title": "Pvforecast0 Surface Azimuth" - } - }, - { - "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", - "in": "query", - "name": "pvforecast0_userhorizon", - "required": false, - "schema": { - "anyOf": [ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", - "title": "Pvforecast0 Userhorizon" - } - }, - { - "description": "Nominal power of PV system in kW.", - "in": "query", - "name": "pvforecast0_peakpower", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Nominal power of PV system in kW.", - "title": "Pvforecast0 Peakpower" - } - }, - { - "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", - "in": "query", - "name": "pvforecast0_pvtechchoice", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "crystSi", - "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", - "title": "Pvforecast0 Pvtechchoice" - } - }, - { - "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", - "in": "query", - "name": "pvforecast0_mountingplace", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "free", - "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", - "title": "Pvforecast0 Mountingplace" - } - }, - { - "description": "Sum of PV system losses in percent", - "in": "query", - "name": "pvforecast0_loss", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": 14.0, - "description": "Sum of PV system losses in percent", - "title": "Pvforecast0 Loss" - } - }, - { - "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", - "in": "query", - "name": "pvforecast0_trackingtype", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", - "title": "Pvforecast0 Trackingtype" - } - }, - { - "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", - "in": "query", - "name": "pvforecast0_optimal_surface_tilt", - "required": false, - "schema": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", - "title": "Pvforecast0 Optimal Surface Tilt" - } - }, - { - "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", - "in": "query", - "name": "pvforecast0_optimalangles", - "required": false, - "schema": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", - "title": "Pvforecast0 Optimalangles" - } - }, - { - "description": "Proportion of the light hitting the ground that it reflects back.", - "in": "query", - "name": "pvforecast0_albedo", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Proportion of the light hitting the ground that it reflects back.", - "title": "Pvforecast0 Albedo" - } - }, - { - "description": "Model of the PV modules of this plane.", - "in": "query", - "name": "pvforecast0_module_model", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the PV modules of this plane.", - "title": "Pvforecast0 Module Model" - } - }, - { - "description": "Model of the inverter of this plane.", - "in": "query", - "name": "pvforecast0_inverter_model", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the inverter of this plane.", - "title": "Pvforecast0 Inverter Model" - } - }, - { - "description": "AC power rating of the inverter. [W]", - "in": "query", - "name": "pvforecast0_inverter_paco", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "AC power rating of the inverter. [W]", - "title": "Pvforecast0 Inverter Paco" - } - }, - { - "description": "Number of the PV modules of the strings of this plane.", - "in": "query", - "name": "pvforecast0_modules_per_string", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the PV modules of the strings of this plane.", - "title": "Pvforecast0 Modules Per String" - } - }, - { - "description": "Number of the strings of the inverter of this plane.", - "in": "query", - "name": "pvforecast0_strings_per_inverter", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the strings of the inverter of this plane.", - "title": "Pvforecast0 Strings Per Inverter" - } - }, - { - "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", - "in": "query", - "name": "pvforecast1_surface_tilt", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", - "title": "Pvforecast1 Surface Tilt" - } - }, - { - "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", - "in": "query", - "name": "pvforecast1_surface_azimuth", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", - "title": "Pvforecast1 Surface Azimuth" - } - }, - { - "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", - "in": "query", - "name": "pvforecast1_userhorizon", - "required": false, - "schema": { - "anyOf": [ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", - "title": "Pvforecast1 Userhorizon" - } - }, - { - "description": "Nominal power of PV system in kW.", - "in": "query", - "name": "pvforecast1_peakpower", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Nominal power of PV system in kW.", - "title": "Pvforecast1 Peakpower" - } - }, - { - "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", - "in": "query", - "name": "pvforecast1_pvtechchoice", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "crystSi", - "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", - "title": "Pvforecast1 Pvtechchoice" - } - }, - { - "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", - "in": "query", - "name": "pvforecast1_mountingplace", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "free", - "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", - "title": "Pvforecast1 Mountingplace" - } - }, - { - "description": "Sum of PV system losses in percent", - "in": "query", - "name": "pvforecast1_loss", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": 14.0, - "description": "Sum of PV system losses in percent", - "title": "Pvforecast1 Loss" - } - }, - { - "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", - "in": "query", - "name": "pvforecast1_trackingtype", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", - "title": "Pvforecast1 Trackingtype" - } - }, - { - "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", - "in": "query", - "name": "pvforecast1_optimal_surface_tilt", - "required": false, - "schema": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", - "title": "Pvforecast1 Optimal Surface Tilt" - } - }, - { - "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", - "in": "query", - "name": "pvforecast1_optimalangles", - "required": false, - "schema": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", - "title": "Pvforecast1 Optimalangles" - } - }, - { - "description": "Proportion of the light hitting the ground that it reflects back.", - "in": "query", - "name": "pvforecast1_albedo", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Proportion of the light hitting the ground that it reflects back.", - "title": "Pvforecast1 Albedo" - } - }, - { - "description": "Model of the PV modules of this plane.", - "in": "query", - "name": "pvforecast1_module_model", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the PV modules of this plane.", - "title": "Pvforecast1 Module Model" - } - }, - { - "description": "Model of the inverter of this plane.", - "in": "query", - "name": "pvforecast1_inverter_model", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the inverter of this plane.", - "title": "Pvforecast1 Inverter Model" - } - }, - { - "description": "AC power rating of the inverter. [W]", - "in": "query", - "name": "pvforecast1_inverter_paco", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "AC power rating of the inverter. [W]", - "title": "Pvforecast1 Inverter Paco" - } - }, - { - "description": "Number of the PV modules of the strings of this plane.", - "in": "query", - "name": "pvforecast1_modules_per_string", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the PV modules of the strings of this plane.", - "title": "Pvforecast1 Modules Per String" - } - }, - { - "description": "Number of the strings of the inverter of this plane.", - "in": "query", - "name": "pvforecast1_strings_per_inverter", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the strings of the inverter of this plane.", - "title": "Pvforecast1 Strings Per Inverter" - } - }, - { - "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", - "in": "query", - "name": "pvforecast2_surface_tilt", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", - "title": "Pvforecast2 Surface Tilt" - } - }, - { - "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", - "in": "query", - "name": "pvforecast2_surface_azimuth", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", - "title": "Pvforecast2 Surface Azimuth" - } - }, - { - "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", - "in": "query", - "name": "pvforecast2_userhorizon", - "required": false, - "schema": { - "anyOf": [ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", - "title": "Pvforecast2 Userhorizon" - } - }, - { - "description": "Nominal power of PV system in kW.", - "in": "query", - "name": "pvforecast2_peakpower", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Nominal power of PV system in kW.", - "title": "Pvforecast2 Peakpower" - } - }, - { - "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", - "in": "query", - "name": "pvforecast2_pvtechchoice", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "crystSi", - "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", - "title": "Pvforecast2 Pvtechchoice" - } - }, - { - "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", - "in": "query", - "name": "pvforecast2_mountingplace", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "free", - "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", - "title": "Pvforecast2 Mountingplace" - } - }, - { - "description": "Sum of PV system losses in percent", - "in": "query", - "name": "pvforecast2_loss", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": 14.0, - "description": "Sum of PV system losses in percent", - "title": "Pvforecast2 Loss" - } - }, - { - "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", - "in": "query", - "name": "pvforecast2_trackingtype", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", - "title": "Pvforecast2 Trackingtype" - } - }, - { - "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", - "in": "query", - "name": "pvforecast2_optimal_surface_tilt", - "required": false, - "schema": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", - "title": "Pvforecast2 Optimal Surface Tilt" - } - }, - { - "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", - "in": "query", - "name": "pvforecast2_optimalangles", - "required": false, - "schema": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", - "title": "Pvforecast2 Optimalangles" - } - }, - { - "description": "Proportion of the light hitting the ground that it reflects back.", - "in": "query", - "name": "pvforecast2_albedo", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Proportion of the light hitting the ground that it reflects back.", - "title": "Pvforecast2 Albedo" - } - }, - { - "description": "Model of the PV modules of this plane.", - "in": "query", - "name": "pvforecast2_module_model", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the PV modules of this plane.", - "title": "Pvforecast2 Module Model" - } - }, - { - "description": "Model of the inverter of this plane.", - "in": "query", - "name": "pvforecast2_inverter_model", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the inverter of this plane.", - "title": "Pvforecast2 Inverter Model" - } - }, - { - "description": "AC power rating of the inverter. [W]", - "in": "query", - "name": "pvforecast2_inverter_paco", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "AC power rating of the inverter. [W]", - "title": "Pvforecast2 Inverter Paco" - } - }, - { - "description": "Number of the PV modules of the strings of this plane.", - "in": "query", - "name": "pvforecast2_modules_per_string", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the PV modules of the strings of this plane.", - "title": "Pvforecast2 Modules Per String" - } - }, - { - "description": "Number of the strings of the inverter of this plane.", - "in": "query", - "name": "pvforecast2_strings_per_inverter", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the strings of the inverter of this plane.", - "title": "Pvforecast2 Strings Per Inverter" - } - }, - { - "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", - "in": "query", - "name": "pvforecast3_surface_tilt", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", - "title": "Pvforecast3 Surface Tilt" - } - }, - { - "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", - "in": "query", - "name": "pvforecast3_surface_azimuth", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", - "title": "Pvforecast3 Surface Azimuth" - } - }, - { - "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", - "in": "query", - "name": "pvforecast3_userhorizon", - "required": false, - "schema": { - "anyOf": [ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", - "title": "Pvforecast3 Userhorizon" - } - }, - { - "description": "Nominal power of PV system in kW.", - "in": "query", - "name": "pvforecast3_peakpower", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Nominal power of PV system in kW.", - "title": "Pvforecast3 Peakpower" - } - }, - { - "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", - "in": "query", - "name": "pvforecast3_pvtechchoice", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "crystSi", - "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", - "title": "Pvforecast3 Pvtechchoice" - } - }, - { - "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", - "in": "query", - "name": "pvforecast3_mountingplace", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "free", - "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", - "title": "Pvforecast3 Mountingplace" - } - }, - { - "description": "Sum of PV system losses in percent", - "in": "query", - "name": "pvforecast3_loss", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": 14.0, - "description": "Sum of PV system losses in percent", - "title": "Pvforecast3 Loss" - } - }, - { - "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", - "in": "query", - "name": "pvforecast3_trackingtype", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", - "title": "Pvforecast3 Trackingtype" - } - }, - { - "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", - "in": "query", - "name": "pvforecast3_optimal_surface_tilt", - "required": false, - "schema": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", - "title": "Pvforecast3 Optimal Surface Tilt" - } - }, - { - "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", - "in": "query", - "name": "pvforecast3_optimalangles", - "required": false, - "schema": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", - "title": "Pvforecast3 Optimalangles" - } - }, - { - "description": "Proportion of the light hitting the ground that it reflects back.", - "in": "query", - "name": "pvforecast3_albedo", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Proportion of the light hitting the ground that it reflects back.", - "title": "Pvforecast3 Albedo" - } - }, - { - "description": "Model of the PV modules of this plane.", - "in": "query", - "name": "pvforecast3_module_model", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the PV modules of this plane.", - "title": "Pvforecast3 Module Model" - } - }, - { - "description": "Model of the inverter of this plane.", - "in": "query", - "name": "pvforecast3_inverter_model", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the inverter of this plane.", - "title": "Pvforecast3 Inverter Model" - } - }, - { - "description": "AC power rating of the inverter. [W]", - "in": "query", - "name": "pvforecast3_inverter_paco", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "AC power rating of the inverter. [W]", - "title": "Pvforecast3 Inverter Paco" - } - }, - { - "description": "Number of the PV modules of the strings of this plane.", - "in": "query", - "name": "pvforecast3_modules_per_string", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the PV modules of the strings of this plane.", - "title": "Pvforecast3 Modules Per String" - } - }, - { - "description": "Number of the strings of the inverter of this plane.", - "in": "query", - "name": "pvforecast3_strings_per_inverter", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the strings of the inverter of this plane.", - "title": "Pvforecast3 Strings Per Inverter" - } - }, - { - "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", - "in": "query", - "name": "pvforecast4_surface_tilt", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", - "title": "Pvforecast4 Surface Tilt" - } - }, - { - "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", - "in": "query", - "name": "pvforecast4_surface_azimuth", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", - "title": "Pvforecast4 Surface Azimuth" - } - }, - { - "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", - "in": "query", - "name": "pvforecast4_userhorizon", - "required": false, - "schema": { - "anyOf": [ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", - "title": "Pvforecast4 Userhorizon" - } - }, - { - "description": "Nominal power of PV system in kW.", - "in": "query", - "name": "pvforecast4_peakpower", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Nominal power of PV system in kW.", - "title": "Pvforecast4 Peakpower" - } - }, - { - "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", - "in": "query", - "name": "pvforecast4_pvtechchoice", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "crystSi", - "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", - "title": "Pvforecast4 Pvtechchoice" - } - }, - { - "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", - "in": "query", - "name": "pvforecast4_mountingplace", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "free", - "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", - "title": "Pvforecast4 Mountingplace" - } - }, - { - "description": "Sum of PV system losses in percent", - "in": "query", - "name": "pvforecast4_loss", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": 14.0, - "description": "Sum of PV system losses in percent", - "title": "Pvforecast4 Loss" - } - }, - { - "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", - "in": "query", - "name": "pvforecast4_trackingtype", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", - "title": "Pvforecast4 Trackingtype" - } - }, - { - "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", - "in": "query", - "name": "pvforecast4_optimal_surface_tilt", - "required": false, - "schema": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", - "title": "Pvforecast4 Optimal Surface Tilt" - } - }, - { - "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", - "in": "query", - "name": "pvforecast4_optimalangles", - "required": false, - "schema": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", - "title": "Pvforecast4 Optimalangles" - } - }, - { - "description": "Proportion of the light hitting the ground that it reflects back.", - "in": "query", - "name": "pvforecast4_albedo", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Proportion of the light hitting the ground that it reflects back.", - "title": "Pvforecast4 Albedo" - } - }, - { - "description": "Model of the PV modules of this plane.", - "in": "query", - "name": "pvforecast4_module_model", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the PV modules of this plane.", - "title": "Pvforecast4 Module Model" - } - }, - { - "description": "Model of the inverter of this plane.", - "in": "query", - "name": "pvforecast4_inverter_model", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the inverter of this plane.", - "title": "Pvforecast4 Inverter Model" - } - }, - { - "description": "AC power rating of the inverter. [W]", - "in": "query", - "name": "pvforecast4_inverter_paco", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "AC power rating of the inverter. [W]", - "title": "Pvforecast4 Inverter Paco" - } - }, - { - "description": "Number of the PV modules of the strings of this plane.", - "in": "query", - "name": "pvforecast4_modules_per_string", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the PV modules of the strings of this plane.", - "title": "Pvforecast4 Modules Per String" - } - }, - { - "description": "Number of the strings of the inverter of this plane.", - "in": "query", - "name": "pvforecast4_strings_per_inverter", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the strings of the inverter of this plane.", - "title": "Pvforecast4 Strings Per Inverter" - } - }, - { - "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", - "in": "query", - "name": "pvforecast5_surface_tilt", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", - "title": "Pvforecast5 Surface Tilt" - } - }, - { - "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", - "in": "query", - "name": "pvforecast5_surface_azimuth", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", - "title": "Pvforecast5 Surface Azimuth" - } - }, - { - "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", - "in": "query", - "name": "pvforecast5_userhorizon", - "required": false, - "schema": { - "anyOf": [ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", - "title": "Pvforecast5 Userhorizon" - } - }, - { - "description": "Nominal power of PV system in kW.", - "in": "query", - "name": "pvforecast5_peakpower", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Nominal power of PV system in kW.", - "title": "Pvforecast5 Peakpower" - } - }, - { - "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", - "in": "query", - "name": "pvforecast5_pvtechchoice", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "crystSi", - "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", - "title": "Pvforecast5 Pvtechchoice" - } - }, - { - "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", - "in": "query", - "name": "pvforecast5_mountingplace", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": "free", - "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", - "title": "Pvforecast5 Mountingplace" - } - }, - { - "description": "Sum of PV system losses in percent", - "in": "query", - "name": "pvforecast5_loss", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": 14.0, - "description": "Sum of PV system losses in percent", - "title": "Pvforecast5 Loss" - } - }, - { - "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", - "in": "query", - "name": "pvforecast5_trackingtype", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", - "title": "Pvforecast5 Trackingtype" - } - }, - { - "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", - "in": "query", - "name": "pvforecast5_optimal_surface_tilt", - "required": false, - "schema": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", - "title": "Pvforecast5 Optimal Surface Tilt" - } - }, - { - "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", - "in": "query", - "name": "pvforecast5_optimalangles", - "required": false, - "schema": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", - "title": "Pvforecast5 Optimalangles" - } - }, - { - "description": "Proportion of the light hitting the ground that it reflects back.", - "in": "query", - "name": "pvforecast5_albedo", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Proportion of the light hitting the ground that it reflects back.", - "title": "Pvforecast5 Albedo" - } - }, - { - "description": "Model of the PV modules of this plane.", - "in": "query", - "name": "pvforecast5_module_model", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the PV modules of this plane.", - "title": "Pvforecast5 Module Model" - } - }, - { - "description": "Model of the inverter of this plane.", - "in": "query", - "name": "pvforecast5_inverter_model", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Model of the inverter of this plane.", - "title": "Pvforecast5 Inverter Model" - } - }, - { - "description": "AC power rating of the inverter. [W]", - "in": "query", - "name": "pvforecast5_inverter_paco", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "AC power rating of the inverter. [W]", - "title": "Pvforecast5 Inverter Paco" - } - }, - { - "description": "Number of the PV modules of the strings of this plane.", - "in": "query", - "name": "pvforecast5_modules_per_string", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the PV modules of the strings of this plane.", - "title": "Pvforecast5 Modules Per String" - } - }, - { - "description": "Number of the strings of the inverter of this plane.", - "in": "query", - "name": "pvforecast5_strings_per_inverter", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Number of the strings of the inverter of this plane.", - "title": "Pvforecast5 Strings Per Inverter" - } - }, - { - "description": "Path to the file to import load data from.", - "in": "query", - "name": "load_import_file_path", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "format": "path", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Path to the file to import load data from.", - "title": "Load Import File Path" - } - }, - { - "description": "JSON string, dictionary of load forecast value lists.", - "in": "query", - "name": "load_import_json", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "JSON string, dictionary of load forecast value lists.", - "title": "Load Import Json" - } - }, - { - "description": "Yearly energy consumption (kWh).", - "in": "query", - "name": "loadakkudoktor_year_energy", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Yearly energy consumption (kWh).", - "title": "Loadakkudoktor Year Energy" - } - }, - { - "description": "Load provider id of provider to be used.", - "in": "query", - "name": "load_provider", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Load provider id of provider to be used.", - "title": "Load Provider" - } - }, - { - "description": "Path to the file to import elecprice data from.", - "in": "query", - "name": "elecpriceimport_file_path", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "format": "path", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Path to the file to import elecprice data from.", - "title": "Elecpriceimport File Path" - } - }, - { - "description": "JSON string, dictionary of electricity price forecast value lists.", - "in": "query", - "name": "elecpriceimport_json", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "JSON string, dictionary of electricity price forecast value lists.", - "title": "Elecpriceimport Json" - } - }, - { - "description": "Electricity price provider id of provider to be used.", - "in": "query", - "name": "elecprice_provider", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Electricity price provider id of provider to be used.", - "title": "Elecprice Provider" - } - }, - { - "description": "Electricity price charges (\u20ac/kWh).", - "in": "query", - "name": "elecprice_charges_kwh", - "required": false, - "schema": { - "anyOf": [ - { - "minimum": 0.0, - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Electricity price charges (\u20ac/kWh).", - "title": "Elecprice Charges Kwh" - } - }, - { - "description": "Number of hours into the future for predictions", - "in": "query", - "name": "prediction_hours", - "required": false, - "schema": { - "anyOf": [ - { - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": 48, - "description": "Number of hours into the future for predictions", - "title": "Prediction Hours" - } - }, - { - "description": "Number of hours into the past for historical predictions data", - "in": "query", - "name": "prediction_historic_hours", - "required": false, - "schema": { - "anyOf": [ - { - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": 48, - "description": "Number of hours into the past for historical predictions data", - "title": "Prediction Historic Hours" - } - }, - { - "description": "Latitude in decimal degrees, between -90 and 90, north is positive (ISO 19115) (\u00b0)", - "in": "query", - "name": "latitude", - "required": false, - "schema": { - "anyOf": [ - { - "maximum": 90.0, - "minimum": -90.0, - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Latitude in decimal degrees, between -90 and 90, north is positive (ISO 19115) (\u00b0)", - "title": "Latitude" - } - }, - { - "description": "Longitude in decimal degrees, within -180 to 180 (\u00b0)", - "in": "query", - "name": "longitude", - "required": false, - "schema": { - "anyOf": [ - { - "maximum": 180.0, - "minimum": -180.0, - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Longitude in decimal degrees, within -180 to 180 (\u00b0)", - "title": "Longitude" - } - }, - { - "description": "Number of hours into the future for optimizations.", - "in": "query", - "name": "optimization_hours", - "required": false, - "schema": { - "anyOf": [ - { - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": 24, - "description": "Number of hours into the future for optimizations.", - "title": "Optimization Hours" - } - }, - { - "description": "Penalty factor used in optimization.", - "in": "query", - "name": "optimization_penalty", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": 10, - "description": "Penalty factor used in optimization.", - "title": "Optimization Penalty" - } - }, - { - "description": "Charge rates available for the EV in percent of maximum charge.", - "in": "query", - "name": "optimization_ev_available_charge_rates_percent", - "required": false, - "schema": { - "anyOf": [ - { - "items": { - "type": "number" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": [ - 0.0, - 0.375, - 0.5, - 0.625, - 0.75, - 0.875, - 1.0 - ], - "description": "Charge rates available for the EV in percent of maximum charge.", - "title": "Optimization Ev Available Charge Rates Percent" - } - }, - { - "description": "Name of the load0 source (e.g. 'Household', 'Heat Pump')", - "in": "query", - "name": "measurement_load0_name", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Name of the load0 source (e.g. 'Household', 'Heat Pump')", - "title": "Measurement Load0 Name" - } - }, - { - "description": "Name of the load1 source (e.g. 'Household', 'Heat Pump')", - "in": "query", - "name": "measurement_load1_name", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Name of the load1 source (e.g. 'Household', 'Heat Pump')", - "title": "Measurement Load1 Name" - } - }, - { - "description": "Name of the load2 source (e.g. 'Household', 'Heat Pump')", - "in": "query", - "name": "measurement_load2_name", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Name of the load2 source (e.g. 'Household', 'Heat Pump')", - "title": "Measurement Load2 Name" - } - }, - { - "description": "Name of the load3 source (e.g. 'Household', 'Heat Pump')", - "in": "query", - "name": "measurement_load3_name", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Name of the load3 source (e.g. 'Household', 'Heat Pump')", - "title": "Measurement Load3 Name" - } - }, - { - "description": "Name of the load4 source (e.g. 'Household', 'Heat Pump')", - "in": "query", - "name": "measurement_load4_name", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Name of the load4 source (e.g. 'Household', 'Heat Pump')", - "title": "Measurement Load4 Name" - } - }, - { - "description": "Id of Battery simulation provider.", - "in": "query", - "name": "battery_provider", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Id of Battery simulation provider.", - "title": "Battery Provider" - } - }, - { - "description": "Battery capacity [Wh].", - "in": "query", - "name": "battery_capacity", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Battery capacity [Wh].", - "title": "Battery Capacity" - } - }, - { - "description": "Battery initial state of charge [%].", - "in": "query", - "name": "battery_initial_soc", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Battery initial state of charge [%].", - "title": "Battery Initial Soc" - } - }, - { - "description": "Battery minimum state of charge [%].", - "in": "query", - "name": "battery_soc_min", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Battery minimum state of charge [%].", - "title": "Battery Soc Min" - } - }, - { - "description": "Battery maximum state of charge [%].", - "in": "query", - "name": "battery_soc_max", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Battery maximum state of charge [%].", - "title": "Battery Soc Max" - } - }, - { - "description": "Battery charging efficiency [%].", - "in": "query", - "name": "battery_charging_efficiency", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Battery charging efficiency [%].", - "title": "Battery Charging Efficiency" - } - }, - { - "description": "Battery discharging efficiency [%].", - "in": "query", - "name": "battery_discharging_efficiency", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Battery discharging efficiency [%].", - "title": "Battery Discharging Efficiency" - } - }, - { - "description": "Battery maximum charge power [W].", - "in": "query", - "name": "battery_max_charging_power", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Battery maximum charge power [W].", - "title": "Battery Max Charging Power" - } - }, - { - "description": "Id of Battery Electric Vehicle simulation provider.", - "in": "query", - "name": "bev_provider", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Id of Battery Electric Vehicle simulation provider.", - "title": "Bev Provider" - } - }, - { - "description": "Battery Electric Vehicle capacity [Wh].", - "in": "query", - "name": "bev_capacity", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Battery Electric Vehicle capacity [Wh].", - "title": "Bev Capacity" - } - }, - { - "description": "Battery Electric Vehicle initial state of charge [%].", - "in": "query", - "name": "bev_initial_soc", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Battery Electric Vehicle initial state of charge [%].", - "title": "Bev Initial Soc" - } - }, - { - "description": "Battery Electric Vehicle maximum state of charge [%].", - "in": "query", - "name": "bev_soc_max", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Battery Electric Vehicle maximum state of charge [%].", - "title": "Bev Soc Max" - } - }, - { - "description": "Battery Electric Vehicle charging efficiency [%].", - "in": "query", - "name": "bev_charging_efficiency", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Battery Electric Vehicle charging efficiency [%].", - "title": "Bev Charging Efficiency" - } - }, - { - "description": "Battery Electric Vehicle discharging efficiency [%].", - "in": "query", - "name": "bev_discharging_efficiency", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Battery Electric Vehicle discharging efficiency [%].", - "title": "Bev Discharging Efficiency" - } - }, - { - "description": "Battery Electric Vehicle maximum charge power [W].", - "in": "query", - "name": "bev_max_charging_power", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Battery Electric Vehicle maximum charge power [W].", - "title": "Bev Max Charging Power" - } - }, - { - "description": "Id of Dish Washer simulation provider.", - "in": "query", - "name": "dishwasher_provider", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Id of Dish Washer simulation provider.", - "title": "Dishwasher Provider" - } - }, - { - "description": "Dish Washer energy consumption [Wh].", - "in": "query", - "name": "dishwasher_consumption", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Dish Washer energy consumption [Wh].", - "title": "Dishwasher Consumption" - } - }, - { - "description": "Dish Washer usage duration [h].", - "in": "query", - "name": "dishwasher_duration", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "Dish Washer usage duration [h].", - "title": "Dishwasher Duration" - } - }, - { - "description": "Id of PV Inverter simulation provider.", - "in": "query", - "name": "inverter_provider", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Id of PV Inverter simulation provider.", - "title": "Inverter Provider" - } - }, - { - "description": "Inverter maximum power [W].", - "in": "query", - "name": "inverter_power_max", - "required": false, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Inverter maximum power [W].", - "title": "Inverter Power Max" - } - }, - { - "description": "EOS default logging level.", - "in": "query", - "name": "logging_level_default", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "EOS default logging level.", - "title": "Logging Level Default" - } - }, - { - "description": "Path to EOS data directory.", - "in": "query", - "name": "data_folder_path", - "required": false, - "schema": { - "anyOf": [ - { - "format": "path", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Path to EOS data directory.", - "title": "Data Folder Path" - } - }, - { - "description": "Sub-path for the EOS output data directory.", - "in": "query", - "name": "data_output_subpath", - "required": false, - "schema": { - "anyOf": [ - { - "format": "path", - "type": "string" - }, - { - "type": "null" - } - ], - "default": "output", - "description": "Sub-path for the EOS output data directory.", - "title": "Data Output Subpath" - } - }, - { - "description": "Sub-path for the EOS cache data directory.", - "in": "query", - "name": "data_cache_subpath", - "required": false, - "schema": { - "anyOf": [ - { - "format": "path", - "type": "string" - }, - { - "type": "null" - } - ], - "default": "cache", - "description": "Sub-path for the EOS cache data directory.", - "title": "Data Cache Subpath" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConfigEOS" - } - } - }, - "description": "Successful Response" - }, - "422": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - }, - "description": "Validation Error" - } - }, - "summary": "Fastapi Config Put" - } - }, - "/v1/config/file": { - "get": { - "description": "Get the settings as defined by the EOS configuration file.\n\nReturns:\n settings (SettingsEOS): The settings defined by the EOS configuration file.", - "operationId": "fastapi_config_file_get_v1_config_file_get", - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SettingsEOS" - } - } - }, - "description": "Successful Response" - } - }, - "summary": "Fastapi Config File Get" - }, - "put": { - "description": "Save the current configuration to the EOS configuration file.\n\nReturns:\n configuration (ConfigEOS): The current configuration that was saved.", - "operationId": "fastapi_config_file_put_v1_config_file_put", - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConfigEOS" - } - } - }, - "description": "Successful Response" - } - }, - "summary": "Fastapi Config File Put" - } - }, - "/v1/config/update": { - "post": { - "description": "Update the configuration from the EOS configuration file.\n\nReturns:\n configuration (ConfigEOS): The current configuration after update.", - "operationId": "fastapi_config_update_post_v1_config_update_post", - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConfigEOS" - } - } - }, - "description": "Successful Response" - } - }, - "summary": "Fastapi Config Update Post" - } - }, - "/v1/config/value": { - "put": { - "description": "Set the configuration option in the settings.\n\nArgs:\n key (str): configuration key\n value (Any): configuration value\n\nReturns:\n configuration (ConfigEOS): The current configuration after the write.", - "operationId": "fastapi_config_value_put_v1_config_value_put", - "parameters": [ - { - "description": "configuration key", - "in": "query", - "name": "key", - "required": true, - "schema": { - "description": "configuration key", - "title": "Key", - "type": "string" - } - }, - { - "description": "configuration value", - "in": "query", - "name": "value", - "required": true, - "schema": { - "description": "configuration value", - "title": "Value" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConfigEOS" - } - } - }, - "description": "Successful Response" - }, - "422": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - }, - "description": "Validation Error" - } - }, - "summary": "Fastapi Config Value Put" - } - }, - "/v1/measurement/data": { - "put": { - "description": "Merge the measurement data given as datetime data into EOS measurements.", - "operationId": "fastapi_measurement_data_put_v1_measurement_data_put", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PydanticDateTimeData" - } - } - }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": {} - } - }, - "description": "Successful Response" - }, - "422": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - }, - "description": "Validation Error" - } - }, - "summary": "Fastapi Measurement Data Put" - } - }, - "/v1/measurement/dataframe": { - "put": { - "description": "Merge the measurement data given as dataframe into EOS measurements.", - "operationId": "fastapi_measurement_dataframe_put_v1_measurement_dataframe_put", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PydanticDateTimeDataFrame" - } - } - }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": {} - } - }, - "description": "Successful Response" - }, - "422": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - }, - "description": "Validation Error" - } - }, - "summary": "Fastapi Measurement Dataframe Put" - } - }, - "/v1/measurement/keys": { - "get": { - "description": "Get a list of available measurement keys.", - "operationId": "fastapi_measurement_keys_get_v1_measurement_keys_get", - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "items": { - "type": "string" - }, - "title": "Response Fastapi Measurement Keys Get V1 Measurement Keys Get", - "type": "array" - } - } - }, - "description": "Successful Response" - } - }, - "summary": "Fastapi Measurement Keys Get" - } - }, - "/v1/measurement/load-mr/series/by-name": { - "get": { - "description": "Get the meter reading of given load name as series.", - "operationId": "fastapi_measurement_load_mr_series_by_name_get_v1_measurement_load_mr_series_by_name_get", - "parameters": [ - { - "description": "Load name.", - "in": "query", - "name": "name", - "required": true, - "schema": { - "description": "Load name.", - "title": "Name", - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PydanticDateTimeSeries" - } - } - }, - "description": "Successful Response" - }, - "422": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - }, - "description": "Validation Error" - } - }, - "summary": "Fastapi Measurement Load Mr Series By Name Get" - }, - "put": { - "description": "Merge the meter readings series of given load name into EOS measurements at given datetime.", - "operationId": "fastapi_measurement_load_mr_series_by_name_put_v1_measurement_load_mr_series_by_name_put", - "parameters": [ - { - "description": "Load name.", - "in": "query", - "name": "name", - "required": true, - "schema": { - "description": "Load name.", - "title": "Name", - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PydanticDateTimeSeries" - } - } - }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PydanticDateTimeSeries" - } - } - }, - "description": "Successful Response" - }, - "422": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - }, - "description": "Validation Error" - } - }, - "summary": "Fastapi Measurement Load Mr Series By Name Put" - } - }, - "/v1/measurement/load-mr/value/by-name": { - "put": { - "description": "Merge the meter reading of given load name and value into EOS measurements at given datetime.", - "operationId": "fastapi_measurement_load_mr_value_by_name_put_v1_measurement_load_mr_value_by_name_put", - "parameters": [ - { - "description": "Datetime.", - "in": "query", - "name": "datetime", - "required": true, - "schema": { - "description": "Datetime.", - "title": "Datetime", - "type": "string" - } - }, - { - "description": "Load name.", - "in": "query", - "name": "name", - "required": true, - "schema": { - "description": "Load name.", - "title": "Name", - "type": "string" - } - }, - { - "in": "query", - "name": "value", - "required": true, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "string" - } - ], - "title": "Value" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PydanticDateTimeSeries" - } - } - }, - "description": "Successful Response" - }, - "422": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - }, - "description": "Validation Error" - } - }, - "summary": "Fastapi Measurement Load Mr Value By Name Put" - } - }, - "/v1/measurement/series": { - "get": { - "description": "Get the measurements of given key as series.", - "operationId": "fastapi_measurement_series_get_v1_measurement_series_get", - "parameters": [ - { - "description": "Prediction key.", - "in": "query", - "name": "key", - "required": true, - "schema": { - "description": "Prediction key.", - "title": "Key", - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PydanticDateTimeSeries" - } - } - }, - "description": "Successful Response" - }, - "422": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - }, - "description": "Validation Error" - } - }, - "summary": "Fastapi Measurement Series Get" - }, - "put": { - "description": "Merge measurement given as series into given key.", - "operationId": "fastapi_measurement_series_put_v1_measurement_series_put", - "parameters": [ - { - "description": "Prediction key.", - "in": "query", - "name": "key", - "required": true, - "schema": { - "description": "Prediction key.", - "title": "Key", - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PydanticDateTimeSeries" - } - } - }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PydanticDateTimeSeries" - } - } - }, - "description": "Successful Response" - }, - "422": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - }, - "description": "Validation Error" - } - }, - "summary": "Fastapi Measurement Series Put" - } - }, - "/v1/measurement/value": { - "put": { - "description": "Merge the measurement of given key and value into EOS measurements at given datetime.", - "operationId": "fastapi_measurement_value_put_v1_measurement_value_put", - "parameters": [ - { - "description": "Datetime.", - "in": "query", - "name": "datetime", - "required": true, - "schema": { - "description": "Datetime.", - "title": "Datetime", - "type": "string" - } - }, - { - "description": "Prediction key.", - "in": "query", - "name": "key", - "required": true, - "schema": { - "description": "Prediction key.", - "title": "Key", - "type": "string" - } - }, - { - "in": "query", - "name": "value", - "required": true, - "schema": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "string" - } - ], - "title": "Value" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PydanticDateTimeSeries" - } - } - }, - "description": "Successful Response" - }, - "422": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - }, - "description": "Validation Error" - } - }, - "summary": "Fastapi Measurement Value Put" - } - }, - "/v1/prediction/keys": { - "get": { - "description": "Get a list of available prediction keys.", - "operationId": "fastapi_prediction_keys_get_v1_prediction_keys_get", - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "items": { - "type": "string" - }, - "title": "Response Fastapi Prediction Keys Get V1 Prediction Keys Get", - "type": "array" - } - } - }, - "description": "Successful Response" - } - }, - "summary": "Fastapi Prediction Keys Get" - } - }, - "/v1/prediction/list": { - "get": { - "description": "Get prediction for given key within given date range as value list.\n\nArgs:\n key (str): Prediction key\n start_datetime (Optional[str]): Starting datetime (inclusive).\n Defaults to start datetime of latest prediction.\n end_datetime (Optional[str]: Ending datetime (exclusive).\n Defaults to end datetime of latest prediction.\n interval (Optional[str]): Time duration for each interval.\n Defaults to 1 hour.", - "operationId": "fastapi_prediction_list_get_v1_prediction_list_get", - "parameters": [ - { - "description": "Prediction key.", - "in": "query", - "name": "key", - "required": true, - "schema": { - "description": "Prediction key.", - "title": "Key", - "type": "string" - } - }, - { - "description": "Starting datetime (inclusive).", - "in": "query", - "name": "start_datetime", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Starting datetime (inclusive).", - "title": "Start Datetime" - } - }, - { - "description": "Ending datetime (exclusive).", - "in": "query", - "name": "end_datetime", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Ending datetime (exclusive).", - "title": "End Datetime" - } - }, - { - "description": "Time duration for each interval.", - "in": "query", - "name": "interval", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Time duration for each interval.", - "title": "Interval" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "items": {}, - "title": "Response Fastapi Prediction List Get V1 Prediction List Get", - "type": "array" - } - } - }, - "description": "Successful Response" - }, - "422": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - }, - "description": "Validation Error" - } - }, - "summary": "Fastapi Prediction List Get" - } - }, - "/v1/prediction/series": { - "get": { - "description": "Get prediction for given key within given date range as series.\n\nArgs:\n key (str): Prediction key\n start_datetime (Optional[str]): Starting datetime (inclusive).\n Defaults to start datetime of latest prediction.\n end_datetime (Optional[str]: Ending datetime (exclusive).\n Defaults to end datetime of latest prediction.", - "operationId": "fastapi_prediction_series_get_v1_prediction_series_get", - "parameters": [ - { - "description": "Prediction key.", - "in": "query", - "name": "key", - "required": true, - "schema": { - "description": "Prediction key.", - "title": "Key", - "type": "string" - } - }, - { - "description": "Starting datetime (inclusive).", - "in": "query", - "name": "start_datetime", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Starting datetime (inclusive).", - "title": "Start Datetime" - } - }, - { - "description": "Ending datetime (exclusive).", - "in": "query", - "name": "end_datetime", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Ending datetime (exclusive).", - "title": "End Datetime" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PydanticDateTimeSeries" - } - } - }, - "description": "Successful Response" - }, - "422": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - }, - "description": "Validation Error" - } - }, - "summary": "Fastapi Prediction Series Get" - } - }, - "/v1/prediction/update": { - "post": { - "description": "Update predictions for all providers.\n\nArgs:\n force_update: Update data even if it is already cached.\n Defaults to False.\n force_enable: Update data even if provider is disabled.\n Defaults to False.", - "operationId": "fastapi_prediction_update_v1_prediction_update_post", - "parameters": [ - { - "in": "query", - "name": "force_update", - "required": false, - "schema": { - "default": false, - "title": "Force Update", - "type": "boolean" - } - }, - { - "in": "query", - "name": "force_enable", - "required": false, - "schema": { - "default": false, - "title": "Force Enable", - "type": "boolean" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": {} - } - }, - "description": "Successful Response" - }, - "422": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - }, - "description": "Validation Error" - } - }, - "summary": "Fastapi Prediction Update" - } - }, - "/v1/prediction/update/{provider_id}": { - "post": { - "description": "Update predictions for given provider ID.\n\nArgs:\n provider_id: ID of provider to update.\n force_update: Update data even if it is already cached.\n Defaults to False.\n force_enable: Update data even if provider is disabled.\n Defaults to False.", - "operationId": "fastapi_prediction_update_provider_v1_prediction_update__provider_id__post", - "parameters": [ - { - "in": "path", - "name": "provider_id", - "required": true, - "schema": { - "title": "Provider Id", - "type": "string" - } - }, - { - "in": "query", - "name": "force_update", - "required": false, - "schema": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "title": "Force Update" - } - }, - { - "in": "query", - "name": "force_enable", - "required": false, - "schema": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": false, - "title": "Force Enable" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": {} - } - }, - "description": "Successful Response" - }, - "422": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - }, - "description": "Validation Error" - } - }, - "summary": "Fastapi Prediction Update Provider" - } - }, - "/visualization_results.pdf": { - "get": { - "operationId": "get_pdf_visualization_results_pdf_get", - "responses": { - "200": { - "content": { - "application/pdf": { - "schema": { - "type": "string" - } - } - }, - "description": "Successful Response" - } - }, - "summary": "Get Pdf" + "/v1/config/update": { + "post": { + "summary": "Fastapi Config Update Post", + "description": "Update the configuration from the EOS configuration file.\n\nReturns:\n configuration (ConfigEOS): The current configuration after update.", + "operationId": "fastapi_config_update_post_v1_config_update_post", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigEOS" + } + } } + } } + } + }, + "/v1/config/file": { + "get": { + "summary": "Fastapi Config File Get", + "description": "Get the settings as defined by the EOS configuration file.\n\nReturns:\n settings (SettingsEOS): The settings defined by the EOS configuration file.", + "operationId": "fastapi_config_file_get_v1_config_file_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SettingsEOS" + } + } + } + } + } + }, + "put": { + "summary": "Fastapi Config File Put", + "description": "Save the current configuration to the EOS configuration file.\n\nReturns:\n configuration (ConfigEOS): The current configuration that was saved.", + "operationId": "fastapi_config_file_put_v1_config_file_put", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigEOS" + } + } + } + } + } + } + }, + "/v1/config": { + "get": { + "summary": "Fastapi Config Get", + "description": "Get the current configuration.\n\nReturns:\n configuration (ConfigEOS): The current configuration.", + "operationId": "fastapi_config_get_v1_config_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigEOS" + } + } + } + } + } + }, + "put": { + "summary": "Fastapi Config Put", + "description": "Write the provided settings into the current settings.\n\nThe existing settings are completely overwritten. Note that for any setting\nvalue that is None, the configuration will fall back to values from other sources such as\nenvironment variables, the EOS configuration file, or default values.\n\nArgs:\n settings (SettingsEOS): The settings to write into the current settings.\n\nReturns:\n configuration (ConfigEOS): The current configuration after the write.", + "operationId": "fastapi_config_put_v1_config_put", + "parameters": [ + { + "name": "server_fastapi_host", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string", + "format": "ipvanyaddress" + }, + { + "type": "null" + } + ], + "description": "FastAPI server IP address.", + "default": "0.0.0.0", + "title": "Server Fastapi Host" + }, + "description": "FastAPI server IP address." + }, + { + "name": "server_fastapi_port", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "FastAPI server IP port number.", + "default": 8503, + "title": "Server Fastapi Port" + }, + "description": "FastAPI server IP port number." + }, + { + "name": "server_fastapi_verbose", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Enable debug output", + "default": false, + "title": "Server Fastapi Verbose" + }, + "description": "Enable debug output" + }, + { + "name": "server_fastapi_startup_server_fasthtml", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "FastAPI server to startup application FastHTML server.", + "default": true, + "title": "Server Fastapi Startup Server Fasthtml" + }, + "description": "FastAPI server to startup application FastHTML server." + }, + { + "name": "server_fasthtml_host", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string", + "format": "ipvanyaddress" + }, + { + "type": "null" + } + ], + "description": "FastHTML server IP address.", + "default": "0.0.0.0", + "title": "Server Fasthtml Host" + }, + "description": "FastHTML server IP address." + }, + { + "name": "server_fasthtml_port", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "FastHTML server IP port number.", + "default": 8504, + "title": "Server Fasthtml Port" + }, + "description": "FastHTML server IP port number." + }, + { + "name": "weatherimport_file_path", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "format": "path" + }, + { + "type": "null" + } + ], + "description": "Path to the file to import weather data from.", + "title": "Weatherimport File Path" + }, + "description": "Path to the file to import weather data from." + }, + { + "name": "weatherimport_json", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "JSON string, dictionary of weather forecast value lists.", + "title": "Weatherimport Json" + }, + "description": "JSON string, dictionary of weather forecast value lists." + }, + { + "name": "weather_provider", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Weather provider id of provider to be used.", + "title": "Weather Provider" + }, + "description": "Weather provider id of provider to be used." + }, + { + "name": "pvforecastimport_file_path", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "format": "path" + }, + { + "type": "null" + } + ], + "description": "Path to the file to import PV forecast data from.", + "title": "Pvforecastimport File Path" + }, + "description": "Path to the file to import PV forecast data from." + }, + { + "name": "pvforecastimport_json", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "JSON string, dictionary of PV forecast value lists.", + "title": "Pvforecastimport Json" + }, + "description": "JSON string, dictionary of PV forecast value lists." + }, + { + "name": "pvforecast_provider", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "PVForecast provider id of provider to be used.", + "title": "Pvforecast Provider" + }, + "description": "PVForecast provider id of provider to be used." + }, + { + "name": "pvforecast0_surface_tilt", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", + "title": "Pvforecast0 Surface Tilt" + }, + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking." + }, + { + "name": "pvforecast0_surface_azimuth", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", + "title": "Pvforecast0 Surface Azimuth" + }, + "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270)." + }, + { + "name": "pvforecast0_userhorizon", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "number" + } + }, + { + "type": "null" + } + ], + "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", + "title": "Pvforecast0 Userhorizon" + }, + "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north." + }, + { + "name": "pvforecast0_peakpower", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Nominal power of PV system in kW.", + "title": "Pvforecast0 Peakpower" + }, + "description": "Nominal power of PV system in kW." + }, + { + "name": "pvforecast0_pvtechchoice", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + "default": "crystSi", + "title": "Pvforecast0 Pvtechchoice" + }, + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'." + }, + { + "name": "pvforecast0_mountingplace", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", + "default": "free", + "title": "Pvforecast0 Mountingplace" + }, + "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated." + }, + { + "name": "pvforecast0_loss", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Sum of PV system losses in percent", + "default": 14.0, + "title": "Pvforecast0 Loss" + }, + "description": "Sum of PV system losses in percent" + }, + { + "name": "pvforecast0_trackingtype", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", + "title": "Pvforecast0 Trackingtype" + }, + "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south." + }, + { + "name": "pvforecast0_optimal_surface_tilt", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", + "default": false, + "title": "Pvforecast0 Optimal Surface Tilt" + }, + "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking." + }, + { + "name": "pvforecast0_optimalangles", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", + "default": false, + "title": "Pvforecast0 Optimalangles" + }, + "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking." + }, + { + "name": "pvforecast0_albedo", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Proportion of the light hitting the ground that it reflects back.", + "title": "Pvforecast0 Albedo" + }, + "description": "Proportion of the light hitting the ground that it reflects back." + }, + { + "name": "pvforecast0_module_model", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the PV modules of this plane.", + "title": "Pvforecast0 Module Model" + }, + "description": "Model of the PV modules of this plane." + }, + { + "name": "pvforecast0_inverter_model", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the inverter of this plane.", + "title": "Pvforecast0 Inverter Model" + }, + "description": "Model of the inverter of this plane." + }, + { + "name": "pvforecast0_inverter_paco", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "AC power rating of the inverter. [W]", + "title": "Pvforecast0 Inverter Paco" + }, + "description": "AC power rating of the inverter. [W]" + }, + { + "name": "pvforecast0_modules_per_string", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Number of the PV modules of the strings of this plane.", + "title": "Pvforecast0 Modules Per String" + }, + "description": "Number of the PV modules of the strings of this plane." + }, + { + "name": "pvforecast0_strings_per_inverter", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Number of the strings of the inverter of this plane.", + "title": "Pvforecast0 Strings Per Inverter" + }, + "description": "Number of the strings of the inverter of this plane." + }, + { + "name": "pvforecast1_surface_tilt", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", + "title": "Pvforecast1 Surface Tilt" + }, + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking." + }, + { + "name": "pvforecast1_surface_azimuth", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", + "title": "Pvforecast1 Surface Azimuth" + }, + "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270)." + }, + { + "name": "pvforecast1_userhorizon", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "number" + } + }, + { + "type": "null" + } + ], + "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", + "title": "Pvforecast1 Userhorizon" + }, + "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north." + }, + { + "name": "pvforecast1_peakpower", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Nominal power of PV system in kW.", + "title": "Pvforecast1 Peakpower" + }, + "description": "Nominal power of PV system in kW." + }, + { + "name": "pvforecast1_pvtechchoice", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + "default": "crystSi", + "title": "Pvforecast1 Pvtechchoice" + }, + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'." + }, + { + "name": "pvforecast1_mountingplace", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", + "default": "free", + "title": "Pvforecast1 Mountingplace" + }, + "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated." + }, + { + "name": "pvforecast1_loss", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Sum of PV system losses in percent", + "default": 14.0, + "title": "Pvforecast1 Loss" + }, + "description": "Sum of PV system losses in percent" + }, + { + "name": "pvforecast1_trackingtype", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", + "title": "Pvforecast1 Trackingtype" + }, + "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south." + }, + { + "name": "pvforecast1_optimal_surface_tilt", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", + "default": false, + "title": "Pvforecast1 Optimal Surface Tilt" + }, + "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking." + }, + { + "name": "pvforecast1_optimalangles", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", + "default": false, + "title": "Pvforecast1 Optimalangles" + }, + "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking." + }, + { + "name": "pvforecast1_albedo", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Proportion of the light hitting the ground that it reflects back.", + "title": "Pvforecast1 Albedo" + }, + "description": "Proportion of the light hitting the ground that it reflects back." + }, + { + "name": "pvforecast1_module_model", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the PV modules of this plane.", + "title": "Pvforecast1 Module Model" + }, + "description": "Model of the PV modules of this plane." + }, + { + "name": "pvforecast1_inverter_model", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the inverter of this plane.", + "title": "Pvforecast1 Inverter Model" + }, + "description": "Model of the inverter of this plane." + }, + { + "name": "pvforecast1_inverter_paco", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "AC power rating of the inverter. [W]", + "title": "Pvforecast1 Inverter Paco" + }, + "description": "AC power rating of the inverter. [W]" + }, + { + "name": "pvforecast1_modules_per_string", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Number of the PV modules of the strings of this plane.", + "title": "Pvforecast1 Modules Per String" + }, + "description": "Number of the PV modules of the strings of this plane." + }, + { + "name": "pvforecast1_strings_per_inverter", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Number of the strings of the inverter of this plane.", + "title": "Pvforecast1 Strings Per Inverter" + }, + "description": "Number of the strings of the inverter of this plane." + }, + { + "name": "pvforecast2_surface_tilt", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", + "title": "Pvforecast2 Surface Tilt" + }, + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking." + }, + { + "name": "pvforecast2_surface_azimuth", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", + "title": "Pvforecast2 Surface Azimuth" + }, + "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270)." + }, + { + "name": "pvforecast2_userhorizon", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "number" + } + }, + { + "type": "null" + } + ], + "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", + "title": "Pvforecast2 Userhorizon" + }, + "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north." + }, + { + "name": "pvforecast2_peakpower", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Nominal power of PV system in kW.", + "title": "Pvforecast2 Peakpower" + }, + "description": "Nominal power of PV system in kW." + }, + { + "name": "pvforecast2_pvtechchoice", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + "default": "crystSi", + "title": "Pvforecast2 Pvtechchoice" + }, + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'." + }, + { + "name": "pvforecast2_mountingplace", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", + "default": "free", + "title": "Pvforecast2 Mountingplace" + }, + "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated." + }, + { + "name": "pvforecast2_loss", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Sum of PV system losses in percent", + "default": 14.0, + "title": "Pvforecast2 Loss" + }, + "description": "Sum of PV system losses in percent" + }, + { + "name": "pvforecast2_trackingtype", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", + "title": "Pvforecast2 Trackingtype" + }, + "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south." + }, + { + "name": "pvforecast2_optimal_surface_tilt", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", + "default": false, + "title": "Pvforecast2 Optimal Surface Tilt" + }, + "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking." + }, + { + "name": "pvforecast2_optimalangles", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", + "default": false, + "title": "Pvforecast2 Optimalangles" + }, + "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking." + }, + { + "name": "pvforecast2_albedo", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Proportion of the light hitting the ground that it reflects back.", + "title": "Pvforecast2 Albedo" + }, + "description": "Proportion of the light hitting the ground that it reflects back." + }, + { + "name": "pvforecast2_module_model", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the PV modules of this plane.", + "title": "Pvforecast2 Module Model" + }, + "description": "Model of the PV modules of this plane." + }, + { + "name": "pvforecast2_inverter_model", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the inverter of this plane.", + "title": "Pvforecast2 Inverter Model" + }, + "description": "Model of the inverter of this plane." + }, + { + "name": "pvforecast2_inverter_paco", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "AC power rating of the inverter. [W]", + "title": "Pvforecast2 Inverter Paco" + }, + "description": "AC power rating of the inverter. [W]" + }, + { + "name": "pvforecast2_modules_per_string", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Number of the PV modules of the strings of this plane.", + "title": "Pvforecast2 Modules Per String" + }, + "description": "Number of the PV modules of the strings of this plane." + }, + { + "name": "pvforecast2_strings_per_inverter", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Number of the strings of the inverter of this plane.", + "title": "Pvforecast2 Strings Per Inverter" + }, + "description": "Number of the strings of the inverter of this plane." + }, + { + "name": "pvforecast3_surface_tilt", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", + "title": "Pvforecast3 Surface Tilt" + }, + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking." + }, + { + "name": "pvforecast3_surface_azimuth", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", + "title": "Pvforecast3 Surface Azimuth" + }, + "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270)." + }, + { + "name": "pvforecast3_userhorizon", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "number" + } + }, + { + "type": "null" + } + ], + "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", + "title": "Pvforecast3 Userhorizon" + }, + "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north." + }, + { + "name": "pvforecast3_peakpower", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Nominal power of PV system in kW.", + "title": "Pvforecast3 Peakpower" + }, + "description": "Nominal power of PV system in kW." + }, + { + "name": "pvforecast3_pvtechchoice", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + "default": "crystSi", + "title": "Pvforecast3 Pvtechchoice" + }, + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'." + }, + { + "name": "pvforecast3_mountingplace", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", + "default": "free", + "title": "Pvforecast3 Mountingplace" + }, + "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated." + }, + { + "name": "pvforecast3_loss", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Sum of PV system losses in percent", + "default": 14.0, + "title": "Pvforecast3 Loss" + }, + "description": "Sum of PV system losses in percent" + }, + { + "name": "pvforecast3_trackingtype", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", + "title": "Pvforecast3 Trackingtype" + }, + "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south." + }, + { + "name": "pvforecast3_optimal_surface_tilt", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", + "default": false, + "title": "Pvforecast3 Optimal Surface Tilt" + }, + "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking." + }, + { + "name": "pvforecast3_optimalangles", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", + "default": false, + "title": "Pvforecast3 Optimalangles" + }, + "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking." + }, + { + "name": "pvforecast3_albedo", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Proportion of the light hitting the ground that it reflects back.", + "title": "Pvforecast3 Albedo" + }, + "description": "Proportion of the light hitting the ground that it reflects back." + }, + { + "name": "pvforecast3_module_model", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the PV modules of this plane.", + "title": "Pvforecast3 Module Model" + }, + "description": "Model of the PV modules of this plane." + }, + { + "name": "pvforecast3_inverter_model", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the inverter of this plane.", + "title": "Pvforecast3 Inverter Model" + }, + "description": "Model of the inverter of this plane." + }, + { + "name": "pvforecast3_inverter_paco", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "AC power rating of the inverter. [W]", + "title": "Pvforecast3 Inverter Paco" + }, + "description": "AC power rating of the inverter. [W]" + }, + { + "name": "pvforecast3_modules_per_string", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Number of the PV modules of the strings of this plane.", + "title": "Pvforecast3 Modules Per String" + }, + "description": "Number of the PV modules of the strings of this plane." + }, + { + "name": "pvforecast3_strings_per_inverter", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Number of the strings of the inverter of this plane.", + "title": "Pvforecast3 Strings Per Inverter" + }, + "description": "Number of the strings of the inverter of this plane." + }, + { + "name": "pvforecast4_surface_tilt", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", + "title": "Pvforecast4 Surface Tilt" + }, + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking." + }, + { + "name": "pvforecast4_surface_azimuth", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", + "title": "Pvforecast4 Surface Azimuth" + }, + "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270)." + }, + { + "name": "pvforecast4_userhorizon", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "number" + } + }, + { + "type": "null" + } + ], + "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", + "title": "Pvforecast4 Userhorizon" + }, + "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north." + }, + { + "name": "pvforecast4_peakpower", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Nominal power of PV system in kW.", + "title": "Pvforecast4 Peakpower" + }, + "description": "Nominal power of PV system in kW." + }, + { + "name": "pvforecast4_pvtechchoice", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + "default": "crystSi", + "title": "Pvforecast4 Pvtechchoice" + }, + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'." + }, + { + "name": "pvforecast4_mountingplace", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", + "default": "free", + "title": "Pvforecast4 Mountingplace" + }, + "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated." + }, + { + "name": "pvforecast4_loss", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Sum of PV system losses in percent", + "default": 14.0, + "title": "Pvforecast4 Loss" + }, + "description": "Sum of PV system losses in percent" + }, + { + "name": "pvforecast4_trackingtype", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", + "title": "Pvforecast4 Trackingtype" + }, + "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south." + }, + { + "name": "pvforecast4_optimal_surface_tilt", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", + "default": false, + "title": "Pvforecast4 Optimal Surface Tilt" + }, + "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking." + }, + { + "name": "pvforecast4_optimalangles", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", + "default": false, + "title": "Pvforecast4 Optimalangles" + }, + "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking." + }, + { + "name": "pvforecast4_albedo", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Proportion of the light hitting the ground that it reflects back.", + "title": "Pvforecast4 Albedo" + }, + "description": "Proportion of the light hitting the ground that it reflects back." + }, + { + "name": "pvforecast4_module_model", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the PV modules of this plane.", + "title": "Pvforecast4 Module Model" + }, + "description": "Model of the PV modules of this plane." + }, + { + "name": "pvforecast4_inverter_model", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the inverter of this plane.", + "title": "Pvforecast4 Inverter Model" + }, + "description": "Model of the inverter of this plane." + }, + { + "name": "pvforecast4_inverter_paco", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "AC power rating of the inverter. [W]", + "title": "Pvforecast4 Inverter Paco" + }, + "description": "AC power rating of the inverter. [W]" + }, + { + "name": "pvforecast4_modules_per_string", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Number of the PV modules of the strings of this plane.", + "title": "Pvforecast4 Modules Per String" + }, + "description": "Number of the PV modules of the strings of this plane." + }, + { + "name": "pvforecast4_strings_per_inverter", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Number of the strings of the inverter of this plane.", + "title": "Pvforecast4 Strings Per Inverter" + }, + "description": "Number of the strings of the inverter of this plane." + }, + { + "name": "pvforecast5_surface_tilt", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", + "title": "Pvforecast5 Surface Tilt" + }, + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking." + }, + { + "name": "pvforecast5_surface_azimuth", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", + "title": "Pvforecast5 Surface Azimuth" + }, + "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270)." + }, + { + "name": "pvforecast5_userhorizon", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "number" + } + }, + { + "type": "null" + } + ], + "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", + "title": "Pvforecast5 Userhorizon" + }, + "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north." + }, + { + "name": "pvforecast5_peakpower", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Nominal power of PV system in kW.", + "title": "Pvforecast5 Peakpower" + }, + "description": "Nominal power of PV system in kW." + }, + { + "name": "pvforecast5_pvtechchoice", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + "default": "crystSi", + "title": "Pvforecast5 Pvtechchoice" + }, + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'." + }, + { + "name": "pvforecast5_mountingplace", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", + "default": "free", + "title": "Pvforecast5 Mountingplace" + }, + "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated." + }, + { + "name": "pvforecast5_loss", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Sum of PV system losses in percent", + "default": 14.0, + "title": "Pvforecast5 Loss" + }, + "description": "Sum of PV system losses in percent" + }, + { + "name": "pvforecast5_trackingtype", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south.", + "title": "Pvforecast5 Trackingtype" + }, + "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south." + }, + { + "name": "pvforecast5_optimal_surface_tilt", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", + "default": false, + "title": "Pvforecast5 Optimal Surface Tilt" + }, + "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking." + }, + { + "name": "pvforecast5_optimalangles", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", + "default": false, + "title": "Pvforecast5 Optimalangles" + }, + "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking." + }, + { + "name": "pvforecast5_albedo", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Proportion of the light hitting the ground that it reflects back.", + "title": "Pvforecast5 Albedo" + }, + "description": "Proportion of the light hitting the ground that it reflects back." + }, + { + "name": "pvforecast5_module_model", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the PV modules of this plane.", + "title": "Pvforecast5 Module Model" + }, + "description": "Model of the PV modules of this plane." + }, + { + "name": "pvforecast5_inverter_model", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the inverter of this plane.", + "title": "Pvforecast5 Inverter Model" + }, + "description": "Model of the inverter of this plane." + }, + { + "name": "pvforecast5_inverter_paco", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "AC power rating of the inverter. [W]", + "title": "Pvforecast5 Inverter Paco" + }, + "description": "AC power rating of the inverter. [W]" + }, + { + "name": "pvforecast5_modules_per_string", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Number of the PV modules of the strings of this plane.", + "title": "Pvforecast5 Modules Per String" + }, + "description": "Number of the PV modules of the strings of this plane." + }, + { + "name": "pvforecast5_strings_per_inverter", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Number of the strings of the inverter of this plane.", + "title": "Pvforecast5 Strings Per Inverter" + }, + "description": "Number of the strings of the inverter of this plane." + }, + { + "name": "load_import_file_path", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "format": "path" + }, + { + "type": "null" + } + ], + "description": "Path to the file to import load data from.", + "title": "Load Import File Path" + }, + "description": "Path to the file to import load data from." + }, + { + "name": "load_import_json", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "JSON string, dictionary of load forecast value lists.", + "title": "Load Import Json" + }, + "description": "JSON string, dictionary of load forecast value lists." + }, + { + "name": "loadakkudoktor_year_energy", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Yearly energy consumption (kWh).", + "title": "Loadakkudoktor Year Energy" + }, + "description": "Yearly energy consumption (kWh)." + }, + { + "name": "load_provider", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Load provider id of provider to be used.", + "title": "Load Provider" + }, + "description": "Load provider id of provider to be used." + }, + { + "name": "elecpriceimport_file_path", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "format": "path" + }, + { + "type": "null" + } + ], + "description": "Path to the file to import elecprice data from.", + "title": "Elecpriceimport File Path" + }, + "description": "Path to the file to import elecprice data from." + }, + { + "name": "elecpriceimport_json", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "JSON string, dictionary of electricity price forecast value lists.", + "title": "Elecpriceimport Json" + }, + "description": "JSON string, dictionary of electricity price forecast value lists." + }, + { + "name": "elecprice_provider", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Electricity price provider id of provider to be used.", + "title": "Elecprice Provider" + }, + "description": "Electricity price provider id of provider to be used." + }, + { + "name": "elecprice_charges_kwh", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number", + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "description": "Electricity price charges (\u20ac/kWh).", + "title": "Elecprice Charges Kwh" + }, + "description": "Electricity price charges (\u20ac/kWh)." + }, + { + "name": "prediction_hours", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "type": "null" + } + ], + "description": "Number of hours into the future for predictions", + "default": 48, + "title": "Prediction Hours" + }, + "description": "Number of hours into the future for predictions" + }, + { + "name": "prediction_historic_hours", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "type": "null" + } + ], + "description": "Number of hours into the past for historical predictions data", + "default": 48, + "title": "Prediction Historic Hours" + }, + "description": "Number of hours into the past for historical predictions data" + }, + { + "name": "latitude", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number", + "maximum": 90.0, + "minimum": -90.0 + }, + { + "type": "null" + } + ], + "description": "Latitude in decimal degrees, between -90 and 90, north is positive (ISO 19115) (\u00b0)", + "title": "Latitude" + }, + "description": "Latitude in decimal degrees, between -90 and 90, north is positive (ISO 19115) (\u00b0)" + }, + { + "name": "longitude", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number", + "maximum": 180.0, + "minimum": -180.0 + }, + { + "type": "null" + } + ], + "description": "Longitude in decimal degrees, within -180 to 180 (\u00b0)", + "title": "Longitude" + }, + "description": "Longitude in decimal degrees, within -180 to 180 (\u00b0)" + }, + { + "name": "optimization_hours", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "type": "null" + } + ], + "description": "Number of hours into the future for optimizations.", + "default": 24, + "title": "Optimization Hours" + }, + "description": "Number of hours into the future for optimizations." + }, + { + "name": "optimization_penalty", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Penalty factor used in optimization.", + "default": 10, + "title": "Optimization Penalty" + }, + "description": "Penalty factor used in optimization." + }, + { + "name": "optimization_ev_available_charge_rates_percent", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "number" + } + }, + { + "type": "null" + } + ], + "description": "Charge rates available for the EV in percent of maximum charge.", + "default": [ + 0.0, + 0.375, + 0.5, + 0.625, + 0.75, + 0.875, + 1.0 + ], + "title": "Optimization Ev Available Charge Rates Percent" + }, + "description": "Charge rates available for the EV in percent of maximum charge." + }, + { + "name": "measurement_load0_name", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Name of the load0 source (e.g. 'Household', 'Heat Pump')", + "title": "Measurement Load0 Name" + }, + "description": "Name of the load0 source (e.g. 'Household', 'Heat Pump')" + }, + { + "name": "measurement_load1_name", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Name of the load1 source (e.g. 'Household', 'Heat Pump')", + "title": "Measurement Load1 Name" + }, + "description": "Name of the load1 source (e.g. 'Household', 'Heat Pump')" + }, + { + "name": "measurement_load2_name", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Name of the load2 source (e.g. 'Household', 'Heat Pump')", + "title": "Measurement Load2 Name" + }, + "description": "Name of the load2 source (e.g. 'Household', 'Heat Pump')" + }, + { + "name": "measurement_load3_name", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Name of the load3 source (e.g. 'Household', 'Heat Pump')", + "title": "Measurement Load3 Name" + }, + "description": "Name of the load3 source (e.g. 'Household', 'Heat Pump')" + }, + { + "name": "measurement_load4_name", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Name of the load4 source (e.g. 'Household', 'Heat Pump')", + "title": "Measurement Load4 Name" + }, + "description": "Name of the load4 source (e.g. 'Household', 'Heat Pump')" + }, + { + "name": "battery_provider", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Id of Battery simulation provider.", + "title": "Battery Provider" + }, + "description": "Id of Battery simulation provider." + }, + { + "name": "battery_capacity", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Battery capacity [Wh].", + "title": "Battery Capacity" + }, + "description": "Battery capacity [Wh]." + }, + { + "name": "battery_initial_soc", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Battery initial state of charge [%].", + "title": "Battery Initial Soc" + }, + "description": "Battery initial state of charge [%]." + }, + { + "name": "battery_soc_min", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Battery minimum state of charge [%].", + "title": "Battery Soc Min" + }, + "description": "Battery minimum state of charge [%]." + }, + { + "name": "battery_soc_max", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Battery maximum state of charge [%].", + "title": "Battery Soc Max" + }, + "description": "Battery maximum state of charge [%]." + }, + { + "name": "battery_charging_efficiency", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Battery charging efficiency [%].", + "title": "Battery Charging Efficiency" + }, + "description": "Battery charging efficiency [%]." + }, + { + "name": "battery_discharging_efficiency", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Battery discharging efficiency [%].", + "title": "Battery Discharging Efficiency" + }, + "description": "Battery discharging efficiency [%]." + }, + { + "name": "battery_max_charging_power", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Battery maximum charge power [W].", + "title": "Battery Max Charging Power" + }, + "description": "Battery maximum charge power [W]." + }, + { + "name": "bev_provider", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Id of Battery Electric Vehicle simulation provider.", + "title": "Bev Provider" + }, + "description": "Id of Battery Electric Vehicle simulation provider." + }, + { + "name": "bev_capacity", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Battery Electric Vehicle capacity [Wh].", + "title": "Bev Capacity" + }, + "description": "Battery Electric Vehicle capacity [Wh]." + }, + { + "name": "bev_initial_soc", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Battery Electric Vehicle initial state of charge [%].", + "title": "Bev Initial Soc" + }, + "description": "Battery Electric Vehicle initial state of charge [%]." + }, + { + "name": "bev_soc_max", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Battery Electric Vehicle maximum state of charge [%].", + "title": "Bev Soc Max" + }, + "description": "Battery Electric Vehicle maximum state of charge [%]." + }, + { + "name": "bev_charging_efficiency", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Battery Electric Vehicle charging efficiency [%].", + "title": "Bev Charging Efficiency" + }, + "description": "Battery Electric Vehicle charging efficiency [%]." + }, + { + "name": "bev_discharging_efficiency", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Battery Electric Vehicle discharging efficiency [%].", + "title": "Bev Discharging Efficiency" + }, + "description": "Battery Electric Vehicle discharging efficiency [%]." + }, + { + "name": "bev_max_charging_power", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Battery Electric Vehicle maximum charge power [W].", + "title": "Bev Max Charging Power" + }, + "description": "Battery Electric Vehicle maximum charge power [W]." + }, + { + "name": "dishwasher_provider", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Id of Dish Washer simulation provider.", + "title": "Dishwasher Provider" + }, + "description": "Id of Dish Washer simulation provider." + }, + { + "name": "dishwasher_consumption", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Dish Washer energy consumption [Wh].", + "title": "Dishwasher Consumption" + }, + "description": "Dish Washer energy consumption [Wh]." + }, + { + "name": "dishwasher_duration", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Dish Washer usage duration [h].", + "title": "Dishwasher Duration" + }, + "description": "Dish Washer usage duration [h]." + }, + { + "name": "inverter_provider", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Id of PV Inverter simulation provider.", + "title": "Inverter Provider" + }, + "description": "Id of PV Inverter simulation provider." + }, + { + "name": "inverter_power_max", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Inverter maximum power [W].", + "title": "Inverter Power Max" + }, + "description": "Inverter maximum power [W]." + }, + { + "name": "logging_level_default", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "EOS default logging level.", + "title": "Logging Level Default" + }, + "description": "EOS default logging level." + }, + { + "name": "data_folder_path", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string", + "format": "path" + }, + { + "type": "null" + } + ], + "description": "Path to EOS data directory.", + "title": "Data Folder Path" + }, + "description": "Path to EOS data directory." + }, + { + "name": "data_output_subpath", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string", + "format": "path" + }, + { + "type": "null" + } + ], + "description": "Sub-path for the EOS output data directory.", + "default": "output", + "title": "Data Output Subpath" + }, + "description": "Sub-path for the EOS output data directory." + }, + { + "name": "data_cache_subpath", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string", + "format": "path" + }, + { + "type": "null" + } + ], + "description": "Sub-path for the EOS cache data directory.", + "default": "cache", + "title": "Data Cache Subpath" + }, + "description": "Sub-path for the EOS cache data directory." + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigEOS" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v1/measurement/keys": { + "get": { + "summary": "Fastapi Measurement Keys Get", + "description": "Get a list of available measurement keys.", + "operationId": "fastapi_measurement_keys_get_v1_measurement_keys_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Response Fastapi Measurement Keys Get V1 Measurement Keys Get" + } + } + } + } + } + } + }, + "/v1/measurement/load-mr/series/by-name": { + "get": { + "summary": "Fastapi Measurement Load Mr Series By Name Get", + "description": "Get the meter reading of given load name as series.", + "operationId": "fastapi_measurement_load_mr_series_by_name_get_v1_measurement_load_mr_series_by_name_get", + "parameters": [ + { + "name": "name", + "in": "query", + "required": true, + "schema": { + "type": "string", + "description": "Load name.", + "title": "Name" + }, + "description": "Load name." + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PydanticDateTimeSeries" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "put": { + "summary": "Fastapi Measurement Load Mr Series By Name Put", + "description": "Merge the meter readings series of given load name into EOS measurements at given datetime.", + "operationId": "fastapi_measurement_load_mr_series_by_name_put_v1_measurement_load_mr_series_by_name_put", + "parameters": [ + { + "name": "name", + "in": "query", + "required": true, + "schema": { + "type": "string", + "description": "Load name.", + "title": "Name" + }, + "description": "Load name." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PydanticDateTimeSeries" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PydanticDateTimeSeries" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v1/measurement/load-mr/value/by-name": { + "put": { + "summary": "Fastapi Measurement Load Mr Value By Name Put", + "description": "Merge the meter reading of given load name and value into EOS measurements at given datetime.", + "operationId": "fastapi_measurement_load_mr_value_by_name_put_v1_measurement_load_mr_value_by_name_put", + "parameters": [ + { + "name": "datetime", + "in": "query", + "required": true, + "schema": { + "type": "string", + "description": "Datetime.", + "title": "Datetime" + }, + "description": "Datetime." + }, + { + "name": "name", + "in": "query", + "required": true, + "schema": { + "type": "string", + "description": "Load name.", + "title": "Name" + }, + "description": "Load name." + }, + { + "name": "value", + "in": "query", + "required": true, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "title": "Value" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PydanticDateTimeSeries" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v1/measurement/series": { + "get": { + "summary": "Fastapi Measurement Series Get", + "description": "Get the measurements of given key as series.", + "operationId": "fastapi_measurement_series_get_v1_measurement_series_get", + "parameters": [ + { + "name": "key", + "in": "query", + "required": true, + "schema": { + "type": "string", + "description": "Prediction key.", + "title": "Key" + }, + "description": "Prediction key." + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PydanticDateTimeSeries" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "put": { + "summary": "Fastapi Measurement Series Put", + "description": "Merge measurement given as series into given key.", + "operationId": "fastapi_measurement_series_put_v1_measurement_series_put", + "parameters": [ + { + "name": "key", + "in": "query", + "required": true, + "schema": { + "type": "string", + "description": "Prediction key.", + "title": "Key" + }, + "description": "Prediction key." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PydanticDateTimeSeries" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PydanticDateTimeSeries" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v1/measurement/value": { + "put": { + "summary": "Fastapi Measurement Value Put", + "description": "Merge the measurement of given key and value into EOS measurements at given datetime.", + "operationId": "fastapi_measurement_value_put_v1_measurement_value_put", + "parameters": [ + { + "name": "datetime", + "in": "query", + "required": true, + "schema": { + "type": "string", + "description": "Datetime.", + "title": "Datetime" + }, + "description": "Datetime." + }, + { + "name": "key", + "in": "query", + "required": true, + "schema": { + "type": "string", + "description": "Prediction key.", + "title": "Key" + }, + "description": "Prediction key." + }, + { + "name": "value", + "in": "query", + "required": true, + "schema": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ], + "title": "Value" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PydanticDateTimeSeries" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v1/measurement/dataframe": { + "put": { + "summary": "Fastapi Measurement Dataframe Put", + "description": "Merge the measurement data given as dataframe into EOS measurements.", + "operationId": "fastapi_measurement_dataframe_put_v1_measurement_dataframe_put", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PydanticDateTimeDataFrame" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v1/measurement/data": { + "put": { + "summary": "Fastapi Measurement Data Put", + "description": "Merge the measurement data given as datetime data into EOS measurements.", + "operationId": "fastapi_measurement_data_put_v1_measurement_data_put", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PydanticDateTimeData" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v1/prediction/keys": { + "get": { + "summary": "Fastapi Prediction Keys Get", + "description": "Get a list of available prediction keys.", + "operationId": "fastapi_prediction_keys_get_v1_prediction_keys_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Response Fastapi Prediction Keys Get V1 Prediction Keys Get" + } + } + } + } + } + } + }, + "/v1/prediction/series": { + "get": { + "summary": "Fastapi Prediction Series Get", + "description": "Get prediction for given key within given date range as series.\n\nArgs:\n key (str): Prediction key\n start_datetime (Optional[str]): Starting datetime (inclusive).\n Defaults to start datetime of latest prediction.\n end_datetime (Optional[str]: Ending datetime (exclusive).\n Defaults to end datetime of latest prediction.", + "operationId": "fastapi_prediction_series_get_v1_prediction_series_get", + "parameters": [ + { + "name": "key", + "in": "query", + "required": true, + "schema": { + "type": "string", + "description": "Prediction key.", + "title": "Key" + }, + "description": "Prediction key." + }, + { + "name": "start_datetime", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Starting datetime (inclusive).", + "title": "Start Datetime" + }, + "description": "Starting datetime (inclusive)." + }, + { + "name": "end_datetime", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Ending datetime (exclusive).", + "title": "End Datetime" + }, + "description": "Ending datetime (exclusive)." + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PydanticDateTimeSeries" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v1/prediction/list": { + "get": { + "summary": "Fastapi Prediction List Get", + "description": "Get prediction for given key within given date range as value list.\n\nArgs:\n key (str): Prediction key\n start_datetime (Optional[str]): Starting datetime (inclusive).\n Defaults to start datetime of latest prediction.\n end_datetime (Optional[str]: Ending datetime (exclusive).\n Defaults to end datetime of latest prediction.\n interval (Optional[str]): Time duration for each interval.\n Defaults to 1 hour.", + "operationId": "fastapi_prediction_list_get_v1_prediction_list_get", + "parameters": [ + { + "name": "key", + "in": "query", + "required": true, + "schema": { + "type": "string", + "description": "Prediction key.", + "title": "Key" + }, + "description": "Prediction key." + }, + { + "name": "start_datetime", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Starting datetime (inclusive).", + "title": "Start Datetime" + }, + "description": "Starting datetime (inclusive)." + }, + { + "name": "end_datetime", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Ending datetime (exclusive).", + "title": "End Datetime" + }, + "description": "Ending datetime (exclusive)." + }, + { + "name": "interval", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Time duration for each interval.", + "title": "Interval" + }, + "description": "Time duration for each interval." + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": {}, + "title": "Response Fastapi Prediction List Get V1 Prediction List Get" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v1/prediction/update": { + "post": { + "summary": "Fastapi Prediction Update", + "description": "Update predictions for all providers.\n\nArgs:\n force_update: Update data even if it is already cached.\n Defaults to False.\n force_enable: Update data even if provider is disabled.\n Defaults to False.", + "operationId": "fastapi_prediction_update_v1_prediction_update_post", + "parameters": [ + { + "name": "force_update", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "default": false, + "title": "Force Update" + } + }, + { + "name": "force_enable", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "default": false, + "title": "Force Enable" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v1/prediction/update/{provider_id}": { + "post": { + "summary": "Fastapi Prediction Update Provider", + "description": "Update predictions for given provider ID.\n\nArgs:\n provider_id: ID of provider to update.\n force_update: Update data even if it is already cached.\n Defaults to False.\n force_enable: Update data even if provider is disabled.\n Defaults to False.", + "operationId": "fastapi_prediction_update_provider_v1_prediction_update__provider_id__post", + "parameters": [ + { + "name": "provider_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Provider Id" + } + }, + { + "name": "force_update", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": false, + "title": "Force Update" + } + }, + { + "name": "force_enable", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": false, + "title": "Force Enable" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/strompreis": { + "get": { + "summary": "Fastapi Strompreis", + "description": "Deprecated: Electricity Market Price Prediction per Wh (\u20ac/Wh).\n\nElectricity prices start at 00.00.00 today and are provided for 48 hours.\nIf no prices are available the missing ones at the start of the series are\nfilled with the first available price.\n\nNote:\n Electricity price charges are added.\n\nNote:\n Set ElecPriceAkkudoktor as elecprice_provider, then update data with\n '/v1/prediction/update'\n and then request data with\n '/v1/prediction/list?key=elecprice_marketprice_wh' or\n '/v1/prediction/list?key=elecprice_marketprice_kwh' instead.", + "operationId": "fastapi_strompreis_strompreis_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "items": { + "type": "number" + }, + "type": "array", + "title": "Response Fastapi Strompreis Strompreis Get" + } + } + } + } + } + } + }, + "/gesamtlast": { + "post": { + "summary": "Fastapi Gesamtlast", + "description": "Deprecated: Total Load Prediction with adjustment.\n\nEndpoint to handle total load prediction adjusted by latest measured data.\n\nTotal load prediction starts at 00.00.00 today and is provided for 48 hours.\nIf no prediction values are available the missing ones at the start of the series are\nfilled with the first available prediction value.\n\nNote:\n Use '/v1/prediction/list?key=load_mean_adjusted' instead.\n Load energy meter readings to be added to EOS measurement by:\n '/v1/measurement/load-mr/value/by-name' or\n '/v1/measurement/value'", + "operationId": "fastapi_gesamtlast_gesamtlast_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GesamtlastRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "items": { + "type": "number" + }, + "type": "array", + "title": "Response Fastapi Gesamtlast Gesamtlast Post" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/gesamtlast_simple": { + "get": { + "summary": "Fastapi Gesamtlast Simple", + "description": "Deprecated: Total Load Prediction.\n\nEndpoint to handle total load prediction.\n\nTotal load prediction starts at 00.00.00 today and is provided for 48 hours.\nIf no prediction values are available the missing ones at the start of the series are\nfilled with the first available prediction value.\n\nNote:\n Set LoadAkkudoktor as load_provider, then update data with\n '/v1/prediction/update'\n and then request data with\n '/v1/prediction/list?key=load_mean' instead.", + "operationId": "fastapi_gesamtlast_simple_gesamtlast_simple_get", + "parameters": [ + { + "name": "year_energy", + "in": "query", + "required": true, + "schema": { + "type": "number", + "title": "Year Energy" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "number" + }, + "title": "Response Fastapi Gesamtlast Simple Gesamtlast Simple Get" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/pvforecast": { + "get": { + "summary": "Fastapi Pvforecast", + "description": "Deprecated: PV Forecast Prediction.\n\nEndpoint to handle PV forecast prediction.\n\nPVForecast starts at 00.00.00 today and is provided for 48 hours.\nIf no forecast values are available the missing ones at the start of the series are\nfilled with the first available forecast value.\n\nNote:\n Set PVForecastAkkudoktor as pvforecast_provider, then update data with\n '/v1/prediction/update'\n and then request data with\n '/v1/prediction/list?key=pvforecast_ac_power' and\n '/v1/prediction/list?key=pvforecastakkudoktor_temp_air' instead.", + "operationId": "fastapi_pvforecast_pvforecast_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForecastResponse" + } + } + } + } + } + } + }, + "/optimize": { + "post": { + "summary": "Fastapi Optimize", + "operationId": "fastapi_optimize_optimize_post", + "parameters": [ + { + "name": "start_hour", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Defaults to current hour of the day.", + "title": "Start Hour" + }, + "description": "Defaults to current hour of the day." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OptimizationParameters" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OptimizeResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/visualization_results.pdf": { + "get": { + "summary": "Get Pdf", + "operationId": "get_pdf_visualization_results_pdf_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/pdf": { + "schema": { + "type": "string" + } + } + } + } + } + } } + }, + "components": { + "schemas": { + "ConfigEOS": { + "properties": { + "server_fastapi_host": { + "anyOf": [ + { + "type": "string", + "format": "ipvanyaddress" + }, + { + "type": "null" + } + ], + "title": "Server Fastapi Host", + "description": "FastAPI server IP address.", + "default": "0.0.0.0" + }, + "server_fastapi_port": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Server Fastapi Port", + "description": "FastAPI server IP port number.", + "default": 8503 + }, + "server_fastapi_verbose": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Server Fastapi Verbose", + "description": "Enable debug output", + "default": false + }, + "server_fastapi_startup_server_fasthtml": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Server Fastapi Startup Server Fasthtml", + "description": "FastAPI server to startup application FastHTML server.", + "default": true + }, + "server_fasthtml_host": { + "anyOf": [ + { + "type": "string", + "format": "ipvanyaddress" + }, + { + "type": "null" + } + ], + "title": "Server Fasthtml Host", + "description": "FastHTML server IP address.", + "default": "0.0.0.0" + }, + "server_fasthtml_port": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Server Fasthtml Port", + "description": "FastHTML server IP port number.", + "default": 8504 + }, + "weatherimport_file_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "format": "path" + }, + { + "type": "null" + } + ], + "title": "Weatherimport File Path", + "description": "Path to the file to import weather data from." + }, + "weatherimport_json": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Weatherimport Json", + "description": "JSON string, dictionary of weather forecast value lists." + }, + "weather_provider": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Weather Provider", + "description": "Weather provider id of provider to be used." + }, + "pvforecastimport_file_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "format": "path" + }, + { + "type": "null" + } + ], + "title": "Pvforecastimport File Path", + "description": "Path to the file to import PV forecast data from." + }, + "pvforecastimport_json": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecastimport Json", + "description": "JSON string, dictionary of PV forecast value lists." + }, + "pvforecast_provider": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast Provider", + "description": "PVForecast provider id of provider to be used." + }, + "pvforecast0_surface_tilt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Surface Tilt", + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking." + }, + "pvforecast0_surface_azimuth": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Surface Azimuth", + "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270)." + }, + "pvforecast0_userhorizon": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Userhorizon", + "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north." + }, + "pvforecast0_peakpower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Peakpower", + "description": "Nominal power of PV system in kW." + }, + "pvforecast0_pvtechchoice": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Pvtechchoice", + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + "default": "crystSi" + }, + "pvforecast0_mountingplace": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Mountingplace", + "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", + "default": "free" + }, + "pvforecast0_loss": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Loss", + "description": "Sum of PV system losses in percent", + "default": 14.0 + }, + "pvforecast0_trackingtype": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Trackingtype", + "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south." + }, + "pvforecast0_optimal_surface_tilt": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Optimal Surface Tilt", + "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", + "default": false + }, + "pvforecast0_optimalangles": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Optimalangles", + "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", + "default": false + }, + "pvforecast0_albedo": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Albedo", + "description": "Proportion of the light hitting the ground that it reflects back." + }, + "pvforecast0_module_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Module Model", + "description": "Model of the PV modules of this plane." + }, + "pvforecast0_inverter_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Inverter Model", + "description": "Model of the inverter of this plane." + }, + "pvforecast0_inverter_paco": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Inverter Paco", + "description": "AC power rating of the inverter. [W]" + }, + "pvforecast0_modules_per_string": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Modules Per String", + "description": "Number of the PV modules of the strings of this plane." + }, + "pvforecast0_strings_per_inverter": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Strings Per Inverter", + "description": "Number of the strings of the inverter of this plane." + }, + "pvforecast1_surface_tilt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Surface Tilt", + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking." + }, + "pvforecast1_surface_azimuth": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Surface Azimuth", + "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270)." + }, + "pvforecast1_userhorizon": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Userhorizon", + "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north." + }, + "pvforecast1_peakpower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Peakpower", + "description": "Nominal power of PV system in kW." + }, + "pvforecast1_pvtechchoice": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Pvtechchoice", + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + "default": "crystSi" + }, + "pvforecast1_mountingplace": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Mountingplace", + "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", + "default": "free" + }, + "pvforecast1_loss": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Loss", + "description": "Sum of PV system losses in percent", + "default": 14.0 + }, + "pvforecast1_trackingtype": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Trackingtype", + "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south." + }, + "pvforecast1_optimal_surface_tilt": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Optimal Surface Tilt", + "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", + "default": false + }, + "pvforecast1_optimalangles": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Optimalangles", + "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", + "default": false + }, + "pvforecast1_albedo": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Albedo", + "description": "Proportion of the light hitting the ground that it reflects back." + }, + "pvforecast1_module_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Module Model", + "description": "Model of the PV modules of this plane." + }, + "pvforecast1_inverter_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Inverter Model", + "description": "Model of the inverter of this plane." + }, + "pvforecast1_inverter_paco": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Inverter Paco", + "description": "AC power rating of the inverter. [W]" + }, + "pvforecast1_modules_per_string": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Modules Per String", + "description": "Number of the PV modules of the strings of this plane." + }, + "pvforecast1_strings_per_inverter": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Strings Per Inverter", + "description": "Number of the strings of the inverter of this plane." + }, + "pvforecast2_surface_tilt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Surface Tilt", + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking." + }, + "pvforecast2_surface_azimuth": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Surface Azimuth", + "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270)." + }, + "pvforecast2_userhorizon": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Userhorizon", + "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north." + }, + "pvforecast2_peakpower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Peakpower", + "description": "Nominal power of PV system in kW." + }, + "pvforecast2_pvtechchoice": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Pvtechchoice", + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + "default": "crystSi" + }, + "pvforecast2_mountingplace": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Mountingplace", + "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", + "default": "free" + }, + "pvforecast2_loss": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Loss", + "description": "Sum of PV system losses in percent", + "default": 14.0 + }, + "pvforecast2_trackingtype": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Trackingtype", + "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south." + }, + "pvforecast2_optimal_surface_tilt": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Optimal Surface Tilt", + "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", + "default": false + }, + "pvforecast2_optimalangles": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Optimalangles", + "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", + "default": false + }, + "pvforecast2_albedo": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Albedo", + "description": "Proportion of the light hitting the ground that it reflects back." + }, + "pvforecast2_module_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Module Model", + "description": "Model of the PV modules of this plane." + }, + "pvforecast2_inverter_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Inverter Model", + "description": "Model of the inverter of this plane." + }, + "pvforecast2_inverter_paco": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Inverter Paco", + "description": "AC power rating of the inverter. [W]" + }, + "pvforecast2_modules_per_string": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Modules Per String", + "description": "Number of the PV modules of the strings of this plane." + }, + "pvforecast2_strings_per_inverter": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Strings Per Inverter", + "description": "Number of the strings of the inverter of this plane." + }, + "pvforecast3_surface_tilt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Surface Tilt", + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking." + }, + "pvforecast3_surface_azimuth": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Surface Azimuth", + "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270)." + }, + "pvforecast3_userhorizon": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Userhorizon", + "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north." + }, + "pvforecast3_peakpower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Peakpower", + "description": "Nominal power of PV system in kW." + }, + "pvforecast3_pvtechchoice": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Pvtechchoice", + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + "default": "crystSi" + }, + "pvforecast3_mountingplace": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Mountingplace", + "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", + "default": "free" + }, + "pvforecast3_loss": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Loss", + "description": "Sum of PV system losses in percent", + "default": 14.0 + }, + "pvforecast3_trackingtype": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Trackingtype", + "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south." + }, + "pvforecast3_optimal_surface_tilt": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Optimal Surface Tilt", + "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", + "default": false + }, + "pvforecast3_optimalangles": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Optimalangles", + "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", + "default": false + }, + "pvforecast3_albedo": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Albedo", + "description": "Proportion of the light hitting the ground that it reflects back." + }, + "pvforecast3_module_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Module Model", + "description": "Model of the PV modules of this plane." + }, + "pvforecast3_inverter_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Inverter Model", + "description": "Model of the inverter of this plane." + }, + "pvforecast3_inverter_paco": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Inverter Paco", + "description": "AC power rating of the inverter. [W]" + }, + "pvforecast3_modules_per_string": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Modules Per String", + "description": "Number of the PV modules of the strings of this plane." + }, + "pvforecast3_strings_per_inverter": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Strings Per Inverter", + "description": "Number of the strings of the inverter of this plane." + }, + "pvforecast4_surface_tilt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Surface Tilt", + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking." + }, + "pvforecast4_surface_azimuth": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Surface Azimuth", + "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270)." + }, + "pvforecast4_userhorizon": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Userhorizon", + "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north." + }, + "pvforecast4_peakpower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Peakpower", + "description": "Nominal power of PV system in kW." + }, + "pvforecast4_pvtechchoice": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Pvtechchoice", + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + "default": "crystSi" + }, + "pvforecast4_mountingplace": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Mountingplace", + "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", + "default": "free" + }, + "pvforecast4_loss": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Loss", + "description": "Sum of PV system losses in percent", + "default": 14.0 + }, + "pvforecast4_trackingtype": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Trackingtype", + "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south." + }, + "pvforecast4_optimal_surface_tilt": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Optimal Surface Tilt", + "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", + "default": false + }, + "pvforecast4_optimalangles": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Optimalangles", + "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", + "default": false + }, + "pvforecast4_albedo": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Albedo", + "description": "Proportion of the light hitting the ground that it reflects back." + }, + "pvforecast4_module_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Module Model", + "description": "Model of the PV modules of this plane." + }, + "pvforecast4_inverter_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Inverter Model", + "description": "Model of the inverter of this plane." + }, + "pvforecast4_inverter_paco": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Inverter Paco", + "description": "AC power rating of the inverter. [W]" + }, + "pvforecast4_modules_per_string": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Modules Per String", + "description": "Number of the PV modules of the strings of this plane." + }, + "pvforecast4_strings_per_inverter": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Strings Per Inverter", + "description": "Number of the strings of the inverter of this plane." + }, + "pvforecast5_surface_tilt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Surface Tilt", + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking." + }, + "pvforecast5_surface_azimuth": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Surface Azimuth", + "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270)." + }, + "pvforecast5_userhorizon": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Userhorizon", + "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north." + }, + "pvforecast5_peakpower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Peakpower", + "description": "Nominal power of PV system in kW." + }, + "pvforecast5_pvtechchoice": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Pvtechchoice", + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + "default": "crystSi" + }, + "pvforecast5_mountingplace": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Mountingplace", + "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", + "default": "free" + }, + "pvforecast5_loss": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Loss", + "description": "Sum of PV system losses in percent", + "default": 14.0 + }, + "pvforecast5_trackingtype": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Trackingtype", + "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south." + }, + "pvforecast5_optimal_surface_tilt": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Optimal Surface Tilt", + "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", + "default": false + }, + "pvforecast5_optimalangles": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Optimalangles", + "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", + "default": false + }, + "pvforecast5_albedo": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Albedo", + "description": "Proportion of the light hitting the ground that it reflects back." + }, + "pvforecast5_module_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Module Model", + "description": "Model of the PV modules of this plane." + }, + "pvforecast5_inverter_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Inverter Model", + "description": "Model of the inverter of this plane." + }, + "pvforecast5_inverter_paco": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Inverter Paco", + "description": "AC power rating of the inverter. [W]" + }, + "pvforecast5_modules_per_string": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Modules Per String", + "description": "Number of the PV modules of the strings of this plane." + }, + "pvforecast5_strings_per_inverter": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Strings Per Inverter", + "description": "Number of the strings of the inverter of this plane." + }, + "load_import_file_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "format": "path" + }, + { + "type": "null" + } + ], + "title": "Load Import File Path", + "description": "Path to the file to import load data from." + }, + "load_import_json": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Load Import Json", + "description": "JSON string, dictionary of load forecast value lists." + }, + "loadakkudoktor_year_energy": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Loadakkudoktor Year Energy", + "description": "Yearly energy consumption (kWh)." + }, + "load_provider": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Load Provider", + "description": "Load provider id of provider to be used." + }, + "elecpriceimport_file_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "format": "path" + }, + { + "type": "null" + } + ], + "title": "Elecpriceimport File Path", + "description": "Path to the file to import elecprice data from." + }, + "elecpriceimport_json": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Elecpriceimport Json", + "description": "JSON string, dictionary of electricity price forecast value lists." + }, + "elecprice_provider": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Elecprice Provider", + "description": "Electricity price provider id of provider to be used." + }, + "elecprice_charges_kwh": { + "anyOf": [ + { + "type": "number", + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Elecprice Charges Kwh", + "description": "Electricity price charges (\u20ac/kWh)." + }, + "prediction_hours": { + "anyOf": [ + { + "type": "integer", + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Prediction Hours", + "description": "Number of hours into the future for predictions", + "default": 48 + }, + "prediction_historic_hours": { + "anyOf": [ + { + "type": "integer", + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Prediction Historic Hours", + "description": "Number of hours into the past for historical predictions data", + "default": 48 + }, + "latitude": { + "anyOf": [ + { + "type": "number", + "maximum": 90.0, + "minimum": -90.0 + }, + { + "type": "null" + } + ], + "title": "Latitude", + "description": "Latitude in decimal degrees, between -90 and 90, north is positive (ISO 19115) (\u00b0)" + }, + "longitude": { + "anyOf": [ + { + "type": "number", + "maximum": 180.0, + "minimum": -180.0 + }, + { + "type": "null" + } + ], + "title": "Longitude", + "description": "Longitude in decimal degrees, within -180 to 180 (\u00b0)" + }, + "optimization_hours": { + "anyOf": [ + { + "type": "integer", + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Optimization Hours", + "description": "Number of hours into the future for optimizations.", + "default": 24 + }, + "optimization_penalty": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Optimization Penalty", + "description": "Penalty factor used in optimization.", + "default": 10 + }, + "optimization_ev_available_charge_rates_percent": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Optimization Ev Available Charge Rates Percent", + "description": "Charge rates available for the EV in percent of maximum charge.", + "default": [ + 0.0, + 0.375, + 0.5, + 0.625, + 0.75, + 0.875, + 1.0 + ] + }, + "measurement_load0_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Measurement Load0 Name", + "description": "Name of the load0 source (e.g. 'Household', 'Heat Pump')" + }, + "measurement_load1_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Measurement Load1 Name", + "description": "Name of the load1 source (e.g. 'Household', 'Heat Pump')" + }, + "measurement_load2_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Measurement Load2 Name", + "description": "Name of the load2 source (e.g. 'Household', 'Heat Pump')" + }, + "measurement_load3_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Measurement Load3 Name", + "description": "Name of the load3 source (e.g. 'Household', 'Heat Pump')" + }, + "measurement_load4_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Measurement Load4 Name", + "description": "Name of the load4 source (e.g. 'Household', 'Heat Pump')" + }, + "battery_provider": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Battery Provider", + "description": "Id of Battery simulation provider." + }, + "battery_capacity": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Battery Capacity", + "description": "Battery capacity [Wh]." + }, + "battery_initial_soc": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Battery Initial Soc", + "description": "Battery initial state of charge [%]." + }, + "battery_soc_min": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Battery Soc Min", + "description": "Battery minimum state of charge [%]." + }, + "battery_soc_max": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Battery Soc Max", + "description": "Battery maximum state of charge [%]." + }, + "battery_charging_efficiency": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Battery Charging Efficiency", + "description": "Battery charging efficiency [%]." + }, + "battery_discharging_efficiency": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Battery Discharging Efficiency", + "description": "Battery discharging efficiency [%]." + }, + "battery_max_charging_power": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Battery Max Charging Power", + "description": "Battery maximum charge power [W]." + }, + "bev_provider": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Bev Provider", + "description": "Id of Battery Electric Vehicle simulation provider." + }, + "bev_capacity": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Bev Capacity", + "description": "Battery Electric Vehicle capacity [Wh]." + }, + "bev_initial_soc": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Bev Initial Soc", + "description": "Battery Electric Vehicle initial state of charge [%]." + }, + "bev_soc_max": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Bev Soc Max", + "description": "Battery Electric Vehicle maximum state of charge [%]." + }, + "bev_charging_efficiency": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Bev Charging Efficiency", + "description": "Battery Electric Vehicle charging efficiency [%]." + }, + "bev_discharging_efficiency": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Bev Discharging Efficiency", + "description": "Battery Electric Vehicle discharging efficiency [%]." + }, + "bev_max_charging_power": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Bev Max Charging Power", + "description": "Battery Electric Vehicle maximum charge power [W]." + }, + "dishwasher_provider": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Dishwasher Provider", + "description": "Id of Dish Washer simulation provider." + }, + "dishwasher_consumption": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Dishwasher Consumption", + "description": "Dish Washer energy consumption [Wh]." + }, + "dishwasher_duration": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Dishwasher Duration", + "description": "Dish Washer usage duration [h]." + }, + "inverter_provider": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Inverter Provider", + "description": "Id of PV Inverter simulation provider." + }, + "inverter_power_max": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Inverter Power Max", + "description": "Inverter maximum power [W]." + }, + "logging_level_default": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Logging Level Default", + "description": "EOS default logging level." + }, + "data_folder_path": { + "anyOf": [ + { + "type": "string", + "format": "path" + }, + { + "type": "null" + } + ], + "title": "Data Folder Path", + "description": "Path to EOS data directory." + }, + "data_output_subpath": { + "anyOf": [ + { + "type": "string", + "format": "path" + }, + { + "type": "null" + } + ], + "title": "Data Output Subpath", + "description": "Sub-path for the EOS output data directory.", + "default": "output" + }, + "data_cache_subpath": { + "anyOf": [ + { + "type": "string", + "format": "path" + }, + { + "type": "null" + } + ], + "title": "Data Cache Subpath", + "description": "Sub-path for the EOS cache data directory.", + "default": "cache" + }, + "pvforecast_planes": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Pvforecast Planes", + "description": "Compute a list of active planes.", + "readOnly": true + }, + "pvforecast_planes_peakpower": { + "items": { + "type": "number" + }, + "type": "array", + "title": "Pvforecast Planes Peakpower", + "description": "Compute a list of the peak power per active planes.", + "readOnly": true + }, + "pvforecast_planes_azimuth": { + "items": { + "type": "number" + }, + "type": "array", + "title": "Pvforecast Planes Azimuth", + "description": "Compute a list of the azimuths per active planes.", + "readOnly": true + }, + "pvforecast_planes_tilt": { + "items": { + "type": "number" + }, + "type": "array", + "title": "Pvforecast Planes Tilt", + "description": "Compute a list of the tilts per active planes.", + "readOnly": true + }, + "pvforecast_planes_userhorizon": { + "title": "Pvforecast Planes Userhorizon", + "description": "Compute a list of the user horizon per active planes.", + "readOnly": true + }, + "pvforecast_planes_inverter_paco": { + "title": "Pvforecast Planes Inverter Paco", + "description": "Compute a list of the maximum power rating of the inverter per active planes.", + "readOnly": true + }, + "timezone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Timezone", + "description": "Compute timezone based on latitude and longitude.", + "readOnly": true + }, + "logging_level_root": { + "type": "string", + "title": "Logging Level Root", + "description": "Root logger logging level.", + "readOnly": true + }, + "data_output_path": { + "anyOf": [ + { + "type": "string", + "format": "path" + }, + { + "type": "null" + } + ], + "title": "Data Output Path", + "description": "Compute data_output_path based on data_folder_path.", + "readOnly": true + }, + "data_cache_path": { + "anyOf": [ + { + "type": "string", + "format": "path" + }, + { + "type": "null" + } + ], + "title": "Data Cache Path", + "description": "Compute data_cache_path based on data_folder_path.", + "readOnly": true + }, + "config_folder_path": { + "anyOf": [ + { + "type": "string", + "format": "path" + }, + { + "type": "null" + } + ], + "title": "Config Folder Path", + "description": "Path to EOS configuration directory.", + "readOnly": true + }, + "config_file_path": { + "anyOf": [ + { + "type": "string", + "format": "path" + }, + { + "type": "null" + } + ], + "title": "Config File Path", + "description": "Path to EOS configuration file.", + "readOnly": true + }, + "config_default_file_path": { + "type": "string", + "format": "path", + "title": "Config Default File Path", + "description": "Compute the default config file path.", + "readOnly": true + }, + "package_root_path": { + "type": "string", + "format": "path", + "title": "Package Root Path", + "description": "Compute the package root path.", + "readOnly": true + }, + "config_keys": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Config Keys", + "description": "Returns the keys of all fields in the configuration.", + "readOnly": true + }, + "config_keys_read_only": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Config Keys Read Only", + "description": "Returns the keys of all read only fields in the configuration.", + "readOnly": true + } + }, + "type": "object", + "required": [ + "pvforecast_planes", + "pvforecast_planes_peakpower", + "pvforecast_planes_azimuth", + "pvforecast_planes_tilt", + "pvforecast_planes_userhorizon", + "pvforecast_planes_inverter_paco", + "timezone", + "logging_level_root", + "data_output_path", + "data_cache_path", + "config_folder_path", + "config_file_path", + "config_default_file_path", + "package_root_path", + "config_keys", + "config_keys_read_only" + ], + "title": "ConfigEOS", + "description": "Singleton configuration handler for the EOS application.\n\nConfigEOS extends `SettingsEOS` with support for default configuration paths and automatic\ninitialization.\n\n`ConfigEOS` ensures that only one instance of the class is created throughout the application,\nallowing consistent access to EOS configuration settings. This singleton instance loads\nconfiguration data from a predefined set of directories or creates a default configuration if\nnone is found.\n\nInitialization Process:\n - Upon instantiation, the singleton instance attempts to load a configuration file in this order:\n 1. The directory specified by the `EOS_CONFIG_DIR` environment variable\n 2. The directory specified by the `EOS_DIR` environment variable.\n 3. A platform specific default directory for EOS.\n 4. The current working directory.\n - The first available configuration file found in these directories is loaded.\n - If no configuration file is found, a default configuration file is created in the platform\n specific default directory, and default settings are loaded into it.\n\nAttributes from the loaded configuration are accessible directly as instance attributes of\n`ConfigEOS`, providing a centralized, shared configuration object for EOS.\n\nSingleton Behavior:\n - This class uses the `SingletonMixin` to ensure that all requests for `ConfigEOS` return\n the same instance, which contains the most up-to-date configuration. Modifying the configuration\n in one part of the application reflects across all references to this class.\n\nAttributes:\n _settings (ClassVar[SettingsEOS]): Holds application-wide settings.\n _file_settings (ClassVar[SettingsEOS]): Stores configuration loaded from file.\n config_folder_path (Optional[Path]): Path to the configuration directory.\n config_file_path (Optional[Path]): Path to the configuration file.\n\nRaises:\n FileNotFoundError: If no configuration file is found, and creating a default configuration fails.\n\nExample:\n To initialize and access configuration attributes (only one instance is created):\n ```python\n config_eos = ConfigEOS() # Always returns the same instance\n print(config_eos.prediction_hours) # Access a setting from the loaded configuration\n ```" + }, + "ElectricVehicleParameters": { + "properties": { + "capacity_wh": { + "type": "integer", + "exclusiveMinimum": 0.0, + "title": "Capacity Wh", + "description": "An integer representing the capacity of the battery in watt-hours." + }, + "charging_efficiency": { + "type": "number", + "maximum": 1.0, + "exclusiveMinimum": 0.0, + "title": "Charging Efficiency", + "description": "A float representing the charging efficiency of the battery.", + "default": 0.88 + }, + "discharging_efficiency": { + "type": "number", + "title": "Discharging Efficiency", + "default": 1.0 + }, + "max_charge_power_w": { + "anyOf": [ + { + "type": "number", + "exclusiveMinimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Max Charge Power W", + "description": "Maximum charging power in watts.", + "default": 5000 + }, + "initial_soc_percentage": { + "type": "integer", + "maximum": 100.0, + "minimum": 0.0, + "title": "Initial Soc Percentage", + "description": "An integer representing the current state of charge (SOC) of the battery in percentage.", + "default": 0 + }, + "min_soc_percentage": { + "type": "integer", + "maximum": 100.0, + "minimum": 0.0, + "title": "Min Soc Percentage", + "description": "An integer representing the minimum state of charge (SOC) of the battery in percentage.", + "default": 0 + }, + "max_soc_percentage": { + "type": "integer", + "maximum": 100.0, + "minimum": 0.0, + "title": "Max Soc Percentage", + "description": "An integer representing the maximum state of charge (SOC) of the battery in percentage.", + "default": 100 + } + }, + "type": "object", + "required": [ + "capacity_wh" + ], + "title": "ElectricVehicleParameters", + "description": "Parameters specific to an electric vehicle (EV)." + }, + "ElectricVehicleResult": { + "properties": { + "charge_array": { + "items": { + "type": "number" + }, + "type": "array", + "title": "Charge Array", + "description": "Hourly charging status (0 for no charging, 1 for charging)." + }, + "discharge_array": { + "items": { + "type": "integer" + }, + "type": "array", + "title": "Discharge Array", + "description": "Hourly discharging status (0 for no discharging, 1 for discharging)." + }, + "discharging_efficiency": { + "type": "number", + "title": "Discharging Efficiency", + "description": "The discharge efficiency as a float.." + }, + "hours": { + "type": "integer", + "title": "Hours", + "description": "Number of hours in the simulation." + }, + "capacity_wh": { + "type": "integer", + "title": "Capacity Wh", + "description": "Capacity of the EV\u2019s battery in watt-hours." + }, + "charging_efficiency": { + "type": "number", + "title": "Charging Efficiency", + "description": "Charging efficiency as a float.." + }, + "max_charge_power_w": { + "type": "integer", + "title": "Max Charge Power W", + "description": "Maximum charging power in watts." + }, + "soc_wh": { + "type": "number", + "title": "Soc Wh", + "description": "State of charge of the battery in watt-hours at the start of the simulation." + }, + "initial_soc_percentage": { + "type": "integer", + "title": "Initial Soc Percentage", + "description": "State of charge at the start of the simulation in percentage." + } + }, + "type": "object", + "required": [ + "charge_array", + "discharge_array", + "discharging_efficiency", + "hours", + "capacity_wh", + "charging_efficiency", + "max_charge_power_w", + "soc_wh", + "initial_soc_percentage" + ], + "title": "ElectricVehicleResult", + "description": "Result class containing information related to the electric vehicle's charging and discharging behavior." + }, + "EnergieManagementSystemParameters": { + "properties": { + "pv_prognose_wh": { + "items": { + "type": "number" + }, + "type": "array", + "title": "Pv Prognose Wh", + "description": "An array of floats representing the forecasted photovoltaic output in watts for different time intervals." + }, + "strompreis_euro_pro_wh": { + "items": { + "type": "number" + }, + "type": "array", + "title": "Strompreis Euro Pro Wh", + "description": "An array of floats representing the electricity price in euros per watt-hour for different time intervals." + }, + "einspeiseverguetung_euro_pro_wh": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "number" + } + ], + "title": "Einspeiseverguetung Euro Pro Wh", + "description": "A float or array of floats representing the feed-in compensation in euros per watt-hour." + }, + "preis_euro_pro_wh_akku": { + "type": "number", + "title": "Preis Euro Pro Wh Akku", + "description": "A float representing the cost of battery energy per watt-hour." + }, + "gesamtlast": { + "items": { + "type": "number" + }, + "type": "array", + "title": "Gesamtlast", + "description": "An array of floats representing the total load (consumption) in watts for different time intervals." + } + }, + "type": "object", + "required": [ + "pv_prognose_wh", + "strompreis_euro_pro_wh", + "einspeiseverguetung_euro_pro_wh", + "preis_euro_pro_wh_akku", + "gesamtlast" + ], + "title": "EnergieManagementSystemParameters" + }, + "ForecastResponse": { + "properties": { + "temperature": { + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "type": "array", + "title": "Temperature" + }, + "pvpower": { + "items": { + "type": "number" + }, + "type": "array", + "title": "Pvpower" + } + }, + "type": "object", + "required": [ + "temperature", + "pvpower" + ], + "title": "ForecastResponse" + }, + "GesamtlastRequest": { + "properties": { + "year_energy": { + "type": "number", + "title": "Year Energy" + }, + "measured_data": { + "items": { + "type": "object" + }, + "type": "array", + "title": "Measured Data" + }, + "hours": { + "type": "integer", + "title": "Hours" + } + }, + "type": "object", + "required": [ + "year_energy", + "measured_data", + "hours" + ], + "title": "GesamtlastRequest" + }, + "HTTPValidationError": { + "properties": { + "detail": { + "items": { + "$ref": "#/components/schemas/ValidationError" + }, + "type": "array", + "title": "Detail" + } + }, + "type": "object", + "title": "HTTPValidationError" + }, + "HomeApplianceParameters": { + "properties": { + "consumption_wh": { + "type": "integer", + "exclusiveMinimum": 0.0, + "title": "Consumption Wh", + "description": "An integer representing the energy consumption of a household device in watt-hours." + }, + "duration_h": { + "type": "integer", + "exclusiveMinimum": 0.0, + "title": "Duration H", + "description": "An integer representing the usage duration of a household device in hours." + } + }, + "type": "object", + "required": [ + "consumption_wh", + "duration_h" + ], + "title": "HomeApplianceParameters" + }, + "InverterParameters": { + "properties": { + "max_power_wh": { + "type": "number", + "exclusiveMinimum": 0.0, + "title": "Max Power Wh", + "default": 10000 + } + }, + "type": "object", + "title": "InverterParameters" + }, + "OptimizationParameters": { + "properties": { + "ems": { + "$ref": "#/components/schemas/EnergieManagementSystemParameters" + }, + "pv_akku": { + "$ref": "#/components/schemas/SolarPanelBatteryParameters" + }, + "inverter": { + "$ref": "#/components/schemas/InverterParameters", + "default": { + "max_power_wh": 10000.0 + } + }, + "eauto": { + "anyOf": [ + { + "$ref": "#/components/schemas/ElectricVehicleParameters" + }, + { + "type": "null" + } + ] + }, + "dishwasher": { + "anyOf": [ + { + "$ref": "#/components/schemas/HomeApplianceParameters" + }, + { + "type": "null" + } + ] + }, + "temperature_forecast": { + "anyOf": [ + { + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Temperature Forecast", + "description": "An array of floats representing the temperature forecast in degrees Celsius for different time intervals." + }, + "start_solution": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Start Solution", + "description": "Can be `null` or contain a previous solution (if available)." + } + }, + "type": "object", + "required": [ + "ems", + "pv_akku", + "eauto" + ], + "title": "OptimizationParameters" + }, + "OptimizeResponse": { + "properties": { + "ac_charge": { + "items": { + "type": "number" + }, + "type": "array", + "title": "Ac Charge", + "description": "Array with AC charging values as relative power (0-1), other values set to 0." + }, + "dc_charge": { + "items": { + "type": "number" + }, + "type": "array", + "title": "Dc Charge", + "description": "Array with DC charging values as relative power (0-1), other values set to 0." + }, + "discharge_allowed": { + "items": { + "type": "integer" + }, + "type": "array", + "title": "Discharge Allowed", + "description": "Array with discharge values (1 for discharge, 0 otherwise)." + }, + "eautocharge_hours_float": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Eautocharge Hours Float", + "description": "TBD" + }, + "result": { + "$ref": "#/components/schemas/SimulationResult" + }, + "eauto_obj": { + "anyOf": [ + { + "$ref": "#/components/schemas/ElectricVehicleResult" + }, + { + "type": "null" + } + ] + }, + "start_solution": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Start Solution", + "description": "An array of binary values (0 or 1) representing a possible starting solution for the simulation." + }, + "washingstart": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Washingstart", + "description": "Can be `null` or contain an object representing the start of washing (if applicable)." + } + }, + "type": "object", + "required": [ + "ac_charge", + "dc_charge", + "discharge_allowed", + "eautocharge_hours_float", + "result", + "eauto_obj" + ], + "title": "OptimizeResponse", + "description": "**Note**: The first value of \"Last_Wh_per_hour\", \"Netzeinspeisung_Wh_per_hour\", and \"Netzbezug_Wh_per_hour\", will be set to null in the JSON output and represented as NaN or None in the corresponding classes' data returns. This approach is adopted to ensure that the current hour's processing remains unchanged." + }, + "PydanticDateTimeData": { + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "integer" + }, + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "type": "array" + } + ] + }, + "type": "object", + "title": "PydanticDateTimeData", + "description": "Pydantic model for time series data with consistent value lengths.\n\nThis model validates a dictionary where:\n- Keys are strings representing data series names\n- Values are lists of numeric or string values\n- Special keys 'start_datetime' and 'interval' can contain string values\nfor time series indexing\n- All value lists must have the same length\n\nExample:\n {\n \"start_datetime\": \"2024-01-01 00:00:00\", # optional\n \"interval\": \"1 Hour\", # optional\n \"load_mean\": [20.5, 21.0, 22.1],\n \"load_min\": [18.5, 19.0, 20.1]\n }" + }, + "PydanticDateTimeDataFrame": { + "properties": { + "data": { + "additionalProperties": { + "type": "object" + }, + "type": "object", + "title": "Data" + }, + "dtypes": { + "additionalProperties": { + "type": "string" + }, + "type": "object", + "title": "Dtypes" + }, + "tz": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tz", + "description": "Timezone for datetime values" + }, + "datetime_columns": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Datetime Columns", + "description": "Columns to be treated as datetime" + } + }, + "type": "object", + "required": [ + "data" + ], + "title": "PydanticDateTimeDataFrame", + "description": "Pydantic model for validating pandas DataFrame data with datetime index." + }, + "PydanticDateTimeSeries": { + "properties": { + "data": { + "type": "object", + "title": "Data" + }, + "dtype": { + "type": "string", + "title": "Dtype", + "default": "float64" + }, + "tz": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Tz" + } + }, + "type": "object", + "required": [ + "data" + ], + "title": "PydanticDateTimeSeries", + "description": "Pydantic model for validating pandas Series with datetime index in JSON format.\n\nThis model handles Series data serialized with orient='index', where the keys are\ndatetime strings and values are the series values. Provides validation and\nconversion between JSON and pandas Series with datetime index.\n\nAttributes:\n data (Dict[str, Any]): Dictionary mapping datetime strings to values.\n dtype (str): The data type of the series values.\n tz (str | None): Timezone name if the datetime index is timezone-aware." + }, + "SettingsEOS": { + "properties": { + "server_fastapi_host": { + "anyOf": [ + { + "type": "string", + "format": "ipvanyaddress" + }, + { + "type": "null" + } + ], + "title": "Server Fastapi Host", + "description": "FastAPI server IP address.", + "default": "0.0.0.0" + }, + "server_fastapi_port": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Server Fastapi Port", + "description": "FastAPI server IP port number.", + "default": 8503 + }, + "server_fastapi_verbose": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Server Fastapi Verbose", + "description": "Enable debug output", + "default": false + }, + "server_fastapi_startup_server_fasthtml": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Server Fastapi Startup Server Fasthtml", + "description": "FastAPI server to startup application FastHTML server.", + "default": true + }, + "server_fasthtml_host": { + "anyOf": [ + { + "type": "string", + "format": "ipvanyaddress" + }, + { + "type": "null" + } + ], + "title": "Server Fasthtml Host", + "description": "FastHTML server IP address.", + "default": "0.0.0.0" + }, + "server_fasthtml_port": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Server Fasthtml Port", + "description": "FastHTML server IP port number.", + "default": 8504 + }, + "weatherimport_file_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "format": "path" + }, + { + "type": "null" + } + ], + "title": "Weatherimport File Path", + "description": "Path to the file to import weather data from." + }, + "weatherimport_json": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Weatherimport Json", + "description": "JSON string, dictionary of weather forecast value lists." + }, + "weather_provider": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Weather Provider", + "description": "Weather provider id of provider to be used." + }, + "pvforecastimport_file_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "format": "path" + }, + { + "type": "null" + } + ], + "title": "Pvforecastimport File Path", + "description": "Path to the file to import PV forecast data from." + }, + "pvforecastimport_json": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecastimport Json", + "description": "JSON string, dictionary of PV forecast value lists." + }, + "pvforecast_provider": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast Provider", + "description": "PVForecast provider id of provider to be used." + }, + "pvforecast0_surface_tilt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Surface Tilt", + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking." + }, + "pvforecast0_surface_azimuth": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Surface Azimuth", + "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270)." + }, + "pvforecast0_userhorizon": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Userhorizon", + "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north." + }, + "pvforecast0_peakpower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Peakpower", + "description": "Nominal power of PV system in kW." + }, + "pvforecast0_pvtechchoice": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Pvtechchoice", + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + "default": "crystSi" + }, + "pvforecast0_mountingplace": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Mountingplace", + "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", + "default": "free" + }, + "pvforecast0_loss": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Loss", + "description": "Sum of PV system losses in percent", + "default": 14.0 + }, + "pvforecast0_trackingtype": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Trackingtype", + "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south." + }, + "pvforecast0_optimal_surface_tilt": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Optimal Surface Tilt", + "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", + "default": false + }, + "pvforecast0_optimalangles": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Optimalangles", + "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", + "default": false + }, + "pvforecast0_albedo": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Albedo", + "description": "Proportion of the light hitting the ground that it reflects back." + }, + "pvforecast0_module_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Module Model", + "description": "Model of the PV modules of this plane." + }, + "pvforecast0_inverter_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Inverter Model", + "description": "Model of the inverter of this plane." + }, + "pvforecast0_inverter_paco": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Inverter Paco", + "description": "AC power rating of the inverter. [W]" + }, + "pvforecast0_modules_per_string": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Modules Per String", + "description": "Number of the PV modules of the strings of this plane." + }, + "pvforecast0_strings_per_inverter": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast0 Strings Per Inverter", + "description": "Number of the strings of the inverter of this plane." + }, + "pvforecast1_surface_tilt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Surface Tilt", + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking." + }, + "pvforecast1_surface_azimuth": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Surface Azimuth", + "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270)." + }, + "pvforecast1_userhorizon": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Userhorizon", + "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north." + }, + "pvforecast1_peakpower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Peakpower", + "description": "Nominal power of PV system in kW." + }, + "pvforecast1_pvtechchoice": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Pvtechchoice", + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + "default": "crystSi" + }, + "pvforecast1_mountingplace": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Mountingplace", + "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", + "default": "free" + }, + "pvforecast1_loss": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Loss", + "description": "Sum of PV system losses in percent", + "default": 14.0 + }, + "pvforecast1_trackingtype": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Trackingtype", + "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south." + }, + "pvforecast1_optimal_surface_tilt": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Optimal Surface Tilt", + "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", + "default": false + }, + "pvforecast1_optimalangles": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Optimalangles", + "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", + "default": false + }, + "pvforecast1_albedo": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Albedo", + "description": "Proportion of the light hitting the ground that it reflects back." + }, + "pvforecast1_module_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Module Model", + "description": "Model of the PV modules of this plane." + }, + "pvforecast1_inverter_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Inverter Model", + "description": "Model of the inverter of this plane." + }, + "pvforecast1_inverter_paco": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Inverter Paco", + "description": "AC power rating of the inverter. [W]" + }, + "pvforecast1_modules_per_string": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Modules Per String", + "description": "Number of the PV modules of the strings of this plane." + }, + "pvforecast1_strings_per_inverter": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast1 Strings Per Inverter", + "description": "Number of the strings of the inverter of this plane." + }, + "pvforecast2_surface_tilt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Surface Tilt", + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking." + }, + "pvforecast2_surface_azimuth": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Surface Azimuth", + "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270)." + }, + "pvforecast2_userhorizon": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Userhorizon", + "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north." + }, + "pvforecast2_peakpower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Peakpower", + "description": "Nominal power of PV system in kW." + }, + "pvforecast2_pvtechchoice": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Pvtechchoice", + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + "default": "crystSi" + }, + "pvforecast2_mountingplace": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Mountingplace", + "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", + "default": "free" + }, + "pvforecast2_loss": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Loss", + "description": "Sum of PV system losses in percent", + "default": 14.0 + }, + "pvforecast2_trackingtype": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Trackingtype", + "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south." + }, + "pvforecast2_optimal_surface_tilt": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Optimal Surface Tilt", + "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", + "default": false + }, + "pvforecast2_optimalangles": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Optimalangles", + "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", + "default": false + }, + "pvforecast2_albedo": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Albedo", + "description": "Proportion of the light hitting the ground that it reflects back." + }, + "pvforecast2_module_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Module Model", + "description": "Model of the PV modules of this plane." + }, + "pvforecast2_inverter_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Inverter Model", + "description": "Model of the inverter of this plane." + }, + "pvforecast2_inverter_paco": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Inverter Paco", + "description": "AC power rating of the inverter. [W]" + }, + "pvforecast2_modules_per_string": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Modules Per String", + "description": "Number of the PV modules of the strings of this plane." + }, + "pvforecast2_strings_per_inverter": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast2 Strings Per Inverter", + "description": "Number of the strings of the inverter of this plane." + }, + "pvforecast3_surface_tilt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Surface Tilt", + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking." + }, + "pvforecast3_surface_azimuth": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Surface Azimuth", + "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270)." + }, + "pvforecast3_userhorizon": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Userhorizon", + "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north." + }, + "pvforecast3_peakpower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Peakpower", + "description": "Nominal power of PV system in kW." + }, + "pvforecast3_pvtechchoice": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Pvtechchoice", + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + "default": "crystSi" + }, + "pvforecast3_mountingplace": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Mountingplace", + "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", + "default": "free" + }, + "pvforecast3_loss": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Loss", + "description": "Sum of PV system losses in percent", + "default": 14.0 + }, + "pvforecast3_trackingtype": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Trackingtype", + "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south." + }, + "pvforecast3_optimal_surface_tilt": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Optimal Surface Tilt", + "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", + "default": false + }, + "pvforecast3_optimalangles": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Optimalangles", + "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", + "default": false + }, + "pvforecast3_albedo": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Albedo", + "description": "Proportion of the light hitting the ground that it reflects back." + }, + "pvforecast3_module_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Module Model", + "description": "Model of the PV modules of this plane." + }, + "pvforecast3_inverter_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Inverter Model", + "description": "Model of the inverter of this plane." + }, + "pvforecast3_inverter_paco": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Inverter Paco", + "description": "AC power rating of the inverter. [W]" + }, + "pvforecast3_modules_per_string": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Modules Per String", + "description": "Number of the PV modules of the strings of this plane." + }, + "pvforecast3_strings_per_inverter": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast3 Strings Per Inverter", + "description": "Number of the strings of the inverter of this plane." + }, + "pvforecast4_surface_tilt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Surface Tilt", + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking." + }, + "pvforecast4_surface_azimuth": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Surface Azimuth", + "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270)." + }, + "pvforecast4_userhorizon": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Userhorizon", + "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north." + }, + "pvforecast4_peakpower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Peakpower", + "description": "Nominal power of PV system in kW." + }, + "pvforecast4_pvtechchoice": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Pvtechchoice", + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + "default": "crystSi" + }, + "pvforecast4_mountingplace": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Mountingplace", + "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", + "default": "free" + }, + "pvforecast4_loss": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Loss", + "description": "Sum of PV system losses in percent", + "default": 14.0 + }, + "pvforecast4_trackingtype": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Trackingtype", + "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south." + }, + "pvforecast4_optimal_surface_tilt": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Optimal Surface Tilt", + "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", + "default": false + }, + "pvforecast4_optimalangles": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Optimalangles", + "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", + "default": false + }, + "pvforecast4_albedo": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Albedo", + "description": "Proportion of the light hitting the ground that it reflects back." + }, + "pvforecast4_module_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Module Model", + "description": "Model of the PV modules of this plane." + }, + "pvforecast4_inverter_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Inverter Model", + "description": "Model of the inverter of this plane." + }, + "pvforecast4_inverter_paco": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Inverter Paco", + "description": "AC power rating of the inverter. [W]" + }, + "pvforecast4_modules_per_string": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Modules Per String", + "description": "Number of the PV modules of the strings of this plane." + }, + "pvforecast4_strings_per_inverter": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast4 Strings Per Inverter", + "description": "Number of the strings of the inverter of this plane." + }, + "pvforecast5_surface_tilt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Surface Tilt", + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking." + }, + "pvforecast5_surface_azimuth": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Surface Azimuth", + "description": "Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270)." + }, + "pvforecast5_userhorizon": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Userhorizon", + "description": "Elevation of horizon in degrees, at equally spaced azimuth clockwise from north." + }, + "pvforecast5_peakpower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Peakpower", + "description": "Nominal power of PV system in kW." + }, + "pvforecast5_pvtechchoice": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Pvtechchoice", + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + "default": "crystSi" + }, + "pvforecast5_mountingplace": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Mountingplace", + "description": "Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", + "default": "free" + }, + "pvforecast5_loss": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Loss", + "description": "Sum of PV system losses in percent", + "default": 14.0 + }, + "pvforecast5_trackingtype": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Trackingtype", + "description": "Type of suntracking. 0=fixed, 1=single horizontal axis aligned north-south, 2=two-axis tracking, 3=vertical axis tracking, 4=single horizontal axis aligned east-west, 5=single inclined axis aligned north-south." + }, + "pvforecast5_optimal_surface_tilt": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Optimal Surface Tilt", + "description": "Calculate the optimum tilt angle. Ignored for two-axis tracking.", + "default": false + }, + "pvforecast5_optimalangles": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Optimalangles", + "description": "Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", + "default": false + }, + "pvforecast5_albedo": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Albedo", + "description": "Proportion of the light hitting the ground that it reflects back." + }, + "pvforecast5_module_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Module Model", + "description": "Model of the PV modules of this plane." + }, + "pvforecast5_inverter_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Inverter Model", + "description": "Model of the inverter of this plane." + }, + "pvforecast5_inverter_paco": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Inverter Paco", + "description": "AC power rating of the inverter. [W]" + }, + "pvforecast5_modules_per_string": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Modules Per String", + "description": "Number of the PV modules of the strings of this plane." + }, + "pvforecast5_strings_per_inverter": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pvforecast5 Strings Per Inverter", + "description": "Number of the strings of the inverter of this plane." + }, + "load_import_file_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "format": "path" + }, + { + "type": "null" + } + ], + "title": "Load Import File Path", + "description": "Path to the file to import load data from." + }, + "load_import_json": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Load Import Json", + "description": "JSON string, dictionary of load forecast value lists." + }, + "loadakkudoktor_year_energy": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Loadakkudoktor Year Energy", + "description": "Yearly energy consumption (kWh)." + }, + "load_provider": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Load Provider", + "description": "Load provider id of provider to be used." + }, + "elecpriceimport_file_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "format": "path" + }, + { + "type": "null" + } + ], + "title": "Elecpriceimport File Path", + "description": "Path to the file to import elecprice data from." + }, + "elecpriceimport_json": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Elecpriceimport Json", + "description": "JSON string, dictionary of electricity price forecast value lists." + }, + "elecprice_provider": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Elecprice Provider", + "description": "Electricity price provider id of provider to be used." + }, + "elecprice_charges_kwh": { + "anyOf": [ + { + "type": "number", + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Elecprice Charges Kwh", + "description": "Electricity price charges (\u20ac/kWh)." + }, + "prediction_hours": { + "anyOf": [ + { + "type": "integer", + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Prediction Hours", + "description": "Number of hours into the future for predictions", + "default": 48 + }, + "prediction_historic_hours": { + "anyOf": [ + { + "type": "integer", + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Prediction Historic Hours", + "description": "Number of hours into the past for historical predictions data", + "default": 48 + }, + "latitude": { + "anyOf": [ + { + "type": "number", + "maximum": 90.0, + "minimum": -90.0 + }, + { + "type": "null" + } + ], + "title": "Latitude", + "description": "Latitude in decimal degrees, between -90 and 90, north is positive (ISO 19115) (\u00b0)" + }, + "longitude": { + "anyOf": [ + { + "type": "number", + "maximum": 180.0, + "minimum": -180.0 + }, + { + "type": "null" + } + ], + "title": "Longitude", + "description": "Longitude in decimal degrees, within -180 to 180 (\u00b0)" + }, + "optimization_hours": { + "anyOf": [ + { + "type": "integer", + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Optimization Hours", + "description": "Number of hours into the future for optimizations.", + "default": 24 + }, + "optimization_penalty": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Optimization Penalty", + "description": "Penalty factor used in optimization.", + "default": 10 + }, + "optimization_ev_available_charge_rates_percent": { + "anyOf": [ + { + "items": { + "type": "number" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Optimization Ev Available Charge Rates Percent", + "description": "Charge rates available for the EV in percent of maximum charge.", + "default": [ + 0.0, + 0.375, + 0.5, + 0.625, + 0.75, + 0.875, + 1.0 + ] + }, + "measurement_load0_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Measurement Load0 Name", + "description": "Name of the load0 source (e.g. 'Household', 'Heat Pump')" + }, + "measurement_load1_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Measurement Load1 Name", + "description": "Name of the load1 source (e.g. 'Household', 'Heat Pump')" + }, + "measurement_load2_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Measurement Load2 Name", + "description": "Name of the load2 source (e.g. 'Household', 'Heat Pump')" + }, + "measurement_load3_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Measurement Load3 Name", + "description": "Name of the load3 source (e.g. 'Household', 'Heat Pump')" + }, + "measurement_load4_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Measurement Load4 Name", + "description": "Name of the load4 source (e.g. 'Household', 'Heat Pump')" + }, + "battery_provider": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Battery Provider", + "description": "Id of Battery simulation provider." + }, + "battery_capacity": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Battery Capacity", + "description": "Battery capacity [Wh]." + }, + "battery_initial_soc": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Battery Initial Soc", + "description": "Battery initial state of charge [%]." + }, + "battery_soc_min": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Battery Soc Min", + "description": "Battery minimum state of charge [%]." + }, + "battery_soc_max": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Battery Soc Max", + "description": "Battery maximum state of charge [%]." + }, + "battery_charging_efficiency": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Battery Charging Efficiency", + "description": "Battery charging efficiency [%]." + }, + "battery_discharging_efficiency": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Battery Discharging Efficiency", + "description": "Battery discharging efficiency [%]." + }, + "battery_max_charging_power": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Battery Max Charging Power", + "description": "Battery maximum charge power [W]." + }, + "bev_provider": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Bev Provider", + "description": "Id of Battery Electric Vehicle simulation provider." + }, + "bev_capacity": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Bev Capacity", + "description": "Battery Electric Vehicle capacity [Wh]." + }, + "bev_initial_soc": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Bev Initial Soc", + "description": "Battery Electric Vehicle initial state of charge [%]." + }, + "bev_soc_max": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Bev Soc Max", + "description": "Battery Electric Vehicle maximum state of charge [%]." + }, + "bev_charging_efficiency": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Bev Charging Efficiency", + "description": "Battery Electric Vehicle charging efficiency [%]." + }, + "bev_discharging_efficiency": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Bev Discharging Efficiency", + "description": "Battery Electric Vehicle discharging efficiency [%]." + }, + "bev_max_charging_power": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Bev Max Charging Power", + "description": "Battery Electric Vehicle maximum charge power [W]." + }, + "dishwasher_provider": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Dishwasher Provider", + "description": "Id of Dish Washer simulation provider." + }, + "dishwasher_consumption": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Dishwasher Consumption", + "description": "Dish Washer energy consumption [Wh]." + }, + "dishwasher_duration": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Dishwasher Duration", + "description": "Dish Washer usage duration [h]." + }, + "inverter_provider": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Inverter Provider", + "description": "Id of PV Inverter simulation provider." + }, + "inverter_power_max": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Inverter Power Max", + "description": "Inverter maximum power [W]." + }, + "logging_level_default": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Logging Level Default", + "description": "EOS default logging level." + }, + "data_folder_path": { + "anyOf": [ + { + "type": "string", + "format": "path" + }, + { + "type": "null" + } + ], + "title": "Data Folder Path", + "description": "Path to EOS data directory." + }, + "data_output_subpath": { + "anyOf": [ + { + "type": "string", + "format": "path" + }, + { + "type": "null" + } + ], + "title": "Data Output Subpath", + "description": "Sub-path for the EOS output data directory.", + "default": "output" + }, + "data_cache_subpath": { + "anyOf": [ + { + "type": "string", + "format": "path" + }, + { + "type": "null" + } + ], + "title": "Data Cache Subpath", + "description": "Sub-path for the EOS cache data directory.", + "default": "cache" + }, + "pvforecast_planes": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Pvforecast Planes", + "description": "Compute a list of active planes.", + "readOnly": true + }, + "pvforecast_planes_peakpower": { + "items": { + "type": "number" + }, + "type": "array", + "title": "Pvforecast Planes Peakpower", + "description": "Compute a list of the peak power per active planes.", + "readOnly": true + }, + "pvforecast_planes_azimuth": { + "items": { + "type": "number" + }, + "type": "array", + "title": "Pvforecast Planes Azimuth", + "description": "Compute a list of the azimuths per active planes.", + "readOnly": true + }, + "pvforecast_planes_tilt": { + "items": { + "type": "number" + }, + "type": "array", + "title": "Pvforecast Planes Tilt", + "description": "Compute a list of the tilts per active planes.", + "readOnly": true + }, + "pvforecast_planes_userhorizon": { + "title": "Pvforecast Planes Userhorizon", + "description": "Compute a list of the user horizon per active planes.", + "readOnly": true + }, + "pvforecast_planes_inverter_paco": { + "title": "Pvforecast Planes Inverter Paco", + "description": "Compute a list of the maximum power rating of the inverter per active planes.", + "readOnly": true + }, + "timezone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Timezone", + "description": "Compute timezone based on latitude and longitude.", + "readOnly": true + }, + "logging_level_root": { + "type": "string", + "title": "Logging Level Root", + "description": "Root logger logging level.", + "readOnly": true + }, + "data_output_path": { + "anyOf": [ + { + "type": "string", + "format": "path" + }, + { + "type": "null" + } + ], + "title": "Data Output Path", + "description": "Compute data_output_path based on data_folder_path.", + "readOnly": true + }, + "data_cache_path": { + "anyOf": [ + { + "type": "string", + "format": "path" + }, + { + "type": "null" + } + ], + "title": "Data Cache Path", + "description": "Compute data_cache_path based on data_folder_path.", + "readOnly": true + } + }, + "type": "object", + "required": [ + "pvforecast_planes", + "pvforecast_planes_peakpower", + "pvforecast_planes_azimuth", + "pvforecast_planes_tilt", + "pvforecast_planes_userhorizon", + "pvforecast_planes_inverter_paco", + "timezone", + "logging_level_root", + "data_output_path", + "data_cache_path" + ], + "title": "SettingsEOS", + "description": "Settings for all EOS." + }, + "SimulationResult": { + "properties": { + "Last_Wh_pro_Stunde": { + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "type": "array", + "title": "Last Wh Pro Stunde", + "description": "TBD" + }, + "EAuto_SoC_pro_Stunde": { + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "type": "array", + "title": "Eauto Soc Pro Stunde", + "description": "The state of charge of the EV for each hour." + }, + "Einnahmen_Euro_pro_Stunde": { + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "type": "array", + "title": "Einnahmen Euro Pro Stunde", + "description": "The revenue from grid feed-in or other sources in euros per hour." + }, + "Gesamt_Verluste": { + "type": "number", + "title": "Gesamt Verluste", + "description": "The total losses in watt-hours over the entire period." + }, + "Gesamtbilanz_Euro": { + "type": "number", + "title": "Gesamtbilanz Euro", + "description": "The total balance of revenues minus costs in euros." + }, + "Gesamteinnahmen_Euro": { + "type": "number", + "title": "Gesamteinnahmen Euro", + "description": "The total revenues in euros." + }, + "Gesamtkosten_Euro": { + "type": "number", + "title": "Gesamtkosten Euro", + "description": "The total costs in euros." + }, + "Home_appliance_wh_per_hour": { + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "type": "array", + "title": "Home Appliance Wh Per Hour", + "description": "The energy consumption of a household appliance in watt-hours per hour." + }, + "Kosten_Euro_pro_Stunde": { + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "type": "array", + "title": "Kosten Euro Pro Stunde", + "description": "The costs in euros per hour." + }, + "Netzbezug_Wh_pro_Stunde": { + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "type": "array", + "title": "Netzbezug Wh Pro Stunde", + "description": "The grid energy drawn in watt-hours per hour." + }, + "Netzeinspeisung_Wh_pro_Stunde": { + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "type": "array", + "title": "Netzeinspeisung Wh Pro Stunde", + "description": "The energy fed into the grid in watt-hours per hour." + }, + "Verluste_Pro_Stunde": { + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "type": "array", + "title": "Verluste Pro Stunde", + "description": "The losses in watt-hours per hour." + }, + "akku_soc_pro_stunde": { + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "type": "array", + "title": "Akku Soc Pro Stunde", + "description": "The state of charge of the battery (not the EV) in percentage per hour." + }, + "Electricity_price": { + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "type": "array", + "title": "Electricity Price", + "description": "Used Electricity Price, including predictions" + } + }, + "type": "object", + "required": [ + "Last_Wh_pro_Stunde", + "EAuto_SoC_pro_Stunde", + "Einnahmen_Euro_pro_Stunde", + "Gesamt_Verluste", + "Gesamtbilanz_Euro", + "Gesamteinnahmen_Euro", + "Gesamtkosten_Euro", + "Home_appliance_wh_per_hour", + "Kosten_Euro_pro_Stunde", + "Netzbezug_Wh_pro_Stunde", + "Netzeinspeisung_Wh_pro_Stunde", + "Verluste_Pro_Stunde", + "akku_soc_pro_stunde", + "Electricity_price" + ], + "title": "SimulationResult", + "description": "This object contains the results of the simulation and provides insights into various parameters over the entire forecast period." + }, + "SolarPanelBatteryParameters": { + "properties": { + "capacity_wh": { + "type": "integer", + "exclusiveMinimum": 0.0, + "title": "Capacity Wh", + "description": "An integer representing the capacity of the battery in watt-hours." + }, + "charging_efficiency": { + "type": "number", + "maximum": 1.0, + "exclusiveMinimum": 0.0, + "title": "Charging Efficiency", + "description": "A float representing the charging efficiency of the battery.", + "default": 0.88 + }, + "discharging_efficiency": { + "type": "number", + "maximum": 1.0, + "exclusiveMinimum": 0.0, + "title": "Discharging Efficiency", + "description": "A float representing the discharge efficiency of the battery.", + "default": 0.88 + }, + "max_charge_power_w": { + "anyOf": [ + { + "type": "number", + "exclusiveMinimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Max Charge Power W", + "description": "Maximum charging power in watts.", + "default": 5000 + }, + "initial_soc_percentage": { + "type": "integer", + "maximum": 100.0, + "minimum": 0.0, + "title": "Initial Soc Percentage", + "description": "An integer representing the state of charge of the battery at the **start** of the current hour (not the current state).", + "default": 0 + }, + "min_soc_percentage": { + "type": "integer", + "maximum": 100.0, + "minimum": 0.0, + "title": "Min Soc Percentage", + "description": "An integer representing the minimum state of charge (SOC) of the battery in percentage.", + "default": 0 + }, + "max_soc_percentage": { + "type": "integer", + "maximum": 100.0, + "minimum": 0.0, + "title": "Max Soc Percentage", + "description": "An integer representing the maximum state of charge (SOC) of the battery in percentage.", + "default": 100 + } + }, + "type": "object", + "required": [ + "capacity_wh" + ], + "title": "SolarPanelBatteryParameters" + }, + "ValidationError": { + "properties": { + "loc": { + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + }, + "type": "array", + "title": "Location" + }, + "msg": { + "type": "string", + "title": "Message" + }, + "type": { + "type": "string", + "title": "Error Type" + } + }, + "type": "object", + "required": [ + "loc", + "msg", + "type" + ], + "title": "ValidationError" + } + } + } } \ No newline at end of file diff --git a/requirements-dev.txt b/requirements-dev.txt index ee222c2..87416cc 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,9 +1,10 @@ -r requirements.txt +gitpython==3.1.44 linkify-it-py==2.0.3 myst-parser==4.0.0 sphinx==8.1.3 sphinx_rtd_theme==3.0.2 -sphinxcontrib-eval==0.0.3 +sphinx-tabs==3.4.7 pytest==8.3.4 pytest-cov==6.0.0 pytest-xprocess==1.0.2 diff --git a/scripts/generate_config_md.py b/scripts/generate_config_md.py index 4952260..7ec69a0 100755 --- a/scripts/generate_config_md.py +++ b/scripts/generate_config_md.py @@ -127,6 +127,10 @@ def generate_config_md() -> str: if non_prefixed_configs: markdown += generate_config_table_md(non_prefixed_configs, "Other Configuration Values") + # Assure the is no double \n at end of file + markdown = markdown.rstrip("\n") + markdown += "\n" + return markdown diff --git a/scripts/generate_openapi_md.py b/scripts/generate_openapi_md.py index 04000e7..fae2919 100755 --- a/scripts/generate_openapi_md.py +++ b/scripts/generate_openapi_md.py @@ -5,6 +5,8 @@ import argparse import json import sys +import git + if __package__ is None or __package__ == "": # uses current directory visibility import generate_openapi @@ -13,6 +15,47 @@ else: from . import generate_openapi +def akkudoktoreos_base_branch(): + """Find the remote branch from the Akkudoktor-EOS repository that the current branch is based on. + + This function searches through all branches in the Akkudoktor-EOS remote + to find the first commit of the remote branch taht is in the current branch and returns the name + of the remote branch (without the remote name). + + Returns: + str: The name of the remote branch (without the remote name) + that the first commit of the current branch is based on. + Returns None if no matching remote branch is found. + """ + repo = git.Repo(__file__, search_parent_directories=True) + + # Get the current branch + try: + current_branch = repo.active_branch.name + except: + # Maybe detached branch that has no name + return None + + first_commit = next(repo.iter_commits(current_branch, max_count=1)).hexsha + + # Iterate over all remote branches to find the first commit + for remote in repo.remotes: + if "https://github.com/Akkudoktor-EOS" in remote.url: + # Only search for Akkudoktor-EOS + for ref in remote.refs: + try: + # Check if the first commit of the current branch is in the remote branch history + commits = list(repo.iter_commits(ref.name)) + if any(commit.hexsha == first_commit for commit in commits): + # Remove remote name from the branch name + branch_name = "/".join(ref.name.split("/")[1:]) + return branch_name + except git.exc.GitCommandError: + continue + + return None + + def extract_info(openapi_json: dict) -> dict: """Extract basic information from OpenAPI JSON. @@ -113,13 +156,14 @@ def format_responses(responses: dict) -> str: return markdown -def format_endpoint(path: str, method: str, details: dict) -> str: +def format_endpoint(path: str, method: str, details: dict, devel: bool = False) -> str: """Format a single endpoint's details for the Markdown. Args: path (str): The endpoint path. method (str): The HTTP method. details (dict): The details of the endpoint. + devel (bool): Include development output. Returns: str: The formatted endpoint section in Markdown. @@ -140,8 +184,8 @@ def format_endpoint(path: str, method: str, details: dict) -> str: "[local](http://localhost:8503/docs#/default/" + link_summary + link_path + link_method ) # [swagger](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/fastapi_strompreis_strompreis_get) - swagger_path = ( - "[swagger](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/" + akkudoktoreos_main_path = ( + "[eos](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/main/openapi.json#/default/" + link_summary + link_path + link_method @@ -149,7 +193,19 @@ def format_endpoint(path: str, method: str, details: dict) -> str: markdown = f"## {method.upper()} {path}\n\n" - markdown += f"**Links**: {local_path}, {swagger_path}\n\n" + markdown += f"**Links**: {local_path}, {akkudoktoreos_main_path}" + if devel: + # Add link to akkudoktor branch the development has used + akkudoktor_branch = akkudoktoreos_base_branch() + if akkudoktor_branch is not None: + akkudoktoreos_base_path = ( + f"[devel](https://petstore3.swagger.io/?url=https://raw.githubusercontent.com/Akkudoktor-EOS/EOS/refs/heads/{akkudoktor_branch}/openapi.json#/default/" + + link_summary + + link_path + + link_method + ) + markdown += f", {akkudoktoreos_base_path}" + markdown += "\n\n" summary = details.get("summary", None) if summary: @@ -169,11 +225,12 @@ def format_endpoint(path: str, method: str, details: dict) -> str: return markdown -def openapi_to_markdown(openapi_json: dict) -> str: +def openapi_to_markdown(openapi_json: dict, devel: bool = False) -> str: """Convert OpenAPI JSON specification to a Markdown representation. Args: openapi_json (dict): The OpenAPI specification as a Python dictionary. + devel (bool): Include development output. Returns: str: The Markdown representation of the OpenAPI spec. @@ -216,6 +273,9 @@ def generate_openapi_md() -> str: def main(): """Main function to run the generation of the OpenAPI specification as Markdown.""" parser = argparse.ArgumentParser(description="Generate OpenAPI Specification as Markdown") + parser.add_argument( + "--devel", action="store_true", help="Create swagger link to development branch" + ) parser.add_argument( "--output-file", type=str, default=None, help="File to write the OpenAPI Specification to" ) diff --git a/tests/test_doc.py b/tests/test_doc.py new file mode 100644 index 0000000..7fc7173 --- /dev/null +++ b/tests/test_doc.py @@ -0,0 +1,100 @@ +import json +import sys +from pathlib import Path +from unittest.mock import patch + +import pytest + +DIR_PROJECT_ROOT = Path(__file__).parent.parent +DIR_TESTDATA = Path(__file__).parent / "testdata" + + +def test_openapi_spec_current(config_eos): + """Verify the openapi spec hasn´t changed.""" + expected_spec_path = DIR_PROJECT_ROOT / "openapi.json" + new_spec_path = DIR_TESTDATA / "openapi-new.json" + + with open(expected_spec_path) as f_expected: + expected_spec = json.load(f_expected) + + # Patch get_config and import within guard to patch global variables within the fastapi_server module. + with patch("akkudoktoreos.config.config.get_config", return_value=config_eos): + # Ensure the script works correctly as part of a package + root_dir = Path(__file__).resolve().parent.parent + sys.path.insert(0, str(root_dir)) + from scripts import generate_openapi + + spec = generate_openapi.generate_openapi() + + with open(new_spec_path, "w") as f_new: + json.dump(spec, f_new, indent=4, sort_keys=True) + + # Serialize to ensure comparison is consistent + spec_str = json.dumps(spec, indent=4, sort_keys=True) + expected_spec_str = json.dumps(expected_spec, indent=4, sort_keys=True) + + try: + assert spec_str == expected_spec_str + except AssertionError as e: + pytest.fail( + f"Expected {new_spec_path} to equal {expected_spec_path}.\n" + + f"If ok: `make gen-docs` or `cp {new_spec_path} {expected_spec_path}`\n" + ) + + +def test_openapi_md_current(config_eos): + """Verify the generated openapi markdown hasn´t changed.""" + expected_spec_md_path = DIR_PROJECT_ROOT / "docs" / "_generated" / "openapi.md" + new_spec_md_path = DIR_TESTDATA / "openapi-new.md" + + with open(expected_spec_md_path) as f_expected: + expected_spec_md = f_expected.read() + + # Patch get_config and import within guard to patch global variables within the fastapi_server module. + with patch("akkudoktoreos.config.config.get_config", return_value=config_eos): + # Ensure the script works correctly as part of a package + root_dir = Path(__file__).resolve().parent.parent + sys.path.insert(0, str(root_dir)) + from scripts import generate_openapi_md + + spec_md = generate_openapi_md.generate_openapi_md() + + with open(new_spec_md_path, "w") as f_new: + f_new.write(spec_md) + + try: + assert spec_md == expected_spec_md + except AssertionError as e: + pytest.fail( + f"Expected {new_spec_md_path} to equal {expected_spec_md_path}.\n" + + f"If ok: `make gen-docs` or `cp {new_spec_md_path} {expected_spec_md_path}`\n" + ) + + +def test_config_md_current(config_eos): + """Verify the generated configuration markdown hasn´t changed.""" + expected_config_md_path = DIR_PROJECT_ROOT / "docs" / "_generated" / "config.md" + new_config_md_path = DIR_TESTDATA / "config-new.md" + + with open(expected_config_md_path) as f_expected: + expected_config_md = f_expected.read() + + # Patch get_config and import within guard to patch global variables within the fastapi_server module. + with patch("akkudoktoreos.config.config.get_config", return_value=config_eos): + # Ensure the script works correctly as part of a package + root_dir = Path(__file__).resolve().parent.parent + sys.path.insert(0, str(root_dir)) + from scripts import generate_config_md + + config_md = generate_config_md.generate_config_md() + + with open(new_config_md_path, "w") as f_new: + f_new.write(config_md) + + try: + assert config_md == expected_config_md + except AssertionError as e: + pytest.fail( + f"Expected {new_config_md_path} to equal {expected_config_md_path}.\n" + + f"If ok: `make gen-docs` or `cp {new_config_md_path} {expected_config_md_path}`\n" + ) diff --git a/tests/test_openapi.py b/tests/test_openapi.py deleted file mode 100644 index 29c514a..0000000 --- a/tests/test_openapi.py +++ /dev/null @@ -1,56 +0,0 @@ -import json -import sys -from pathlib import Path -from unittest.mock import patch - -import pytest - -DIR_PROJECT_ROOT = Path(__file__).parent.parent -DIR_TESTDATA = Path(__file__).parent / "testdata" - - -def test_openapi_spec_current(config_eos): - """Verify the openapi spec hasn´t changed.""" - expected_spec_path = DIR_PROJECT_ROOT / "openapi.json" - new_spec_path = DIR_TESTDATA / "openapi-new.json" - expected_spec_md_path = DIR_TESTDATA / "openapi.md" - new_spec_md_path = DIR_TESTDATA / "openapi-new.md" - - with open(expected_spec_path) as f_expected: - expected_spec = json.load(f_expected) - with open(expected_spec_md_path) as f_expected: - expected_spec_md = f_expected.read() - - # Patch get_config and import within guard to patch global variables within the fastapi_server module. - with patch("akkudoktoreos.config.config.get_config", return_value=config_eos): - # Ensure the script works correctly as part of a package - root_dir = Path(__file__).resolve().parent.parent - sys.path.insert(0, str(root_dir)) - from scripts import generate_openapi, generate_openapi_md - - spec = generate_openapi.generate_openapi() - spec_md = generate_openapi_md.generate_openapi_md() - - with open(new_spec_path, "w") as f_new: - json.dump(spec, f_new, indent=4, sort_keys=True) - with open(new_spec_md_path, "w") as f_new: - f_new.write(spec_md) - - # Serialize to ensure comparison is consistent - spec_str = json.dumps(spec, indent=4, sort_keys=True) - expected_spec_str = json.dumps(expected_spec, indent=4, sort_keys=True) - - try: - assert spec_str == expected_spec_str - except AssertionError as e: - pytest.fail( - f"Expected {new_spec_path} to equal {expected_spec_path}.\n" - + f"If ok: cp {new_spec_path} {expected_spec_path}\n" - ) - try: - assert spec_md == expected_spec_md - except AssertionError as e: - pytest.fail( - f"Expected {new_spec_md_path} to equal {expected_spec_md_path}.\n" - + f"If ok: cp {new_spec_md_path} {expected_spec_md_path}\n" - )