|  | 
| 10 | 10 | 
 | 
| 11 | 11 | import grpc | 
| 12 | 12 | from frequenz.channels import Broadcast, Sender, merge, select, selected_from | 
| 13 |  | -from frequenz.channels.timer import SkipMissedAndDrift, Timer | 
| 14 | 13 | from frequenz.client.microgrid import ApiClient, ComponentCategory, EVChargerData | 
| 15 | 14 | from typing_extensions import override | 
| 16 | 15 | 
 | 
|  | 
| 30 | 29 | _logger = logging.getLogger(__name__) | 
| 31 | 30 | 
 | 
| 32 | 31 | _DEFAULT_API_REQUEST_TIMEOUT = timedelta(seconds=5.0) | 
| 33 |  | -_TGT_POWER_RESEND_INTERVAL = timedelta(seconds=5.0) | 
| 34 | 32 | 
 | 
| 35 | 33 | 
 | 
| 36 | 34 | class EVChargerManager(ComponentManager): | 
| @@ -223,10 +221,8 @@ async def _run(self) -> None:  # pylint: disable=too-many-locals | 
| 223 | 221 |         ) | 
| 224 | 222 |         target_power_rx = self._target_power_channel.new_receiver() | 
| 225 | 223 |         api_request_timeout = _DEFAULT_API_REQUEST_TIMEOUT | 
| 226 |  | -        resend_timer = Timer(_TGT_POWER_RESEND_INTERVAL, SkipMissedAndDrift()) | 
| 227 | 224 |         latest_target_powers: dict[int, Power] = {} | 
| 228 |  | -        async for selected in select(ev_charger_data_rx, target_power_rx, resend_timer): | 
| 229 |  | -            resending = False | 
|  | 225 | +        async for selected in select(ev_charger_data_rx, target_power_rx): | 
| 230 | 226 |             target_power_changes = {} | 
| 231 | 227 |             now = datetime.now(tz=timezone.utc) | 
| 232 | 228 | 
 | 
| @@ -277,21 +273,14 @@ async def _run(self) -> None:  # pylint: disable=too-many-locals | 
| 277 | 273 |                     diff_power = allocated_power - self._target_power | 
| 278 | 274 |                     target_power_changes = self._deallocate_unused_power(diff_power) | 
| 279 | 275 | 
 | 
| 280 |  | -            elif selected_from(selected, resend_timer): | 
| 281 |  | -                target_power_changes = latest_target_powers | 
| 282 |  | -                resending = True | 
| 283 |  | - | 
| 284 | 276 |             if target_power_changes: | 
| 285 | 277 |                 _logger.debug("Setting power to EV chargers: %s", target_power_changes) | 
| 286 | 278 |             else: | 
| 287 | 279 |                 continue | 
| 288 |  | -            if not resending: | 
| 289 |  | -                for component_id, power in target_power_changes.items(): | 
| 290 |  | -                    self._evc_states.get(component_id).update_last_allocation( | 
| 291 |  | -                        power, now | 
| 292 |  | -                    ) | 
|  | 280 | +            for component_id, power in target_power_changes.items(): | 
|  | 281 | +                self._evc_states.get(component_id).update_last_allocation(power, now) | 
| 293 | 282 | 
 | 
| 294 |  | -                latest_target_powers.update(target_power_changes) | 
|  | 283 | +            latest_target_powers.update(target_power_changes) | 
| 295 | 284 |             result = await self._set_api_power( | 
| 296 | 285 |                 api, target_power_changes, api_request_timeout | 
| 297 | 286 |             ) | 
|  | 
0 commit comments