Skip to content

Commit 7d6ca80

Browse files
committed
implement outputs for stepwise control
1 parent c705a1a commit 7d6ca80

3 files changed

Lines changed: 37 additions & 3 deletions

File tree

packages/control/process.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from modules.common.fault_state_level import FaultStateLevel
1616
from modules.io_actions.controllable_consumers.dimming.api import Dimming
1717
from modules.io_actions.controllable_consumers.dimming_direct_control.api import DimmingDirectControl
18+
from modules.io_actions.generator_systems.stepwise_control.api import StepwiseControl
1819

1920
log = logging.getLogger(__name__)
2021

@@ -85,6 +86,12 @@ def process_algorithm_results(self) -> None:
8586
data.data.io_states[f"io_states{d['id']}"].data.set.digital_output[d["digital_output"]] = (
8687
not action.dimming_active() # active output (True) if no dimming
8788
)
89+
if isinstance(action, StepwiseControl):
90+
for d in action.config.configuration.devices:
91+
if d["type"] == "io":
92+
data.data.io_states[f"io_states{d['id']}"].data.set.digital_output[d["digital_output"]] = (
93+
action.control_stepwise() == d["value"] # active output (True) if value matches
94+
)
8895
for io in data.data.system_data.values():
8996
if isinstance(io, AbstractIoDevice):
9097
modules_threads.append(

packages/modules/io_actions/generator_systems/stepwise_control/api.py

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from helpermodules.timecheck import create_timestamp
77
from modules.common.abstract_device import DeviceDescriptor
88
from modules.common.abstract_io import AbstractIoAction
9+
from modules.common.utils.component_parser import get_component_name_by_id, get_io_name_by_id
910
from modules.io_actions.generator_systems.stepwise_control.config import StepwiseControlSetup
1011

1112
control_command_log = logging.getLogger("steuve_control_command")
@@ -19,11 +20,24 @@ def __init__(self, config: StepwiseControlSetup):
1920
for key in pattern["input_matrix"].keys():
2021
if key not in self.__unique_inputs:
2122
self.__unique_inputs.append(key)
22-
assigned_devices = [io_device["id"] for io_device in self.config.configuration.devices]
23+
assigned_inverters = [
24+
f"{device['id']}"
25+
for device in self.config.configuration.devices
26+
if device["type"] == "inverter"
27+
]
28+
assigned_outputs = [
29+
f"{device['id']}/{device['digital_output']}"
30+
for device in self.config.configuration.devices
31+
if device["type"] == "io"
32+
]
33+
# Log the configuration details
34+
# We cannot use configured names here, as the devices are not yet initialized
35+
# and thus the names are not available.
2336
control_command_log.info(
2437
f"Stufenweise Steuerung von EZA: I/O-Gerät: {self.config.configuration.io_device}, "
2538
f"Überwachte digitale Eingänge: {self.__unique_inputs}, "
26-
f"zugeordnete Erzeugungsanlagen: {assigned_devices} "
39+
f"zugeordnete Erzeugungsanlagen: {assigned_inverters} "
40+
f"zugeordnete IO-Ausgänge: {assigned_outputs} "
2741
"Die Begrenzung muss in den EZA vorgenommen werden!"
2842
)
2943
super().__init__()
@@ -52,6 +66,18 @@ def setup(self) -> None:
5266
if changed:
5367
Pub().pub(f"openWB/set/io/action/{self.config.id}/timestamp", create_timestamp())
5468
control_command_log.info(f"EZA-Begrenzung mit Wert {int(pattern['value']*100)}% aktiviert.")
69+
for device in self.config.configuration.devices:
70+
if device["type"] == "inverter":
71+
control_command_log.info(
72+
f"Erzeugungsanlage {get_component_name_by_id(device['id'])} "
73+
f"auf {int(pattern['value']*100)}% begrenzt."
74+
)
75+
elif device["type"] == "io":
76+
control_command_log.info(
77+
f"IO-Gerät {get_io_name_by_id(device['id'])} Ausgang "
78+
f"{device['digital_output']} "
79+
f"{'aktiviert' if device['value'] == pattern['value'] else 'deaktiviert'}."
80+
)
5581
break
5682
else:
5783
if changed:

packages/modules/io_actions/generator_systems/stepwise_control/config.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ class StepwiseControlConfig:
99
io_device: Optional[int] = None
1010
input_pattern: List[Dict] = field(default_factory=empty_io_pattern_stepwise_factory)
1111
devices: List[Dict] = field(default_factory=empty_list_factory)
12-
# [{"type": "inverter", "id": 1},...]
12+
# [{"type": "inverter", "id": 1},
13+
# {"type": "io", "id": 1, "digital_output": "SofortLa", "value": 0.6},...]
1314

1415

1516
class StepwiseControlSetup:

0 commit comments

Comments
 (0)