diff --git a/packages/modules/common/store/_battery.py b/packages/modules/common/store/_battery.py index f1a4fc8075..efb4c59ab3 100644 --- a/packages/modules/common/store/_battery.py +++ b/packages/modules/common/store/_battery.py @@ -38,7 +38,18 @@ def update(self): raise FaultState.from_exception(e) +class PurgeBatteryState: + def __init__(self, delegate: LoggingValueStore) -> None: + self.delegate = delegate + + def set(self, state: BatState) -> None: + self.delegate.set(state) + + def update(self) -> None: + self.delegate.update() + + def get_bat_value_store(component_num: int) -> ValueStore[BatState]: - return LoggingValueStore( + return PurgeBatteryState(LoggingValueStore( (BatteryValueStoreRamdisk if compatibility.is_ramdisk_in_use() else BatteryValueStoreBroker)(component_num) - ) + )) diff --git a/packages/modules/common/store/_counter.py b/packages/modules/common/store/_counter.py index d1f9dcf052..4626673987 100644 --- a/packages/modules/common/store/_counter.py +++ b/packages/modules/common/store/_counter.py @@ -113,11 +113,11 @@ def add_exported(element): self.imported += chargepoint_state.imported else: component = get_component_obj_by_id(element['id']) - add_current_power(component.store.delegate.state) + add_current_power(component.store.delegate.delegate.state) if element["type"] == ComponentType.INVERTER.value: - add_exported(component.store.delegate.state) + add_exported(component.store.delegate.delegate.state) else: - add_imported_exported(component.store.delegate.state) + add_imported_exported(component.store.delegate.delegate.state) except Exception: log.exception(f"Fehler beim Hinzufügen der Werte für Element {element}") diff --git a/packages/modules/common/store/_counter_test.py b/packages/modules/common/store/_counter_test.py index 61fb785c42..e4afc4cbfa 100644 --- a/packages/modules/common/store/_counter_test.py +++ b/packages/modules/common/store/_counter_test.py @@ -14,7 +14,9 @@ from modules.common.component_state import BatState, ChargepointState, CounterState, InverterState from modules.common.store import _counter from modules.common.store._api import LoggingValueStore +from modules.common.store._battery import BatteryValueStoreBroker, PurgeBatteryState from modules.common.store._counter import PurgeCounterState +from modules.common.store._inverter import InverterValueStoreBroker, PurgeInverterState from modules.devices.generic.mqtt.bat import MqttBat from modules.devices.generic.mqtt.counter import MqttCounter from modules.devices.generic.mqtt.inverter import MqttInverter @@ -71,36 +73,40 @@ def mock_data_nested(): mock_comp_obj_inv_bat = [ Mock(spec=MqttBat, - store=Mock(spec=LoggingValueStore, + store=Mock(spec=PurgeBatteryState, delegate=Mock(spec=LoggingValueStore, - state=BatState(power=223, - exported=200, - imported=100)))), + delegate=Mock(spec=BatteryValueStoreBroker, + state=BatState(power=223, + exported=200, + imported=100))))), Mock(spec=MqttInverter, - store=Mock(spec=LoggingValueStore, + store=Mock(spec=PurgeInverterState, delegate=Mock(spec=LoggingValueStore, - state=InverterState(power=5786, - exported=2000))))] + delegate=Mock(spec=InverterValueStoreBroker, + state=InverterState(power=5786, + exported=2000)))))] mock_comp_obj_counter_inv_bat = [Mock(spec=MqttCounter, - store=Mock(spec=LoggingValueStore, - delegate=Mock( - spec=LoggingValueStore, - state=CounterState(power=13359, - exported=0, - imported=0, - currents=[19.36]*3)))), + store=Mock(spec=_counter.PurgeCounterState, + delegate=Mock(spec=LoggingValueStore, + delegate=Mock(spec=_counter.CounterValueStoreBroker, + state=CounterState(power=13359, + exported=0, + imported=0, + currents=[19.36]*3))))), Mock(spec=MqttBat, - store=Mock(spec=LoggingValueStore, + store=Mock(spec=PurgeBatteryState, delegate=Mock(spec=LoggingValueStore, - state=BatState(power=223, - exported=200, - imported=100)))), + delegate=Mock(spec=BatteryValueStoreBroker, + state=BatState(power=223, + exported=200, + imported=100))))), Mock(spec=MqttInverter, - store=Mock(spec=LoggingValueStore, + store=Mock(spec=PurgeInverterState, delegate=Mock(spec=LoggingValueStore, - state=InverterState(power=5786, - exported=2000)))) + delegate=Mock(spec=InverterValueStoreBroker, + state=InverterState(power=5786, + exported=2000))))) ] Params = NamedTuple("Params", [("name", str), ("mock_comp", Mock), diff --git a/packages/modules/devices/generic/virtual/counter_test.py b/packages/modules/devices/generic/virtual/counter_test.py index 850d2e42b5..5b93c4cebd 100644 --- a/packages/modules/devices/generic/virtual/counter_test.py +++ b/packages/modules/devices/generic/virtual/counter_test.py @@ -12,6 +12,8 @@ from modules.common.component_state import BatState, ChargepointState, CounterState, InverterState from modules.common.store import _counter from modules.common.store._api import LoggingValueStore +from modules.common.store._battery import BatteryValueStoreBroker, PurgeBatteryState +from modules.common.store._inverter import InverterValueStoreBroker, PurgeInverterState from modules.devices.generic.mqtt.bat import MqttBat from modules.devices.generic.mqtt.counter import MqttCounter from modules.devices.generic.mqtt.inverter import MqttInverter @@ -81,35 +83,40 @@ def test_virtual_counter(mock_pub: Mock, params): mock_comp_obj_inv_bat = [Mock(spec=MqttInverter, - store=Mock(spec=LoggingValueStore, + store=Mock(spec=PurgeInverterState, delegate=Mock(spec=LoggingValueStore, - state=InverterState(power=-10000, - exported=27000)))), + delegate=Mock(spec=InverterValueStoreBroker, + state=InverterState(power=-10000, + exported=27000))))), Mock(spec=MqttBat, - store=Mock(spec=LoggingValueStore, + store=Mock(spec=PurgeBatteryState, delegate=Mock(spec=LoggingValueStore, - state=BatState(power=-5000, - imported=12000, - exported=10000)))) + delegate=Mock(spec=BatteryValueStoreBroker, + state=BatState(power=-5000, + imported=12000, + exported=10000))))) ] mock_comp_obj_counter_inv_bat = [Mock(spec=MqttCounter, - store=Mock(spec=LoggingValueStore, + store=Mock(spec=_counter.PurgeCounterState, delegate=Mock(spec=LoggingValueStore, - state=CounterState(currents=[25, 10, 25], - power=13800, - imported=14000, - exported=18000)))), + delegate=Mock(spec=_counter.CounterValueStoreBroker, + state=CounterState(currents=[25, 10, 25], + power=13800, + imported=14000, + exported=18000))))), Mock(spec=MqttInverter, - store=Mock(spec=LoggingValueStore, + store=Mock(spec=PurgeInverterState, delegate=Mock(spec=LoggingValueStore, - state=InverterState(power=-10000, - exported=27000)))), + delegate=Mock(spec=InverterValueStoreBroker, + state=InverterState(power=-10000, + exported=27000))))), Mock(spec=MqttBat, - store=Mock(spec=LoggingValueStore, + store=Mock(spec=PurgeBatteryState, delegate=Mock(spec=LoggingValueStore, - state=BatState(power=-5000, - imported=12000, - exported=10000))))] + delegate=Mock(spec=BatteryValueStoreBroker, + state=BatState(power=-5000, + imported=12000, + exported=10000)))))] @pytest.mark.parametrize("mock, counter_all",