1 """Support for Sure PetCare Flaps/Pets sensors."""
3 from __future__
import annotations
5 from typing
import cast
7 from surepy.entities
import SurepyEntity
8 from surepy.entities.devices
import Felaqua
as SurepyFelaqua
9 from surepy.enums
import EntityType
17 from .const
import DOMAIN, SURE_BATT_VOLTAGE_DIFF, SURE_BATT_VOLTAGE_LOW
18 from .coordinator
import SurePetcareDataCoordinator
19 from .entity
import SurePetcareEntity
23 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
25 """Set up Sure PetCare Flaps sensors."""
27 entities: list[SurePetcareEntity] = []
29 coordinator: SurePetcareDataCoordinator = hass.data[DOMAIN][entry.entry_id]
31 for surepy_entity
in coordinator.data.values():
32 if surepy_entity.type
in [
38 entities.append(
SureBattery(surepy_entity.id, coordinator))
40 if surepy_entity.type == EntityType.FELAQUA:
41 entities.append(
Felaqua(surepy_entity.id, coordinator))
47 """A sensor implementation for Sure Petcare batteries."""
49 _attr_device_class = SensorDeviceClass.BATTERY
50 _attr_entity_category = EntityCategory.DIAGNOSTIC
51 _attr_native_unit_of_measurement = PERCENTAGE
54 self, surepetcare_id: int, coordinator: SurePetcareDataCoordinator
56 """Initialize a Sure Petcare battery sensor."""
57 super().
__init__(surepetcare_id, coordinator)
59 self.
_attr_name_attr_name = f
"{self._device_name} Battery Level"
64 """Update the state and attributes."""
65 state = surepy_entity.raw_data()[
"status"]
68 per_battery_voltage = state[
"battery"] / 4
69 voltage_diff = per_battery_voltage - SURE_BATT_VOLTAGE_LOW
71 int(voltage_diff / SURE_BATT_VOLTAGE_DIFF * 100), 100
73 except (KeyError, TypeError):
77 voltage_per_battery =
float(state[
"battery"]) / 4
79 ATTR_VOLTAGE: f
"{float(state['battery']):.2f}",
80 f
"{ATTR_VOLTAGE}_per_battery": f
"{voltage_per_battery:.2f}",
87 """Sure Petcare Felaqua."""
89 _attr_device_class = SensorDeviceClass.VOLUME
90 _attr_native_unit_of_measurement = UnitOfVolume.MILLILITERS
93 self, surepetcare_id: int, coordinator: SurePetcareDataCoordinator
95 """Initialize a Sure Petcare Felaqua sensor."""
96 super().
__init__(surepetcare_id, coordinator)
98 surepy_entity = cast(SurepyFelaqua, coordinator.data[surepetcare_id])
106 """Update the state."""
107 surepy_entity = cast(SurepyFelaqua, surepy_entity)
None __init__(self, int surepetcare_id, SurePetcareDataCoordinator coordinator)
None _update_attr(self, SurepyEntity surepy_entity)
None __init__(self, int surepetcare_id, SurePetcareDataCoordinator coordinator)
_attr_extra_state_attributes
None _update_attr(self, SurepyEntity surepy_entity)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)