2121from dataclasses import dataclass
2222from datetime import datetime , timedelta , timezone
2323
24- # pylint: disable=no-name-in-module
25- from frequenz .api .microgrid .battery_pb2 import ComponentState as BatteryComponentState
26- from frequenz .api .microgrid .battery_pb2 import RelayState as BatteryRelayState
27- from frequenz .api .microgrid .common_pb2 import ErrorLevel
28- from frequenz .api .microgrid .inverter_pb2 import ComponentState as InverterComponentState
29-
30- # pylint: enable=no-name-in-module
3124from frequenz .channels import Receiver , Sender , select , selected_from
3225from frequenz .channels .timer import SkipMissedAndDrift , Timer
3326from frequenz .client .microgrid import (
27+ BatteryComponentState ,
3428 BatteryData ,
29+ BatteryRelayState ,
3530 ComponentCategory ,
3631 ComponentData ,
32+ ErrorLevel ,
33+ InverterComponentState ,
3734 InverterData ,
3835)
3936from typing_extensions import override
@@ -72,29 +69,27 @@ class BatteryStatusTracker(ComponentStatusTracker, BackgroundService):
7269 Status updates are sent out only when there is a status change.
7370 """
7471
75- _battery_valid_relay : set [BatteryRelayState .ValueType ] = {
76- BatteryRelayState .RELAY_STATE_CLOSED
77- }
72+ _battery_valid_relay : set [BatteryRelayState ] = {BatteryRelayState .CLOSED }
7873 """The list of valid relay states of a battery.
7974
8075 A working battery in any other battery relay state will be reported as failing.
8176 """
8277
83- _battery_valid_state : set [BatteryComponentState . ValueType ] = {
84- BatteryComponentState .COMPONENT_STATE_IDLE ,
85- BatteryComponentState .COMPONENT_STATE_CHARGING ,
86- BatteryComponentState .COMPONENT_STATE_DISCHARGING ,
78+ _battery_valid_state : set [BatteryComponentState ] = {
79+ BatteryComponentState .IDLE ,
80+ BatteryComponentState .CHARGING ,
81+ BatteryComponentState .DISCHARGING ,
8782 }
8883 """The list of valid states of a battery.
8984
9085 A working battery in any other battery state will be reported as failing.
9186 """
9287
93- _inverter_valid_state : set [InverterComponentState . ValueType ] = {
94- InverterComponentState .COMPONENT_STATE_STANDBY ,
95- InverterComponentState .COMPONENT_STATE_IDLE ,
96- InverterComponentState .COMPONENT_STATE_CHARGING ,
97- InverterComponentState .COMPONENT_STATE_DISCHARGING ,
88+ _inverter_valid_state : set [InverterComponentState ] = {
89+ InverterComponentState .STANDBY ,
90+ InverterComponentState .IDLE ,
91+ InverterComponentState .CHARGING ,
92+ InverterComponentState .DISCHARGING ,
9893 }
9994 """The list of valid states of an inverter.
10095
@@ -370,11 +365,11 @@ def _no_critical_error(self, msg: BatteryData | InverterData) -> bool:
370365 Returns:
371366 True if message has no critical error, False otherwise.
372367 """
373- critical = ErrorLevel .ERROR_LEVEL_CRITICAL
374- # pylint: disable=protected-access
375- critical_err = next ((err for err in msg ._errors if err .level == critical ), None )
368+ critical = ErrorLevel .CRITICAL
369+ critical_err = next ((err for err in msg .errors if err .level == critical ), None )
376370 if critical_err is not None :
377- if self ._last_status == ComponentStatusEnum .WORKING :
371+ last_status = self ._last_status # pylint: disable=protected-access
372+ if last_status == ComponentStatusEnum .WORKING :
378373 _logger .warning (
379374 "Component %d has critical error: %s" ,
380375 msg .component_id ,
@@ -394,13 +389,13 @@ def _is_inverter_state_correct(self, msg: InverterData) -> bool:
394389 """
395390 # Component state is not exposed to the user.
396391 # pylint: disable=protected-access
397- state = msg ._component_state
392+ state = msg .component_state
398393 if state not in BatteryStatusTracker ._inverter_valid_state :
399394 if self ._last_status == ComponentStatusEnum .WORKING :
400395 _logger .warning (
401396 "Inverter %d has invalid state: %s" ,
402397 msg .component_id ,
403- InverterComponentState . Name ( state ) ,
398+ state . name ,
404399 )
405400 return False
406401 return True
@@ -416,25 +411,25 @@ def _is_battery_state_correct(self, msg: BatteryData) -> bool:
416411 """
417412 # Component state is not exposed to the user.
418413 # pylint: disable=protected-access
419- state = msg ._component_state
414+ state = msg .component_state
420415 if state not in BatteryStatusTracker ._battery_valid_state :
421416 if self ._last_status == ComponentStatusEnum .WORKING :
422417 _logger .warning (
423418 "Battery %d has invalid state: %s" ,
424419 self .battery_id ,
425- BatteryComponentState . Name ( state ) ,
420+ state . name ,
426421 )
427422 return False
428423
429424 # Component state is not exposed to the user.
430425 # pylint: disable=protected-access
431- relay_state = msg ._relay_state
426+ relay_state = msg .relay_state
432427 if relay_state not in BatteryStatusTracker ._battery_valid_relay :
433428 if self ._last_status == ComponentStatusEnum .WORKING :
434429 _logger .warning (
435430 "Battery %d has invalid relay state: %s" ,
436431 self .battery_id ,
437- BatteryRelayState . Name ( relay_state ) ,
432+ relay_state . name ,
438433 )
439434 return False
440435 return True
0 commit comments