11# tested
22import logging
3- from typing import List , Optional , Tuple
3+ from typing import List , Optional , Tuple , Union
44
55from control import data
66from control .chargepoint .chargepoint import Chargepoint
@@ -12,28 +12,39 @@ def get_chargepoints_by_mode_and_counter(mode_tuple: Tuple[Optional[str], str, b
1212 counter : str ) -> List [Chargepoint ]:
1313 cps_to_counter = data .data .counter_all_data .get_chargepoints_of_counter (counter )
1414 cps_to_counter_ids = [int (cp [2 :]) for cp in cps_to_counter ]
15- cps_by_mode = get_chargepoints_by_mode (mode_tuple )
15+ cps_by_mode = get_chargepoints_with_required_current_by_chargemode (mode_tuple )
1616 return list (filter (lambda cp : cp .num in cps_to_counter_ids , cps_by_mode ))
1717
1818# tested
1919
2020
21- def get_chargepoints_by_mode (mode_tuple : Tuple [Optional [str ], str , bool ]) -> List [Chargepoint ]:
22- mode = mode_tuple [0 ]
23- submode = mode_tuple [1 ]
24- prio = mode_tuple [2 ]
25- # enthält alle LP, auf die das Tupel zutrifft
26- valid_chargepoints = []
27- for cp in data .data .cp_data .values ():
28- if cp .data .control_parameter .required_current != 0 :
21+ def get_chargepoints_by_chargemode (
22+ modes : Union [Tuple [Optional [str ], str , bool ],
23+ Tuple [Tuple [Optional [str ], str , bool ]]]) -> List [Chargepoint ]:
24+ modes = modes if isinstance (modes [0 ], Tuple ) else (modes ,)
25+ valid_chargepoints : List [Chargepoint ] = []
26+
27+ for mode_tuple in modes :
28+ mode = mode_tuple [0 ]
29+ submode = mode_tuple [1 ]
30+ prio = mode_tuple [2 ]
31+
32+ for cp in data .data .cp_data .values ():
2933 if ((cp .data .control_parameter .prio == prio ) and
30- (cp .data .control_parameter .chargemode == mode or
31- mode is None ) and
32- ( cp . data . control_parameter . submode == submode ) ):
34+ (cp .data .control_parameter .chargemode == mode or mode is None ) and
35+ ( cp . data . control_parameter . submode == submode ) and
36+ cp not in valid_chargepoints ):
3337 valid_chargepoints .append (cp )
3438 return valid_chargepoints
3539
3640
41+ def get_chargepoints_with_required_current_by_chargemode (
42+ modes : Union [Tuple [Optional [str ], str , bool ],
43+ Tuple [Tuple [Optional [str ], str , bool ]]]) -> List [Chargepoint ]:
44+ cps_by_mode = get_chargepoints_by_chargemode (modes )
45+ return list (filter (lambda cp : cp .data .control_parameter .required_current != 0 , cps_by_mode ))
46+
47+
3748def get_preferenced_chargepoint_charging (
3849 chargepoints : List [Chargepoint ]) -> Tuple [List [Chargepoint ], List [Chargepoint ]]:
3950 preferenced_chargepoints = _get_preferenced_chargepoint (chargepoints )
@@ -104,10 +115,3 @@ def _get_preferenced_chargepoint(valid_chargepoints: List[Chargepoint]) -> List:
104115 except Exception :
105116 log .exception ("Fehler im Algorithmus-Modul" )
106117 return preferenced_chargepoints
107-
108-
109- def get_chargepoints_by_chargemodes (modes ) -> List [Chargepoint ]:
110- chargepoints : List [Chargepoint ] = []
111- for mode in modes :
112- chargepoints .extend (get_chargepoints_by_mode (mode ))
113- return chargepoints
0 commit comments