@@ -22,7 +22,7 @@ class AwesomeVersionSerializationStrategy(SerializationStrategy, use_annotations
2222
2323 def serialize (self , value : AwesomeVersion ) -> str :
2424 """Serialize AwesomeVersion object to string."""
25- return str (value )
25+ return str (value ) # pragma: no cover
2626
2727 def deserialize (self , value : str ) -> AwesomeVersion | None :
2828 """Deserialize string to AwesomeVersion object."""
@@ -65,18 +65,23 @@ class CombinedModels:
6565 measurement : Measurement
6666 state : State | None
6767 system : System | None
68+ batteries : Batteries | None
6869
70+ # pylint: disable=too-many-arguments
71+ # pylint: disable=too-many-positional-arguments
6972 def __init__ (
7073 self ,
7174 device : Device ,
7275 measurement : Measurement ,
7376 state : State | None ,
7477 system : System | None ,
78+ batteries : Batteries | None = None ,
7579 ):
7680 self .device = device
7781 self .measurement = measurement
7882 self .state = state
7983 self .system = system
84+ self .batteries = batteries
8085
8186 # Move things around for backwards compatibility
8287 ## measurement.wifi_ssid -> system.wifi_ssid
@@ -183,6 +188,10 @@ def supports_telegram(self) -> bool:
183188 """Return if the device supports telegram."""
184189 return self .product_type == Model .P1_METER
185190
191+ def supports_batteries (self ) -> bool :
192+ """Return if the device supports batteries."""
193+ return self .product_type == Model .P1_METER
194+
186195
187196@dataclass (kw_only = True )
188197class Measurement (BaseModel ):
@@ -601,6 +610,36 @@ def __post_deserialize__(cls, obj: System) -> System:
601610 return obj
602611
603612
613+ @dataclass
614+ class BatteriesUpdate (UpdateBaseModel ):
615+ """Represent Batteries update config."""
616+
617+ mode : Batteries .Mode | None = field (default = None )
618+
619+
620+ @dataclass (kw_only = True )
621+ class Batteries (BaseModel ):
622+ """Represent Batteries config."""
623+
624+ class Mode (StrEnum ):
625+ """Device type allocations."""
626+
627+ ZERO = "zero"
628+ TO_FULL = "to_full"
629+ STANDBY = "standby"
630+
631+ mode : Mode | None = field (
632+ default = None ,
633+ metadata = {
634+ "deserialize" : lambda x : Batteries .Mode .__members__ .get (x .upper (), None )
635+ },
636+ )
637+ power_w : float | None = field (default = None )
638+ target_power_w : float | None = field (default = None )
639+ max_consumption_w : float | None = field (default = None )
640+ max_production_w : float | None = field (default = None )
641+
642+
604643@dataclass (kw_only = True )
605644class Token (BaseModel ):
606645 """Represent Token."""
0 commit comments