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
3 changes: 1 addition & 2 deletions packages/modules/devices/elgris/elgris/bat.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,7 @@ def initialize(self) -> None:
self.store = get_bat_value_store(self.component_config.id)

def update(self):
with self.__tcp_client:
counter_state = self.elgris.get_counter_state()
counter_state = self.elgris.get_counter_state()
bat_state = BatState(
exported=counter_state.exported,
imported=counter_state.imported,
Expand Down
3 changes: 1 addition & 2 deletions packages/modules/devices/elgris/elgris/counter.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,7 @@ def initialize(self) -> None:
self.store = get_counter_value_store(self.component_config.id)

def update(self):
with self.__tcp_client:
counter_state = self.elgris.get_counter_state()
counter_state = self.elgris.get_counter_state()
self.store.set(counter_state)


Expand Down
1 change: 1 addition & 0 deletions packages/modules/devices/elgris/elgris/elgris.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@ def __init__(self, modbus_id: int, client: modbus.ModbusTcpClient_, fault_state:
self.id = modbus_id
self.serial_number = ""
self.fault_state = fault_state
self.fast_mode = True
89 changes: 89 additions & 0 deletions packages/modules/devices/elgris/elgris/elgris_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
from unittest.mock import Mock

from modules.common.component_state import BatState, CounterState, InverterState
from modules.common.modbus import ModbusTcpClient_

from modules.common.sdm import SdmRegister
from modules.devices.elgris.elgris.config import Elgris, ElgrisBatSetup, ElgrisCounterSetup, ElgrisInverterSetup
from modules.devices.elgris.elgris.device import create_device


def setup_modbus_mocks(monkeypatch):
"""Setup common Modbus mocks für alle Tests"""
mock_read_input_registers_bulk = Mock(side_effect=[
{SdmRegister.VOLTAGE_L1: [231]*3, SdmRegister.CURRENT_L1: [0.5]*3, SdmRegister.POWER_L1: [115]*3},
{SdmRegister.IMPORTED: 100, SdmRegister.EXPORTED: 200, SdmRegister.FREQUENCY: 50}])
mock_read_input_registers = Mock(side_effect=[[0.99]*3])

monkeypatch.setattr(ModbusTcpClient_, "__enter__", Mock())
monkeypatch.setattr(ModbusTcpClient_, "__exit__", Mock())
monkeypatch.setattr(ModbusTcpClient_, "read_input_registers_bulk", mock_read_input_registers_bulk)
monkeypatch.setattr(ModbusTcpClient_, "read_input_registers", mock_read_input_registers)


def test_elgris_bat(monkeypatch):
setup_modbus_mocks(monkeypatch)

device = create_device(Elgris())
device.add_component(ElgrisBatSetup())

store_bat_mock = Mock()
monkeypatch.setattr(device.components["component0"], "store", store_bat_mock)

# execution
device.update()

# evaluation
assert vars(store_bat_mock.set.call_args[0][0]) == vars(BatState(
exported=200000,
imported=100000,
power=345,
currents=[0.5]*3,
))


def test_elgris_counter(monkeypatch):
setup_modbus_mocks(monkeypatch)

device = create_device(Elgris())
device.add_component(ElgrisCounterSetup(id=1))

store_counter_mock = Mock()
monkeypatch.setattr(device.components["component1"], "store", store_counter_mock)

# execution
device.update()

# evaluation
assert vars(store_counter_mock.set.call_args[0][0]) == vars(CounterState(
exported=200000,
imported=100000,
power=345,
voltages=[231]*3,
currents=[0.5]*3,
powers=[115]*3,
power_factors=[0.99]*3,
frequency=50,
serial_number=""
))


def test_elgris_inverter(monkeypatch):
setup_modbus_mocks(monkeypatch)

device = create_device(Elgris())
device.add_component(ElgrisInverterSetup(id=2))

store_inverter_mock = Mock()
monkeypatch.setattr(device.components["component2"], "store", store_inverter_mock)

# execution
device.update()

# evaluation
assert vars(store_inverter_mock.set.call_args[0][0]) == vars(InverterState(
exported=200000,
imported=100000,
power=345,
currents=[0.5]*3,
))
3 changes: 1 addition & 2 deletions packages/modules/devices/elgris/elgris/inverter.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,7 @@ def initialize(self) -> None:
self.store = get_inverter_value_store(self.component_config.id)

def update(self):
with self.__tcp_client:
counter_state = self.elgris.get_counter_state()
counter_state = self.elgris.get_counter_state()
inverter_state = InverterState(
exported=counter_state.exported,
imported=counter_state.imported,
Expand Down
Loading