1 """Support for Ridwell sensors."""
3 from __future__
import annotations
5 from collections.abc
import Mapping
6 from datetime
import date
9 from aioridwell.model
import RidwellAccount
14 SensorEntityDescription,
20 from .const
import DOMAIN, SENSOR_TYPE_NEXT_PICKUP
21 from .coordinator
import RidwellDataUpdateCoordinator
22 from .entity
import RidwellEntity
24 ATTR_CATEGORY =
"category"
25 ATTR_PICKUP_STATE =
"pickup_state"
26 ATTR_PICKUP_TYPES =
"pickup_types"
27 ATTR_QUANTITY =
"quantity"
30 key=SENSOR_TYPE_NEXT_PICKUP,
31 translation_key=
"next_pickup",
32 device_class=SensorDeviceClass.DATE,
37 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
39 """Set up Ridwell sensors based on a config entry."""
40 coordinator: RidwellDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
44 for account
in coordinator.accounts.values()
49 """Define a Ridwell pickup sensor."""
53 coordinator: RidwellDataUpdateCoordinator,
54 account: RidwellAccount,
55 description: SensorEntityDescription,
58 super().
__init__(coordinator, account)
65 """Return entity specific state attributes."""
66 attrs: dict[str, Any] = {
67 ATTR_PICKUP_TYPES: {},
72 if pickup.name
not in attrs[ATTR_PICKUP_TYPES]:
73 attrs[ATTR_PICKUP_TYPES][pickup.name] = {
74 ATTR_CATEGORY: pickup.category.value,
75 ATTR_QUANTITY: pickup.quantity,
81 attrs[ATTR_PICKUP_TYPES][pickup.name][ATTR_QUANTITY] += pickup.quantity
87 """Return the value reported by the sensor."""
RidwellPickupEvent next_pickup_event(self)
Mapping[str, Any] extra_state_attributes(self)
None __init__(self, RidwellDataUpdateCoordinator coordinator, RidwellAccount account, SensorEntityDescription description)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)