2026-09-17 17:51:40 +02:00
|
|
|
## Configuration for all controllable devices in the simulation
|
|
|
|
|
|
|
|
|
|
Every device collection is a ``dict[str, <Settings>]`` keyed by
|
|
|
|
|
``device_id``. This makes config paths stable regardless of
|
|
|
|
|
declaration order and lets each device settings class build its own
|
|
|
|
|
config path from ``self.device_id`` without needing an external index.
|
2025-11-13 22:53:46 +01:00
|
|
|
|
|
|
|
|
<!-- pyml disable line-length -->
|
|
|
|
|
:::{table} devices
|
|
|
|
|
:widths: 10 20 10 5 5 30
|
|
|
|
|
:align: left
|
|
|
|
|
|
|
|
|
|
| Name | Environment Variable | Type | Read-Only | Default | Description |
|
|
|
|
|
| ---- | -------------------- | ---- | --------- | ------- | ----------- |
|
2026-09-17 17:51:40 +02:00
|
|
|
| batteries | `EOS_DEVICES__BATTERIES` | `Optional[dict[str, akkudoktoreos.devices.settings.batterysettings.BatteriesCommonSettings]]` | `rw` | `None` | Stationary battery storage devices, keyed by device_id. |
|
|
|
|
|
| electric_vehicles | `EOS_DEVICES__ELECTRIC_VEHICLES` | `Optional[dict[str, akkudoktoreos.devices.settings.batterysettings.BatteriesCommonSettings]]` | `rw` | `None` | Electric vehicle battery packs, keyed by device_id. |
|
|
|
|
|
| home_appliances | `EOS_DEVICES__HOME_APPLIANCES` | `dict[str, akkudoktoreos.devices.settings.homeappliancesettings.HomeApplianceCommonSettings]` | `rw` | `required` | Shiftable home appliance devices, keyed by device_id. |
|
|
|
|
|
| inverters | `EOS_DEVICES__INVERTERS` | `Optional[dict[str, akkudoktoreos.devices.settings.invertersettings.InverterCommonSettings]]` | `rw` | `None` | Inverter devices, keyed by device_id. |
|
|
|
|
|
| max_batteries | `EOS_DEVICES__MAX_BATTERIES` | `Optional[int]` | `rw` | `None` | Maximum number of batteries allowed. |
|
|
|
|
|
| max_electric_vehicles | `EOS_DEVICES__MAX_ELECTRIC_VEHICLES` | `Optional[int]` | `rw` | `None` | Maximum number of EVs allowed. |
|
|
|
|
|
| max_home_appliances | `EOS_DEVICES__MAX_HOME_APPLIANCES` | `Optional[int]` | `rw` | `None` | Maximum number of home appliances allowed. |
|
|
|
|
|
| max_inverters | `EOS_DEVICES__MAX_INVERTERS` | `Optional[int]` | `rw` | `None` | Maximum number of inverters allowed. |
|
|
|
|
|
| measurement_keys | | `list[str]` | `ro` | `N/A` | All measurement keys across all configured devices. |
|
2025-11-13 22:53:46 +01:00
|
|
|
:::
|
|
|
|
|
<!-- pyml enable line-length -->
|
|
|
|
|
|
|
|
|
|
<!-- pyml disable no-emphasis-as-heading -->
|
|
|
|
|
**Example Input**
|
|
|
|
|
<!-- pyml enable no-emphasis-as-heading -->
|
|
|
|
|
|
|
|
|
|
<!-- pyml disable line-length -->
|
|
|
|
|
```json
|
|
|
|
|
{
|
|
|
|
|
"devices": {
|
2026-09-17 17:51:40 +02:00
|
|
|
"batteries": {
|
|
|
|
|
"bat0": {
|
|
|
|
|
"device_id": "bat0",
|
2026-09-17 18:28:43 +02:00
|
|
|
"capacity_estimation": null,
|
|
|
|
|
"capacity_estimate": null,
|
2025-11-13 22:53:46 +01:00
|
|
|
"capacity_wh": 8000,
|
|
|
|
|
"charging_efficiency": 0.88,
|
|
|
|
|
"discharging_efficiency": 0.88,
|
2026-09-17 17:51:40 +02:00
|
|
|
"levelized_cost_of_storage_amt_kwh": 0.0,
|
2025-11-13 22:53:46 +01:00
|
|
|
"max_charge_power_w": 5000,
|
|
|
|
|
"min_charge_power_w": 50,
|
2025-12-30 22:08:21 +01:00
|
|
|
"charge_rates": [
|
|
|
|
|
0.0,
|
|
|
|
|
0.1,
|
|
|
|
|
0.2,
|
|
|
|
|
0.3,
|
|
|
|
|
0.4,
|
|
|
|
|
0.5,
|
|
|
|
|
0.6,
|
|
|
|
|
0.7,
|
|
|
|
|
0.8,
|
|
|
|
|
0.9,
|
|
|
|
|
1.0
|
|
|
|
|
],
|
2025-11-13 22:53:46 +01:00
|
|
|
"min_soc_percentage": 0,
|
2026-09-17 19:14:01 +02:00
|
|
|
"max_soc_percentage": 100,
|
|
|
|
|
"grid_export_rates": [
|
|
|
|
|
0.25,
|
|
|
|
|
0.5,
|
|
|
|
|
0.75,
|
|
|
|
|
1.0
|
2026-09-17 20:14:24 +02:00
|
|
|
],
|
|
|
|
|
"min_soc_deadline_datetime": null,
|
|
|
|
|
"min_soc_max_duration_h": null
|
2025-11-13 22:53:46 +01:00
|
|
|
}
|
2026-09-17 17:51:40 +02:00
|
|
|
},
|
2025-11-13 22:53:46 +01:00
|
|
|
"max_batteries": 1,
|
2026-09-17 17:51:40 +02:00
|
|
|
"electric_vehicles": {
|
|
|
|
|
"ev0": {
|
|
|
|
|
"device_id": "ev0",
|
2026-09-17 18:28:43 +02:00
|
|
|
"capacity_estimation": null,
|
|
|
|
|
"capacity_estimate": null,
|
2026-09-17 17:51:40 +02:00
|
|
|
"capacity_wh": 60000,
|
2025-11-13 22:53:46 +01:00
|
|
|
"charging_efficiency": 0.88,
|
|
|
|
|
"discharging_efficiency": 0.88,
|
2026-09-17 17:51:40 +02:00
|
|
|
"levelized_cost_of_storage_amt_kwh": 0.0,
|
2025-11-13 22:53:46 +01:00
|
|
|
"max_charge_power_w": 5000,
|
|
|
|
|
"min_charge_power_w": 50,
|
2025-12-30 22:08:21 +01:00
|
|
|
"charge_rates": [
|
|
|
|
|
0.0,
|
|
|
|
|
0.1,
|
|
|
|
|
0.2,
|
|
|
|
|
0.3,
|
|
|
|
|
0.4,
|
|
|
|
|
0.5,
|
|
|
|
|
0.6,
|
|
|
|
|
0.7,
|
|
|
|
|
0.8,
|
|
|
|
|
0.9,
|
|
|
|
|
1.0
|
|
|
|
|
],
|
2025-11-13 22:53:46 +01:00
|
|
|
"min_soc_percentage": 0,
|
2026-09-17 19:14:01 +02:00
|
|
|
"max_soc_percentage": 100,
|
|
|
|
|
"grid_export_rates": [
|
|
|
|
|
0.25,
|
|
|
|
|
0.5,
|
|
|
|
|
0.75,
|
|
|
|
|
1.0
|
2026-09-17 20:14:24 +02:00
|
|
|
],
|
|
|
|
|
"min_soc_deadline_datetime": null,
|
|
|
|
|
"min_soc_max_duration_h": null
|
2025-11-13 22:53:46 +01:00
|
|
|
}
|
2026-09-17 17:51:40 +02:00
|
|
|
},
|
2025-11-13 22:53:46 +01:00
|
|
|
"max_electric_vehicles": 1,
|
2026-09-17 17:51:40 +02:00
|
|
|
"inverters": {},
|
2025-11-13 22:53:46 +01:00
|
|
|
"max_inverters": 1,
|
2026-09-17 17:51:40 +02:00
|
|
|
"home_appliances": {
|
|
|
|
|
"dishwasher": {
|
|
|
|
|
"device_id": "dishwasher",
|
|
|
|
|
"consumption_wh": 1500,
|
|
|
|
|
"duration_h": 2,
|
|
|
|
|
"num_cycles": 1,
|
|
|
|
|
"cycle_time_windows": null,
|
|
|
|
|
"min_cycle_gap_h": 0,
|
2026-09-17 20:14:24 +02:00
|
|
|
"cycles_completed_measurement_key": null,
|
|
|
|
|
"load_profile_power_w": null,
|
|
|
|
|
"load_profile_interval_seconds": null,
|
|
|
|
|
"schedule_mode": "ONCE",
|
|
|
|
|
"time_windows": null,
|
|
|
|
|
"earliest_start_datetime": null,
|
|
|
|
|
"deadline_datetime": null,
|
|
|
|
|
"deadline_policy": "BEST_EFFORT"
|
2026-09-17 17:51:40 +02:00
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"max_home_appliances": 3
|
2025-11-13 22:53:46 +01:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
<!-- pyml enable line-length -->
|
|
|
|
|
|
|
|
|
|
<!-- pyml disable no-emphasis-as-heading -->
|
|
|
|
|
**Example Output**
|
|
|
|
|
<!-- pyml enable no-emphasis-as-heading -->
|
|
|
|
|
|
|
|
|
|
<!-- pyml disable line-length -->
|
|
|
|
|
```json
|
|
|
|
|
{
|
|
|
|
|
"devices": {
|
2026-09-17 17:51:40 +02:00
|
|
|
"batteries": {
|
|
|
|
|
"bat0": {
|
|
|
|
|
"device_id": "bat0",
|
2026-09-17 18:28:43 +02:00
|
|
|
"capacity_estimation": null,
|
|
|
|
|
"capacity_estimate": null,
|
2025-11-13 22:53:46 +01:00
|
|
|
"capacity_wh": 8000,
|
|
|
|
|
"charging_efficiency": 0.88,
|
|
|
|
|
"discharging_efficiency": 0.88,
|
2026-09-17 17:51:40 +02:00
|
|
|
"levelized_cost_of_storage_amt_kwh": 0.0,
|
2025-11-13 22:53:46 +01:00
|
|
|
"max_charge_power_w": 5000,
|
|
|
|
|
"min_charge_power_w": 50,
|
2025-12-30 22:08:21 +01:00
|
|
|
"charge_rates": [
|
|
|
|
|
0.0,
|
|
|
|
|
0.1,
|
|
|
|
|
0.2,
|
|
|
|
|
0.3,
|
|
|
|
|
0.4,
|
|
|
|
|
0.5,
|
|
|
|
|
0.6,
|
|
|
|
|
0.7,
|
|
|
|
|
0.8,
|
|
|
|
|
0.9,
|
|
|
|
|
1.0
|
|
|
|
|
],
|
2025-11-13 22:53:46 +01:00
|
|
|
"min_soc_percentage": 0,
|
|
|
|
|
"max_soc_percentage": 100,
|
2026-09-17 19:14:01 +02:00
|
|
|
"grid_export_rates": [
|
|
|
|
|
0.25,
|
|
|
|
|
0.5,
|
|
|
|
|
0.75,
|
|
|
|
|
1.0
|
|
|
|
|
],
|
2026-09-17 20:14:24 +02:00
|
|
|
"min_soc_deadline_datetime": null,
|
|
|
|
|
"min_soc_max_duration_h": null,
|
2026-09-17 17:51:40 +02:00
|
|
|
"measurement_key_soc_factor": "bat0-soc-factor",
|
|
|
|
|
"measurement_key_power_l1_w": "bat0-power-l1-w",
|
|
|
|
|
"measurement_key_power_l2_w": "bat0-power-l2-w",
|
|
|
|
|
"measurement_key_power_l3_w": "bat0-power-l3-w",
|
|
|
|
|
"measurement_key_power_3_phase_sym_w": "bat0-power-3-phase-sym-w",
|
2025-11-13 22:53:46 +01:00
|
|
|
"measurement_keys": [
|
2026-09-17 17:51:40 +02:00
|
|
|
"bat0-soc-factor",
|
|
|
|
|
"bat0-power-l1-w",
|
|
|
|
|
"bat0-power-l2-w",
|
|
|
|
|
"bat0-power-l3-w",
|
|
|
|
|
"bat0-power-3-phase-sym-w"
|
2025-11-13 22:53:46 +01:00
|
|
|
]
|
|
|
|
|
}
|
2026-09-17 17:51:40 +02:00
|
|
|
},
|
2025-11-13 22:53:46 +01:00
|
|
|
"max_batteries": 1,
|
2026-09-17 17:51:40 +02:00
|
|
|
"electric_vehicles": {
|
|
|
|
|
"ev0": {
|
|
|
|
|
"device_id": "ev0",
|
2026-09-17 18:28:43 +02:00
|
|
|
"capacity_estimation": null,
|
|
|
|
|
"capacity_estimate": null,
|
2026-09-17 17:51:40 +02:00
|
|
|
"capacity_wh": 60000,
|
2025-11-13 22:53:46 +01:00
|
|
|
"charging_efficiency": 0.88,
|
|
|
|
|
"discharging_efficiency": 0.88,
|
2026-09-17 17:51:40 +02:00
|
|
|
"levelized_cost_of_storage_amt_kwh": 0.0,
|
2025-11-13 22:53:46 +01:00
|
|
|
"max_charge_power_w": 5000,
|
|
|
|
|
"min_charge_power_w": 50,
|
2025-12-30 22:08:21 +01:00
|
|
|
"charge_rates": [
|
|
|
|
|
0.0,
|
|
|
|
|
0.1,
|
|
|
|
|
0.2,
|
|
|
|
|
0.3,
|
|
|
|
|
0.4,
|
|
|
|
|
0.5,
|
|
|
|
|
0.6,
|
|
|
|
|
0.7,
|
|
|
|
|
0.8,
|
|
|
|
|
0.9,
|
|
|
|
|
1.0
|
|
|
|
|
],
|
2025-11-13 22:53:46 +01:00
|
|
|
"min_soc_percentage": 0,
|
|
|
|
|
"max_soc_percentage": 100,
|
2026-09-17 19:14:01 +02:00
|
|
|
"grid_export_rates": [
|
|
|
|
|
0.25,
|
|
|
|
|
0.5,
|
|
|
|
|
0.75,
|
|
|
|
|
1.0
|
|
|
|
|
],
|
2026-09-17 20:14:24 +02:00
|
|
|
"min_soc_deadline_datetime": null,
|
|
|
|
|
"min_soc_max_duration_h": null,
|
2026-09-17 17:51:40 +02:00
|
|
|
"measurement_key_soc_factor": "ev0-soc-factor",
|
|
|
|
|
"measurement_key_power_l1_w": "ev0-power-l1-w",
|
|
|
|
|
"measurement_key_power_l2_w": "ev0-power-l2-w",
|
|
|
|
|
"measurement_key_power_l3_w": "ev0-power-l3-w",
|
|
|
|
|
"measurement_key_power_3_phase_sym_w": "ev0-power-3-phase-sym-w",
|
2025-11-13 22:53:46 +01:00
|
|
|
"measurement_keys": [
|
2026-09-17 17:51:40 +02:00
|
|
|
"ev0-soc-factor",
|
|
|
|
|
"ev0-power-l1-w",
|
|
|
|
|
"ev0-power-l2-w",
|
|
|
|
|
"ev0-power-l3-w",
|
|
|
|
|
"ev0-power-3-phase-sym-w"
|
2025-11-13 22:53:46 +01:00
|
|
|
]
|
|
|
|
|
}
|
2026-09-17 17:51:40 +02:00
|
|
|
},
|
2025-11-13 22:53:46 +01:00
|
|
|
"max_electric_vehicles": 1,
|
2026-09-17 17:51:40 +02:00
|
|
|
"inverters": {},
|
2025-11-13 22:53:46 +01:00
|
|
|
"max_inverters": 1,
|
2026-09-17 17:51:40 +02:00
|
|
|
"home_appliances": {
|
|
|
|
|
"dishwasher": {
|
|
|
|
|
"device_id": "dishwasher",
|
|
|
|
|
"consumption_wh": 1500,
|
|
|
|
|
"duration_h": 2,
|
|
|
|
|
"num_cycles": 1,
|
|
|
|
|
"cycle_time_windows": null,
|
|
|
|
|
"min_cycle_gap_h": 0,
|
|
|
|
|
"cycles_completed_measurement_key": null,
|
2026-09-17 20:14:24 +02:00
|
|
|
"load_profile_power_w": null,
|
|
|
|
|
"load_profile_interval_seconds": null,
|
|
|
|
|
"schedule_mode": "ONCE",
|
|
|
|
|
"time_windows": null,
|
|
|
|
|
"earliest_start_datetime": null,
|
|
|
|
|
"deadline_datetime": null,
|
|
|
|
|
"deadline_policy": "BEST_EFFORT",
|
2026-09-17 17:51:40 +02:00
|
|
|
"effective_num_cycles": 1,
|
2026-09-17 20:14:24 +02:00
|
|
|
"measurement_keys": [
|
|
|
|
|
"dishwasher.cycles_completed"
|
|
|
|
|
]
|
2026-09-17 17:51:40 +02:00
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"max_home_appliances": 3,
|
2025-11-13 22:53:46 +01:00
|
|
|
"measurement_keys": [
|
2026-09-17 17:51:40 +02:00
|
|
|
"bat0-soc-factor",
|
|
|
|
|
"bat0-power-l1-w",
|
|
|
|
|
"bat0-power-l2-w",
|
|
|
|
|
"bat0-power-l3-w",
|
|
|
|
|
"bat0-power-3-phase-sym-w",
|
|
|
|
|
"ev0-soc-factor",
|
|
|
|
|
"ev0-power-l1-w",
|
|
|
|
|
"ev0-power-l2-w",
|
|
|
|
|
"ev0-power-l3-w",
|
2026-09-17 20:14:24 +02:00
|
|
|
"ev0-power-3-phase-sym-w",
|
|
|
|
|
"dishwasher.cycles_completed"
|
2025-11-13 22:53:46 +01:00
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
<!-- pyml enable line-length -->
|