Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from modules.common.utils.component_parser import get_io_name_by_id
from modules.io_actions.common import check_fault_state_io_device
from modules.io_actions.controllable_consumers.dimming.config import DimmingSetup
from modules.io_actions.controllable_consumers.dimming.utils import calc_dimming_surplus
from modules.io_devices.eebus.config import AnalogInputMapping, DigitalInputMapping

log = logging.getLogger(__name__)
Expand All @@ -37,13 +38,11 @@ def __init__(self, config: DimmingSetup):
def setup(self) -> None:
lpc_value = data.data.io_states[f"io_states{self.config.configuration.io_device}"
].data.get.analog_input[AnalogInputMapping.LPC_VALUE.name]
surplus = data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()].calc_raw_surplus()
if surplus > 0:
self.import_power_left = lpc_value + surplus
else:
self.import_power_left = lpc_value
surplus = calc_dimming_surplus()
self.import_power_left = lpc_value + surplus
self.import_power_left -= self.config.configuration.fixed_import_power
log.debug(f"Dimmen: {self.import_power_left}W inkl. Überschuss")
log.debug(
f"Dimmen: Überschuss von {surplus}W berücksichtigt, verbleibende Dimm-Leistung: {self.import_power_left}W")

with ModifyLoglevelContext(control_command_log, logging.DEBUG):
if self.dimming_active() or check_fault_state_io_device(self.config.configuration.io_device):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from modules.common.utils.component_parser import get_io_name_by_id
from modules.io_actions.common import check_fault_state_io_device
from modules.io_actions.controllable_consumers.dimming.config import DimmingSetup
from modules.io_actions.controllable_consumers.dimming.utils import calc_dimming_surplus

log = logging.getLogger(__name__)
control_command_log = logging.getLogger("steuve_control_command")
Expand Down Expand Up @@ -43,14 +44,12 @@ def __init__(self, config: DimmingSetup):
super().__init__()

def setup(self) -> None:
surplus = data.data.counter_data[data.data.counter_all_data.get_evu_counter_str()].calc_raw_surplus()
if surplus > 0:
self.import_power_left = self.config.configuration.max_import_power + surplus
else:
self.import_power_left = self.config.configuration.max_import_power
surplus = calc_dimming_surplus()
self.import_power_left = self.config.configuration.max_import_power + surplus
self.import_power_left -= self.config.configuration.fixed_import_power

log.debug(f"Dimmen: {self.import_power_left}W inkl. Überschuss")
log.debug(
f"Dimmen: Überschuss von {surplus}W berücksichtigt, verbleibende Dimm-Leistung: {self.import_power_left}W")

with ModifyLoglevelContext(control_command_log, logging.DEBUG):
if self.dimming_active() or check_fault_state_io_device(self.config.configuration.io_device):
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import pytest
from unittest.mock import Mock

from control import data
from .utils import calc_dimming_surplus


@pytest.fixture()
def mock_data() -> None:
data.data_init(Mock())


@pytest.mark.parametrize(
"pv_power,bat_power,expected",
[
pytest.param(-1000, 0, 1000, id="nur PV-Überschuss"),
pytest.param(200, 0, 0, id="WR gibt Eigenverbrauch aus"),
pytest.param(-500, -300, 800, id="PV & Speicher-Entladung"),
pytest.param(-500, 400, 500, id="Speicher wird geladen"),
pytest.param(-500, 0, 500, id="Speicher gesperrt"),
]
)
def test_calc_dimming_surplus(mock_data, pv_power, bat_power, expected):
data.data.pv_all_data.data.get.power = pv_power
data.data.bat_all_data.data.get.power = bat_power
assert calc_dimming_surplus() == expected
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from control import data


def calc_dimming_surplus() -> float:
surplus = min(data.data.pv_all_data.data.get.power, 0) * -1
if data.data.bat_all_data.data.get.power < 0:
surplus += -data.data.bat_all_data.data.get.power
return surplus
Loading