11from dataclasses import dataclass , field
2- from typing import Dict , Optional , Union
2+ from typing import Dict , Optional , Tuple , Union
33from control import data
4- from control .limiting_value import LimitingValue
4+ from control .limiting_value import LimitingValue , LoadmanagementLimit
55from helpermodules .constants import NO_ERROR
66from modules .common .utils .component_parser import get_io_name_by_id
77from modules .io_actions .controllable_consumers .dimming .api_eebus import DimmingEebus
@@ -67,15 +67,15 @@ def _check_fault_state_io_device(self, io_device: int) -> None:
6767 if data .data .io_states [f"io_states{ io_device } " ].data .get .fault_state == 2 :
6868 raise ValueError (LimitingValue .CONTROLLABLE_CONSUMERS_ERROR .value .format (get_io_name_by_id (io_device )))
6969
70- def dimming_get_import_power_left (self , device : Dict ) -> Optional [float ]:
70+ def dimming_get_import_power_left (self , device : Dict ) -> Tuple [ Optional [float ], LoadmanagementLimit ]:
7171 for action in self .actions .values ():
7272 if isinstance (action , (DimmingIo , DimmingEebus )):
7373 for d in action .config .configuration .devices :
7474 if device == d :
7575 self ._check_fault_state_io_device (action .config .configuration .io_device )
7676 return action .dimming_get_import_power_left ()
7777 else :
78- return None
78+ return None , LoadmanagementLimit ( None , None )
7979
8080 def dimming_set_import_power_left (self , device : Dict , used_power : float ) -> Optional [float ]:
8181 for action in self .actions .values ():
@@ -84,31 +84,31 @@ def dimming_set_import_power_left(self, device: Dict, used_power: float) -> Opti
8484 if d == device :
8585 return action .dimming_set_import_power_left (used_power )
8686
87- def dimming_via_direct_control (self , device : Dict ) -> Optional [float ]:
87+ def dimming_via_direct_control (self , device : Dict ) -> Tuple [ Optional [float ], LoadmanagementLimit ]:
8888 for action in self .actions .values ():
8989 if isinstance (action , DimmingDirectControl ):
9090 for d in action .config .configuration .devices :
9191 if device == d :
9292 self ._check_fault_state_io_device (action .config .configuration .io_device )
9393 return action .dimming_via_direct_control ()
9494 else :
95- return None
95+ return None , LoadmanagementLimit ( None , None )
9696
97- def ripple_control_receiver (self , device : Dict ) -> float :
97+ def ripple_control_receiver (self , device : Dict ) -> Tuple [ float , LoadmanagementLimit ] :
9898 for action in self .actions .values ():
9999 if isinstance (action , RippleControlReceiver ):
100100 for d in action .config .configuration .devices :
101101 if device == d :
102102 self ._check_fault_state_io_device (action .config .configuration .io_device )
103103 return action .ripple_control_receiver ()
104104 else :
105- return 1
105+ return 1 , LoadmanagementLimit ( None , None )
106106
107- def stepwise_control (self , device_id : int ) -> Optional [float ]:
107+ def stepwise_control (self , device_id : int ) -> Tuple [ Optional [float ], LoadmanagementLimit ]:
108108 for action in self .actions .values ():
109109 if isinstance (action , (StepwiseControlEebus , StepwiseControlIo )):
110110 if device_id in [component ["id" ] for component in action .config .configuration .devices ]:
111111 self ._check_fault_state_io_device (action .config .configuration .io_device )
112112 return action .control_stepwise ()
113113 else :
114- return None
114+ return None , LoadmanagementLimit ( None , None )
0 commit comments