2025-01-06 16:27:57 +01:00
# Configuration Table
2025-01-15 00:54:45 +01:00
## Settings for common configuration
2025-01-06 16:27:57 +01:00
2025-01-20 22:58:59 +01:00
General configuration to set directories of cache and output files and system 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:
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_latitude (float): Ensures `latitude` is within the range -90 to 90.
validate_longitude (float): Ensures `longitude` is within the range -180 to 180.
2025-01-15 00:54:45 +01:00
:::{table} general
:widths: 10 20 10 5 5 30
2025-01-06 16:27:57 +01:00
:align: left
2025-01-15 00:54:45 +01:00
| 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. |
2025-01-20 22:58:59 +01:00
| latitude | `EOS_GENERAL__LATITUDE` | `Optional[float]` | `rw` | `52.52` | Latitude in decimal degrees, between -90 and 90, north is positive (ISO 19115) (°) |
| longitude | `EOS_GENERAL__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. |
2025-01-15 00:54:45 +01:00
| 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. |
2025-01-19 21:47:21 +01:00
| config_folder_path | | `Optional[pathlib.Path]` | `ro` | `N/A` | Path to EOS configuration directory. |
| config_file_path | | `Optional[pathlib.Path]` | `ro` | `N/A` | Path to EOS configuration file. |
2025-01-06 16:27:57 +01:00
:::
2025-01-15 00:54:45 +01:00
### Example Input
2025-01-06 16:27:57 +01:00
2025-01-15 00:54:45 +01:00
```{eval-rst}
.. code-block:: json
{
"general": {
"data_folder_path": null,
"data_output_subpath": "output",
2025-01-20 22:58:59 +01:00
"data_cache_subpath": "cache",
"latitude": 52.52,
"longitude": 13.405
2025-01-15 00:54:45 +01:00
}
}
```
### Example Output
```{eval-rst}
.. code-block:: json
{
"general": {
"data_folder_path": null,
"data_output_subpath": "output",
"data_cache_subpath": "cache",
2025-01-20 22:58:59 +01:00
"latitude": 52.52,
"longitude": 13.405,
"timezone": "Europe/Berlin",
2025-01-15 00:54:45 +01:00
"data_output_path": null,
2025-01-19 21:47:21 +01:00
"data_cache_path": null,
"config_folder_path": "/home/user/.config/net.akkudoktoreos.net",
"config_file_path": "/home/user/.config/net.akkudoktoreos.net/EOS.config.json"
2025-01-15 00:54:45 +01:00
}
}
```
## Logging Configuration
:::{table} logging
:widths: 10 20 10 5 5 30
2025-01-06 16:27:57 +01:00
:align: left
2025-01-15 00:54:45 +01:00
| Name | Environment Variable | Type | Read-Only | Default | Description |
| ---- | -------------------- | ---- | --------- | ------- | ----------- |
2025-01-18 14:26:34 +01:00
| level | `EOS_LOGGING__LEVEL` | `Optional[str]` | `rw` | `None` | EOS default logging level. |
| root_level | | `str` | `ro` | `N/A` | Root logger logging level. |
2025-01-06 16:27:57 +01:00
:::
2025-01-15 00:54:45 +01:00
### Example Input
```{eval-rst}
.. code-block:: json
2025-01-06 16:27:57 +01:00
2025-01-15 00:54:45 +01:00
{
"logging": {
2025-01-18 14:26:34 +01:00
"level": "INFO"
2025-01-15 00:54:45 +01:00
}
}
```
### Example Output
```{eval-rst}
.. code-block:: json
{
"logging": {
2025-01-18 14:26:34 +01:00
"level": "INFO",
"root_level": "INFO"
2025-01-15 00:54:45 +01:00
}
}
```
## 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
2025-01-06 16:27:57 +01:00
:widths: 10 10 5 5 30
:align: left
| Name | Type | Read-Only | Default | Description |
| ---- | ---- | --------- | ------- | ----------- |
2025-01-15 00:54:45 +01:00
| 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. |
2025-01-06 16:27:57 +01:00
:::
2025-01-15 00:54:45 +01:00
#### Example Input/Output
```{eval-rst}
.. code-block:: json
{
"devices": {
"home_appliances": [
{
"device_id": "dishwasher",
"hours": null,
"consumption_wh": 2000,
"duration_h": 3
}
]
}
}
```
2025-01-06 16:27:57 +01:00
2025-01-15 00:54:45 +01:00
### Inverter Device Simulation Configuration
:::{table} devices::inverters::list
2025-01-06 16:27:57 +01:00
:widths: 10 10 5 5 30
:align: left
| Name | Type | Read-Only | Default | Description |
| ---- | ---- | --------- | ------- | ----------- |
2025-01-15 00:54:45 +01:00
| 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` | - |
2025-01-18 14:26:34 +01:00
| battery_id | `Optional[str]` | `rw` | `None` | ID of battery |
2025-01-06 16:27:57 +01:00
:::
2025-01-15 00:54:45 +01:00
#### Example Input/Output
```{eval-rst}
.. code-block:: json
2025-01-06 16:27:57 +01:00
2025-01-15 00:54:45 +01:00
{
"devices": {
"inverters": [
{
"device_id": "inverter1",
"hours": null,
"max_power_wh": 10000.0,
2025-01-18 14:26:34 +01:00
"battery_id": null
2025-01-15 00:54:45 +01:00
}
]
}
}
```
### Battery Device Simulation Configuration
:::{table} devices::batteries::list
2025-01-06 16:27:57 +01:00
:widths: 10 10 5 5 30
:align: left
| Name | Type | Read-Only | Default | Description |
| ---- | ---- | --------- | ------- | ----------- |
2025-01-15 00:54:45 +01:00
| 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
:widths: 10 20 10 5 5 30
:align: left
| Name | Environment Variable | Type | Read-Only | Default | Description |
| ---- | -------------------- | ---- | --------- | ------- | ----------- |
2025-01-18 14:26:34 +01:00
| load0_name | `EOS_MEASUREMENT__LOAD0_NAME` | `Optional[str]` | `rw` | `None` | Name of the load0 source |
| load1_name | `EOS_MEASUREMENT__LOAD1_NAME` | `Optional[str]` | `rw` | `None` | Name of the load1 source |
| load2_name | `EOS_MEASUREMENT__LOAD2_NAME` | `Optional[str]` | `rw` | `None` | Name of the load2 source |
| load3_name | `EOS_MEASUREMENT__LOAD3_NAME` | `Optional[str]` | `rw` | `None` | Name of the load3 source |
| load4_name | `EOS_MEASUREMENT__LOAD4_NAME` | `Optional[str]` | `rw` | `None` | Name of the load4 source |
2025-01-06 16:27:57 +01:00
:::
2025-01-15 00:54:45 +01:00
### Example Input/Output
```{eval-rst}
.. code-block:: json
{
"measurement": {
2025-01-18 14:26:34 +01:00
"load0_name": "Household",
"load1_name": null,
"load2_name": null,
"load3_name": null,
"load4_name": null
2025-01-15 00:54:45 +01:00
}
}
```
2025-01-06 16:27:57 +01:00
## General Optimization Configuration
2025-01-15 00:54:45 +01:00
Attributes:
2025-01-18 14:26:34 +01:00
hours (int): Number of hours for optimizations.
2025-01-15 00:54:45 +01:00
:::{table} optimization
:widths: 10 20 10 5 5 30
2025-01-06 16:27:57 +01:00
:align: left
2025-01-15 00:54:45 +01:00
| Name | Environment Variable | Type | Read-Only | Default | Description |
| ---- | -------------------- | ---- | --------- | ------- | ----------- |
2025-01-18 14:26:34 +01:00
| hours | `EOS_OPTIMIZATION__HOURS` | `Optional[int]` | `rw` | `48` | Number of hours into the future for optimizations. |
| penalty | `EOS_OPTIMIZATION__PENALTY` | `Optional[int]` | `rw` | `10` | Penalty factor used in optimization. |
| ev_available_charge_rates_percent | `EOS_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. |
2025-01-06 16:27:57 +01:00
:::
2025-01-15 00:54:45 +01:00
### Example Input/Output
```{eval-rst}
.. code-block:: json
{
"optimization": {
2025-01-18 14:26:34 +01:00
"hours": 48,
"penalty": 10,
"ev_available_charge_rates_percent": [
2025-01-15 00:54:45 +01:00
0.0,
0.375,
0.5,
0.625,
0.75,
0.875,
1.0
]
}
}
```
2025-01-06 16:27:57 +01:00
## General Prediction Configuration
2025-01-15 00:54:45 +01:00
This class provides configuration for prediction settings, allowing users to specify
2025-01-20 22:58:59 +01:00
parameters such as the forecast duration (in hours).
Validators ensure each parameter is within a specified range.
2025-01-15 00:54:45 +01:00
Attributes:
2025-01-18 14:26:34 +01:00
hours (Optional[int]): Number of hours into the future for predictions.
2025-01-15 00:54:45 +01:00
Must be non-negative.
2025-01-18 14:26:34 +01:00
historic_hours (Optional[int]): Number of hours into the past for historical data.
2025-01-15 00:54:45 +01:00
Must be non-negative.
Validators:
2025-01-18 14:26:34 +01:00
validate_hours (int): Ensures `hours` is a non-negative integer.
validate_historic_hours (int): Ensures `historic_hours` is a non-negative integer.
2025-01-15 00:54:45 +01:00
:::{table} prediction
:widths: 10 20 10 5 5 30
2025-01-06 16:27:57 +01:00
:align: left
2025-01-15 00:54:45 +01:00
| Name | Environment Variable | Type | Read-Only | Default | Description |
| ---- | -------------------- | ---- | --------- | ------- | ----------- |
2025-01-18 14:26:34 +01:00
| hours | `EOS_PREDICTION__HOURS` | `Optional[int]` | `rw` | `48` | Number of hours into the future for predictions |
| historic_hours | `EOS_PREDICTION__HISTORIC_HOURS` | `Optional[int]` | `rw` | `48` | Number of hours into the past for historical predictions data |
2025-01-15 00:54:45 +01:00
:::
2025-01-20 22:58:59 +01:00
### Example Input/Output
2025-01-15 00:54:45 +01:00
```{eval-rst}
.. code-block:: json
{
"prediction": {
2025-01-18 14:26:34 +01:00
"hours": 48,
2025-01-20 22:58:59 +01:00
"historic_hours": 48
2025-01-15 00:54:45 +01:00
}
}
```
## Electricity Price Prediction Configuration
:::{table} elecprice
:widths: 10 20 10 5 5 30
:align: left
| Name | Environment Variable | Type | Read-Only | Default | Description |
| ---- | -------------------- | ---- | --------- | ------- | ----------- |
2025-01-18 14:26:34 +01:00
| provider | `EOS_ELECPRICE__PROVIDER` | `Optional[str]` | `rw` | `None` | Electricity price provider id of provider to be used. |
| charges_kwh | `EOS_ELECPRICE__CHARGES_KWH` | `Optional[float]` | `rw` | `None` | Electricity price charges (€/kWh). |
2025-01-15 00:54:45 +01:00
| provider_settings | `EOS_ELECPRICE__PROVIDER_SETTINGS` | `Optional[akkudoktoreos.prediction.elecpriceimport.ElecPriceImportCommonSettings]` | `rw` | `None` | Provider settings |
2025-01-06 16:27:57 +01:00
:::
2025-01-15 00:54:45 +01:00
### Example Input/Output
```{eval-rst}
.. code-block:: json
2025-01-06 16:27:57 +01:00
2025-01-15 00:54:45 +01:00
{
"elecprice": {
2025-01-18 14:26:34 +01:00
"provider": "ElecPriceAkkudoktor",
"charges_kwh": 0.21,
2025-01-15 00:54:45 +01:00
"provider_settings": null
}
}
```
### Common settings for elecprice data import from file or JSON String
:::{table} elecprice::provider_settings
2025-01-06 16:27:57 +01:00
:widths: 10 10 5 5 30
:align: left
| Name | Type | Read-Only | Default | Description |
| ---- | ---- | --------- | ------- | ----------- |
2025-01-18 14:26:34 +01:00
| import_file_path | `Union[str, pathlib.Path, NoneType]` | `rw` | `None` | Path to the file to import elecprice data from. |
| import_json | `Optional[str]` | `rw` | `None` | JSON string, dictionary of electricity price forecast value lists. |
2025-01-06 16:27:57 +01:00
:::
2025-01-15 00:54:45 +01:00
#### Example Input/Output
```{eval-rst}
.. code-block:: json
{
"elecprice": {
"provider_settings": {
2025-01-18 14:26:34 +01:00
"import_file_path": null,
"import_json": "{\"elecprice_marketprice_wh\": [0.0003384, 0.0003318, 0.0003284]}"
2025-01-15 00:54:45 +01:00
}
}
}
```
2025-01-06 16:27:57 +01:00
## Load Prediction Configuration
2025-01-15 00:54:45 +01:00
:::{table} load
:widths: 10 20 10 5 5 30
2025-01-06 16:27:57 +01:00
:align: left
2025-01-15 00:54:45 +01:00
| Name | Environment Variable | Type | Read-Only | Default | Description |
| ---- | -------------------- | ---- | --------- | ------- | ----------- |
2025-01-18 14:26:34 +01:00
| provider | `EOS_LOAD__PROVIDER` | `Optional[str]` | `rw` | `None` | Load provider id of provider to be used. |
2025-01-15 00:54:45 +01:00
| provider_settings | `EOS_LOAD__PROVIDER_SETTINGS` | `Union[akkudoktoreos.prediction.loadakkudoktor.LoadAkkudoktorCommonSettings, akkudoktoreos.prediction.loadimport.LoadImportCommonSettings, NoneType]` | `rw` | `None` | Provider settings |
2025-01-06 16:27:57 +01:00
:::
2025-01-15 00:54:45 +01:00
### Example Input/Output
```{eval-rst}
.. code-block:: json
{
"load": {
2025-01-18 14:26:34 +01:00
"provider": "LoadAkkudoktor",
2025-01-15 00:54:45 +01:00
"provider_settings": null
}
}
```
2025-01-06 16:27:57 +01:00
2025-01-15 00:54:45 +01:00
### Common settings for load data import from file or JSON string
:::{table} load::provider_settings
2025-01-06 16:27:57 +01:00
:widths: 10 10 5 5 30
:align: left
| Name | Type | Read-Only | Default | Description |
| ---- | ---- | --------- | ------- | ----------- |
2025-01-18 14:26:34 +01:00
| import_file_path | `Union[str, pathlib.Path, NoneType]` | `rw` | `None` | Path to the file to import load data from. |
| import_json | `Optional[str]` | `rw` | `None` | JSON string, dictionary of load forecast value lists. |
2025-01-06 16:27:57 +01:00
:::
2025-01-15 00:54:45 +01:00
#### Example Input/Output
```{eval-rst}
.. code-block:: json
2025-01-06 16:27:57 +01:00
2025-01-15 00:54:45 +01:00
{
"load": {
"provider_settings": {
2025-01-18 14:26:34 +01:00
"import_file_path": null,
"import_json": "{\"load0_mean\": [676.71, 876.19, 527.13]}"
2025-01-15 00:54:45 +01:00
}
}
}
```
### Common settings for load data import from file
:::{table} load::provider_settings
2025-01-06 16:27:57 +01:00
:widths: 10 10 5 5 30
:align: left
| Name | Type | Read-Only | Default | Description |
| ---- | ---- | --------- | ------- | ----------- |
2025-01-15 00:54:45 +01:00
| loadakkudoktor_year_energy | `Optional[float]` | `rw` | `None` | Yearly energy consumption (kWh). |
2025-01-06 16:27:57 +01:00
:::
2025-01-15 00:54:45 +01:00
#### Example Input/Output
```{eval-rst}
.. code-block:: json
{
"load": {
"provider_settings": {
"loadakkudoktor_year_energy": 40421.0
}
}
}
```
2025-01-06 16:27:57 +01:00
## PV Forecast Configuration
2025-01-15 00:54:45 +01:00
:::{table} pvforecast
:widths: 10 20 10 5 5 30
2025-01-06 16:27:57 +01:00
:align: left
2025-01-15 00:54:45 +01:00
| Name | Environment Variable | Type | Read-Only | Default | Description |
| ---- | -------------------- | ---- | --------- | ------- | ----------- |
2025-01-18 14:26:34 +01:00
| provider | `EOS_PVFORECAST__PROVIDER` | `Optional[str]` | `rw` | `None` | PVForecast provider id of provider to be used. |
2025-01-19 18:12:50 +01:00
| planes | `EOS_PVFORECAST__PLANES` | `Optional[list[akkudoktoreos.prediction.pvforecast.PVForecastPlaneSetting]]` | `rw` | `None` | Plane configuration. |
2025-01-15 00:54:45 +01:00
| provider_settings | `EOS_PVFORECAST__PROVIDER_SETTINGS` | `Optional[akkudoktoreos.prediction.pvforecastimport.PVForecastImportCommonSettings]` | `rw` | `None` | Provider settings |
2025-01-19 18:12:50 +01:00
| planes_peakpower | | `List[float]` | `ro` | `N/A` | Compute a list of the peak power per active planes. |
| planes_azimuth | | `List[float]` | `ro` | `N/A` | Compute a list of the azimuths per active planes. |
| planes_tilt | | `List[float]` | `ro` | `N/A` | Compute a list of the tilts per active planes. |
| planes_userhorizon | | `Any` | `ro` | `N/A` | Compute a list of the user horizon per active planes. |
| planes_inverter_paco | | `Any` | `ro` | `N/A` | Compute a list of the maximum power rating of the inverter per active planes. |
2025-01-06 16:27:57 +01:00
:::
2025-01-15 00:54:45 +01:00
### Example Input
```{eval-rst}
.. code-block:: json
{
"pvforecast": {
2025-01-18 14:26:34 +01:00
"provider": "PVForecastAkkudoktor",
2025-01-19 18:12:50 +01:00
"planes": [
{
"surface_tilt": 10.0,
"surface_azimuth": 10.0,
"userhorizon": [
10.0,
20.0,
30.0
],
"peakpower": 5.0,
"pvtechchoice": "crystSi",
"mountingplace": "free",
"loss": 14.0,
"trackingtype": 0,
"optimal_surface_tilt": false,
"optimalangles": false,
"albedo": null,
"module_model": null,
"inverter_model": null,
"inverter_paco": 6000,
"modules_per_string": 20,
"strings_per_inverter": 2
},
{
"surface_tilt": 20.0,
"surface_azimuth": 20.0,
"userhorizon": [
5.0,
15.0,
25.0
],
"peakpower": 3.5,
"pvtechchoice": "crystSi",
"mountingplace": "free",
"loss": 14.0,
"trackingtype": 1,
"optimal_surface_tilt": false,
"optimalangles": false,
"albedo": null,
"module_model": null,
"inverter_model": null,
"inverter_paco": 4000,
"modules_per_string": 20,
"strings_per_inverter": 2
}
2025-01-15 00:54:45 +01:00
],
"provider_settings": null
}
}
```
### Example Output
```{eval-rst}
.. code-block:: json
{
"pvforecast": {
2025-01-18 14:26:34 +01:00
"provider": "PVForecastAkkudoktor",
2025-01-19 18:12:50 +01:00
"planes": [
{
"surface_tilt": 10.0,
"surface_azimuth": 10.0,
"userhorizon": [
10.0,
20.0,
30.0
],
"peakpower": 5.0,
"pvtechchoice": "crystSi",
"mountingplace": "free",
"loss": 14.0,
"trackingtype": 0,
"optimal_surface_tilt": false,
"optimalangles": false,
"albedo": null,
"module_model": null,
"inverter_model": null,
"inverter_paco": 6000,
"modules_per_string": 20,
"strings_per_inverter": 2
},
{
"surface_tilt": 20.0,
"surface_azimuth": 20.0,
"userhorizon": [
5.0,
15.0,
25.0
],
"peakpower": 3.5,
"pvtechchoice": "crystSi",
"mountingplace": "free",
"loss": 14.0,
"trackingtype": 1,
"optimal_surface_tilt": false,
"optimalangles": false,
"albedo": null,
"module_model": null,
"inverter_model": null,
"inverter_paco": 4000,
"modules_per_string": 20,
"strings_per_inverter": 2
}
2025-01-15 00:54:45 +01:00
],
"provider_settings": null,
2025-01-19 18:12:50 +01:00
"planes_peakpower": [
2025-01-15 00:54:45 +01:00
5.0,
3.5
],
2025-01-19 18:12:50 +01:00
"planes_azimuth": [
2025-01-15 00:54:45 +01:00
10.0,
20.0
],
2025-01-19 18:12:50 +01:00
"planes_tilt": [
2025-01-15 00:54:45 +01:00
10.0,
20.0
],
2025-01-19 18:12:50 +01:00
"planes_userhorizon": [
2025-01-15 00:54:45 +01:00
[
10.0,
20.0,
30.0
],
[
5.0,
15.0,
25.0
]
],
2025-01-19 18:12:50 +01:00
"planes_inverter_paco": [
2025-01-15 00:54:45 +01:00
6000.0,
4000.0
]
}
}
```
### Common settings for pvforecast data import from file or JSON string
:::{table} pvforecast::provider_settings
2025-01-06 16:27:57 +01:00
:widths: 10 10 5 5 30
:align: left
| Name | Type | Read-Only | Default | Description |
| ---- | ---- | --------- | ------- | ----------- |
2025-01-19 18:12:50 +01:00
| import_file_path | `Union[str, pathlib.Path, NoneType]` | `rw` | `None` | Path to the file to import PV forecast data from. |
| import_json | `Optional[str]` | `rw` | `None` | JSON string, dictionary of PV forecast value lists. |
2025-01-06 16:27:57 +01:00
:::
2025-01-15 00:54:45 +01:00
#### Example Input/Output
```{eval-rst}
.. code-block:: json
{
"pvforecast": {
"provider_settings": {
2025-01-19 18:12:50 +01:00
"import_file_path": null,
"import_json": "{\"pvforecast_ac_power\": [0, 8.05, 352.91]}"
2025-01-15 00:54:45 +01:00
}
}
2025-01-19 18:12:50 +01:00
}
```
### PV Forecast Plane Configuration
:::{table} pvforecast::planes::list
:widths: 10 10 5 5 30
:align: left
| Name | Type | Read-Only | Default | Description |
| ---- | ---- | --------- | ------- | ----------- |
| surface_tilt | `Optional[float]` | `rw` | `None` | Tilt angle from horizontal plane. Ignored for two-axis tracking. |
| surface_azimuth | `Optional[float]` | `rw` | `None` | Orientation (azimuth angle) of the (fixed) plane. Clockwise from north (north=0, east=90, south=180, west=270). |
| userhorizon | `Optional[List[float]]` | `rw` | `None` | Elevation of horizon in degrees, at equally spaced azimuth clockwise from north. |
| peakpower | `Optional[float]` | `rw` | `None` | Nominal power of PV system in kW. |
| pvtechchoice | `Optional[str]` | `rw` | `crystSi` | PV technology. One of 'crystSi', 'CIS', 'CdTe', 'Unknown'. |
| mountingplace | `Optional[str]` | `rw` | `free` | Type of mounting for PV system. Options are 'free' for free-standing and 'building' for building-integrated. |
| loss | `Optional[float]` | `rw` | `14.0` | Sum of PV system losses in percent |
| 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. |
| optimal_surface_tilt | `Optional[bool]` | `rw` | `False` | Calculate the optimum tilt angle. Ignored for two-axis tracking. |
| optimalangles | `Optional[bool]` | `rw` | `False` | Calculate the optimum tilt and azimuth angles. Ignored for two-axis tracking. |
| albedo | `Optional[float]` | `rw` | `None` | Proportion of the light hitting the ground that it reflects back. |
| module_model | `Optional[str]` | `rw` | `None` | Model of the PV modules of this plane. |
| inverter_model | `Optional[str]` | `rw` | `None` | Model of the inverter of this plane. |
| inverter_paco | `Optional[int]` | `rw` | `None` | AC power rating of the inverter. [W] |
| modules_per_string | `Optional[int]` | `rw` | `None` | Number of the PV modules of the strings of this plane. |
| strings_per_inverter | `Optional[int]` | `rw` | `None` | Number of the strings of the inverter of this plane. |
:::
#### Example Input/Output
```{eval-rst}
.. code-block:: json
{
"pvforecast": {
"planes": [
{
"surface_tilt": 10.0,
"surface_azimuth": 10.0,
"userhorizon": [
10.0,
20.0,
30.0
],
"peakpower": 5.0,
"pvtechchoice": "crystSi",
"mountingplace": "free",
"loss": 14.0,
"trackingtype": 0,
"optimal_surface_tilt": false,
"optimalangles": false,
"albedo": null,
"module_model": null,
"inverter_model": null,
"inverter_paco": 6000,
"modules_per_string": 20,
"strings_per_inverter": 2
},
{
"surface_tilt": 20.0,
"surface_azimuth": 20.0,
"userhorizon": [
5.0,
15.0,
25.0
],
"peakpower": 3.5,
"pvtechchoice": "crystSi",
"mountingplace": "free",
"loss": 14.0,
"trackingtype": 1,
"optimal_surface_tilt": false,
"optimalangles": false,
"albedo": null,
"module_model": null,
"inverter_model": null,
"inverter_paco": 4000,
"modules_per_string": 20,
"strings_per_inverter": 2
}
]
}
2025-01-15 00:54:45 +01:00
}
```
2025-01-06 16:27:57 +01:00
## Weather Forecast Configuration
2025-01-15 00:54:45 +01:00
:::{table} weather
:widths: 10 20 10 5 5 30
:align: left
| Name | Environment Variable | Type | Read-Only | Default | Description |
| ---- | -------------------- | ---- | --------- | ------- | ----------- |
2025-01-18 14:26:34 +01:00
| provider | `EOS_WEATHER__PROVIDER` | `Optional[str]` | `rw` | `None` | Weather provider id of provider to be used. |
2025-01-15 00:54:45 +01:00
| provider_settings | `EOS_WEATHER__PROVIDER_SETTINGS` | `Optional[akkudoktoreos.prediction.weatherimport.WeatherImportCommonSettings]` | `rw` | `None` | Provider settings |
:::
### Example Input/Output
```{eval-rst}
.. code-block:: json
{
"weather": {
2025-01-18 14:26:34 +01:00
"provider": "WeatherImport",
2025-01-15 00:54:45 +01:00
"provider_settings": null
}
}
```
### Common settings for weather data import from file or JSON string
:::{table} weather::provider_settings
2025-01-06 16:27:57 +01:00
:widths: 10 10 5 5 30
:align: left
| Name | Type | Read-Only | Default | Description |
| ---- | ---- | --------- | ------- | ----------- |
2025-01-18 14:26:34 +01:00
| import_file_path | `Union[str, pathlib.Path, NoneType]` | `rw` | `None` | Path to the file to import weather data from. |
| import_json | `Optional[str]` | `rw` | `None` | JSON string, dictionary of weather forecast value lists. |
2025-01-15 00:54:45 +01:00
:::
#### Example Input/Output
```{eval-rst}
.. code-block:: json
{
"weather": {
"provider_settings": {
2025-01-18 14:26:34 +01:00
"import_file_path": null,
"import_json": "{\"weather_temp_air\": [18.3, 17.8, 16.9]}"
2025-01-15 00:54:45 +01:00
}
}
}
```
## 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 |
| ---- | -------------------- | ---- | --------- | ------- | ----------- |
2025-01-18 14:26:34 +01:00
| host | `EOS_SERVER__HOST` | `Optional[pydantic.networks.IPvAnyAddress]` | `rw` | `0.0.0.0` | EOS server IP address. |
| port | `EOS_SERVER__PORT` | `Optional[int]` | `rw` | `8503` | EOS server IP port number. |
| verbose | `EOS_SERVER__VERBOSE` | `Optional[bool]` | `rw` | `False` | Enable debug output |
| startup_eosdash | `EOS_SERVER__STARTUP_EOSDASH` | `Optional[bool]` | `rw` | `True` | EOS server to start EOSdash server. |
| eosdash_host | `EOS_SERVER__EOSDASH_HOST` | `Optional[pydantic.networks.IPvAnyAddress]` | `rw` | `0.0.0.0` | EOSdash server IP address. |
| eosdash_port | `EOS_SERVER__EOSDASH_PORT` | `Optional[int]` | `rw` | `8504` | EOSdash server IP port number. |
2025-01-15 00:54:45 +01:00
:::
### Example Input/Output
```{eval-rst}
.. code-block:: json
{
"server": {
2025-01-18 14:26:34 +01:00
"host": "0.0.0.0",
"port": 8503,
"verbose": false,
"startup_eosdash": true,
"eosdash_host": "0.0.0.0",
"eosdash_port": 8504
2025-01-15 00:54:45 +01:00
}
}
```
## Utils Configuration
:::{table} utils
:widths: 10 20 10 5 5 30
:align: left
| Name | Environment Variable | Type | Read-Only | Default | Description |
| ---- | -------------------- | ---- | --------- | ------- | ----------- |
2025-01-06 16:27:57 +01:00
:::
2025-01-15 00:54:45 +01:00
### Example Input/Output
```{eval-rst}
.. code-block:: json
{
"utils": {}
}
```