11from dataclasses import dataclass , field
2- from typing import Dict , Optional , Union
3- from control import data
4- from control .limiting_value import LimitingValue
2+ from typing import Dict , Optional , Tuple , Union
3+ from control .limiting_value import LoadmanagementLimit
54from helpermodules .constants import NO_ERROR
6- from modules .common .utils .component_parser import get_io_name_by_id
75from modules .io_actions .controllable_consumers .dimming .api_eebus import DimmingEebus
86from modules .io_actions .controllable_consumers .dimming .api_io import DimmingIo
97from modules .io_actions .controllable_consumers .dimming_direct_control .api import DimmingDirectControl
@@ -63,19 +61,14 @@ def setup(self):
6361 for action in self .actions .values ():
6462 action .setup ()
6563
66- def _check_fault_state_io_device (self , io_device : int ) -> None :
67- if data .data .io_states [f"io_states{ io_device } " ].data .get .fault_state == 2 :
68- raise ValueError (LimitingValue .CONTROLLABLE_CONSUMERS_ERROR .value .format (get_io_name_by_id (io_device )))
69-
70- def dimming_get_import_power_left (self , device : Dict ) -> Optional [float ]:
64+ def dimming_get_import_power_left (self , device : Dict ) -> Tuple [Optional [float ], LoadmanagementLimit ]:
7165 for action in self .actions .values ():
7266 if isinstance (action , (DimmingIo , DimmingEebus )):
7367 for d in action .config .configuration .devices :
7468 if device == d :
75- self ._check_fault_state_io_device (action .config .configuration .io_device )
7669 return action .dimming_get_import_power_left ()
7770 else :
78- return None
71+ return None , LoadmanagementLimit ( None , None )
7972
8073 def dimming_set_import_power_left (self , device : Dict , used_power : float ) -> Optional [float ]:
8174 for action in self .actions .values ():
@@ -84,31 +77,28 @@ def dimming_set_import_power_left(self, device: Dict, used_power: float) -> Opti
8477 if d == device :
8578 return action .dimming_set_import_power_left (used_power )
8679
87- def dimming_via_direct_control (self , device : Dict ) -> Optional [float ]:
80+ def dimming_via_direct_control (self , device : Dict ) -> Tuple [ Optional [float ], LoadmanagementLimit ]:
8881 for action in self .actions .values ():
8982 if isinstance (action , DimmingDirectControl ):
9083 for d in action .config .configuration .devices :
9184 if device == d :
92- self ._check_fault_state_io_device (action .config .configuration .io_device )
9385 return action .dimming_via_direct_control ()
9486 else :
95- return None
87+ return None , LoadmanagementLimit ( None , None )
9688
97- def ripple_control_receiver (self , device : Dict ) -> float :
89+ def ripple_control_receiver (self , device : Dict ) -> Tuple [ float , LoadmanagementLimit ] :
9890 for action in self .actions .values ():
9991 if isinstance (action , RippleControlReceiver ):
10092 for d in action .config .configuration .devices :
10193 if device == d :
102- self ._check_fault_state_io_device (action .config .configuration .io_device )
10394 return action .ripple_control_receiver ()
10495 else :
105- return 1
96+ return 1 , LoadmanagementLimit ( None , None )
10697
107- def stepwise_control (self , device_id : int ) -> Optional [float ]:
98+ def stepwise_control (self , device_id : int ) -> Tuple [ Optional [float ], LoadmanagementLimit ]:
10899 for action in self .actions .values ():
109100 if isinstance (action , (StepwiseControlEebus , StepwiseControlIo )):
110101 if device_id in [component ["id" ] for component in action .config .configuration .devices ]:
111- self ._check_fault_state_io_device (action .config .configuration .io_device )
112102 return action .control_stepwise ()
113103 else :
114- return None
104+ return None , LoadmanagementLimit ( None , None )
0 commit comments