1 """Sensor for Suez Water Consumption data."""
3 from __future__
import annotations
5 from collections.abc
import Callable, Mapping
6 from dataclasses
import dataclass
9 from pysuez.const
import ATTRIBUTION
14 SensorEntityDescription,
23 from .const
import CONF_COUNTER_ID, DOMAIN
24 from .coordinator
import SuezWaterCoordinator, SuezWaterData
27 @dataclass(frozen=True, kw_only=True)
29 """Describes Suez water sensor entity."""
31 value_fn: Callable[[SuezWaterData], float | str |
None]
32 attr_fn: Callable[[SuezWaterData], Mapping[str, Any] |
None] =
lambda _:
None
35 SENSORS: tuple[SuezWaterSensorEntityDescription, ...] = (
37 key=
"water_usage_yesterday",
38 translation_key=
"water_usage_yesterday",
39 native_unit_of_measurement=UnitOfVolume.LITERS,
40 device_class=SensorDeviceClass.WATER,
41 value_fn=
lambda suez_data: suez_data.aggregated_value,
42 attr_fn=
lambda suez_data: suez_data.aggregated_attr,
46 translation_key=
"water_price",
47 native_unit_of_measurement=CURRENCY_EURO,
48 device_class=SensorDeviceClass.MONETARY,
49 value_fn=
lambda suez_data: suez_data.price,
57 async_add_entities: AddEntitiesCallback,
59 """Set up Suez Water sensor from a config entry."""
60 coordinator = hass.data[DOMAIN][entry.entry_id]
61 counter_id = entry.data[CONF_COUNTER_ID]
64 SuezWaterSensor(coordinator, counter_id, description)
for description
in SENSORS
69 """Representation of a Suez water sensor."""
71 _attr_has_entity_name =
True
72 _attr_attribution = ATTRIBUTION
73 entity_description: SuezWaterSensorEntityDescription
77 coordinator: SuezWaterCoordinator,
79 entity_description: SuezWaterSensorEntityDescription,
81 """Initialize the suez water sensor entity."""
85 identifiers={(DOMAIN,
str(counter_id))},
86 entry_type=DeviceEntryType.SERVICE,
93 """Return the state of the sensor."""
98 """Return extra state of the sensor."""
None __init__(self, SuezWaterCoordinator coordinator, int counter_id, SuezWaterSensorEntityDescription entity_description)
Mapping[str, Any]|None extra_state_attributes(self)
float|str|None native_value(self)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)