From d74a56b75a695db318cff2c140e6e0829c8b5db0 Mon Sep 17 00:00:00 2001 From: Dominique Lasserre Date: Wed, 15 Jan 2025 00:54:45 +0100 Subject: [PATCH] Documentation: Support nested config * Add examples to pydantic models. --- docs/_generated/config.md | 1224 +- docs/_static/eos.css | 3 + docs/conf.py | 1 + openapi.json | 15696 +++++++--------- scripts/generate_config_md.py | 314 +- src/akkudoktoreos/config/config.py | 7 +- src/akkudoktoreos/core/logsettings.py | 6 +- src/akkudoktoreos/core/pydantic.py | 13 +- src/akkudoktoreos/devices/battery.py | 35 +- src/akkudoktoreos/devices/devicesabc.py | 9 +- src/akkudoktoreos/devices/generic.py | 6 +- src/akkudoktoreos/devices/inverter.py | 10 +- src/akkudoktoreos/devices/settings.py | 8 +- src/akkudoktoreos/measurement/measurement.py | 26 +- .../optimization/optimization.py | 2 +- src/akkudoktoreos/prediction/elecprice.py | 12 +- .../prediction/elecpriceimport.py | 5 +- src/akkudoktoreos/prediction/load.py | 8 +- .../prediction/loadakkudoktor.py | 2 +- src/akkudoktoreos/prediction/loadimport.py | 8 +- src/akkudoktoreos/prediction/prediction.py | 2 +- src/akkudoktoreos/prediction/pvforecast.py | 194 +- .../prediction/pvforecastimport.py | 5 +- src/akkudoktoreos/prediction/weather.py | 10 +- src/akkudoktoreos/prediction/weatherimport.py | 8 +- src/akkudoktoreos/server/server.py | 2 +- src/akkudoktoreos/utils/utils.py | 2 + src/akkudoktoreos/utils/visualize.py | 4 +- tests/test_dataabc.py | 2 +- 29 files changed, 8200 insertions(+), 9424 deletions(-) create mode 100644 docs/_static/eos.css diff --git a/docs/_generated/config.md b/docs/_generated/config.md index e8ea32d..b9a783f 100644 --- a/docs/_generated/config.md +++ b/docs/_generated/config.md @@ -1,309 +1,1017 @@ # Configuration Table -## General Configuration Values +## Settings for common configuration -:::{table} General Configuration Values -:widths: 10 10 5 5 30 +General configuration to set directories of cache and output files. + +:::{table} general +:widths: 10 20 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. | +| Name | Environment Variable | Type | Read-Only | Default | Description | +| ---- | -------------------- | ---- | --------- | ------- | ----------- | +| data_folder_path | `EOS_GENERAL__DATA_FOLDER_PATH` | `Optional[pathlib.Path]` | `rw` | `None` | Path to EOS data directory. | +| data_output_subpath | `EOS_GENERAL__DATA_OUTPUT_SUBPATH` | `Optional[pathlib.Path]` | `rw` | `output` | Sub-path for the EOS output data directory. | +| data_cache_subpath | `EOS_GENERAL__DATA_CACHE_SUBPATH` | `Optional[pathlib.Path]` | `rw` | `cache` | Sub-path for the EOS cache data directory. | +| data_output_path | | `Optional[pathlib.Path]` | `ro` | `N/A` | Compute data_output_path based on data_folder_path. | +| data_cache_path | | `Optional[pathlib.Path]` | `ro` | `N/A` | Compute data_cache_path based on data_folder_path. | ::: -## Battery Device Simulation Configuration +### Example Input -:::{table} Battery Device Simulation Configuration -:widths: 10 10 5 5 30 -:align: left +```{eval-rst} +.. code-block:: json -| 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 [%]. | -::: + { + "general": { + "data_folder_path": null, + "data_output_subpath": "output", + "data_cache_subpath": "cache" + } + } +``` -## Battery Electric Vehicle Device Simulation Configuration +### Example Output -:::{table} Battery Electric Vehicle Device Simulation Configuration -:widths: 10 10 5 5 30 -:align: left +```{eval-rst} +.. code-block:: json -| 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). | -::: + { + "general": { + "data_folder_path": null, + "data_output_subpath": "output", + "data_cache_subpath": "cache", + "data_output_path": null, + "data_cache_path": null + } + } +``` ## Logging Configuration -:::{table} Logging Configuration +:::{table} logging +:widths: 10 20 10 5 5 30 +:align: left + +| Name | Environment Variable | Type | Read-Only | Default | Description | +| ---- | -------------------- | ---- | --------- | ------- | ----------- | +| logging_level_default | `EOS_LOGGING__LOGGING_LEVEL_DEFAULT` | `Optional[str]` | `rw` | `None` | EOS default logging level. | +| logging_level_root | | `str` | `ro` | `N/A` | Root logger logging level. | +::: + +### Example Input + +```{eval-rst} +.. code-block:: json + + { + "logging": { + "logging_level_default": "INFO" + } + } +``` + +### Example Output + +```{eval-rst} +.. code-block:: json + + { + "logging": { + "logging_level_default": "INFO", + "logging_level_root": "INFO" + } + } +``` + +## Base configuration for devices simulation settings + +:::{table} devices +:widths: 10 20 10 5 5 30 +:align: left + +| Name | Environment Variable | Type | Read-Only | Default | Description | +| ---- | -------------------- | ---- | --------- | ------- | ----------- | +| batteries | `EOS_DEVICES__BATTERIES` | `Optional[list[akkudoktoreos.devices.battery.BaseBatteryParameters]]` | `rw` | `None` | List of battery/ev devices | +| inverters | `EOS_DEVICES__INVERTERS` | `Optional[list[akkudoktoreos.devices.inverter.InverterParameters]]` | `rw` | `None` | List of inverters | +| home_appliances | `EOS_DEVICES__HOME_APPLIANCES` | `Optional[list[akkudoktoreos.devices.generic.HomeApplianceParameters]]` | `rw` | `None` | List of home appliances | +::: + +### Example Input/Output + +```{eval-rst} +.. code-block:: json + + { + "devices": { + "batteries": [ + { + "device_id": "battery1", + "hours": null, + "capacity_wh": 8000, + "charging_efficiency": 0.88, + "discharging_efficiency": 0.88, + "max_charge_power_w": 5000, + "initial_soc_percentage": 0, + "min_soc_percentage": 0, + "max_soc_percentage": 100 + } + ], + "inverters": [], + "home_appliances": [] + } + } +``` + +### Home Appliance Device Simulation Configuration + +:::{table} devices::home_appliances::list :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. | +| device_id | `str` | `rw` | `required` | ID of home appliance | +| hours | `Optional[int]` | `rw` | `None` | Number of prediction hours. Defaults to global config prediction hours. | +| consumption_wh | `int` | `rw` | `required` | An integer representing the energy consumption of a household device in watt-hours. | +| duration_h | `int` | `rw` | `required` | An integer representing the usage duration of a household device in hours. | ::: +#### Example Input/Output + +```{eval-rst} +.. code-block:: json + + { + "devices": { + "home_appliances": [ + { + "device_id": "dishwasher", + "hours": null, + "consumption_wh": 2000, + "duration_h": 3 + } + ] + } + } +``` + +### Inverter Device Simulation Configuration + +:::{table} devices::inverters::list +:widths: 10 10 5 5 30 +:align: left + +| Name | Type | Read-Only | Default | Description | +| ---- | ---- | --------- | ------- | ----------- | +| device_id | `str` | `rw` | `required` | ID of inverter | +| hours | `Optional[int]` | `rw` | `None` | Number of prediction hours. Defaults to global config prediction hours. | +| max_power_wh | `float` | `rw` | `required` | - | +| battery | `Optional[str]` | `rw` | `None` | ID of battery | +::: + +#### Example Input/Output + +```{eval-rst} +.. code-block:: json + + { + "devices": { + "inverters": [ + { + "device_id": "inverter1", + "hours": null, + "max_power_wh": 10000.0, + "battery": null + } + ] + } + } +``` + +### Battery Device Simulation Configuration + +:::{table} devices::batteries::list +:widths: 10 10 5 5 30 +:align: left + +| Name | Type | Read-Only | Default | Description | +| ---- | ---- | --------- | ------- | ----------- | +| device_id | `str` | `rw` | `required` | ID of battery | +| hours | `Optional[int]` | `rw` | `None` | Number of prediction hours. Defaults to global config prediction hours. | +| capacity_wh | `int` | `rw` | `required` | An integer representing the capacity of the battery in watt-hours. | +| charging_efficiency | `float` | `rw` | `0.88` | A float representing the charging efficiency of the battery. | +| discharging_efficiency | `float` | `rw` | `0.88` | A float representing the discharge efficiency of the battery. | +| max_charge_power_w | `Optional[float]` | `rw` | `5000` | Maximum charging power in watts. | +| initial_soc_percentage | `int` | `rw` | `0` | An integer representing the state of charge of the battery at the **start** of the current hour (not the current state). | +| min_soc_percentage | `int` | `rw` | `0` | An integer representing the minimum state of charge (SOC) of the battery in percentage. | +| max_soc_percentage | `int` | `rw` | `100` | An integer representing the maximum state of charge (SOC) of the battery in percentage. | +::: + +#### Example Input/Output + +```{eval-rst} +.. code-block:: json + + { + "devices": { + "batteries": [ + { + "device_id": "battery1", + "hours": null, + "capacity_wh": 8000, + "charging_efficiency": 0.88, + "discharging_efficiency": 0.88, + "max_charge_power_w": 5000.0, + "initial_soc_percentage": 42, + "min_soc_percentage": 10, + "max_soc_percentage": 100 + } + ] + } + } +``` + ## Measurement Configuration -:::{table} Measurement Configuration +:::{table} measurement +:widths: 10 20 10 5 5 30 +:align: left + +| Name | Environment Variable | Type | Read-Only | Default | Description | +| ---- | -------------------- | ---- | --------- | ------- | ----------- | +| measurement_load0_name | `EOS_MEASUREMENT__MEASUREMENT_LOAD0_NAME` | `Optional[str]` | `rw` | `None` | Name of the load0 source | +| measurement_load1_name | `EOS_MEASUREMENT__MEASUREMENT_LOAD1_NAME` | `Optional[str]` | `rw` | `None` | Name of the load1 source | +| measurement_load2_name | `EOS_MEASUREMENT__MEASUREMENT_LOAD2_NAME` | `Optional[str]` | `rw` | `None` | Name of the load2 source | +| measurement_load3_name | `EOS_MEASUREMENT__MEASUREMENT_LOAD3_NAME` | `Optional[str]` | `rw` | `None` | Name of the load3 source | +| measurement_load4_name | `EOS_MEASUREMENT__MEASUREMENT_LOAD4_NAME` | `Optional[str]` | `rw` | `None` | Name of the load4 source | +::: + +### Example Input/Output + +```{eval-rst} +.. code-block:: json + + { + "measurement": { + "measurement_load0_name": "Household", + "measurement_load1_name": null, + "measurement_load2_name": null, + "measurement_load3_name": null, + "measurement_load4_name": null + } + } +``` + +## General Optimization Configuration + +Attributes: + optimization_hours (int): Number of hours for optimizations. + +:::{table} optimization +:widths: 10 20 10 5 5 30 +:align: left + +| Name | Environment Variable | Type | Read-Only | Default | Description | +| ---- | -------------------- | ---- | --------- | ------- | ----------- | +| optimization_hours | `EOS_OPTIMIZATION__OPTIMIZATION_HOURS` | `Optional[int]` | `rw` | `48` | Number of hours into the future for optimizations. | +| optimization_penalty | `EOS_OPTIMIZATION__OPTIMIZATION_PENALTY` | `Optional[int]` | `rw` | `10` | Penalty factor used in optimization. | +| optimization_ev_available_charge_rates_percent | `EOS_OPTIMIZATION__OPTIMIZATION_EV_AVAILABLE_CHARGE_RATES_PERCENT` | `Optional[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. | +::: + +### Example Input/Output + +```{eval-rst} +.. code-block:: json + + { + "optimization": { + "optimization_hours": 48, + "optimization_penalty": 10, + "optimization_ev_available_charge_rates_percent": [ + 0.0, + 0.375, + 0.5, + 0.625, + 0.75, + 0.875, + 1.0 + ] + } + } +``` + +## General Prediction Configuration + +This class provides configuration for prediction settings, allowing users to specify +parameters such as the forecast duration (in hours) and location (latitude and longitude). +Validators ensure each parameter is within a specified range. A computed property, `timezone`, +determines the time zone based on latitude and longitude. + +Attributes: + prediction_hours (Optional[int]): Number of hours into the future for predictions. + Must be non-negative. + prediction_historic_hours (Optional[int]): Number of hours into the past for historical data. + Must be non-negative. + latitude (Optional[float]): Latitude in degrees, must be between -90 and 90. + longitude (Optional[float]): Longitude in degrees, must be between -180 and 180. + +Properties: + timezone (Optional[str]): Computed time zone string based on the specified latitude + and longitude. + +Validators: + validate_prediction_hours (int): Ensures `prediction_hours` is a non-negative integer. + validate_prediction_historic_hours (int): Ensures `prediction_historic_hours` is a non-negative integer. + validate_latitude (float): Ensures `latitude` is within the range -90 to 90. + validate_longitude (float): Ensures `longitude` is within the range -180 to 180. + +:::{table} prediction +:widths: 10 20 10 5 5 30 +:align: left + +| Name | Environment Variable | Type | Read-Only | Default | Description | +| ---- | -------------------- | ---- | --------- | ------- | ----------- | +| prediction_hours | `EOS_PREDICTION__PREDICTION_HOURS` | `Optional[int]` | `rw` | `48` | Number of hours into the future for predictions | +| prediction_historic_hours | `EOS_PREDICTION__PREDICTION_HISTORIC_HOURS` | `Optional[int]` | `rw` | `48` | Number of hours into the past for historical predictions data | +| latitude | `EOS_PREDICTION__LATITUDE` | `Optional[float]` | `rw` | `52.52` | Latitude in decimal degrees, between -90 and 90, north is positive (ISO 19115) (°) | +| longitude | `EOS_PREDICTION__LONGITUDE` | `Optional[float]` | `rw` | `13.405` | Longitude in decimal degrees, within -180 to 180 (°) | +| timezone | | `Optional[str]` | `ro` | `N/A` | Compute timezone based on latitude and longitude. | +::: + +### Example Input + +```{eval-rst} +.. code-block:: json + + { + "prediction": { + "prediction_hours": 48, + "prediction_historic_hours": 48, + "latitude": 52.52, + "longitude": 13.405 + } + } +``` + +### Example Output + +```{eval-rst} +.. code-block:: json + + { + "prediction": { + "prediction_hours": 48, + "prediction_historic_hours": 48, + "latitude": 52.52, + "longitude": 13.405, + "timezone": "Europe/Berlin" + } + } +``` + +## Electricity Price Prediction Configuration + +:::{table} elecprice +:widths: 10 20 10 5 5 30 +:align: left + +| Name | Environment Variable | Type | Read-Only | Default | Description | +| ---- | -------------------- | ---- | --------- | ------- | ----------- | +| elecprice_provider | `EOS_ELECPRICE__ELECPRICE_PROVIDER` | `Optional[str]` | `rw` | `None` | Electricity price provider id of provider to be used. | +| elecprice_charges_kwh | `EOS_ELECPRICE__ELECPRICE_CHARGES_KWH` | `Optional[float]` | `rw` | `None` | Electricity price charges (€/kWh). | +| provider_settings | `EOS_ELECPRICE__PROVIDER_SETTINGS` | `Optional[akkudoktoreos.prediction.elecpriceimport.ElecPriceImportCommonSettings]` | `rw` | `None` | Provider settings | +::: + +### Example Input/Output + +```{eval-rst} +.. code-block:: json + + { + "elecprice": { + "elecprice_provider": "ElecPriceAkkudoktor", + "elecprice_charges_kwh": 0.21, + "provider_settings": null + } + } +``` + +### Common settings for elecprice data import from file or JSON String + +:::{table} elecprice::provider_settings :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') | +| 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. | ::: +#### Example Input/Output + +```{eval-rst} +.. code-block:: json + + { + "elecprice": { + "provider_settings": { + "elecpriceimport_file_path": null, + "elecpriceimport_json": "{\"elecprice_marketprice_wh\": [0.0003384, 0.0003318, 0.0003284]}" + } + } + } +``` + +## Load Prediction Configuration + +:::{table} load +:widths: 10 20 10 5 5 30 +:align: left + +| Name | Environment Variable | Type | Read-Only | Default | Description | +| ---- | -------------------- | ---- | --------- | ------- | ----------- | +| load_provider | `EOS_LOAD__LOAD_PROVIDER` | `Optional[str]` | `rw` | `None` | Load provider id of provider to be used. | +| provider_settings | `EOS_LOAD__PROVIDER_SETTINGS` | `Union[akkudoktoreos.prediction.loadakkudoktor.LoadAkkudoktorCommonSettings, akkudoktoreos.prediction.loadimport.LoadImportCommonSettings, NoneType]` | `rw` | `None` | Provider settings | +::: + +### Example Input/Output + +```{eval-rst} +.. code-block:: json + + { + "load": { + "load_provider": "LoadAkkudoktor", + "provider_settings": null + } + } +``` + +### Common settings for load data import from file or JSON string + +:::{table} load::provider_settings +: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. | +::: + +#### Example Input/Output + +```{eval-rst} +.. code-block:: json + + { + "load": { + "provider_settings": { + "load_import_file_path": null, + "load_import_json": "{\"load0_mean\": [676.71, 876.19, 527.13]}" + } + } + } +``` + +### Common settings for load data import from file + +:::{table} load::provider_settings +:widths: 10 10 5 5 30 +:align: left + +| Name | Type | Read-Only | Default | Description | +| ---- | ---- | --------- | ------- | ----------- | +| loadakkudoktor_year_energy | `Optional[float]` | `rw` | `None` | Yearly energy consumption (kWh). | +::: + +#### Example Input/Output + +```{eval-rst} +.. code-block:: json + + { + "load": { + "provider_settings": { + "loadakkudoktor_year_energy": 40421.0 + } + } + } +``` + ## PV Forecast Configuration -:::{table} PV Forecast Configuration +:::{table} pvforecast +:widths: 10 20 10 5 5 30 +:align: left + +| Name | Environment Variable | Type | Read-Only | Default | Description | +| ---- | -------------------- | ---- | --------- | ------- | ----------- | +| pvforecast_provider | `EOS_PVFORECAST__PVFORECAST_PROVIDER` | `Optional[str]` | `rw` | `None` | PVForecast provider id of provider to be used. | +| pvforecast0_surface_tilt | `EOS_PVFORECAST__PVFORECAST0_SURFACE_TILT` | `Optional[float]` | `rw` | `None` | Tilt angle from horizontal plane. Ignored for two-axis tracking. | +| pvforecast0_surface_azimuth | `EOS_PVFORECAST__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_userhorizon | `EOS_PVFORECAST__PVFORECAST0_USERHORIZON` | `Optional[List[float]]` | `rw` | `None` | Elevation of horizon in degrees, at equally spaced azimuth clockwise from north. | +| pvforecast0_peakpower | `EOS_PVFORECAST__PVFORECAST0_PEAKPOWER` | `Optional[float]` | `rw` | `None` | Nominal power of PV system in kW. | +| pvforecast0_pvtechchoice | `EOS_PVFORECAST__PVFORECAST0_PVTECHCHOICE` | `Optional[str]` | `rw` | `crystSi` | PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'. | +| pvforecast0_mountingplace | `EOS_PVFORECAST__PVFORECAST0_MOUNTINGPLACE` | `Optional[str]` | `rw` | `free` | Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated. | +| pvforecast0_loss | `EOS_PVFORECAST__PVFORECAST0_LOSS` | `Optional[float]` | `rw` | `14.0` | Sum of PV system losses in percent | +| pvforecast0_trackingtype | `EOS_PVFORECAST__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_optimal_surface_tilt | `EOS_PVFORECAST__PVFORECAST0_OPTIMAL_SURFACE_TILT` | `Optional[bool]` | `rw` | `False` | Calculate the optimum tilt angle. Ignored for two-axis tracking. | +| pvforecast0_optimalangles | `EOS_PVFORECAST__PVFORECAST0_OPTIMALANGLES` | `Optional[bool]` | `rw` | `False` | Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking. | +| pvforecast0_albedo | `EOS_PVFORECAST__PVFORECAST0_ALBEDO` | `Optional[float]` | `rw` | `None` | Proportion of the light hitting the ground that it reflects back. | +| pvforecast0_module_model | `EOS_PVFORECAST__PVFORECAST0_MODULE_MODEL` | `Optional[str]` | `rw` | `None` | Model of the PV modules of this plane. | +| pvforecast0_inverter_model | `EOS_PVFORECAST__PVFORECAST0_INVERTER_MODEL` | `Optional[str]` | `rw` | `None` | Model of the inverter of this plane. | +| pvforecast0_inverter_paco | `EOS_PVFORECAST__PVFORECAST0_INVERTER_PACO` | `Optional[int]` | `rw` | `None` | AC power rating of the inverter. [W] | +| pvforecast0_modules_per_string | `EOS_PVFORECAST__PVFORECAST0_MODULES_PER_STRING` | `Optional[int]` | `rw` | `None` | Number of the PV modules of the strings of this plane. | +| pvforecast0_strings_per_inverter | `EOS_PVFORECAST__PVFORECAST0_STRINGS_PER_INVERTER` | `Optional[int]` | `rw` | `None` | Number of the strings of the inverter of this plane. | +| pvforecast1_surface_tilt | `EOS_PVFORECAST__PVFORECAST1_SURFACE_TILT` | `Optional[float]` | `rw` | `None` | Tilt angle from horizontal plane. Ignored for two-axis tracking. | +| pvforecast1_surface_azimuth | `EOS_PVFORECAST__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_userhorizon | `EOS_PVFORECAST__PVFORECAST1_USERHORIZON` | `Optional[List[float]]` | `rw` | `None` | Elevation of horizon in degrees, at equally spaced azimuth clockwise from north. | +| pvforecast1_peakpower | `EOS_PVFORECAST__PVFORECAST1_PEAKPOWER` | `Optional[float]` | `rw` | `None` | Nominal power of PV system in kW. | +| pvforecast1_pvtechchoice | `EOS_PVFORECAST__PVFORECAST1_PVTECHCHOICE` | `Optional[str]` | `rw` | `crystSi` | PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'. | +| pvforecast1_mountingplace | `EOS_PVFORECAST__PVFORECAST1_MOUNTINGPLACE` | `Optional[str]` | `rw` | `free` | Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated. | +| pvforecast1_loss | `EOS_PVFORECAST__PVFORECAST1_LOSS` | `Optional[float]` | `rw` | `14.0` | Sum of PV system losses in percent | +| pvforecast1_trackingtype | `EOS_PVFORECAST__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_optimal_surface_tilt | `EOS_PVFORECAST__PVFORECAST1_OPTIMAL_SURFACE_TILT` | `Optional[bool]` | `rw` | `False` | Calculate the optimum tilt angle. Ignored for two-axis tracking. | +| pvforecast1_optimalangles | `EOS_PVFORECAST__PVFORECAST1_OPTIMALANGLES` | `Optional[bool]` | `rw` | `False` | Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking. | +| pvforecast1_albedo | `EOS_PVFORECAST__PVFORECAST1_ALBEDO` | `Optional[float]` | `rw` | `None` | Proportion of the light hitting the ground that it reflects back. | +| pvforecast1_module_model | `EOS_PVFORECAST__PVFORECAST1_MODULE_MODEL` | `Optional[str]` | `rw` | `None` | Model of the PV modules of this plane. | +| pvforecast1_inverter_model | `EOS_PVFORECAST__PVFORECAST1_INVERTER_MODEL` | `Optional[str]` | `rw` | `None` | Model of the inverter of this plane. | +| pvforecast1_inverter_paco | `EOS_PVFORECAST__PVFORECAST1_INVERTER_PACO` | `Optional[int]` | `rw` | `None` | AC power rating of the inverter. [W] | +| pvforecast1_modules_per_string | `EOS_PVFORECAST__PVFORECAST1_MODULES_PER_STRING` | `Optional[int]` | `rw` | `None` | Number of the PV modules of the strings of this plane. | +| pvforecast1_strings_per_inverter | `EOS_PVFORECAST__PVFORECAST1_STRINGS_PER_INVERTER` | `Optional[int]` | `rw` | `None` | Number of the strings of the inverter of this plane. | +| pvforecast2_surface_tilt | `EOS_PVFORECAST__PVFORECAST2_SURFACE_TILT` | `Optional[float]` | `rw` | `None` | Tilt angle from horizontal plane. Ignored for two-axis tracking. | +| pvforecast2_surface_azimuth | `EOS_PVFORECAST__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_userhorizon | `EOS_PVFORECAST__PVFORECAST2_USERHORIZON` | `Optional[List[float]]` | `rw` | `None` | Elevation of horizon in degrees, at equally spaced azimuth clockwise from north. | +| pvforecast2_peakpower | `EOS_PVFORECAST__PVFORECAST2_PEAKPOWER` | `Optional[float]` | `rw` | `None` | Nominal power of PV system in kW. | +| pvforecast2_pvtechchoice | `EOS_PVFORECAST__PVFORECAST2_PVTECHCHOICE` | `Optional[str]` | `rw` | `crystSi` | PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'. | +| pvforecast2_mountingplace | `EOS_PVFORECAST__PVFORECAST2_MOUNTINGPLACE` | `Optional[str]` | `rw` | `free` | Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated. | +| pvforecast2_loss | `EOS_PVFORECAST__PVFORECAST2_LOSS` | `Optional[float]` | `rw` | `14.0` | Sum of PV system losses in percent | +| pvforecast2_trackingtype | `EOS_PVFORECAST__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_optimal_surface_tilt | `EOS_PVFORECAST__PVFORECAST2_OPTIMAL_SURFACE_TILT` | `Optional[bool]` | `rw` | `False` | Calculate the optimum tilt angle. Ignored for two-axis tracking. | +| pvforecast2_optimalangles | `EOS_PVFORECAST__PVFORECAST2_OPTIMALANGLES` | `Optional[bool]` | `rw` | `False` | Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking. | +| pvforecast2_albedo | `EOS_PVFORECAST__PVFORECAST2_ALBEDO` | `Optional[float]` | `rw` | `None` | Proportion of the light hitting the ground that it reflects back. | +| pvforecast2_module_model | `EOS_PVFORECAST__PVFORECAST2_MODULE_MODEL` | `Optional[str]` | `rw` | `None` | Model of the PV modules of this plane. | +| pvforecast2_inverter_model | `EOS_PVFORECAST__PVFORECAST2_INVERTER_MODEL` | `Optional[str]` | `rw` | `None` | Model of the inverter of this plane. | +| pvforecast2_inverter_paco | `EOS_PVFORECAST__PVFORECAST2_INVERTER_PACO` | `Optional[int]` | `rw` | `None` | AC power rating of the inverter. [W] | +| pvforecast2_modules_per_string | `EOS_PVFORECAST__PVFORECAST2_MODULES_PER_STRING` | `Optional[int]` | `rw` | `None` | Number of the PV modules of the strings of this plane. | +| pvforecast2_strings_per_inverter | `EOS_PVFORECAST__PVFORECAST2_STRINGS_PER_INVERTER` | `Optional[int]` | `rw` | `None` | Number of the strings of the inverter of this plane. | +| pvforecast3_surface_tilt | `EOS_PVFORECAST__PVFORECAST3_SURFACE_TILT` | `Optional[float]` | `rw` | `None` | Tilt angle from horizontal plane. Ignored for two-axis tracking. | +| pvforecast3_surface_azimuth | `EOS_PVFORECAST__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_userhorizon | `EOS_PVFORECAST__PVFORECAST3_USERHORIZON` | `Optional[List[float]]` | `rw` | `None` | Elevation of horizon in degrees, at equally spaced azimuth clockwise from north. | +| pvforecast3_peakpower | `EOS_PVFORECAST__PVFORECAST3_PEAKPOWER` | `Optional[float]` | `rw` | `None` | Nominal power of PV system in kW. | +| pvforecast3_pvtechchoice | `EOS_PVFORECAST__PVFORECAST3_PVTECHCHOICE` | `Optional[str]` | `rw` | `crystSi` | PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'. | +| pvforecast3_mountingplace | `EOS_PVFORECAST__PVFORECAST3_MOUNTINGPLACE` | `Optional[str]` | `rw` | `free` | Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated. | +| pvforecast3_loss | `EOS_PVFORECAST__PVFORECAST3_LOSS` | `Optional[float]` | `rw` | `14.0` | Sum of PV system losses in percent | +| pvforecast3_trackingtype | `EOS_PVFORECAST__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_optimal_surface_tilt | `EOS_PVFORECAST__PVFORECAST3_OPTIMAL_SURFACE_TILT` | `Optional[bool]` | `rw` | `False` | Calculate the optimum tilt angle. Ignored for two-axis tracking. | +| pvforecast3_optimalangles | `EOS_PVFORECAST__PVFORECAST3_OPTIMALANGLES` | `Optional[bool]` | `rw` | `False` | Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking. | +| pvforecast3_albedo | `EOS_PVFORECAST__PVFORECAST3_ALBEDO` | `Optional[float]` | `rw` | `None` | Proportion of the light hitting the ground that it reflects back. | +| pvforecast3_module_model | `EOS_PVFORECAST__PVFORECAST3_MODULE_MODEL` | `Optional[str]` | `rw` | `None` | Model of the PV modules of this plane. | +| pvforecast3_inverter_model | `EOS_PVFORECAST__PVFORECAST3_INVERTER_MODEL` | `Optional[str]` | `rw` | `None` | Model of the inverter of this plane. | +| pvforecast3_inverter_paco | `EOS_PVFORECAST__PVFORECAST3_INVERTER_PACO` | `Optional[int]` | `rw` | `None` | AC power rating of the inverter. [W] | +| pvforecast3_modules_per_string | `EOS_PVFORECAST__PVFORECAST3_MODULES_PER_STRING` | `Optional[int]` | `rw` | `None` | Number of the PV modules of the strings of this plane. | +| pvforecast3_strings_per_inverter | `EOS_PVFORECAST__PVFORECAST3_STRINGS_PER_INVERTER` | `Optional[int]` | `rw` | `None` | Number of the strings of the inverter of this plane. | +| pvforecast4_surface_tilt | `EOS_PVFORECAST__PVFORECAST4_SURFACE_TILT` | `Optional[float]` | `rw` | `None` | Tilt angle from horizontal plane. Ignored for two-axis tracking. | +| pvforecast4_surface_azimuth | `EOS_PVFORECAST__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_userhorizon | `EOS_PVFORECAST__PVFORECAST4_USERHORIZON` | `Optional[List[float]]` | `rw` | `None` | Elevation of horizon in degrees, at equally spaced azimuth clockwise from north. | +| pvforecast4_peakpower | `EOS_PVFORECAST__PVFORECAST4_PEAKPOWER` | `Optional[float]` | `rw` | `None` | Nominal power of PV system in kW. | +| pvforecast4_pvtechchoice | `EOS_PVFORECAST__PVFORECAST4_PVTECHCHOICE` | `Optional[str]` | `rw` | `crystSi` | PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'. | +| pvforecast4_mountingplace | `EOS_PVFORECAST__PVFORECAST4_MOUNTINGPLACE` | `Optional[str]` | `rw` | `free` | Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated. | +| pvforecast4_loss | `EOS_PVFORECAST__PVFORECAST4_LOSS` | `Optional[float]` | `rw` | `14.0` | Sum of PV system losses in percent | +| pvforecast4_trackingtype | `EOS_PVFORECAST__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_optimal_surface_tilt | `EOS_PVFORECAST__PVFORECAST4_OPTIMAL_SURFACE_TILT` | `Optional[bool]` | `rw` | `False` | Calculate the optimum tilt angle. Ignored for two-axis tracking. | +| pvforecast4_optimalangles | `EOS_PVFORECAST__PVFORECAST4_OPTIMALANGLES` | `Optional[bool]` | `rw` | `False` | Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking. | +| pvforecast4_albedo | `EOS_PVFORECAST__PVFORECAST4_ALBEDO` | `Optional[float]` | `rw` | `None` | Proportion of the light hitting the ground that it reflects back. | +| pvforecast4_module_model | `EOS_PVFORECAST__PVFORECAST4_MODULE_MODEL` | `Optional[str]` | `rw` | `None` | Model of the PV modules of this plane. | +| pvforecast4_inverter_model | `EOS_PVFORECAST__PVFORECAST4_INVERTER_MODEL` | `Optional[str]` | `rw` | `None` | Model of the inverter of this plane. | +| pvforecast4_inverter_paco | `EOS_PVFORECAST__PVFORECAST4_INVERTER_PACO` | `Optional[int]` | `rw` | `None` | AC power rating of the inverter. [W] | +| pvforecast4_modules_per_string | `EOS_PVFORECAST__PVFORECAST4_MODULES_PER_STRING` | `Optional[int]` | `rw` | `None` | Number of the PV modules of the strings of this plane. | +| pvforecast4_strings_per_inverter | `EOS_PVFORECAST__PVFORECAST4_STRINGS_PER_INVERTER` | `Optional[int]` | `rw` | `None` | Number of the strings of the inverter of this plane. | +| pvforecast5_surface_tilt | `EOS_PVFORECAST__PVFORECAST5_SURFACE_TILT` | `Optional[float]` | `rw` | `None` | Tilt angle from horizontal plane. Ignored for two-axis tracking. | +| pvforecast5_surface_azimuth | `EOS_PVFORECAST__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_userhorizon | `EOS_PVFORECAST__PVFORECAST5_USERHORIZON` | `Optional[List[float]]` | `rw` | `None` | Elevation of horizon in degrees, at equally spaced azimuth clockwise from north. | +| pvforecast5_peakpower | `EOS_PVFORECAST__PVFORECAST5_PEAKPOWER` | `Optional[float]` | `rw` | `None` | Nominal power of PV system in kW. | +| pvforecast5_pvtechchoice | `EOS_PVFORECAST__PVFORECAST5_PVTECHCHOICE` | `Optional[str]` | `rw` | `crystSi` | PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'. | +| pvforecast5_mountingplace | `EOS_PVFORECAST__PVFORECAST5_MOUNTINGPLACE` | `Optional[str]` | `rw` | `free` | Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated. | +| pvforecast5_loss | `EOS_PVFORECAST__PVFORECAST5_LOSS` | `Optional[float]` | `rw` | `14.0` | Sum of PV system losses in percent | +| pvforecast5_trackingtype | `EOS_PVFORECAST__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_optimal_surface_tilt | `EOS_PVFORECAST__PVFORECAST5_OPTIMAL_SURFACE_TILT` | `Optional[bool]` | `rw` | `False` | Calculate the optimum tilt angle. Ignored for two-axis tracking. | +| pvforecast5_optimalangles | `EOS_PVFORECAST__PVFORECAST5_OPTIMALANGLES` | `Optional[bool]` | `rw` | `False` | Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking. | +| pvforecast5_albedo | `EOS_PVFORECAST__PVFORECAST5_ALBEDO` | `Optional[float]` | `rw` | `None` | Proportion of the light hitting the ground that it reflects back. | +| pvforecast5_module_model | `EOS_PVFORECAST__PVFORECAST5_MODULE_MODEL` | `Optional[str]` | `rw` | `None` | Model of the PV modules of this plane. | +| pvforecast5_inverter_model | `EOS_PVFORECAST__PVFORECAST5_INVERTER_MODEL` | `Optional[str]` | `rw` | `None` | Model of the inverter of this plane. | +| pvforecast5_inverter_paco | `EOS_PVFORECAST__PVFORECAST5_INVERTER_PACO` | `Optional[int]` | `rw` | `None` | AC power rating of the inverter. [W] | +| pvforecast5_modules_per_string | `EOS_PVFORECAST__PVFORECAST5_MODULES_PER_STRING` | `Optional[int]` | `rw` | `None` | Number of the PV modules of the strings of this plane. | +| pvforecast5_strings_per_inverter | `EOS_PVFORECAST__PVFORECAST5_STRINGS_PER_INVERTER` | `Optional[int]` | `rw` | `None` | Number of the strings of the inverter of this plane. | +| provider_settings | `EOS_PVFORECAST__PROVIDER_SETTINGS` | `Optional[akkudoktoreos.prediction.pvforecastimport.PVForecastImportCommonSettings]` | `rw` | `None` | Provider settings | +| pvforecast_planes | | `List[str]` | `ro` | `N/A` | Compute a list of active planes. | +| pvforecast_planes_peakpower | | `List[float]` | `ro` | `N/A` | Compute a list of the peak power per active planes. | +| pvforecast_planes_azimuth | | `List[float]` | `ro` | `N/A` | Compute a list of the azimuths 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_planes_inverter_paco | | `Any` | `ro` | `N/A` | Compute a list of the maximum power rating of the inverter per active planes. | +::: + +### Example Input + +```{eval-rst} +.. code-block:: json + + { + "pvforecast": { + "pvforecast_provider": "PVForecastAkkudoktor", + "pvforecast0_surface_tilt": 10.0, + "pvforecast0_surface_azimuth": 10.0, + "pvforecast0_userhorizon": [ + 10.0, + 20.0, + 30.0 + ], + "pvforecast0_peakpower": 5.0, + "pvforecast0_pvtechchoice": "crystSi", + "pvforecast0_mountingplace": "free", + "pvforecast0_loss": 14.0, + "pvforecast0_trackingtype": 0, + "pvforecast0_optimal_surface_tilt": false, + "pvforecast0_optimalangles": false, + "pvforecast0_albedo": null, + "pvforecast0_module_model": null, + "pvforecast0_inverter_model": null, + "pvforecast0_inverter_paco": 6000, + "pvforecast0_modules_per_string": 20, + "pvforecast0_strings_per_inverter": 2, + "pvforecast1_surface_tilt": 20.0, + "pvforecast1_surface_azimuth": 20.0, + "pvforecast1_userhorizon": [ + 5.0, + 15.0, + 25.0 + ], + "pvforecast1_peakpower": 3.5, + "pvforecast1_pvtechchoice": "crystSi", + "pvforecast1_mountingplace": "free", + "pvforecast1_loss": 14.0, + "pvforecast1_trackingtype": null, + "pvforecast1_optimal_surface_tilt": false, + "pvforecast1_optimalangles": false, + "pvforecast1_albedo": null, + "pvforecast1_module_model": null, + "pvforecast1_inverter_model": null, + "pvforecast1_inverter_paco": 4000, + "pvforecast1_modules_per_string": 20, + "pvforecast1_strings_per_inverter": 2, + "pvforecast2_surface_tilt": null, + "pvforecast2_surface_azimuth": null, + "pvforecast2_userhorizon": null, + "pvforecast2_peakpower": null, + "pvforecast2_pvtechchoice": null, + "pvforecast2_mountingplace": null, + "pvforecast2_loss": null, + "pvforecast2_trackingtype": null, + "pvforecast2_optimal_surface_tilt": null, + "pvforecast2_optimalangles": null, + "pvforecast2_albedo": null, + "pvforecast2_module_model": null, + "pvforecast2_inverter_model": null, + "pvforecast2_inverter_paco": null, + "pvforecast2_modules_per_string": null, + "pvforecast2_strings_per_inverter": null, + "pvforecast3_surface_tilt": null, + "pvforecast3_surface_azimuth": null, + "pvforecast3_userhorizon": null, + "pvforecast3_peakpower": null, + "pvforecast3_pvtechchoice": null, + "pvforecast3_mountingplace": null, + "pvforecast3_loss": null, + "pvforecast3_trackingtype": null, + "pvforecast3_optimal_surface_tilt": null, + "pvforecast3_optimalangles": null, + "pvforecast3_albedo": null, + "pvforecast3_module_model": null, + "pvforecast3_inverter_model": null, + "pvforecast3_inverter_paco": null, + "pvforecast3_modules_per_string": null, + "pvforecast3_strings_per_inverter": null, + "pvforecast4_surface_tilt": null, + "pvforecast4_surface_azimuth": null, + "pvforecast4_userhorizon": null, + "pvforecast4_peakpower": null, + "pvforecast4_pvtechchoice": null, + "pvforecast4_mountingplace": null, + "pvforecast4_loss": null, + "pvforecast4_trackingtype": null, + "pvforecast4_optimal_surface_tilt": null, + "pvforecast4_optimalangles": null, + "pvforecast4_albedo": null, + "pvforecast4_module_model": null, + "pvforecast4_inverter_model": null, + "pvforecast4_inverter_paco": null, + "pvforecast4_modules_per_string": null, + "pvforecast4_strings_per_inverter": null, + "pvforecast5_surface_tilt": null, + "pvforecast5_surface_azimuth": null, + "pvforecast5_userhorizon": null, + "pvforecast5_peakpower": null, + "pvforecast5_pvtechchoice": null, + "pvforecast5_mountingplace": null, + "pvforecast5_loss": null, + "pvforecast5_trackingtype": null, + "pvforecast5_optimal_surface_tilt": null, + "pvforecast5_optimalangles": null, + "pvforecast5_albedo": null, + "pvforecast5_module_model": null, + "pvforecast5_inverter_model": null, + "pvforecast5_inverter_paco": null, + "pvforecast5_modules_per_string": null, + "pvforecast5_strings_per_inverter": null, + "provider_settings": null + } + } +``` + +### Example Output + +```{eval-rst} +.. code-block:: json + + { + "pvforecast": { + "pvforecast_provider": "PVForecastAkkudoktor", + "pvforecast0_surface_tilt": 10.0, + "pvforecast0_surface_azimuth": 10.0, + "pvforecast0_userhorizon": [ + 10.0, + 20.0, + 30.0 + ], + "pvforecast0_peakpower": 5.0, + "pvforecast0_pvtechchoice": "crystSi", + "pvforecast0_mountingplace": "free", + "pvforecast0_loss": 14.0, + "pvforecast0_trackingtype": 0, + "pvforecast0_optimal_surface_tilt": false, + "pvforecast0_optimalangles": false, + "pvforecast0_albedo": null, + "pvforecast0_module_model": null, + "pvforecast0_inverter_model": null, + "pvforecast0_inverter_paco": 6000, + "pvforecast0_modules_per_string": 20, + "pvforecast0_strings_per_inverter": 2, + "pvforecast1_surface_tilt": 20.0, + "pvforecast1_surface_azimuth": 20.0, + "pvforecast1_userhorizon": [ + 5.0, + 15.0, + 25.0 + ], + "pvforecast1_peakpower": 3.5, + "pvforecast1_pvtechchoice": "crystSi", + "pvforecast1_mountingplace": "free", + "pvforecast1_loss": 14.0, + "pvforecast1_trackingtype": null, + "pvforecast1_optimal_surface_tilt": false, + "pvforecast1_optimalangles": false, + "pvforecast1_albedo": null, + "pvforecast1_module_model": null, + "pvforecast1_inverter_model": null, + "pvforecast1_inverter_paco": 4000, + "pvforecast1_modules_per_string": 20, + "pvforecast1_strings_per_inverter": 2, + "pvforecast2_surface_tilt": null, + "pvforecast2_surface_azimuth": null, + "pvforecast2_userhorizon": null, + "pvforecast2_peakpower": null, + "pvforecast2_pvtechchoice": null, + "pvforecast2_mountingplace": null, + "pvforecast2_loss": null, + "pvforecast2_trackingtype": null, + "pvforecast2_optimal_surface_tilt": null, + "pvforecast2_optimalangles": null, + "pvforecast2_albedo": null, + "pvforecast2_module_model": null, + "pvforecast2_inverter_model": null, + "pvforecast2_inverter_paco": null, + "pvforecast2_modules_per_string": null, + "pvforecast2_strings_per_inverter": null, + "pvforecast3_surface_tilt": null, + "pvforecast3_surface_azimuth": null, + "pvforecast3_userhorizon": null, + "pvforecast3_peakpower": null, + "pvforecast3_pvtechchoice": null, + "pvforecast3_mountingplace": null, + "pvforecast3_loss": null, + "pvforecast3_trackingtype": null, + "pvforecast3_optimal_surface_tilt": null, + "pvforecast3_optimalangles": null, + "pvforecast3_albedo": null, + "pvforecast3_module_model": null, + "pvforecast3_inverter_model": null, + "pvforecast3_inverter_paco": null, + "pvforecast3_modules_per_string": null, + "pvforecast3_strings_per_inverter": null, + "pvforecast4_surface_tilt": null, + "pvforecast4_surface_azimuth": null, + "pvforecast4_userhorizon": null, + "pvforecast4_peakpower": null, + "pvforecast4_pvtechchoice": null, + "pvforecast4_mountingplace": null, + "pvforecast4_loss": null, + "pvforecast4_trackingtype": null, + "pvforecast4_optimal_surface_tilt": null, + "pvforecast4_optimalangles": null, + "pvforecast4_albedo": null, + "pvforecast4_module_model": null, + "pvforecast4_inverter_model": null, + "pvforecast4_inverter_paco": null, + "pvforecast4_modules_per_string": null, + "pvforecast4_strings_per_inverter": null, + "pvforecast5_surface_tilt": null, + "pvforecast5_surface_azimuth": null, + "pvforecast5_userhorizon": null, + "pvforecast5_peakpower": null, + "pvforecast5_pvtechchoice": null, + "pvforecast5_mountingplace": null, + "pvforecast5_loss": null, + "pvforecast5_trackingtype": null, + "pvforecast5_optimal_surface_tilt": null, + "pvforecast5_optimalangles": null, + "pvforecast5_albedo": null, + "pvforecast5_module_model": null, + "pvforecast5_inverter_model": null, + "pvforecast5_inverter_paco": null, + "pvforecast5_modules_per_string": null, + "pvforecast5_strings_per_inverter": null, + "provider_settings": null, + "pvforecast_planes": [ + "pvforecast0", + "pvforecast1" + ], + "pvforecast_planes_peakpower": [ + 5.0, + 3.5 + ], + "pvforecast_planes_azimuth": [ + 10.0, + 20.0 + ], + "pvforecast_planes_tilt": [ + 10.0, + 20.0 + ], + "pvforecast_planes_userhorizon": [ + [ + 10.0, + 20.0, + 30.0 + ], + [ + 5.0, + 15.0, + 25.0 + ] + ], + "pvforecast_planes_inverter_paco": [ + 6000.0, + 4000.0 + ] + } + } +``` + +### Common settings for pvforecast data import from file or JSON string + +:::{table} pvforecast::provider_settings :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. | +| 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 +#### Example Input/Output -:::{table} Server Configuration -:widths: 10 10 5 5 30 -:align: left +```{eval-rst} +.. code-block:: json -| Name | Type | Read-Only | Default | Description | -| ---- | ---- | --------- | ------- | ----------- | -| `server_eos_host` | `Optional[pydantic.networks.IPvAnyAddress]` | `rw` | `0.0.0.0` | EOS server IP address. | -| `server_eos_port` | `Optional[int]` | `rw` | `8503` | EOS server IP port number. | -| `server_eos_startup_eosdash` | `Optional[bool]` | `rw` | `True` | EOS server to start EOSdash server. | -| `server_eos_verbose` | `Optional[bool]` | `rw` | `False` | Enable debug output | -| `server_eosdash_host` | `Optional[pydantic.networks.IPvAnyAddress]` | `rw` | `0.0.0.0` | EOSdash server IP address. | -| `server_eosdash_port` | `Optional[int]` | `rw` | `8504` | EOSdash server IP port number. | -::: + { + "pvforecast": { + "provider_settings": { + "pvforecastimport_file_path": null, + "pvforecastimport_json": "{\"pvforecast_ac_power\": [0, 8.05, 352.91]}" + } + } + } +``` ## Weather Forecast Configuration -:::{table} Weather Forecast Configuration +:::{table} weather +:widths: 10 20 10 5 5 30 +:align: left + +| Name | Environment Variable | Type | Read-Only | Default | Description | +| ---- | -------------------- | ---- | --------- | ------- | ----------- | +| weather_provider | `EOS_WEATHER__WEATHER_PROVIDER` | `Optional[str]` | `rw` | `None` | Weather provider id of provider to be used. | +| provider_settings | `EOS_WEATHER__PROVIDER_SETTINGS` | `Optional[akkudoktoreos.prediction.weatherimport.WeatherImportCommonSettings]` | `rw` | `None` | Provider settings | +::: + +### Example Input/Output + +```{eval-rst} +.. code-block:: json + + { + "weather": { + "weather_provider": "WeatherImport", + "provider_settings": null + } + } +``` + +### Common settings for weather data import from file or JSON string + +:::{table} weather::provider_settings :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. | +| 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. | ::: + +#### Example Input/Output + +```{eval-rst} +.. code-block:: json + + { + "weather": { + "provider_settings": { + "weatherimport_file_path": null, + "weatherimport_json": "{\"weather_temp_air\": [18.3, 17.8, 16.9]}" + } + } + } +``` + +## Server Configuration + +Attributes: + To be added + +:::{table} server +:widths: 10 20 10 5 5 30 +:align: left + +| Name | Environment Variable | Type | Read-Only | Default | Description | +| ---- | -------------------- | ---- | --------- | ------- | ----------- | +| server_eos_host | `EOS_SERVER__SERVER_EOS_HOST` | `Optional[pydantic.networks.IPvAnyAddress]` | `rw` | `0.0.0.0` | EOS server IP address. | +| server_eos_port | `EOS_SERVER__SERVER_EOS_PORT` | `Optional[int]` | `rw` | `8503` | EOS server IP port number. | +| server_eos_verbose | `EOS_SERVER__SERVER_EOS_VERBOSE` | `Optional[bool]` | `rw` | `False` | Enable debug output | +| server_eos_startup_eosdash | `EOS_SERVER__SERVER_EOS_STARTUP_EOSDASH` | `Optional[bool]` | `rw` | `True` | EOS server to start EOSdash server. | +| server_eosdash_host | `EOS_SERVER__SERVER_EOSDASH_HOST` | `Optional[pydantic.networks.IPvAnyAddress]` | `rw` | `0.0.0.0` | EOSdash server IP address. | +| server_eosdash_port | `EOS_SERVER__SERVER_EOSDASH_PORT` | `Optional[int]` | `rw` | `8504` | EOSdash server IP port number. | +::: + +### Example Input/Output + +```{eval-rst} +.. code-block:: json + + { + "server": { + "server_eos_host": "0.0.0.0", + "server_eos_port": 8503, + "server_eos_verbose": false, + "server_eos_startup_eosdash": true, + "server_eosdash_host": "0.0.0.0", + "server_eosdash_port": 8504 + } + } +``` + +## Utils Configuration + +:::{table} utils +:widths: 10 20 10 5 5 30 +:align: left + +| Name | Environment Variable | Type | Read-Only | Default | Description | +| ---- | -------------------- | ---- | --------- | ------- | ----------- | +::: + +### Example Input/Output + +```{eval-rst} +.. code-block:: json + + { + "utils": {} + } +``` diff --git a/docs/_static/eos.css b/docs/_static/eos.css new file mode 100644 index 0000000..11b5233 --- /dev/null +++ b/docs/_static/eos.css @@ -0,0 +1,3 @@ +.wy-nav-content { + max-width: 90% !important; +} diff --git a/docs/conf.py b/docs/conf.py index f03f9e9..ffe554f 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -99,6 +99,7 @@ html_theme_options = { "logo_only": False, "titles_only": True, } +html_css_files = ["eos.css"] # -- Options for autodoc ------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html diff --git a/openapi.json b/openapi.json index 41b22a8..a5d7dba 100644 --- a/openapi.json +++ b/openapi.json @@ -1,8983 +1,6769 @@ { - "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" + "components": { + "schemas": { + "BaseBatteryParameters": { + "additionalProperties": false, + "description": "Battery Device Simulation Configuration.", + "properties": { + "capacity_wh": { + "description": "An integer representing the capacity of the battery in watt-hours.", + "examples": [ + 8000 + ], + "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" + }, + "device_id": { + "description": "ID of battery", + "examples": [ + "battery1" + ], + "title": "Device Id", + "type": "string" + }, + "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" + }, + "hours": { + "anyOf": [ + { + "exclusiveMinimum": 0.0, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Number of prediction hours. Defaults to global config prediction hours.", + "examples": [ + null + ], + "title": "Hours" + }, + "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).", + "examples": [ + 42 + ], + "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.", + "examples": [ + 10 + ], + "maximum": 100.0, + "minimum": 0.0, + "title": "Min Soc Percentage", + "type": "integer" + } + }, + "required": [ + "device_id", + "capacity_wh" + ], + "title": "BaseBatteryParameters", + "type": "object" }, - "description": "configuration key" - }, - { - "name": "value", - "in": "query", - "required": true, - "schema": { - "description": "configuration value", - "title": "Value" + "ConfigCommonSettings-Input": { + "description": "Settings for common configuration.\n\nGeneral configuration to set directories of cache and output files.", + "properties": { + "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.", + "examples": [ + null, + "/home/eos/data" + ], + "title": "Data Folder 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" + } + }, + "title": "ConfigCommonSettings", + "type": "object" }, - "description": "configuration value" - } - ], - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConfigEOS" - } - } + "ConfigCommonSettings-Output": { + "description": "Settings for common configuration.\n\nGeneral configuration to set directories of cache and output files.", + "properties": { + "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.", + "examples": [ + null, + "/home/eos/data" + ], + "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" + } + }, + "required": [ + "data_output_path", + "data_cache_path" + ], + "title": "ConfigCommonSettings", + "type": "object" + }, + "ConfigEOS": { + "additionalProperties": false, + "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 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.prediction_hours) # Access a setting from the loaded configuration\n ```", + "properties": { + "devices": { + "$ref": "#/components/schemas/DevicesCommonSettings", + "default": {} + }, + "elecprice": { + "$ref": "#/components/schemas/ElecPriceCommonSettings", + "default": {} + }, + "general": { + "$ref": "#/components/schemas/ConfigCommonSettings-Output", + "default": { + "data_cache_subpath": "cache", + "data_output_subpath": "output" + } + }, + "load": { + "$ref": "#/components/schemas/LoadCommonSettings", + "default": {} + }, + "logging": { + "$ref": "#/components/schemas/LoggingCommonSettings-Output", + "default": { + "logging_level_root": "INFO" + } + }, + "measurement": { + "$ref": "#/components/schemas/MeasurementCommonSettings", + "default": {} + }, + "optimization": { + "$ref": "#/components/schemas/OptimizationCommonSettings", + "default": { + "optimization_ev_available_charge_rates_percent": [ + 0.0, + 0.375, + 0.5, + 0.625, + 0.75, + 0.875, + 1.0 + ], + "optimization_hours": 48, + "optimization_penalty": 10 + } + }, + "prediction": { + "$ref": "#/components/schemas/PredictionCommonSettings-Output", + "default": { + "latitude": 52.52, + "longitude": 13.405, + "prediction_historic_hours": 48, + "prediction_hours": 48, + "timezone": "Europe/Berlin" + } + }, + "pvforecast": { + "$ref": "#/components/schemas/PVForecastCommonSettings-Output", + "default": { + "pvforecast0_loss": 14.0, + "pvforecast0_mountingplace": "free", + "pvforecast0_optimal_surface_tilt": false, + "pvforecast0_optimalangles": false, + "pvforecast0_pvtechchoice": "crystSi", + "pvforecast1_loss": 14.0, + "pvforecast1_mountingplace": "free", + "pvforecast1_optimal_surface_tilt": false, + "pvforecast1_optimalangles": false, + "pvforecast1_pvtechchoice": "crystSi", + "pvforecast2_loss": 14.0, + "pvforecast2_mountingplace": "free", + "pvforecast2_optimal_surface_tilt": false, + "pvforecast2_optimalangles": false, + "pvforecast2_pvtechchoice": "crystSi", + "pvforecast3_loss": 14.0, + "pvforecast3_mountingplace": "free", + "pvforecast3_optimal_surface_tilt": false, + "pvforecast3_optimalangles": false, + "pvforecast3_pvtechchoice": "crystSi", + "pvforecast4_loss": 14.0, + "pvforecast4_mountingplace": "free", + "pvforecast4_optimal_surface_tilt": false, + "pvforecast4_optimalangles": false, + "pvforecast4_pvtechchoice": "crystSi", + "pvforecast5_loss": 14.0, + "pvforecast5_mountingplace": "free", + "pvforecast5_optimal_surface_tilt": false, + "pvforecast5_optimalangles": false, + "pvforecast5_pvtechchoice": "crystSi", + "pvforecast_planes": [], + "pvforecast_planes_azimuth": [], + "pvforecast_planes_inverter_paco": [], + "pvforecast_planes_peakpower": [], + "pvforecast_planes_tilt": [], + "pvforecast_planes_userhorizon": [] + } + }, + "server": { + "$ref": "#/components/schemas/ServerCommonSettings", + "default": { + "server_eos_host": "0.0.0.0", + "server_eos_port": 8503, + "server_eos_startup_eosdash": true, + "server_eos_verbose": false, + "server_eosdash_host": "0.0.0.0", + "server_eosdash_port": 8504 + } + }, + "utils": { + "$ref": "#/components/schemas/UtilsCommonSettings", + "default": {} + }, + "weather": { + "$ref": "#/components/schemas/WeatherCommonSettings", + "default": {} + } + }, + "title": "ConfigEOS", + "type": "object" + }, + "DevicesCommonSettings": { + "description": "Base configuration for devices simulation settings.", + "properties": { + "batteries": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/BaseBatteryParameters" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "List of battery/ev devices", + "examples": [ + [ + { + "capacity_wh": 8000, + "device_id": "battery1" + } + ] + ], + "title": "Batteries" + }, + "home_appliances": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/HomeApplianceParameters" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "List of home appliances", + "examples": [ + [] + ], + "title": "Home Appliances" + }, + "inverters": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/InverterParameters" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "description": "List of inverters", + "examples": [ + [] + ], + "title": "Inverters" + } + }, + "title": "DevicesCommonSettings", + "type": "object" + }, + "ElecPriceCommonSettings": { + "description": "Electricity Price Prediction Configuration.", + "properties": { + "elecprice_charges_kwh": { + "anyOf": [ + { + "minimum": 0.0, + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Electricity price charges (\u20ac/kWh).", + "examples": [ + 0.21 + ], + "title": "Elecprice Charges Kwh" + }, + "elecprice_provider": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Electricity price provider id of provider to be used.", + "examples": [ + "ElecPriceAkkudoktor" + ], + "title": "Elecprice Provider" + }, + "provider_settings": { + "anyOf": [ + { + "$ref": "#/components/schemas/ElecPriceImportCommonSettings" + }, + { + "type": "null" + } + ], + "description": "Provider settings", + "examples": [ + null + ] + } + }, + "title": "ElecPriceCommonSettings", + "type": "object" + }, + "ElecPriceImportCommonSettings": { + "description": "Common settings for elecprice data import from file or JSON String.", + "properties": { + "elecpriceimport_file_path": { + "anyOf": [ + { + "type": "string" + }, + { + "format": "path", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Path to the file to import elecprice data from.", + "examples": [ + null, + "/path/to/prices.json" + ], + "title": "Elecpriceimport File Path" + }, + "elecpriceimport_json": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "JSON string, dictionary of electricity price forecast value lists.", + "examples": [ + "{\"elecprice_marketprice_wh\": [0.0003384, 0.0003318, 0.0003284]}" + ], + "title": "Elecpriceimport Json" + } + }, + "title": "ElecPriceImportCommonSettings", + "type": "object" + }, + "ElectricVehicleParameters": { + "additionalProperties": false, + "description": "Battery Electric Vehicle Device Simulation Configuration.", + "properties": { + "capacity_wh": { + "description": "An integer representing the capacity of the battery in watt-hours.", + "examples": [ + 8000 + ], + "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" + }, + "device_id": { + "description": "ID of electric vehicle", + "examples": [ + "ev1" + ], + "title": "Device Id", + "type": "string" + }, + "discharging_efficiency": { + "default": 1.0, + "description": "A float representing the discharge efficiency of the battery.", + "exclusiveMinimum": 0.0, + "maximum": 1.0, + "title": "Discharging Efficiency", + "type": "number" + }, + "hours": { + "anyOf": [ + { + "exclusiveMinimum": 0.0, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Number of prediction hours. Defaults to global config prediction hours.", + "examples": [ + null + ], + "title": "Hours" + }, + "initial_soc_percentage": { + "default": 0, + "description": "An integer representing the current state of charge (SOC) of the battery in percentage.", + "examples": [ + 42 + ], + "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.", + "examples": [ + 10 + ], + "maximum": 100.0, + "minimum": 0.0, + "title": "Min Soc Percentage", + "type": "integer" + } + }, + "required": [ + "device_id", + "capacity_wh" + ], + "title": "ElectricVehicleParameters", + "type": "object" + }, + "ElectricVehicleResult": { + "additionalProperties": false, + "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" + }, + "device_id": { + "description": "ID of electric vehicle", + "examples": [ + "ev1" + ], + "title": "Device Id", + "type": "string" + }, + "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.", + "examples": [ + 24 + ], + "exclusiveMinimum": 0.0, + "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": [ + "device_id", + "hours", + "charge_array", + "discharge_array", + "discharging_efficiency", + "capacity_wh", + "charging_efficiency", + "max_charge_power_w", + "soc_wh", + "initial_soc_percentage" + ], + "title": "ElectricVehicleResult", + "type": "object" + }, + "EnergieManagementSystemParameters": { + "additionalProperties": false, + "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": { + "additionalProperties": false, + "description": "Home Appliance Device Simulation Configuration.", + "properties": { + "consumption_wh": { + "description": "An integer representing the energy consumption of a household device in watt-hours.", + "examples": [ + 2000 + ], + "exclusiveMinimum": 0.0, + "title": "Consumption Wh", + "type": "integer" + }, + "device_id": { + "description": "ID of home appliance", + "examples": [ + "dishwasher" + ], + "title": "Device Id", + "type": "string" + }, + "duration_h": { + "description": "An integer representing the usage duration of a household device in hours.", + "examples": [ + 3 + ], + "exclusiveMinimum": 0.0, + "title": "Duration H", + "type": "integer" + }, + "hours": { + "anyOf": [ + { + "exclusiveMinimum": 0.0, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Number of prediction hours. Defaults to global config prediction hours.", + "examples": [ + null + ], + "title": "Hours" + } + }, + "required": [ + "device_id", + "consumption_wh", + "duration_h" + ], + "title": "HomeApplianceParameters", + "type": "object" + }, + "InverterParameters": { + "additionalProperties": false, + "description": "Inverter Device Simulation Configuration.", + "properties": { + "battery": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "ID of battery", + "examples": [ + null, + "battery1" + ], + "title": "Battery" + }, + "device_id": { + "description": "ID of inverter", + "examples": [ + "inverter1" + ], + "title": "Device Id", + "type": "string" + }, + "hours": { + "anyOf": [ + { + "exclusiveMinimum": 0.0, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Number of prediction hours. Defaults to global config prediction hours.", + "examples": [ + null + ], + "title": "Hours" + }, + "max_power_wh": { + "examples": [ + 10000 + ], + "exclusiveMinimum": 0.0, + "title": "Max Power Wh", + "type": "number" + } + }, + "required": [ + "device_id", + "max_power_wh" + ], + "title": "InverterParameters", + "type": "object" + }, + "LoadAkkudoktorCommonSettings": { + "description": "Common settings for load data import from file.", + "properties": { + "loadakkudoktor_year_energy": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Yearly energy consumption (kWh).", + "examples": [ + 40421 + ], + "title": "Loadakkudoktor Year Energy" + } + }, + "title": "LoadAkkudoktorCommonSettings", + "type": "object" + }, + "LoadCommonSettings": { + "description": "Load Prediction Configuration.", + "properties": { + "load_provider": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Load provider id of provider to be used.", + "examples": [ + "LoadAkkudoktor" + ], + "title": "Load Provider" + }, + "provider_settings": { + "anyOf": [ + { + "$ref": "#/components/schemas/LoadAkkudoktorCommonSettings" + }, + { + "$ref": "#/components/schemas/LoadImportCommonSettings" + }, + { + "type": "null" + } + ], + "description": "Provider settings", + "examples": [ + null + ], + "title": "Provider Settings" + } + }, + "title": "LoadCommonSettings", + "type": "object" + }, + "LoadImportCommonSettings": { + "description": "Common settings for load data import from file or JSON string.", + "properties": { + "load_import_file_path": { + "anyOf": [ + { + "type": "string" + }, + { + "format": "path", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Path to the file to import load data from.", + "examples": [ + null, + "/path/to/yearly_load.json" + ], + "title": "Load Import File Path" + }, + "load_import_json": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "JSON string, dictionary of load forecast value lists.", + "examples": [ + "{\"load0_mean\": [676.71, 876.19, 527.13]}" + ], + "title": "Load Import Json" + } + }, + "title": "LoadImportCommonSettings", + "type": "object" + }, + "LoggingCommonSettings-Input": { + "description": "Logging Configuration.", + "properties": { + "logging_level_default": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "EOS default logging level.", + "examples": [ + "INFO", + "DEBUG", + "WARNING", + "ERROR", + "CRITICAL" + ], + "title": "Logging Level Default" + } + }, + "title": "LoggingCommonSettings", + "type": "object" + }, + "LoggingCommonSettings-Output": { + "description": "Logging Configuration.", + "properties": { + "logging_level_default": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "EOS default logging level.", + "examples": [ + "INFO", + "DEBUG", + "WARNING", + "ERROR", + "CRITICAL" + ], + "title": "Logging Level Default" + }, + "logging_level_root": { + "description": "Root logger logging level.", + "readOnly": true, + "title": "Logging Level Root", + "type": "string" + } + }, + "required": [ + "logging_level_root" + ], + "title": "LoggingCommonSettings", + "type": "object" + }, + "MeasurementCommonSettings": { + "description": "Measurement Configuration.", + "properties": { + "measurement_load0_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Name of the load0 source", + "examples": [ + "Household", + "Heat Pump" + ], + "title": "Measurement Load0 Name" + }, + "measurement_load1_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Name of the load1 source", + "examples": [ + null + ], + "title": "Measurement Load1 Name" + }, + "measurement_load2_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Name of the load2 source", + "examples": [ + null + ], + "title": "Measurement Load2 Name" + }, + "measurement_load3_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Name of the load3 source", + "examples": [ + null + ], + "title": "Measurement Load3 Name" + }, + "measurement_load4_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Name of the load4 source", + "examples": [ + null + ], + "title": "Measurement Load4 Name" + } + }, + "title": "MeasurementCommonSettings", + "type": "object" + }, + "OptimizationCommonSettings": { + "description": "General Optimization Configuration.\n\nAttributes:\n optimization_hours (int): Number of hours for optimizations.", + "properties": { + "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": 48, + "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" + } + }, + "title": "OptimizationCommonSettings", + "type": "object" + }, + "OptimizationParameters": { + "additionalProperties": false, + "properties": { + "dishwasher": { + "anyOf": [ + { + "$ref": "#/components/schemas/HomeApplianceParameters" + }, + { + "type": "null" + } + ] + }, + "eauto": { + "anyOf": [ + { + "$ref": "#/components/schemas/ElectricVehicleParameters" + }, + { + "type": "null" + } + ] + }, + "ems": { + "$ref": "#/components/schemas/EnergieManagementSystemParameters" + }, + "inverter": { + "anyOf": [ + { + "$ref": "#/components/schemas/InverterParameters" + }, + { + "type": "null" + } + ] + }, + "pv_akku": { + "anyOf": [ + { + "$ref": "#/components/schemas/SolarPanelBatteryParameters" + }, + { + "type": "null" + } + ] + }, + "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", + "inverter", + "eauto" + ], + "title": "OptimizationParameters", + "type": "object" + }, + "OptimizeResponse": { + "additionalProperties": false, + "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" + }, + "PVForecastCommonSettings-Input": { + "description": "PV Forecast Configuration.", + "properties": { + "provider_settings": { + "anyOf": [ + { + "$ref": "#/components/schemas/PVForecastImportCommonSettings" + }, + { + "type": "null" + } + ], + "description": "Provider settings", + "examples": [ + null + ] + }, + "pvforecast0_albedo": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Proportion of the light hitting the ground that it reflects back.", + "examples": [ + null + ], + "title": "Pvforecast0 Albedo" + }, + "pvforecast0_inverter_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the inverter of this plane.", + "examples": [ + null + ], + "title": "Pvforecast0 Inverter Model" + }, + "pvforecast0_inverter_paco": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "AC power rating of the inverter. [W]", + "examples": [ + 6000 + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + 20 + ], + "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.", + "examples": [ + false + ], + "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.", + "examples": [ + false + ], + "title": "Pvforecast0 Optimalangles" + }, + "pvforecast0_peakpower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Nominal power of PV system in kW.", + "examples": [ + 5.0 + ], + "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.", + "examples": [ + 2 + ], + "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).", + "examples": [ + 10.0 + ], + "title": "Pvforecast0 Surface Azimuth" + }, + "pvforecast0_surface_tilt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", + "examples": [ + 10.0 + ], + "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.", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5 + ], + "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.", + "examples": [ + [ + 10.0, + 20.0, + 30.0 + ] + ], + "title": "Pvforecast0 Userhorizon" + }, + "pvforecast1_albedo": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Proportion of the light hitting the ground that it reflects back.", + "examples": [ + null + ], + "title": "Pvforecast1 Albedo" + }, + "pvforecast1_inverter_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the inverter of this plane.", + "examples": [ + null + ], + "title": "Pvforecast1 Inverter Model" + }, + "pvforecast1_inverter_paco": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "AC power rating of the inverter. [W]", + "examples": [ + 4000 + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + 20 + ], + "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.", + "examples": [ + false + ], + "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.", + "examples": [ + false + ], + "title": "Pvforecast1 Optimalangles" + }, + "pvforecast1_peakpower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Nominal power of PV system in kW.", + "examples": [ + 3.5 + ], + "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.", + "examples": [ + 2 + ], + "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).", + "examples": [ + 20.0 + ], + "title": "Pvforecast1 Surface Azimuth" + }, + "pvforecast1_surface_tilt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", + "examples": [ + 20.0 + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + [ + 5.0, + 15.0, + 25.0 + ] + ], + "title": "Pvforecast1 Userhorizon" + }, + "pvforecast2_albedo": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Proportion of the light hitting the ground that it reflects back.", + "examples": [ + null + ], + "title": "Pvforecast2 Albedo" + }, + "pvforecast2_inverter_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the inverter of this plane.", + "examples": [ + null + ], + "title": "Pvforecast2 Inverter Model" + }, + "pvforecast2_inverter_paco": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "AC power rating of the inverter. [W]", + "examples": [ + null + ], + "title": "Pvforecast2 Inverter Paco" + }, + "pvforecast2_loss": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": 14.0, + "description": "Sum of PV system losses in percent", + "examples": [ + null + ], + "title": "Pvforecast2 Loss" + }, + "pvforecast2_module_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the PV modules of this plane.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "title": "Pvforecast2 Optimalangles" + }, + "pvforecast2_peakpower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Nominal power of PV system in kW.", + "examples": [ + null + ], + "title": "Pvforecast2 Peakpower" + }, + "pvforecast2_pvtechchoice": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "crystSi", + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + "examples": [ + null + ], + "title": "Pvforecast2 Pvtechchoice" + }, + "pvforecast2_strings_per_inverter": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Number of the strings of the inverter of this plane.", + "examples": [ + null + ], + "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).", + "examples": [ + null + ], + "title": "Pvforecast2 Surface Azimuth" + }, + "pvforecast2_surface_tilt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "title": "Pvforecast2 Userhorizon" + }, + "pvforecast3_albedo": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Proportion of the light hitting the ground that it reflects back.", + "examples": [ + null + ], + "title": "Pvforecast3 Albedo" + }, + "pvforecast3_inverter_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the inverter of this plane.", + "examples": [ + null + ], + "title": "Pvforecast3 Inverter Model" + }, + "pvforecast3_inverter_paco": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "AC power rating of the inverter. [W]", + "examples": [ + null + ], + "title": "Pvforecast3 Inverter Paco" + }, + "pvforecast3_loss": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": 14.0, + "description": "Sum of PV system losses in percent", + "examples": [ + null + ], + "title": "Pvforecast3 Loss" + }, + "pvforecast3_module_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the PV modules of this plane.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "title": "Pvforecast3 Optimalangles" + }, + "pvforecast3_peakpower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Nominal power of PV system in kW.", + "examples": [ + null + ], + "title": "Pvforecast3 Peakpower" + }, + "pvforecast3_pvtechchoice": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "crystSi", + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + "examples": [ + null + ], + "title": "Pvforecast3 Pvtechchoice" + }, + "pvforecast3_strings_per_inverter": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Number of the strings of the inverter of this plane.", + "examples": [ + null + ], + "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).", + "examples": [ + null + ], + "title": "Pvforecast3 Surface Azimuth" + }, + "pvforecast3_surface_tilt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "title": "Pvforecast3 Userhorizon" + }, + "pvforecast4_albedo": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Proportion of the light hitting the ground that it reflects back.", + "examples": [ + null + ], + "title": "Pvforecast4 Albedo" + }, + "pvforecast4_inverter_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the inverter of this plane.", + "examples": [ + null + ], + "title": "Pvforecast4 Inverter Model" + }, + "pvforecast4_inverter_paco": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "AC power rating of the inverter. [W]", + "examples": [ + null + ], + "title": "Pvforecast4 Inverter Paco" + }, + "pvforecast4_loss": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": 14.0, + "description": "Sum of PV system losses in percent", + "examples": [ + null + ], + "title": "Pvforecast4 Loss" + }, + "pvforecast4_module_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the PV modules of this plane.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "title": "Pvforecast4 Optimalangles" + }, + "pvforecast4_peakpower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Nominal power of PV system in kW.", + "examples": [ + null + ], + "title": "Pvforecast4 Peakpower" + }, + "pvforecast4_pvtechchoice": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "crystSi", + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + "examples": [ + null + ], + "title": "Pvforecast4 Pvtechchoice" + }, + "pvforecast4_strings_per_inverter": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Number of the strings of the inverter of this plane.", + "examples": [ + null + ], + "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).", + "examples": [ + null + ], + "title": "Pvforecast4 Surface Azimuth" + }, + "pvforecast4_surface_tilt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "title": "Pvforecast4 Userhorizon" + }, + "pvforecast5_albedo": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Proportion of the light hitting the ground that it reflects back.", + "examples": [ + null + ], + "title": "Pvforecast5 Albedo" + }, + "pvforecast5_inverter_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the inverter of this plane.", + "examples": [ + null + ], + "title": "Pvforecast5 Inverter Model" + }, + "pvforecast5_inverter_paco": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "AC power rating of the inverter. [W]", + "examples": [ + null + ], + "title": "Pvforecast5 Inverter Paco" + }, + "pvforecast5_loss": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": 14.0, + "description": "Sum of PV system losses in percent", + "examples": [ + null + ], + "title": "Pvforecast5 Loss" + }, + "pvforecast5_module_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the PV modules of this plane.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "title": "Pvforecast5 Optimalangles" + }, + "pvforecast5_peakpower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Nominal power of PV system in kW.", + "examples": [ + null + ], + "title": "Pvforecast5 Peakpower" + }, + "pvforecast5_pvtechchoice": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "crystSi", + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + "examples": [ + null + ], + "title": "Pvforecast5 Pvtechchoice" + }, + "pvforecast5_strings_per_inverter": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Number of the strings of the inverter of this plane.", + "examples": [ + null + ], + "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).", + "examples": [ + null + ], + "title": "Pvforecast5 Surface Azimuth" + }, + "pvforecast5_surface_tilt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "title": "Pvforecast5 Userhorizon" + }, + "pvforecast_provider": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "PVForecast provider id of provider to be used.", + "examples": [ + "PVForecastAkkudoktor" + ], + "title": "Pvforecast Provider" + } + }, + "title": "PVForecastCommonSettings", + "type": "object" + }, + "PVForecastCommonSettings-Output": { + "description": "PV Forecast Configuration.", + "properties": { + "provider_settings": { + "anyOf": [ + { + "$ref": "#/components/schemas/PVForecastImportCommonSettings" + }, + { + "type": "null" + } + ], + "description": "Provider settings", + "examples": [ + null + ] + }, + "pvforecast0_albedo": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Proportion of the light hitting the ground that it reflects back.", + "examples": [ + null + ], + "title": "Pvforecast0 Albedo" + }, + "pvforecast0_inverter_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the inverter of this plane.", + "examples": [ + null + ], + "title": "Pvforecast0 Inverter Model" + }, + "pvforecast0_inverter_paco": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "AC power rating of the inverter. [W]", + "examples": [ + 6000 + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + 20 + ], + "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.", + "examples": [ + false + ], + "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.", + "examples": [ + false + ], + "title": "Pvforecast0 Optimalangles" + }, + "pvforecast0_peakpower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Nominal power of PV system in kW.", + "examples": [ + 5.0 + ], + "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.", + "examples": [ + 2 + ], + "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).", + "examples": [ + 10.0 + ], + "title": "Pvforecast0 Surface Azimuth" + }, + "pvforecast0_surface_tilt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", + "examples": [ + 10.0 + ], + "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.", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5 + ], + "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.", + "examples": [ + [ + 10.0, + 20.0, + 30.0 + ] + ], + "title": "Pvforecast0 Userhorizon" + }, + "pvforecast1_albedo": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Proportion of the light hitting the ground that it reflects back.", + "examples": [ + null + ], + "title": "Pvforecast1 Albedo" + }, + "pvforecast1_inverter_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the inverter of this plane.", + "examples": [ + null + ], + "title": "Pvforecast1 Inverter Model" + }, + "pvforecast1_inverter_paco": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "AC power rating of the inverter. [W]", + "examples": [ + 4000 + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + 20 + ], + "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.", + "examples": [ + false + ], + "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.", + "examples": [ + false + ], + "title": "Pvforecast1 Optimalangles" + }, + "pvforecast1_peakpower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Nominal power of PV system in kW.", + "examples": [ + 3.5 + ], + "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.", + "examples": [ + 2 + ], + "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).", + "examples": [ + 20.0 + ], + "title": "Pvforecast1 Surface Azimuth" + }, + "pvforecast1_surface_tilt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", + "examples": [ + 20.0 + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + [ + 5.0, + 15.0, + 25.0 + ] + ], + "title": "Pvforecast1 Userhorizon" + }, + "pvforecast2_albedo": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Proportion of the light hitting the ground that it reflects back.", + "examples": [ + null + ], + "title": "Pvforecast2 Albedo" + }, + "pvforecast2_inverter_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the inverter of this plane.", + "examples": [ + null + ], + "title": "Pvforecast2 Inverter Model" + }, + "pvforecast2_inverter_paco": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "AC power rating of the inverter. [W]", + "examples": [ + null + ], + "title": "Pvforecast2 Inverter Paco" + }, + "pvforecast2_loss": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": 14.0, + "description": "Sum of PV system losses in percent", + "examples": [ + null + ], + "title": "Pvforecast2 Loss" + }, + "pvforecast2_module_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the PV modules of this plane.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "title": "Pvforecast2 Optimalangles" + }, + "pvforecast2_peakpower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Nominal power of PV system in kW.", + "examples": [ + null + ], + "title": "Pvforecast2 Peakpower" + }, + "pvforecast2_pvtechchoice": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "crystSi", + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + "examples": [ + null + ], + "title": "Pvforecast2 Pvtechchoice" + }, + "pvforecast2_strings_per_inverter": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Number of the strings of the inverter of this plane.", + "examples": [ + null + ], + "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).", + "examples": [ + null + ], + "title": "Pvforecast2 Surface Azimuth" + }, + "pvforecast2_surface_tilt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "title": "Pvforecast2 Userhorizon" + }, + "pvforecast3_albedo": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Proportion of the light hitting the ground that it reflects back.", + "examples": [ + null + ], + "title": "Pvforecast3 Albedo" + }, + "pvforecast3_inverter_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the inverter of this plane.", + "examples": [ + null + ], + "title": "Pvforecast3 Inverter Model" + }, + "pvforecast3_inverter_paco": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "AC power rating of the inverter. [W]", + "examples": [ + null + ], + "title": "Pvforecast3 Inverter Paco" + }, + "pvforecast3_loss": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": 14.0, + "description": "Sum of PV system losses in percent", + "examples": [ + null + ], + "title": "Pvforecast3 Loss" + }, + "pvforecast3_module_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the PV modules of this plane.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "title": "Pvforecast3 Optimalangles" + }, + "pvforecast3_peakpower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Nominal power of PV system in kW.", + "examples": [ + null + ], + "title": "Pvforecast3 Peakpower" + }, + "pvforecast3_pvtechchoice": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "crystSi", + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + "examples": [ + null + ], + "title": "Pvforecast3 Pvtechchoice" + }, + "pvforecast3_strings_per_inverter": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Number of the strings of the inverter of this plane.", + "examples": [ + null + ], + "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).", + "examples": [ + null + ], + "title": "Pvforecast3 Surface Azimuth" + }, + "pvforecast3_surface_tilt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "title": "Pvforecast3 Userhorizon" + }, + "pvforecast4_albedo": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Proportion of the light hitting the ground that it reflects back.", + "examples": [ + null + ], + "title": "Pvforecast4 Albedo" + }, + "pvforecast4_inverter_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the inverter of this plane.", + "examples": [ + null + ], + "title": "Pvforecast4 Inverter Model" + }, + "pvforecast4_inverter_paco": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "AC power rating of the inverter. [W]", + "examples": [ + null + ], + "title": "Pvforecast4 Inverter Paco" + }, + "pvforecast4_loss": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": 14.0, + "description": "Sum of PV system losses in percent", + "examples": [ + null + ], + "title": "Pvforecast4 Loss" + }, + "pvforecast4_module_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the PV modules of this plane.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "title": "Pvforecast4 Optimalangles" + }, + "pvforecast4_peakpower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Nominal power of PV system in kW.", + "examples": [ + null + ], + "title": "Pvforecast4 Peakpower" + }, + "pvforecast4_pvtechchoice": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "crystSi", + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + "examples": [ + null + ], + "title": "Pvforecast4 Pvtechchoice" + }, + "pvforecast4_strings_per_inverter": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Number of the strings of the inverter of this plane.", + "examples": [ + null + ], + "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).", + "examples": [ + null + ], + "title": "Pvforecast4 Surface Azimuth" + }, + "pvforecast4_surface_tilt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "title": "Pvforecast4 Userhorizon" + }, + "pvforecast5_albedo": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Proportion of the light hitting the ground that it reflects back.", + "examples": [ + null + ], + "title": "Pvforecast5 Albedo" + }, + "pvforecast5_inverter_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the inverter of this plane.", + "examples": [ + null + ], + "title": "Pvforecast5 Inverter Model" + }, + "pvforecast5_inverter_paco": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "AC power rating of the inverter. [W]", + "examples": [ + null + ], + "title": "Pvforecast5 Inverter Paco" + }, + "pvforecast5_loss": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": 14.0, + "description": "Sum of PV system losses in percent", + "examples": [ + null + ], + "title": "Pvforecast5 Loss" + }, + "pvforecast5_module_model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Model of the PV modules of this plane.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "title": "Pvforecast5 Optimalangles" + }, + "pvforecast5_peakpower": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Nominal power of PV system in kW.", + "examples": [ + null + ], + "title": "Pvforecast5 Peakpower" + }, + "pvforecast5_pvtechchoice": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "crystSi", + "description": "PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + "examples": [ + null + ], + "title": "Pvforecast5 Pvtechchoice" + }, + "pvforecast5_strings_per_inverter": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Number of the strings of the inverter of this plane.", + "examples": [ + null + ], + "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).", + "examples": [ + null + ], + "title": "Pvforecast5 Surface Azimuth" + }, + "pvforecast5_surface_tilt": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Tilt angle from horizontal plane. Ignored for two-axis tracking.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + null + ], + "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.", + "examples": [ + "PVForecastAkkudoktor" + ], + "title": "Pvforecast Provider" + } + }, + "required": [ + "pvforecast_planes", + "pvforecast_planes_peakpower", + "pvforecast_planes_azimuth", + "pvforecast_planes_tilt", + "pvforecast_planes_userhorizon", + "pvforecast_planes_inverter_paco" + ], + "title": "PVForecastCommonSettings", + "type": "object" + }, + "PVForecastImportCommonSettings": { + "description": "Common settings for pvforecast data import from file or JSON string.", + "properties": { + "pvforecastimport_file_path": { + "anyOf": [ + { + "type": "string" + }, + { + "format": "path", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Path to the file to import PV forecast data from.", + "examples": [ + null, + "/path/to/pvforecast.json" + ], + "title": "Pvforecastimport File Path" + }, + "pvforecastimport_json": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "JSON string, dictionary of PV forecast value lists.", + "examples": [ + "{\"pvforecast_ac_power\": [0, 8.05, 352.91]}" + ], + "title": "Pvforecastimport Json" + } + }, + "title": "PVForecastImportCommonSettings", + "type": "object" + }, + "PredictionCommonSettings-Input": { + "description": "General Prediction Configuration.\n\nThis class provides configuration for prediction settings, allowing users to specify\nparameters such as the forecast duration (in hours) and location (latitude and longitude).\nValidators ensure each parameter is within a specified range. A computed property, `timezone`,\ndetermines the time zone based on latitude and longitude.\n\nAttributes:\n prediction_hours (Optional[int]): Number of hours into the future for predictions.\n Must be non-negative.\n prediction_historic_hours (Optional[int]): Number of hours into the past for historical data.\n Must be non-negative.\n latitude (Optional[float]): Latitude in degrees, must be between -90 and 90.\n longitude (Optional[float]): Longitude in degrees, must be between -180 and 180.\n\nProperties:\n timezone (Optional[str]): Computed time zone string based on the specified latitude\n and longitude.\n\nValidators:\n validate_prediction_hours (int): Ensures `prediction_hours` is a non-negative integer.\n validate_prediction_historic_hours (int): Ensures `prediction_historic_hours` is a non-negative integer.\n validate_latitude (float): Ensures `latitude` is within the range -90 to 90.\n validate_longitude (float): Ensures `longitude` is within the range -180 to 180.", + "properties": { + "latitude": { + "anyOf": [ + { + "maximum": 90.0, + "minimum": -90.0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": 52.52, + "description": "Latitude in decimal degrees, between -90 and 90, north is positive (ISO 19115) (\u00b0)", + "title": "Latitude" + }, + "longitude": { + "anyOf": [ + { + "maximum": 180.0, + "minimum": -180.0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": 13.405, + "description": "Longitude in decimal degrees, within -180 to 180 (\u00b0)", + "title": "Longitude" + }, + "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" + } + }, + "title": "PredictionCommonSettings", + "type": "object" + }, + "PredictionCommonSettings-Output": { + "description": "General Prediction Configuration.\n\nThis class provides configuration for prediction settings, allowing users to specify\nparameters such as the forecast duration (in hours) and location (latitude and longitude).\nValidators ensure each parameter is within a specified range. A computed property, `timezone`,\ndetermines the time zone based on latitude and longitude.\n\nAttributes:\n prediction_hours (Optional[int]): Number of hours into the future for predictions.\n Must be non-negative.\n prediction_historic_hours (Optional[int]): Number of hours into the past for historical data.\n Must be non-negative.\n latitude (Optional[float]): Latitude in degrees, must be between -90 and 90.\n longitude (Optional[float]): Longitude in degrees, must be between -180 and 180.\n\nProperties:\n timezone (Optional[str]): Computed time zone string based on the specified latitude\n and longitude.\n\nValidators:\n validate_prediction_hours (int): Ensures `prediction_hours` is a non-negative integer.\n validate_prediction_historic_hours (int): Ensures `prediction_historic_hours` is a non-negative integer.\n validate_latitude (float): Ensures `latitude` is within the range -90 to 90.\n validate_longitude (float): Ensures `longitude` is within the range -180 to 180.", + "properties": { + "latitude": { + "anyOf": [ + { + "maximum": 90.0, + "minimum": -90.0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": 52.52, + "description": "Latitude in decimal degrees, between -90 and 90, north is positive (ISO 19115) (\u00b0)", + "title": "Latitude" + }, + "longitude": { + "anyOf": [ + { + "maximum": 180.0, + "minimum": -180.0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": 13.405, + "description": "Longitude in decimal degrees, within -180 to 180 (\u00b0)", + "title": "Longitude" + }, + "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" + }, + "timezone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Compute timezone based on latitude and longitude.", + "readOnly": true, + "title": "Timezone" + } + }, + "required": [ + "timezone" + ], + "title": "PredictionCommonSettings", + "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" + }, + "ServerCommonSettings": { + "description": "Server Configuration.\n\nAttributes:\n To be added", + "properties": { + "server_eos_host": { + "anyOf": [ + { + "format": "ipvanyaddress", + "type": "string" + }, + { + "type": "null" + } + ], + "default": "0.0.0.0", + "description": "EOS server IP address.", + "title": "Server Eos Host" + }, + "server_eos_port": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": 8503, + "description": "EOS server IP port number.", + "title": "Server Eos Port" + }, + "server_eos_startup_eosdash": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": true, + "description": "EOS server to start EOSdash server.", + "title": "Server Eos Startup Eosdash" + }, + "server_eos_verbose": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": false, + "description": "Enable debug output", + "title": "Server Eos Verbose" + }, + "server_eosdash_host": { + "anyOf": [ + { + "format": "ipvanyaddress", + "type": "string" + }, + { + "type": "null" + } + ], + "default": "0.0.0.0", + "description": "EOSdash server IP address.", + "title": "Server Eosdash Host" + }, + "server_eosdash_port": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": 8504, + "description": "EOSdash server IP port number.", + "title": "Server Eosdash Port" + } + }, + "title": "ServerCommonSettings", + "type": "object" + }, + "SettingsEOS": { + "additionalProperties": false, + "description": "Settings for all EOS.\n\nUsed by updating the configuration with specific settings only.", + "properties": { + "devices": { + "anyOf": [ + { + "$ref": "#/components/schemas/DevicesCommonSettings" + }, + { + "type": "null" + } + ] + }, + "elecprice": { + "anyOf": [ + { + "$ref": "#/components/schemas/ElecPriceCommonSettings" + }, + { + "type": "null" + } + ] + }, + "general": { + "anyOf": [ + { + "$ref": "#/components/schemas/ConfigCommonSettings-Output" + }, + { + "type": "null" + } + ] + }, + "load": { + "anyOf": [ + { + "$ref": "#/components/schemas/LoadCommonSettings" + }, + { + "type": "null" + } + ] + }, + "logging": { + "anyOf": [ + { + "$ref": "#/components/schemas/LoggingCommonSettings-Output" + }, + { + "type": "null" + } + ] + }, + "measurement": { + "anyOf": [ + { + "$ref": "#/components/schemas/MeasurementCommonSettings" + }, + { + "type": "null" + } + ] + }, + "optimization": { + "anyOf": [ + { + "$ref": "#/components/schemas/OptimizationCommonSettings" + }, + { + "type": "null" + } + ] + }, + "prediction": { + "anyOf": [ + { + "$ref": "#/components/schemas/PredictionCommonSettings-Output" + }, + { + "type": "null" + } + ] + }, + "pvforecast": { + "anyOf": [ + { + "$ref": "#/components/schemas/PVForecastCommonSettings-Output" + }, + { + "type": "null" + } + ] + }, + "server": { + "anyOf": [ + { + "$ref": "#/components/schemas/ServerCommonSettings" + }, + { + "type": "null" + } + ] + }, + "utils": { + "anyOf": [ + { + "$ref": "#/components/schemas/UtilsCommonSettings" + }, + { + "type": "null" + } + ] + }, + "weather": { + "anyOf": [ + { + "$ref": "#/components/schemas/WeatherCommonSettings" + }, + { + "type": "null" + } + ] + } + }, + "title": "SettingsEOS", + "type": "object" + }, + "SimulationResult": { + "additionalProperties": false, + "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": { + "additionalProperties": false, + "properties": { + "capacity_wh": { + "description": "An integer representing the capacity of the battery in watt-hours.", + "examples": [ + 8000 + ], + "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" + }, + "device_id": { + "description": "ID of battery", + "examples": [ + "battery1" + ], + "title": "Device Id", + "type": "string" + }, + "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" + }, + "hours": { + "anyOf": [ + { + "exclusiveMinimum": 0.0, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Number of prediction hours. Defaults to global config prediction hours.", + "examples": [ + null + ], + "title": "Hours" + }, + "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).", + "examples": [ + 42 + ], + "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.", + "examples": [ + 10 + ], + "maximum": 100.0, + "minimum": 0.0, + "title": "Min Soc Percentage", + "type": "integer" + } + }, + "required": [ + "device_id", + "capacity_wh" + ], + "title": "SolarPanelBatteryParameters", + "type": "object" + }, + "UtilsCommonSettings": { + "description": "Utils Configuration.", + "properties": {}, + "title": "UtilsCommonSettings", + "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" + }, + "WeatherCommonSettings": { + "description": "Weather Forecast Configuration.", + "properties": { + "provider_settings": { + "anyOf": [ + { + "$ref": "#/components/schemas/WeatherImportCommonSettings" + }, + { + "type": "null" + } + ], + "description": "Provider settings", + "examples": [ + null + ] + }, + "weather_provider": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Weather provider id of provider to be used.", + "examples": [ + "WeatherImport" + ], + "title": "Weather Provider" + } + }, + "title": "WeatherCommonSettings", + "type": "object" + }, + "WeatherImportCommonSettings": { + "description": "Common settings for weather data import from file or JSON string.", + "properties": { + "weatherimport_file_path": { + "anyOf": [ + { + "type": "string" + }, + { + "format": "path", + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Path to the file to import weather data from.", + "examples": [ + null, + "/path/to/weather_data.json" + ], + "title": "Weatherimport File Path" + }, + "weatherimport_json": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "JSON string, dictionary of weather forecast value lists.", + "examples": [ + "{\"weather_temp_air\": [18.3, 17.8, 16.9]}" + ], + "title": "Weatherimport Json" + } + }, + "title": "WeatherImportCommonSettings", + "type": "object" } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } } - } }, - "/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" - } - } - } - } - } - } + "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" }, - "/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" - } - } + "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" } - } - } - }, - "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_eos_host", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string", - "format": "ipvanyaddress" - }, - { - "type": "null" - } - ], - "description": "EOS server IP address.", - "default": "0.0.0.0", - "title": "Server Eos Host" - }, - "description": "EOS server IP address." - }, - { - "name": "server_eos_port", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "EOS server IP port number.", - "default": 8503, - "title": "Server Eos Port" - }, - "description": "EOS server IP port number." - }, - { - "name": "server_eos_verbose", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "description": "Enable debug output", - "default": false, - "title": "Server Eos Verbose" - }, - "description": "Enable debug output" - }, - { - "name": "server_eos_startup_eosdash", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "description": "EOS server to start EOSdash server.", - "default": true, - "title": "Server Eos Startup Eosdash" - }, - "description": "EOS server to start EOSdash server." - }, - { - "name": "server_eosdash_host", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string", - "format": "ipvanyaddress" - }, - { - "type": "null" - } - ], - "description": "EOSdash server IP address.", - "default": "0.0.0.0", - "title": "Server Eosdash Host" - }, - "description": "EOSdash server IP address." - }, - { - "name": "server_eosdash_port", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "EOSdash server IP port number.", - "default": 8504, - "title": "Server Eosdash Port" - }, - "description": "EOSdash 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\nArgs:\n year_energy (float): Yearly energy consumption in Wh.\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_eos_host": { - "anyOf": [ - { - "type": "string", - "format": "ipvanyaddress" - }, - { - "type": "null" - } - ], - "title": "Server Eos Host", - "description": "EOS server IP address.", - "default": "0.0.0.0" - }, - "server_eos_port": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "title": "Server Eos Port", - "description": "EOS server IP port number.", - "default": 8503 - }, - "server_eos_verbose": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Server Eos Verbose", - "description": "Enable debug output", - "default": false - }, - "server_eos_startup_eosdash": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Server Eos Startup Eosdash", - "description": "EOS server to start EOSdash server.", - "default": true - }, - "server_eosdash_host": { - "anyOf": [ - { - "type": "string", - "format": "ipvanyaddress" - }, - { - "type": "null" - } - ], - "title": "Server Eosdash Host", - "description": "EOSdash server IP address.", - "default": "0.0.0.0" - }, - "server_eosdash_port": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "title": "Server Eosdash Port", - "description": "EOSdash 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 - } - }, - "additionalProperties": false, - "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." - } - }, - "additionalProperties": false, - "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." - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "consumption_wh", - "duration_h" - ], - "title": "HomeApplianceParameters" - }, - "InverterParameters": { - "properties": { - "max_power_wh": { - "type": "number", - "exclusiveMinimum": 0.0, - "title": "Max Power Wh" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "max_power_wh" - ], - "title": "InverterParameters" - }, - "OptimizationParameters": { - "properties": { - "ems": { - "$ref": "#/components/schemas/EnergieManagementSystemParameters" - }, - "pv_akku": { - "anyOf": [ - { - "$ref": "#/components/schemas/SolarPanelBatteryParameters" - }, - { - "type": "null" - } - ] - }, - "inverter": { - "anyOf": [ - { - "$ref": "#/components/schemas/InverterParameters" - }, - { - "type": "null" - } - ] - }, - "eauto": { - "anyOf": [ - { - "$ref": "#/components/schemas/ElectricVehicleParameters" - }, - { - "type": "null" - } - ] - }, - "dishwasher": { - "anyOf": [ - { - "$ref": "#/components/schemas/HomeApplianceParameters" - }, - { - "type": "null" - } - ] - }, - "temperature_forecast": { - "anyOf": [ - { - "items": { - "anyOf": [ + "/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\nArgs:\n year_energy (float): Yearly energy consumption in Wh.\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": [ { - "type": "number" + "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": [ + { + "in": "query", + "name": "general", + "required": false, + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/ConfigCommonSettings-Input" + }, + { + "type": "null" + } + ], + "title": "General" + } }, { - "type": "null" + "in": "query", + "name": "logging", + "required": false, + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/LoggingCommonSettings-Input" + }, + { + "type": "null" + } + ], + "title": "Logging" + } + }, + { + "in": "query", + "name": "devices", + "required": false, + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/DevicesCommonSettings" + }, + { + "type": "null" + } + ], + "title": "Devices" + } + }, + { + "in": "query", + "name": "measurement", + "required": false, + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/MeasurementCommonSettings" + }, + { + "type": "null" + } + ], + "title": "Measurement" + } + }, + { + "in": "query", + "name": "optimization", + "required": false, + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/OptimizationCommonSettings" + }, + { + "type": "null" + } + ], + "title": "Optimization" + } + }, + { + "in": "query", + "name": "prediction", + "required": false, + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/PredictionCommonSettings-Input" + }, + { + "type": "null" + } + ], + "title": "Prediction" + } + }, + { + "in": "query", + "name": "elecprice", + "required": false, + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/ElecPriceCommonSettings" + }, + { + "type": "null" + } + ], + "title": "Elecprice" + } + }, + { + "in": "query", + "name": "load", + "required": false, + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/LoadCommonSettings" + }, + { + "type": "null" + } + ], + "title": "Load" + } + }, + { + "in": "query", + "name": "pvforecast", + "required": false, + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/PVForecastCommonSettings-Input" + }, + { + "type": "null" + } + ], + "title": "Pvforecast" + } + }, + { + "in": "query", + "name": "weather", + "required": false, + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/WeatherCommonSettings" + }, + { + "type": "null" + } + ], + "title": "Weather" + } + }, + { + "in": "query", + "name": "server", + "required": false, + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/ServerCommonSettings" + }, + { + "type": "null" + } + ], + "title": "Server" + } + }, + { + "in": "query", + "name": "utils", + "required": false, + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/UtilsCommonSettings" + }, + { + "type": "null" + } + ], + "title": "Utils" + } + } + ], + "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" } - ] }, - "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)." - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "ems", - "pv_akku", - "inverter", - "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)." - } - }, - "additionalProperties": false, - "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" + "summary": "Fastapi Config Put" } - ] }, - "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" + "/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" }, - "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" - } + "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" + } }, - "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" - } + "/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" + } }, - "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_eos_host": { - "anyOf": [ - { - "type": "string", - "format": "ipvanyaddress" - }, - { - "type": "null" - } - ], - "title": "Server Eos Host", - "description": "EOS server IP address.", - "default": "0.0.0.0" - }, - "server_eos_port": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "title": "Server Eos Port", - "description": "EOS server IP port number.", - "default": 8503 - }, - "server_eos_verbose": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Server Eos Verbose", - "description": "Enable debug output", - "default": false - }, - "server_eos_startup_eosdash": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "title": "Server Eos Startup Eosdash", - "description": "EOS server to start EOSdash server.", - "default": true - }, - "server_eosdash_host": { - "anyOf": [ - { - "type": "string", - "format": "ipvanyaddress" - }, - { - "type": "null" - } - ], - "title": "Server Eosdash Host", - "description": "EOSdash server IP address.", - "default": "0.0.0.0" - }, - "server_eosdash_port": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "title": "Server Eosdash Port", - "description": "EOSdash 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" + "/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" + } }, - "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 - } + "summary": "Fastapi Config Value Put" + } }, - "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" + "/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 }, - { - "type": "null" - } - ] - }, - "type": "array", - "title": "Last Wh Pro Stunde", - "description": "TBD" - }, - "EAuto_SoC_pro_Stunde": { - "items": { - "anyOf": [ - { - "type": "number" + "responses": { + "200": { + "content": { + "application/json": { + "schema": {} + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } }, - { - "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" - } + "summary": "Fastapi Measurement Data Put" + } }, - "additionalProperties": false, - "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 - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "capacity_wh" - ], - "title": "SolarPanelBatteryParameters" - }, - "ValidationError": { - "properties": { - "loc": { - "items": { - "anyOf": [ - { - "type": "string" + "/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 }, - { - "type": "integer" - } - ] - }, - "type": "array", - "title": "Location" - }, - "msg": { - "type": "string", - "title": "Message" - }, - "type": { - "type": "string", - "title": "Error Type" - } + "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" + } }, - "type": "object", - "required": [ - "loc", - "msg", - "type" - ], - "title": "ValidationError" - } + "/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" + } + } } - } } \ No newline at end of file diff --git a/scripts/generate_config_md.py b/scripts/generate_config_md.py index c58b8ec..5e48099 100755 --- a/scripts/generate_config_md.py +++ b/scripts/generate_config_md.py @@ -2,74 +2,237 @@ """Utility functions for Configuration specification generation.""" import argparse +import json import sys +import textwrap +from typing import Any, Union + +from pydantic.fields import ComputedFieldInfo, FieldInfo +from pydantic_core import PydanticUndefined from akkudoktoreos.config.config import get_config from akkudoktoreos.core.logging import get_logger +from akkudoktoreos.core.pydantic import PydanticBaseModel logger = get_logger(__name__) config_eos = get_config() -# Fixed set of prefixes to filter configuration values and their respective titles -CONFIG_PREFIXES = { - "battery": "Battery Device Simulation Configuration", - "bev": "Battery Electric Vehicle Device Simulation Configuration", - "dishwasher": "Dishwasher Device Simulation Configuration", - "inverter": "Inverter Device Simulation Configuration", - "measurement": "Measurement Configuration", - "optimization": "General Optimization Configuration", - "server": "Server Configuration", - "elecprice": "Electricity Price Prediction Configuration", - "load": "Load Prediction Configuration", - "logging": "Logging Configuration", - "prediction": "General Prediction Configuration", - "pvforecast": "PV Forecast Configuration", - "weather": "Weather Forecast Configuration", -} -# Static set of configuration names to include in a separate table -GENERAL_CONFIGS = [ - "config_default_file_path", - "config_file_path", - "config_folder_path", - "config_keys", - "config_keys_read_only", - "data_cache_path", - "data_cache_subpath", - "data_folder_path", - "data_output_path", - "data_output_subpath", - "latitude", - "longitude", - "package_root_path", - "timezone", -] +documented_types: set[PydanticBaseModel] = set() +undocumented_types: dict[PydanticBaseModel, tuple[str, list[str]]] = dict() -def generate_config_table_md(configs, title): +def get_title(config: PydanticBaseModel) -> str: + if config.__doc__ is None: + raise NameError(f"Missing docstring: {config}") + return config.__doc__.strip().splitlines()[0].strip(".") + + +def get_body(config: PydanticBaseModel) -> str: + if config.__doc__ is None: + raise NameError(f"Missing docstring: {config}") + return textwrap.dedent("\n".join(config.__doc__.strip().splitlines()[1:])).strip() + + +def resolve_nested_types(field_type: Any, parent_types: list[str]) -> list[tuple[Any, list[str]]]: + resolved_types: list[tuple[type, list[str]]] = [] + + origin = getattr(field_type, "__origin__", field_type) + if origin is Union: + for arg in getattr(field_type, "__args__", []): + resolved_types.extend(resolve_nested_types(arg, parent_types)) + elif origin is list: + for arg in getattr(field_type, "__args__", []): + resolved_types.extend(resolve_nested_types(arg, parent_types + ["list"])) + else: + resolved_types.append((field_type, parent_types)) + + return resolved_types + + +def get_example_or_default(field_name: str, field_info: FieldInfo) -> dict[str, Any]: + """Generate a default value for a field, considering constraints.""" + if field_info.examples is not None: + return field_info.examples[0] + + if field_info.default is not None: + return field_info.default + + raise NotImplementedError(f"No default or example provided '{field_name}': {field_info}") + + +def create_model_from_examples(model_class: PydanticBaseModel) -> PydanticBaseModel: + """Create a model instance with default or example values, respecting constraints.""" + example_data = {} + for field_name, field_info in model_class.model_fields.items(): + example_data[field_name] = get_example_or_default(field_name, field_info) + return model_class(**example_data) + + +def build_nested_structure(keys: list[str], value: Any) -> Any: + if not keys: + return value + + current_key = keys[0] + if current_key == "list": + return [build_nested_structure(keys[1:], value)] + else: + return {current_key: build_nested_structure(keys[1:], value)} + + +def get_default_value(field_info: Union[FieldInfo, ComputedFieldInfo], regular_field: bool) -> Any: + default_value = "" + if regular_field: + if (val := field_info.default) is not PydanticUndefined: + default_value = val + else: + default_value = "required" + else: + default_value = "N/A" + return default_value + + +def get_type_name(field_type: type) -> str: + type_name = str(field_type).replace("typing.", "") + if type_name.startswith(" str: """Generate a markdown table for given configurations. Args: - configs (dict): Configuration values with keys and their descriptions. - title (str): Title for the table. + config (PydanticBaseModel): PydanticBaseModel configuration definition. + prefix (str): Prefix for table entries. Returns: str: The markdown table as a string. """ - if not configs: - return "" + table = "" + if toplevel: + title = get_title(config) + + heading_level = "###" if extra_config else "##" + env_header = "" + env_header_underline = "" + env_width = "" + if not extra_config: + env_header = "| Environment Variable " + env_header_underline = "| -------------------- " + env_width = "20 " + + table += f"{heading_level} {title}\n\n" + + body = get_body(config) + if body: + table += body + table += "\n\n" + + table += ( + ":::{table} " + + f"{'::'.join(toplevel_keys)}\n:widths: 10 {env_width}10 5 5 30\n:align: left\n\n" + ) + table += f"| Name {env_header}| Type | Read-Only | Default | Description |\n" + table += f"| ---- {env_header_underline}| ---- | --------- | ------- | ----------- |\n" + + for field_name, field_info in list(config.model_fields.items()) + list( + config.model_computed_fields.items() + ): + regular_field = isinstance(field_info, FieldInfo) + + config_name = field_name if extra_config else field_name.upper() + field_type = field_info.annotation if regular_field else field_info.return_type + default_value = get_default_value(field_info, regular_field) + description = field_info.description if field_info.description else "-" + read_only = "rw" if regular_field else "ro" + type_name = get_type_name(field_type) + + env_entry = "" + if not extra_config: + if regular_field: + env_entry = f"| `{prefix}{config_name}` " + else: + env_entry = "| " + table += f"| {field_name} {env_entry}| `{type_name}` | `{read_only}` | `{default_value}` | {description} |\n" + + inner_types: dict[PydanticBaseModel, tuple[str, list[str]]] = dict() + + def extract_nested_models(subtype: Any, subprefix: str, parent_types: list[str]): + if subtype in inner_types.keys(): + return + nested_types = resolve_nested_types(subtype, []) + for nested_type, nested_parent_types in nested_types: + if issubclass(nested_type, PydanticBaseModel): + new_parent_types = parent_types + nested_parent_types + if "list" in parent_types: + new_prefix = "" + else: + new_prefix = f"{subprefix}" + inner_types.setdefault(nested_type, (new_prefix, new_parent_types)) + for nested_field_name, nested_field_info in list( + nested_type.model_fields.items() + ) + list(nested_type.model_computed_fields.items()): + nested_field_type = nested_field_info.annotation + if new_prefix: + new_prefix += f"{nested_field_name.upper()}__" + extract_nested_models( + nested_field_type, + new_prefix, + new_parent_types + [nested_field_name], + ) + + extract_nested_models(field_type, f"{prefix}{config_name}__", toplevel_keys + [field_name]) + + for new_type, info in inner_types.items(): + if new_type not in documented_types: + undocumented_types.setdefault(new_type, (info[0], info[1])) + + if toplevel: + table += ":::\n\n" # Add an empty line after the table + + ins = create_model_from_examples(config) + if ins is not None: + # Transform to JSON (and manually to dict) to use custom serializers and then merge with parent keys + ins_json = ins.model_dump_json(include_computed_fields=False) + ins_dict = json.loads(ins_json) + + ins_out_json = ins.model_dump_json(include_computed_fields=True) + ins_out_dict = json.loads(ins_out_json) + same_output = ins_out_dict == ins_dict + same_output_str = "/Output" if same_output else "" + + table += f"#{heading_level} Example Input{same_output_str}\n\n" + table += "```{eval-rst}\n" + table += ".. code-block:: json\n\n" + input_dict = build_nested_structure(toplevel_keys, ins_dict) + table += textwrap.indent(json.dumps(input_dict, indent=4), " ") + table += "\n" + table += "```\n\n" + + if not same_output: + table += f"#{heading_level} Example Output\n\n" + table += "```{eval-rst}\n" + table += ".. code-block:: json\n\n" + output_dict = build_nested_structure(toplevel_keys, ins_out_dict) + table += textwrap.indent(json.dumps(output_dict, indent=4), " ") + table += "\n" + table += "```\n\n" + + while undocumented_types: + extra_config_type, extra_info = undocumented_types.popitem() + documented_types.add(extra_config_type) + table += generate_config_table_md( + extra_config_type, extra_info[1], extra_info[0], True, True + ) - table = f"## {title}\n\n" - table += ":::{table} " + f"{title}\n:widths: 10 10 5 5 30\n:align: left\n\n" - table += "| Name | Type | Read-Only | Default | Description |\n" - table += "| ---- | ---- | --------- | ------- | ----------- |\n" - for name, config in sorted(configs.items()): - type_name = config["type"] - if type_name.startswith("typing."): - type_name = type_name[len("typing.") :] - table += f"| `{config['name']}` | `{type_name}` | `{config['read-only']}` | `{config['default']}` | {config['description']} |\n" - table += ":::\n\n" # Add an empty line after the table return table @@ -79,57 +242,16 @@ def generate_config_md() -> str: Returns: str: The Markdown representation of the configuration spec. """ - # FIXME: Support for nested - configs = {} - config_keys = config_eos.model_fields_set - # config_keys_read_only = config_eos.config_keys_read_only - config_keys_read_only: list[str] = [] - for config_key in config_keys: - config = {} - config["name"] = config_key - config["value"] = getattr(config_eos, config_key) - - if config_key in config_keys_read_only: - config["read-only"] = "ro" - computed_field_info = config_eos.__pydantic_decorators__.computed_fields[ - config_key - ].info - config["default"] = "N/A" - config["description"] = computed_field_info.description - config["type"] = str(computed_field_info.return_type) - else: - config["read-only"] = "rw" - field_info = config_eos.model_fields[config_key] - config["default"] = field_info.default - config["description"] = field_info.description - config["type"] = str(field_info.annotation) - - configs[config_key] = config - - # Generate markdown for the main table markdown = "# Configuration Table\n\n" - # Generate table for general configuration names - general_configs = {k: v for k, v in configs.items() if k in GENERAL_CONFIGS} - for k in general_configs.keys(): - del configs[k] # Remove general configs from the main configs dictionary - markdown += generate_config_table_md(general_configs, "General Configuration Values") + # Generate tables for each top level config + for field_name, field_info in config_eos.model_fields.items(): + field_type = field_info.annotation + markdown += generate_config_table_md( + field_type, [field_name], f"EOS_{field_name.upper()}__", True + ) - non_prefixed_configs = {k: v for k, v in configs.items()} - - # Generate tables for each prefix (sorted by value) and remove prefixed configs from the main dictionary - sorted_prefixes = sorted(CONFIG_PREFIXES.items(), key=lambda item: item[1]) - for prefix, title in sorted_prefixes: - prefixed_configs = {k: v for k, v in configs.items() if k.startswith(prefix)} - for k in prefixed_configs.keys(): - del non_prefixed_configs[k] - markdown += generate_config_table_md(prefixed_configs, title) - - # Generate markdown for the remaining non-prefixed configs if any - 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 + # Assure there is no double \n at end of file markdown = markdown.rstrip("\n") markdown += "\n" diff --git a/src/akkudoktoreos/config/config.py b/src/akkudoktoreos/config/config.py index 891b6d5..c642ee6 100644 --- a/src/akkudoktoreos/config/config.py +++ b/src/akkudoktoreos/config/config.py @@ -63,10 +63,13 @@ def get_absolute_path( class ConfigCommonSettings(SettingsBaseModel): - """Settings for common configuration.""" + """Settings for common configuration. + + General configuration to set directories of cache and output files. + """ data_folder_path: Optional[Path] = Field( - default=None, description="Path to EOS data directory." + default=None, description="Path to EOS data directory.", examples=[None, "/home/eos/data"] ) data_output_subpath: Optional[Path] = Field( diff --git a/src/akkudoktoreos/core/logsettings.py b/src/akkudoktoreos/core/logsettings.py index 6407329..95102bd 100644 --- a/src/akkudoktoreos/core/logsettings.py +++ b/src/akkudoktoreos/core/logsettings.py @@ -14,10 +14,12 @@ from akkudoktoreos.core.logabc import logging_str_to_level class LoggingCommonSettings(SettingsBaseModel): - """Common settings for logging.""" + """Logging Configuration.""" logging_level_default: Optional[str] = Field( - default=None, description="EOS default logging level." + default=None, + description="EOS default logging level.", + examples=["INFO", "DEBUG", "WARNING", "ERROR", "CRITICAL"], ) # Validators diff --git a/src/akkudoktoreos/core/pydantic.py b/src/akkudoktoreos/core/pydantic.py index b1a004f..22dd9c1 100644 --- a/src/akkudoktoreos/core/pydantic.py +++ b/src/akkudoktoreos/core/pydantic.py @@ -128,9 +128,16 @@ class PydanticBaseModel(BaseModel): return value # Override Pydantic’s serialization for all DateTime fields - def model_dump(self, *args: Any, **kwargs: Any) -> dict: + def model_dump( + self, *args: Any, include_computed_fields: bool = True, **kwargs: Any + ) -> dict[str, Any]: """Custom dump method to handle serialization for DateTime fields.""" result = super().model_dump(*args, **kwargs) + + if not include_computed_fields: + for computed_field_name in self.model_computed_fields: + result.pop(computed_field_name, None) + for key, value in result.items(): if isinstance(value, pendulum.DateTime): result[key] = PydanticTypeAdapterDateTime.serialize(value) @@ -185,6 +192,10 @@ class PydanticBaseModel(BaseModel): """ return cls.model_validate(data) + def model_dump_json(self, *args: Any, indent: Optional[int] = None, **kwargs: Any) -> str: + data = self.model_dump(*args, **kwargs) + return json.dumps(data, indent=indent, default=str) + def to_json(self) -> str: """Convert the PydanticBaseModel instance to a JSON string. diff --git a/src/akkudoktoreos/devices/battery.py b/src/akkudoktoreos/devices/battery.py index 92468f2..55dd816 100644 --- a/src/akkudoktoreos/devices/battery.py +++ b/src/akkudoktoreos/devices/battery.py @@ -25,15 +25,26 @@ def max_charging_power_field(description: Optional[str] = None) -> float: def initial_soc_percentage_field(description: str) -> int: - return Field(default=0, ge=0, le=100, description=description) + return Field(default=0, ge=0, le=100, description=description, examples=[42]) + + +def discharging_efficiency_field(default_value: float) -> float: + return Field( + default=default_value, + gt=0, + le=1, + description="A float representing the discharge efficiency of the battery.", + ) class BaseBatteryParameters(DeviceParameters): - """Base class for battery parameters with fields for capacity, efficiency, and state of charge.""" + """Battery Device Simulation Configuration.""" - device_id: str = Field(description="ID of battery") + device_id: str = Field(description="ID of battery", examples=["battery1"]) capacity_wh: int = Field( - gt=0, description="An integer representing the capacity of the battery in watt-hours." + gt=0, + description="An integer representing the capacity of the battery in watt-hours.", + examples=[8000], ) charging_efficiency: float = Field( default=0.88, @@ -41,12 +52,7 @@ class BaseBatteryParameters(DeviceParameters): le=1, description="A float representing the charging efficiency of the battery.", ) - discharging_efficiency: float = Field( - default=0.88, - gt=0, - le=1, - description="A float representing the discharge efficiency of the battery.", - ) + discharging_efficiency: float = discharging_efficiency_field(0.88) max_charge_power_w: Optional[float] = max_charging_power_field() initial_soc_percentage: int = initial_soc_percentage_field( "An integer representing the state of charge of the battery at the **start** of the current hour (not the current state)." @@ -56,6 +62,7 @@ class BaseBatteryParameters(DeviceParameters): ge=0, le=100, description="An integer representing the minimum state of charge (SOC) of the battery in percentage.", + examples=[10], ) max_soc_percentage: int = Field( default=100, @@ -70,10 +77,10 @@ class SolarPanelBatteryParameters(BaseBatteryParameters): class ElectricVehicleParameters(BaseBatteryParameters): - """Parameters specific to an electric vehicle (EV).""" + """Battery Electric Vehicle Device Simulation Configuration.""" - device_id: str = Field(description="ID of electric vehicle") - discharging_efficiency: float = 1.0 + device_id: str = Field(description="ID of electric vehicle", examples=["ev1"]) + discharging_efficiency: float = discharging_efficiency_field(1.0) initial_soc_percentage: int = initial_soc_percentage_field( "An integer representing the current state of charge (SOC) of the battery in percentage." ) @@ -82,7 +89,7 @@ class ElectricVehicleParameters(BaseBatteryParameters): class ElectricVehicleResult(DeviceOptimizeResult): """Result class containing information related to the electric vehicle's charging and discharging behavior.""" - device_id: str = Field(description="ID of electric vehicle") + device_id: str = Field(description="ID of electric vehicle", examples=["ev1"]) charge_array: list[float] = Field( description="Hourly charging status (0 for no charging, 1 for charging)." ) diff --git a/src/akkudoktoreos/devices/devicesabc.py b/src/akkudoktoreos/devices/devicesabc.py index 09e3b22..9ef733f 100644 --- a/src/akkudoktoreos/devices/devicesabc.py +++ b/src/akkudoktoreos/devices/devicesabc.py @@ -19,20 +19,19 @@ from akkudoktoreos.utils.datetimeutil import to_duration logger = get_logger(__name__) -# class DeviceParameters(PydanticBaseModel): class DeviceParameters(ParametersBaseModel): - device_id: str = Field(description="ID of device") + device_id: str = Field(description="ID of device", examples="device1") hours: Optional[int] = Field( default=None, gt=0, description="Number of prediction hours. Defaults to global config prediction hours.", + examples=[None], ) -# class DeviceOptimizeResult(PydanticBaseModel): class DeviceOptimizeResult(ParametersBaseModel): - device_id: str = Field(description="ID of device") - hours: int = Field(gt=0, description="Number of hours in the simulation.") + device_id: str = Field(description="ID of device", examples=["device1"]) + hours: int = Field(gt=0, description="Number of hours in the simulation.", examples=[24]) class DeviceState(Enum): diff --git a/src/akkudoktoreos/devices/generic.py b/src/akkudoktoreos/devices/generic.py index 526517c..1963b32 100644 --- a/src/akkudoktoreos/devices/generic.py +++ b/src/akkudoktoreos/devices/generic.py @@ -10,14 +10,18 @@ logger = get_logger(__name__) class HomeApplianceParameters(DeviceParameters): - device_id: str = Field(description="ID of home appliance") + """Home Appliance Device Simulation Configuration.""" + + device_id: str = Field(description="ID of home appliance", examples=["dishwasher"]) consumption_wh: int = Field( gt=0, description="An integer representing the energy consumption of a household device in watt-hours.", + examples=[2000], ) duration_h: int = Field( gt=0, description="An integer representing the usage duration of a household device in hours.", + examples=[3], ) diff --git a/src/akkudoktoreos/devices/inverter.py b/src/akkudoktoreos/devices/inverter.py index 0814382..7395ed5 100644 --- a/src/akkudoktoreos/devices/inverter.py +++ b/src/akkudoktoreos/devices/inverter.py @@ -10,9 +10,13 @@ logger = get_logger(__name__) class InverterParameters(DeviceParameters): - device_id: str = Field(description="ID of inverter") - max_power_wh: float = Field(gt=0) - battery: Optional[str] = Field(default=None, description="ID of battery") + """Inverter Device Simulation Configuration.""" + + device_id: str = Field(description="ID of inverter", examples=["inverter1"]) + max_power_wh: float = Field(gt=0, examples=[10000]) + battery: Optional[str] = Field( + default=None, description="ID of battery", examples=[None, "battery1"] + ) class Inverter(DeviceBase): diff --git a/src/akkudoktoreos/devices/settings.py b/src/akkudoktoreos/devices/settings.py index 0dfc658..6d8e458 100644 --- a/src/akkudoktoreos/devices/settings.py +++ b/src/akkudoktoreos/devices/settings.py @@ -15,11 +15,13 @@ class DevicesCommonSettings(SettingsBaseModel): """Base configuration for devices simulation settings.""" batteries: Optional[list[BaseBatteryParameters]] = Field( - default=None, description="List of battery/ev devices" + default=None, + description="List of battery/ev devices", + examples=[[{"device_id": "battery1", "capacity_wh": 8000}]], ) inverters: Optional[list[InverterParameters]] = Field( - default=None, description="List of inverters" + default=None, description="List of inverters", examples=[[]] ) home_appliances: Optional[list[HomeApplianceParameters]] = Field( - default=None, description="List of home appliances" + default=None, description="List of home appliances", examples=[[]] ) diff --git a/src/akkudoktoreos/measurement/measurement.py b/src/akkudoktoreos/measurement/measurement.py index e183ef8..2fb65cc 100644 --- a/src/akkudoktoreos/measurement/measurement.py +++ b/src/akkudoktoreos/measurement/measurement.py @@ -23,20 +23,22 @@ logger = get_logger(__name__) class MeasurementCommonSettings(SettingsBaseModel): + """Measurement Configuration.""" + measurement_load0_name: Optional[str] = Field( - default=None, description="Name of the load0 source (e.g. 'Household', 'Heat Pump')" + default=None, description="Name of the load0 source", examples=["Household", "Heat Pump"] ) measurement_load1_name: Optional[str] = Field( - default=None, description="Name of the load1 source (e.g. 'Household', 'Heat Pump')" + default=None, description="Name of the load1 source", examples=[None] ) measurement_load2_name: Optional[str] = Field( - default=None, description="Name of the load2 source (e.g. 'Household', 'Heat Pump')" + default=None, description="Name of the load2 source", examples=[None] ) measurement_load3_name: Optional[str] = Field( - default=None, description="Name of the load3 source (e.g. 'Household', 'Heat Pump')" + default=None, description="Name of the load3 source", examples=[None] ) measurement_load4_name: Optional[str] = Field( - default=None, description="Name of the load4 source (e.g. 'Household', 'Heat Pump')" + default=None, description="Name of the load4 source", examples=[None] ) @@ -49,29 +51,29 @@ class MeasurementDataRecord(DataRecord): # Single loads, to be aggregated to total load measurement_load0_mr: Optional[float] = Field( - default=None, ge=0, description="Load0 meter reading [kWh]" + default=None, ge=0, description="Load0 meter reading [kWh]", examples=[40421] ) measurement_load1_mr: Optional[float] = Field( - default=None, ge=0, description="Load1 meter reading [kWh]" + default=None, ge=0, description="Load1 meter reading [kWh]", examples=[None] ) measurement_load2_mr: Optional[float] = Field( - default=None, ge=0, description="Load2 meter reading [kWh]" + default=None, ge=0, description="Load2 meter reading [kWh]", examples=[None] ) measurement_load3_mr: Optional[float] = Field( - default=None, ge=0, description="Load3 meter reading [kWh]" + default=None, ge=0, description="Load3 meter reading [kWh]", examples=[None] ) measurement_load4_mr: Optional[float] = Field( - default=None, ge=0, description="Load4 meter reading [kWh]" + default=None, ge=0, description="Load4 meter reading [kWh]", examples=[None] ) measurement_max_loads: ClassVar[int] = 5 # Maximum number of loads that can be set measurement_grid_export_mr: Optional[float] = Field( - default=None, ge=0, description="Export to grid meter reading [kWh]" + default=None, ge=0, description="Export to grid meter reading [kWh]", examples=[1000] ) measurement_grid_import_mr: Optional[float] = Field( - default=None, ge=0, description="Import from grid meter reading [kWh]" + default=None, ge=0, description="Import from grid meter reading [kWh]", examples=[1000] ) # Computed fields diff --git a/src/akkudoktoreos/optimization/optimization.py b/src/akkudoktoreos/optimization/optimization.py index e78aac1..92e4cb9 100644 --- a/src/akkudoktoreos/optimization/optimization.py +++ b/src/akkudoktoreos/optimization/optimization.py @@ -9,7 +9,7 @@ logger = get_logger(__name__) class OptimizationCommonSettings(SettingsBaseModel): - """Base configuration for optimization settings. + """General Optimization Configuration. Attributes: optimization_hours (int): Number of hours for optimizations. diff --git a/src/akkudoktoreos/prediction/elecprice.py b/src/akkudoktoreos/prediction/elecprice.py index fd8079e..8081fe4 100644 --- a/src/akkudoktoreos/prediction/elecprice.py +++ b/src/akkudoktoreos/prediction/elecprice.py @@ -7,11 +7,17 @@ from akkudoktoreos.prediction.elecpriceimport import ElecPriceImportCommonSettin class ElecPriceCommonSettings(SettingsBaseModel): + """Electricity Price Prediction Configuration.""" + elecprice_provider: Optional[str] = Field( - default=None, description="Electricity price provider id of provider to be used." + default=None, + description="Electricity price provider id of provider to be used.", + examples=["ElecPriceAkkudoktor"], ) elecprice_charges_kwh: Optional[float] = Field( - default=None, ge=0, description="Electricity price charges (€/kWh)." + default=None, ge=0, description="Electricity price charges (€/kWh).", examples=[0.21] ) - provider_settings: Optional[ElecPriceImportCommonSettings] = None + provider_settings: Optional[ElecPriceImportCommonSettings] = Field( + default=None, description="Provider settings", examples=[None] + ) diff --git a/src/akkudoktoreos/prediction/elecpriceimport.py b/src/akkudoktoreos/prediction/elecpriceimport.py index fd745d4..311f090 100644 --- a/src/akkudoktoreos/prediction/elecpriceimport.py +++ b/src/akkudoktoreos/prediction/elecpriceimport.py @@ -23,12 +23,15 @@ class ElecPriceImportCommonSettings(SettingsBaseModel): """Common settings for elecprice data import from file or JSON String.""" elecpriceimport_file_path: Optional[Union[str, Path]] = Field( - default=None, description="Path to the file to import elecprice data from." + default=None, + description="Path to the file to import elecprice data from.", + examples=[None, "/path/to/prices.json"], ) elecpriceimport_json: Optional[str] = Field( default=None, description="JSON string, dictionary of electricity price forecast value lists.", + examples=['{"elecprice_marketprice_wh": [0.0003384, 0.0003318, 0.0003284]}'], ) # Validators diff --git a/src/akkudoktoreos/prediction/load.py b/src/akkudoktoreos/prediction/load.py index fc64f8c..26c47d7 100644 --- a/src/akkudoktoreos/prediction/load.py +++ b/src/akkudoktoreos/prediction/load.py @@ -13,12 +13,14 @@ logger = get_logger(__name__) class LoadCommonSettings(SettingsBaseModel): - """Common settings for loaod forecast providers.""" + """Load Prediction Configuration.""" load_provider: Optional[str] = Field( - default=None, description="Load provider id of provider to be used." + default=None, + description="Load provider id of provider to be used.", + examples=["LoadAkkudoktor"], ) provider_settings: Optional[Union[LoadAkkudoktorCommonSettings, LoadImportCommonSettings]] = ( - None + Field(default=None, description="Provider settings", examples=[None]) ) diff --git a/src/akkudoktoreos/prediction/loadakkudoktor.py b/src/akkudoktoreos/prediction/loadakkudoktor.py index c6d57cb..42f04a4 100644 --- a/src/akkudoktoreos/prediction/loadakkudoktor.py +++ b/src/akkudoktoreos/prediction/loadakkudoktor.py @@ -17,7 +17,7 @@ class LoadAkkudoktorCommonSettings(SettingsBaseModel): """Common settings for load data import from file.""" loadakkudoktor_year_energy: Optional[float] = Field( - default=None, description="Yearly energy consumption (kWh)." + default=None, description="Yearly energy consumption (kWh).", examples=[40421] ) diff --git a/src/akkudoktoreos/prediction/loadimport.py b/src/akkudoktoreos/prediction/loadimport.py index 836a0b8..df1a19e 100644 --- a/src/akkudoktoreos/prediction/loadimport.py +++ b/src/akkudoktoreos/prediction/loadimport.py @@ -23,10 +23,14 @@ class LoadImportCommonSettings(SettingsBaseModel): """Common settings for load data import from file or JSON string.""" load_import_file_path: Optional[Union[str, Path]] = Field( - default=None, description="Path to the file to import load data from." + default=None, + description="Path to the file to import load data from.", + examples=[None, "/path/to/yearly_load.json"], ) load_import_json: Optional[str] = Field( - default=None, description="JSON string, dictionary of load forecast value lists." + default=None, + description="JSON string, dictionary of load forecast value lists.", + examples=['{"load0_mean": [676.71, 876.19, 527.13]}'], ) # Validators diff --git a/src/akkudoktoreos/prediction/prediction.py b/src/akkudoktoreos/prediction/prediction.py index 37d7f45..3d8251d 100644 --- a/src/akkudoktoreos/prediction/prediction.py +++ b/src/akkudoktoreos/prediction/prediction.py @@ -45,7 +45,7 @@ from akkudoktoreos.utils.datetimeutil import to_timezone class PredictionCommonSettings(SettingsBaseModel): - """Base configuration for prediction settings, including forecast duration, geographic location, and time zone. + """General Prediction Configuration. This class provides configuration for prediction settings, allowing users to specify parameters such as the forecast duration (in hours) and location (latitude and longitude). diff --git a/src/akkudoktoreos/prediction/pvforecast.py b/src/akkudoktoreos/prediction/pvforecast.py index cc676c2..e055697 100644 --- a/src/akkudoktoreos/prediction/pvforecast.py +++ b/src/akkudoktoreos/prediction/pvforecast.py @@ -12,29 +12,37 @@ logger = get_logger(__name__) class PVForecastCommonSettings(SettingsBaseModel): + """PV Forecast Configuration.""" + # General plane parameters # https://pvlib-python.readthedocs.io/en/stable/_modules/pvlib/iotools/pvgis.html # Inverter Parameters # https://pvlib-python.readthedocs.io/en/stable/_modules/pvlib/inverter.html pvforecast_provider: Optional[str] = Field( - default=None, description="PVForecast provider id of provider to be used." + default=None, + description="PVForecast provider id of provider to be used.", + examples=["PVForecastAkkudoktor"], ) # pvforecast0_latitude: Optional[float] = Field(default=None, description="Latitude in decimal degrees, between -90 and 90, north is positive (ISO 19115) (°)") # Plane 0 pvforecast0_surface_tilt: Optional[float] = Field( - default=None, description="Tilt angle from horizontal plane. Ignored for two-axis tracking." + default=None, + description="Tilt angle from horizontal plane. Ignored for two-axis tracking.", + examples=[10.0], ) pvforecast0_surface_azimuth: Optional[float] = Field( default=None, description="Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", + examples=[10.0], ) pvforecast0_userhorizon: Optional[List[float]] = Field( default=None, description="Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", + examples=[[10.0, 20.0, 30.0]], ) pvforecast0_peakpower: Optional[float] = Field( - default=None, description="Nominal power of PV system in kW." + default=None, description="Nominal power of PV system in kW.", examples=[5.0] ) pvforecast0_pvtechchoice: Optional[str] = Field( default="crystSi", description="PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'." @@ -49,48 +57,60 @@ class PVForecastCommonSettings(SettingsBaseModel): pvforecast0_trackingtype: Optional[int] = Field( default=None, 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.", + examples=[0, 1, 2, 3, 4, 5], ) pvforecast0_optimal_surface_tilt: Optional[bool] = Field( default=False, description="Calculate the optimum tilt angle. Ignored for two-axis tracking.", + examples=[False], ) pvforecast0_optimalangles: Optional[bool] = Field( default=False, description="Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", + examples=[False], ) pvforecast0_albedo: Optional[float] = Field( default=None, description="Proportion of the light hitting the ground that it reflects back.", + examples=[None], ) pvforecast0_module_model: Optional[str] = Field( - default=None, description="Model of the PV modules of this plane." + default=None, description="Model of the PV modules of this plane.", examples=[None] ) pvforecast0_inverter_model: Optional[str] = Field( - default=None, description="Model of the inverter of this plane." + default=None, description="Model of the inverter of this plane.", examples=[None] ) pvforecast0_inverter_paco: Optional[int] = Field( - default=None, description="AC power rating of the inverter. [W]" + default=None, description="AC power rating of the inverter. [W]", examples=[6000] ) pvforecast0_modules_per_string: Optional[int] = Field( - default=None, description="Number of the PV modules of the strings of this plane." + default=None, + description="Number of the PV modules of the strings of this plane.", + examples=[20], ) pvforecast0_strings_per_inverter: Optional[int] = Field( - default=None, description="Number of the strings of the inverter of this plane." + default=None, + description="Number of the strings of the inverter of this plane.", + examples=[2], ) # Plane 1 pvforecast1_surface_tilt: Optional[float] = Field( - default=None, description="Tilt angle from horizontal plane. Ignored for two-axis tracking." + default=None, + description="Tilt angle from horizontal plane. Ignored for two-axis tracking.", + examples=[20.0], ) pvforecast1_surface_azimuth: Optional[float] = Field( default=None, description="Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", + examples=[20.0], ) pvforecast1_userhorizon: Optional[List[float]] = Field( default=None, description="Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", + examples=[[5.0, 15.0, 25.0]], ) pvforecast1_peakpower: Optional[float] = Field( - default=None, description="Nominal power of PV system in kW." + default=None, description="Nominal power of PV system in kW.", examples=[3.5] ) pvforecast1_pvtechchoice: Optional[str] = Field( default="crystSi", description="PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'." @@ -105,262 +125,332 @@ class PVForecastCommonSettings(SettingsBaseModel): pvforecast1_trackingtype: Optional[int] = Field( default=None, 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.", + examples=[None], ) pvforecast1_optimal_surface_tilt: Optional[bool] = Field( default=False, description="Calculate the optimum tilt angle. Ignored for two-axis tracking.", + examples=[False], ) pvforecast1_optimalangles: Optional[bool] = Field( default=False, description="Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", + examples=[False], ) pvforecast1_albedo: Optional[float] = Field( default=None, description="Proportion of the light hitting the ground that it reflects back.", + examples=[None], ) pvforecast1_module_model: Optional[str] = Field( - default=None, description="Model of the PV modules of this plane." + default=None, description="Model of the PV modules of this plane.", examples=[None] ) pvforecast1_inverter_model: Optional[str] = Field( - default=None, description="Model of the inverter of this plane." + default=None, description="Model of the inverter of this plane.", examples=[None] ) pvforecast1_inverter_paco: Optional[int] = Field( - default=None, description="AC power rating of the inverter. [W]" + default=None, description="AC power rating of the inverter. [W]", examples=[4000] ) pvforecast1_modules_per_string: Optional[int] = Field( - default=None, description="Number of the PV modules of the strings of this plane." + default=None, + description="Number of the PV modules of the strings of this plane.", + examples=[20], ) pvforecast1_strings_per_inverter: Optional[int] = Field( - default=None, description="Number of the strings of the inverter of this plane." + default=None, + description="Number of the strings of the inverter of this plane.", + examples=[2], ) # Plane 2 pvforecast2_surface_tilt: Optional[float] = Field( - default=None, description="Tilt angle from horizontal plane. Ignored for two-axis tracking." + default=None, + description="Tilt angle from horizontal plane. Ignored for two-axis tracking.", + examples=[None], ) pvforecast2_surface_azimuth: Optional[float] = Field( default=None, description="Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", + examples=[None], ) pvforecast2_userhorizon: Optional[List[float]] = Field( default=None, description="Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", + examples=[None], ) pvforecast2_peakpower: Optional[float] = Field( - default=None, description="Nominal power of PV system in kW." + default=None, description="Nominal power of PV system in kW.", examples=[None] ) pvforecast2_pvtechchoice: Optional[str] = Field( - default="crystSi", description="PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'." + default="crystSi", + description="PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + examples=[None], ) pvforecast2_mountingplace: Optional[str] = Field( default="free", description="Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", + examples=[None], ) pvforecast2_loss: Optional[float] = Field( - default=14.0, description="Sum of PV system losses in percent" + default=14.0, description="Sum of PV system losses in percent", examples=[None] ) pvforecast2_trackingtype: Optional[int] = Field( default=None, 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.", + examples=[None], ) pvforecast2_optimal_surface_tilt: Optional[bool] = Field( default=False, description="Calculate the optimum tilt angle. Ignored for two-axis tracking.", + examples=[None], ) pvforecast2_optimalangles: Optional[bool] = Field( default=False, description="Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", + examples=[None], ) pvforecast2_albedo: Optional[float] = Field( default=None, description="Proportion of the light hitting the ground that it reflects back.", + examples=[None], ) pvforecast2_module_model: Optional[str] = Field( - default=None, description="Model of the PV modules of this plane." + default=None, description="Model of the PV modules of this plane.", examples=[None] ) pvforecast2_inverter_model: Optional[str] = Field( - default=None, description="Model of the inverter of this plane." + default=None, description="Model of the inverter of this plane.", examples=[None] ) pvforecast2_inverter_paco: Optional[int] = Field( - default=None, description="AC power rating of the inverter. [W]" + default=None, description="AC power rating of the inverter. [W]", examples=[None] ) pvforecast2_modules_per_string: Optional[int] = Field( - default=None, description="Number of the PV modules of the strings of this plane." + default=None, + description="Number of the PV modules of the strings of this plane.", + examples=[None], ) pvforecast2_strings_per_inverter: Optional[int] = Field( - default=None, description="Number of the strings of the inverter of this plane." + default=None, + description="Number of the strings of the inverter of this plane.", + examples=[None], ) # Plane 3 pvforecast3_surface_tilt: Optional[float] = Field( - default=None, description="Tilt angle from horizontal plane. Ignored for two-axis tracking." + default=None, + description="Tilt angle from horizontal plane. Ignored for two-axis tracking.", + examples=[None], ) pvforecast3_surface_azimuth: Optional[float] = Field( default=None, description="Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", + examples=[None], ) pvforecast3_userhorizon: Optional[List[float]] = Field( default=None, description="Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", + examples=[None], ) pvforecast3_peakpower: Optional[float] = Field( - default=None, description="Nominal power of PV system in kW." + default=None, description="Nominal power of PV system in kW.", examples=[None] ) pvforecast3_pvtechchoice: Optional[str] = Field( - default="crystSi", description="PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'." + default="crystSi", + description="PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + examples=[None], ) pvforecast3_mountingplace: Optional[str] = Field( default="free", description="Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", + examples=[None], ) pvforecast3_loss: Optional[float] = Field( - default=14.0, description="Sum of PV system losses in percent" + default=14.0, description="Sum of PV system losses in percent", examples=[None] ) pvforecast3_trackingtype: Optional[int] = Field( default=None, 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.", + examples=[None], ) pvforecast3_optimal_surface_tilt: Optional[bool] = Field( default=False, description="Calculate the optimum tilt angle. Ignored for two-axis tracking.", + examples=[None], ) pvforecast3_optimalangles: Optional[bool] = Field( default=False, description="Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", + examples=[None], ) pvforecast3_albedo: Optional[float] = Field( default=None, description="Proportion of the light hitting the ground that it reflects back.", + examples=[None], ) pvforecast3_module_model: Optional[str] = Field( - default=None, description="Model of the PV modules of this plane." + default=None, description="Model of the PV modules of this plane.", examples=[None] ) pvforecast3_inverter_model: Optional[str] = Field( - default=None, description="Model of the inverter of this plane." + default=None, description="Model of the inverter of this plane.", examples=[None] ) pvforecast3_inverter_paco: Optional[int] = Field( - default=None, description="AC power rating of the inverter. [W]" + default=None, description="AC power rating of the inverter. [W]", examples=[None] ) pvforecast3_modules_per_string: Optional[int] = Field( - default=None, description="Number of the PV modules of the strings of this plane." + default=None, + description="Number of the PV modules of the strings of this plane.", + examples=[None], ) pvforecast3_strings_per_inverter: Optional[int] = Field( - default=None, description="Number of the strings of the inverter of this plane." + default=None, + description="Number of the strings of the inverter of this plane.", + examples=[None], ) # Plane 4 pvforecast4_surface_tilt: Optional[float] = Field( - default=None, description="Tilt angle from horizontal plane. Ignored for two-axis tracking." + default=None, + description="Tilt angle from horizontal plane. Ignored for two-axis tracking.", + examples=[None], ) pvforecast4_surface_azimuth: Optional[float] = Field( default=None, description="Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", + examples=[None], ) pvforecast4_userhorizon: Optional[List[float]] = Field( default=None, description="Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", + examples=[None], ) pvforecast4_peakpower: Optional[float] = Field( - default=None, description="Nominal power of PV system in kW." + default=None, description="Nominal power of PV system in kW.", examples=[None] ) pvforecast4_pvtechchoice: Optional[str] = Field( - default="crystSi", description="PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'." + default="crystSi", + description="PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + examples=[None], ) pvforecast4_mountingplace: Optional[str] = Field( default="free", description="Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", + examples=[None], ) pvforecast4_loss: Optional[float] = Field( - default=14.0, description="Sum of PV system losses in percent" + default=14.0, description="Sum of PV system losses in percent", examples=[None] ) pvforecast4_trackingtype: Optional[int] = Field( default=None, 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.", + examples=[None], ) pvforecast4_optimal_surface_tilt: Optional[bool] = Field( default=False, description="Calculate the optimum tilt angle. Ignored for two-axis tracking.", + examples=[None], ) pvforecast4_optimalangles: Optional[bool] = Field( default=False, description="Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", + examples=[None], ) pvforecast4_albedo: Optional[float] = Field( default=None, description="Proportion of the light hitting the ground that it reflects back.", + examples=[None], ) pvforecast4_module_model: Optional[str] = Field( - default=None, description="Model of the PV modules of this plane." + default=None, description="Model of the PV modules of this plane.", examples=[None] ) pvforecast4_inverter_model: Optional[str] = Field( - default=None, description="Model of the inverter of this plane." + default=None, description="Model of the inverter of this plane.", examples=[None] ) pvforecast4_inverter_paco: Optional[int] = Field( - default=None, description="AC power rating of the inverter. [W]" + default=None, description="AC power rating of the inverter. [W]", examples=[None] ) pvforecast4_modules_per_string: Optional[int] = Field( - default=None, description="Number of the PV modules of the strings of this plane." + default=None, + description="Number of the PV modules of the strings of this plane.", + examples=[None], ) pvforecast4_strings_per_inverter: Optional[int] = Field( - default=None, description="Number of the strings of the inverter of this plane." + default=None, + description="Number of the strings of the inverter of this plane.", + examples=[None], ) # Plane 5 pvforecast5_surface_tilt: Optional[float] = Field( - default=None, description="Tilt angle from horizontal plane. Ignored for two-axis tracking." + default=None, + description="Tilt angle from horizontal plane. Ignored for two-axis tracking.", + examples=[None], ) pvforecast5_surface_azimuth: Optional[float] = Field( default=None, description="Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270).", + examples=[None], ) pvforecast5_userhorizon: Optional[List[float]] = Field( default=None, description="Elevation of horizon in degrees, at equally spaced azimuth clockwise from north.", + examples=[None], ) pvforecast5_peakpower: Optional[float] = Field( - default=None, description="Nominal power of PV system in kW." + default=None, description="Nominal power of PV system in kW.", examples=[None] ) pvforecast5_pvtechchoice: Optional[str] = Field( - default="crystSi", description="PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'." + default="crystSi", + description="PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'.", + examples=[None], ) pvforecast5_mountingplace: Optional[str] = Field( default="free", description="Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated.", + examples=[None], ) pvforecast5_loss: Optional[float] = Field( - default=14.0, description="Sum of PV system losses in percent" + default=14.0, description="Sum of PV system losses in percent", examples=[None] ) pvforecast5_trackingtype: Optional[int] = Field( default=None, 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.", + examples=[None], ) pvforecast5_optimal_surface_tilt: Optional[bool] = Field( default=False, description="Calculate the optimum tilt angle. Ignored for two-axis tracking.", + examples=[None], ) pvforecast5_optimalangles: Optional[bool] = Field( default=False, description="Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking.", + examples=[None], ) pvforecast5_albedo: Optional[float] = Field( default=None, description="Proportion of the light hitting the ground that it reflects back.", + examples=[None], ) pvforecast5_module_model: Optional[str] = Field( - default=None, description="Model of the PV modules of this plane." + default=None, description="Model of the PV modules of this plane.", examples=[None] ) pvforecast5_inverter_model: Optional[str] = Field( - default=None, description="Model of the inverter of this plane." + default=None, description="Model of the inverter of this plane.", examples=[None] ) pvforecast5_inverter_paco: Optional[int] = Field( - default=None, description="AC power rating of the inverter. [W]" + default=None, description="AC power rating of the inverter. [W]", examples=[None] ) pvforecast5_modules_per_string: Optional[int] = Field( - default=None, description="Number of the PV modules of the strings of this plane." + default=None, + description="Number of the PV modules of the strings of this plane.", + examples=[None], ) pvforecast5_strings_per_inverter: Optional[int] = Field( - default=None, description="Number of the strings of the inverter of this plane." + default=None, + description="Number of the strings of the inverter of this plane.", + examples=[None], ) pvforecast_max_planes: ClassVar[int] = 6 # Maximum number of planes that can be set - provider_settings: Optional[PVForecastImportCommonSettings] = None + provider_settings: Optional[PVForecastImportCommonSettings] = Field( + default=None, description="Provider settings", examples=[None] + ) # Computed fields @computed_field # type: ignore[prop-decorator] diff --git a/src/akkudoktoreos/prediction/pvforecastimport.py b/src/akkudoktoreos/prediction/pvforecastimport.py index 96d33d7..89b6551 100644 --- a/src/akkudoktoreos/prediction/pvforecastimport.py +++ b/src/akkudoktoreos/prediction/pvforecastimport.py @@ -23,12 +23,15 @@ class PVForecastImportCommonSettings(SettingsBaseModel): """Common settings for pvforecast data import from file or JSON string.""" pvforecastimport_file_path: Optional[Union[str, Path]] = Field( - default=None, description="Path to the file to import PV forecast data from." + default=None, + description="Path to the file to import PV forecast data from.", + examples=[None, "/path/to/pvforecast.json"], ) pvforecastimport_json: Optional[str] = Field( default=None, description="JSON string, dictionary of PV forecast value lists.", + examples=['{"pvforecast_ac_power": [0, 8.05, 352.91]}'], ) # Validators diff --git a/src/akkudoktoreos/prediction/weather.py b/src/akkudoktoreos/prediction/weather.py index b6c3e34..c3c9eaf 100644 --- a/src/akkudoktoreos/prediction/weather.py +++ b/src/akkudoktoreos/prediction/weather.py @@ -9,8 +9,14 @@ from akkudoktoreos.prediction.weatherimport import WeatherImportCommonSettings class WeatherCommonSettings(SettingsBaseModel): + """Weather Forecast Configuration.""" + weather_provider: Optional[str] = Field( - default=None, description="Weather provider id of provider to be used." + default=None, + description="Weather provider id of provider to be used.", + examples=["WeatherImport"], ) - provider_settings: Optional[WeatherImportCommonSettings] = None + provider_settings: Optional[WeatherImportCommonSettings] = Field( + default=None, description="Provider settings", examples=[None] + ) diff --git a/src/akkudoktoreos/prediction/weatherimport.py b/src/akkudoktoreos/prediction/weatherimport.py index 47079b5..04d5611 100644 --- a/src/akkudoktoreos/prediction/weatherimport.py +++ b/src/akkudoktoreos/prediction/weatherimport.py @@ -23,11 +23,15 @@ class WeatherImportCommonSettings(SettingsBaseModel): """Common settings for weather data import from file or JSON string.""" weatherimport_file_path: Optional[Union[str, Path]] = Field( - default=None, description="Path to the file to import weather data from." + default=None, + description="Path to the file to import weather data from.", + examples=[None, "/path/to/weather_data.json"], ) weatherimport_json: Optional[str] = Field( - default=None, description="JSON string, dictionary of weather forecast value lists." + default=None, + description="JSON string, dictionary of weather forecast value lists.", + examples=['{"weather_temp_air": [18.3, 17.8, 16.9]}'], ) # Validators diff --git a/src/akkudoktoreos/server/server.py b/src/akkudoktoreos/server/server.py index 780f274..4656051 100644 --- a/src/akkudoktoreos/server/server.py +++ b/src/akkudoktoreos/server/server.py @@ -11,7 +11,7 @@ logger = get_logger(__name__) class ServerCommonSettings(SettingsBaseModel): - """Common server settings. + """Server Configuration. Attributes: To be added diff --git a/src/akkudoktoreos/utils/utils.py b/src/akkudoktoreos/utils/utils.py index a88954c..c907282 100644 --- a/src/akkudoktoreos/utils/utils.py +++ b/src/akkudoktoreos/utils/utils.py @@ -18,6 +18,8 @@ class classproperty(property): class UtilsCommonSettings(SettingsBaseModel): + """Utils Configuration.""" + pass diff --git a/src/akkudoktoreos/utils/visualize.py b/src/akkudoktoreos/utils/visualize.py index 31ccc85..aba4356 100644 --- a/src/akkudoktoreos/utils/visualize.py +++ b/src/akkudoktoreos/utils/visualize.py @@ -419,7 +419,9 @@ def prepare_visualize( start_hour: Optional[int] = 0, ) -> None: report = VisualizationReport(filename) - next_full_hour_date = pendulum.now(report.config.prediction.timezone).start_of("hour").add(hours=1) + next_full_hour_date = ( + pendulum.now(report.config.prediction.timezone).start_of("hour").add(hours=1) + ) # Group 1: report.create_line_chart_date( next_full_hour_date, # start_date diff --git a/tests/test_dataabc.py b/tests/test_dataabc.py index 25361ca..4a1993b 100644 --- a/tests/test_dataabc.py +++ b/tests/test_dataabc.py @@ -535,7 +535,7 @@ class TestDataSequence: json_str = sequence.to_json() assert isinstance(json_str, str) assert "2023-11-06" in json_str - assert ":0.8" in json_str + assert ": 0.8" in json_str def test_from_json(self, sequence, sequence2): json_str = sequence2.to_json()