From 470053cafdefecc400db42306f9fb0d678cc99ab Mon Sep 17 00:00:00 2001 From: Ben Lebherz Date: Sun, 5 Sep 2021 00:07:06 +0200 Subject: [PATCH] fix sensor states typing --- sensor.py | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/sensor.py b/sensor.py index 488429c..bf95994 100644 --- a/sensor.py +++ b/sensor.py @@ -173,7 +173,7 @@ def __init__(self, coordinator, _id: int, spc: SurePetcareAPI) -> None: self._attr_state = LockState(locking["mode"]).name.casefold() @property - def state(self) -> str: + def state(self) -> str | None: """Return battery level in percent.""" if ( state := cast(SureFlap, self.coordinator.data[self._id]) @@ -182,8 +182,6 @@ def state(self) -> str: ): return LockState(state["locking"]["mode"]).name.casefold() - return "Unknown" - class Felaqua(SurePetcareSensor): """Sure Petcare Felaqua.""" @@ -196,10 +194,10 @@ def __init__(self, coordinator, _id: int, spc: SurePetcareAPI): self._attr_unit_of_measurement = VOLUME_MILLILITERS @property - def state(self) -> int | None: + def state(self) -> float | None: """Return the remaining water.""" if felaqua := cast(SureFelaqua, self.coordinator.data[self._id]): - return max(0, int(felaqua.water_remaining or 0)) + return int(felaqua.water_remaining) if felaqua.water_remaining else None @property def extra_state_attributes(self) -> dict[str, Any]: @@ -284,10 +282,13 @@ def __init__( self._attr_unit_of_measurement = MASS_GRAMS @property - def state(self) -> int | None: + def state(self) -> float | None: """Return the remaining water.""" - if feeder := cast(SureFeeder, self.coordinator.data[self.feeder_id]): - return max(0, int(feeder.bowls[self.bowl_id].weight)) + + if (feeder := cast(SureFeeder, self.coordinator.data[self.feeder_id])) and ( + weight := feeder.bowls[self.bowl_id].weight + ): + return int(weight) if weight and weight > 0 else None class Feeder(SurePetcareSensor): @@ -301,10 +302,10 @@ def __init__(self, coordinator, _id: int, spc: SurePetcareAPI): self._attr_unit_of_measurement = MASS_GRAMS @property - def state(self) -> int | None: + def state(self) -> float | None: """Return the total remaining food.""" if feeder := cast(SureFeeder, self.coordinator.data[self._id]): - return int(feeder.total_weight) + return int(feeder.total_weight) if feeder.total_weight else None @property def device_info(self): @@ -349,10 +350,8 @@ def __init__(self, coordinator, _id: int, spc: SurePetcareAPI): @property def state(self) -> int | None: """Return battery level in percent.""" - if ( - battery := cast(SurepyDevice, self.coordinator.data[self._id]) - ) and battery.battery_level: - return max(0, battery.battery_level) + if battery := cast(SurepyDevice, self.coordinator.data[self._id]): + return int(battery.battery_level) if battery.battery_level else None @property def extra_state_attributes(self) -> dict[str, Any]: