Skip to content

Commit 8f93729

Browse files
authored
fix elgris (openWB#3215)
1 parent bd63d46 commit 8f93729

File tree

5 files changed

+93
-6
lines changed

5 files changed

+93
-6
lines changed

packages/modules/devices/elgris/elgris/bat.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,7 @@ def initialize(self) -> None:
2929
self.store = get_bat_value_store(self.component_config.id)
3030

3131
def update(self):
32-
with self.__tcp_client:
33-
counter_state = self.elgris.get_counter_state()
32+
counter_state = self.elgris.get_counter_state()
3433
bat_state = BatState(
3534
exported=counter_state.exported,
3635
imported=counter_state.imported,

packages/modules/devices/elgris/elgris/counter.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,7 @@ def initialize(self) -> None:
2828
self.store = get_counter_value_store(self.component_config.id)
2929

3030
def update(self):
31-
with self.__tcp_client:
32-
counter_state = self.elgris.get_counter_state()
31+
counter_state = self.elgris.get_counter_state()
3332
self.store.set(counter_state)
3433

3534

packages/modules/devices/elgris/elgris/elgris.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ def __init__(self, modbus_id: int, client: modbus.ModbusTcpClient_, fault_state:
99
self.id = modbus_id
1010
self.serial_number = ""
1111
self.fault_state = fault_state
12+
self.fast_mode = True
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
from unittest.mock import Mock
2+
3+
from modules.common.component_state import BatState, CounterState, InverterState
4+
from modules.common.modbus import ModbusTcpClient_
5+
6+
from modules.common.sdm import SdmRegister
7+
from modules.devices.elgris.elgris.config import Elgris, ElgrisBatSetup, ElgrisCounterSetup, ElgrisInverterSetup
8+
from modules.devices.elgris.elgris.device import create_device
9+
10+
11+
def setup_modbus_mocks(monkeypatch):
12+
"""Setup common Modbus mocks für alle Tests"""
13+
mock_read_input_registers_bulk = Mock(side_effect=[
14+
{SdmRegister.VOLTAGE_L1: [231]*3, SdmRegister.CURRENT_L1: [0.5]*3, SdmRegister.POWER_L1: [115]*3},
15+
{SdmRegister.IMPORTED: 100, SdmRegister.EXPORTED: 200, SdmRegister.FREQUENCY: 50}])
16+
mock_read_input_registers = Mock(side_effect=[[0.99]*3])
17+
18+
monkeypatch.setattr(ModbusTcpClient_, "__enter__", Mock())
19+
monkeypatch.setattr(ModbusTcpClient_, "__exit__", Mock())
20+
monkeypatch.setattr(ModbusTcpClient_, "read_input_registers_bulk", mock_read_input_registers_bulk)
21+
monkeypatch.setattr(ModbusTcpClient_, "read_input_registers", mock_read_input_registers)
22+
23+
24+
def test_elgris_bat(monkeypatch):
25+
setup_modbus_mocks(monkeypatch)
26+
27+
device = create_device(Elgris())
28+
device.add_component(ElgrisBatSetup())
29+
30+
store_bat_mock = Mock()
31+
monkeypatch.setattr(device.components["component0"], "store", store_bat_mock)
32+
33+
# execution
34+
device.update()
35+
36+
# evaluation
37+
assert vars(store_bat_mock.set.call_args[0][0]) == vars(BatState(
38+
exported=200000,
39+
imported=100000,
40+
power=345,
41+
currents=[0.5]*3,
42+
))
43+
44+
45+
def test_elgris_counter(monkeypatch):
46+
setup_modbus_mocks(monkeypatch)
47+
48+
device = create_device(Elgris())
49+
device.add_component(ElgrisCounterSetup(id=1))
50+
51+
store_counter_mock = Mock()
52+
monkeypatch.setattr(device.components["component1"], "store", store_counter_mock)
53+
54+
# execution
55+
device.update()
56+
57+
# evaluation
58+
assert vars(store_counter_mock.set.call_args[0][0]) == vars(CounterState(
59+
exported=200000,
60+
imported=100000,
61+
power=345,
62+
voltages=[231]*3,
63+
currents=[0.5]*3,
64+
powers=[115]*3,
65+
power_factors=[0.99]*3,
66+
frequency=50,
67+
serial_number=""
68+
))
69+
70+
71+
def test_elgris_inverter(monkeypatch):
72+
setup_modbus_mocks(monkeypatch)
73+
74+
device = create_device(Elgris())
75+
device.add_component(ElgrisInverterSetup(id=2))
76+
77+
store_inverter_mock = Mock()
78+
monkeypatch.setattr(device.components["component2"], "store", store_inverter_mock)
79+
80+
# execution
81+
device.update()
82+
83+
# evaluation
84+
assert vars(store_inverter_mock.set.call_args[0][0]) == vars(InverterState(
85+
exported=200000,
86+
imported=100000,
87+
power=345,
88+
currents=[0.5]*3,
89+
))

packages/modules/devices/elgris/elgris/inverter.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,7 @@ def initialize(self) -> None:
2929
self.store = get_inverter_value_store(self.component_config.id)
3030

3131
def update(self):
32-
with self.__tcp_client:
33-
counter_state = self.elgris.get_counter_state()
32+
counter_state = self.elgris.get_counter_state()
3433
inverter_state = InverterState(
3534
exported=counter_state.exported,
3635
imported=counter_state.imported,

0 commit comments

Comments
 (0)