@@ -173,7 +173,7 @@ def __init__(self, coordinator, _id: int, spc: SurePetcareAPI) -> None:
173173 self ._attr_state = LockState (locking ["mode" ]).name .casefold ()
174174
175175 @property
176- def state (self ) -> str :
176+ def state (self ) -> str | None :
177177 """Return battery level in percent."""
178178 if (
179179 state := cast (SureFlap , self .coordinator .data [self ._id ])
@@ -182,8 +182,6 @@ def state(self) -> str:
182182 ):
183183 return LockState (state ["locking" ]["mode" ]).name .casefold ()
184184
185- return "Unknown"
186-
187185
188186class Felaqua (SurePetcareSensor ):
189187 """Sure Petcare Felaqua."""
@@ -196,10 +194,10 @@ def __init__(self, coordinator, _id: int, spc: SurePetcareAPI):
196194 self ._attr_unit_of_measurement = VOLUME_MILLILITERS
197195
198196 @property
199- def state (self ) -> int | None :
197+ def state (self ) -> float | None :
200198 """Return the remaining water."""
201199 if felaqua := cast (SureFelaqua , self .coordinator .data [self ._id ]):
202- return max ( 0 , int (felaqua .water_remaining or 0 ))
200+ return int (felaqua .water_remaining ) if felaqua . water_remaining else None
203201
204202 @property
205203 def extra_state_attributes (self ) -> dict [str , Any ]:
@@ -284,10 +282,13 @@ def __init__(
284282 self ._attr_unit_of_measurement = MASS_GRAMS
285283
286284 @property
287- def state (self ) -> int | None :
285+ def state (self ) -> float | None :
288286 """Return the remaining water."""
289- if feeder := cast (SureFeeder , self .coordinator .data [self .feeder_id ]):
290- return max (0 , int (feeder .bowls [self .bowl_id ].weight ))
287+
288+ if (feeder := cast (SureFeeder , self .coordinator .data [self .feeder_id ])) and (
289+ weight := feeder .bowls [self .bowl_id ].weight
290+ ):
291+ return int (weight ) if weight and weight > 0 else None
291292
292293
293294class Feeder (SurePetcareSensor ):
@@ -301,10 +302,10 @@ def __init__(self, coordinator, _id: int, spc: SurePetcareAPI):
301302 self ._attr_unit_of_measurement = MASS_GRAMS
302303
303304 @property
304- def state (self ) -> int | None :
305+ def state (self ) -> float | None :
305306 """Return the total remaining food."""
306307 if feeder := cast (SureFeeder , self .coordinator .data [self ._id ]):
307- return int (feeder .total_weight )
308+ return int (feeder .total_weight ) if feeder . total_weight else None
308309
309310 @property
310311 def device_info (self ):
@@ -349,10 +350,8 @@ def __init__(self, coordinator, _id: int, spc: SurePetcareAPI):
349350 @property
350351 def state (self ) -> int | None :
351352 """Return battery level in percent."""
352- if (
353- battery := cast (SurepyDevice , self .coordinator .data [self ._id ])
354- ) and battery .battery_level :
355- return max (0 , battery .battery_level )
353+ if battery := cast (SurepyDevice , self .coordinator .data [self ._id ]):
354+ return int (battery .battery_level ) if battery .battery_level else None
356355
357356 @property
358357 def extra_state_attributes (self ) -> dict [str , Any ]:
0 commit comments