11#!/usr/bin/env python3
22import logging
3- from typing import Iterable
3+ from typing import Iterable , Union
44
55from modules .common .abstract_device import DeviceDescriptor
66from modules .common .configurable_device import ComponentFactoryByType , ConfigurableDevice , MultiComponentUpdater
77from modules .common .modbus import ModbusTcpClient_
8- from modules .devices .siemens .siemens_sentron .config import SiemensSentron , SiemensSentronCounterSetup
9- from modules .devices .siemens .siemens_sentron .counter import SiemensSentronCounter
8+ from modules .devices .siemens .siemens_sentron .config import (SiemensSentron , SiemensSentronCounterSetup ,
9+ SiemensSentronInverterSetup , SiemensSentronBatSetup )
10+ from modules .devices .siemens .siemens_sentron import counter , inverter , bat
1011
1112log = logging .getLogger (__name__ )
1213
@@ -16,9 +17,21 @@ def create_device(device_config: SiemensSentron):
1617
1718 def create_counter_component (component_config : SiemensSentronCounterSetup ):
1819 nonlocal client
19- return SiemensSentronCounter (component_config , client = client , modbus_id = device_config .configuration .modbus_id )
20+ return counter .SiemensSentronCounter (component_config , client = client ,
21+ modbus_id = device_config .configuration .modbus_id )
2022
21- def update_components (components : Iterable [SiemensSentronCounter ]):
23+ def create_inverter_component (component_config : SiemensSentronInverterSetup ):
24+ nonlocal client
25+ return inverter .SiemensSentronInverter (component_config , client = client ,
26+ modbus_id = device_config .configuration .modbus_id )
27+
28+ def create_bat_component (component_config : SiemensSentronBatSetup ):
29+ nonlocal client
30+ return bat .SiemensSentronBat (component_config , client = client ,
31+ modbus_id = device_config .configuration .modbus_id )
32+
33+ def update_components (components : Iterable [Union [counter .SiemensSentronCounter , inverter .SiemensSentronInverter ,
34+ bat .SiemensSentronBat ]]):
2235 nonlocal client
2336 with client :
2437 for component in components :
@@ -33,6 +46,8 @@ def initializer():
3346 initializer = initializer ,
3447 component_factory = ComponentFactoryByType (
3548 counter = create_counter_component ,
49+ inverter = create_inverter_component ,
50+ bat = create_bat_component
3651 ),
3752 component_updater = MultiComponentUpdater (update_components )
3853 )
0 commit comments