1 """Sensor for RymPro meters."""
3 from __future__
import annotations
5 from dataclasses
import dataclass
10 SensorEntityDescription,
20 from .const
import DOMAIN
21 from .coordinator
import RymProDataUpdateCoordinator
24 @dataclass(kw_only=True, frozen=True)
26 """Class describing RymPro sensor entities."""
31 SENSOR_DESCRIPTIONS: tuple[RymProSensorEntityDescription, ...] = (
33 key=
"total_consumption",
34 translation_key=
"total_consumption",
35 state_class=SensorStateClass.TOTAL_INCREASING,
36 suggested_display_precision=3,
40 key=
"monthly_forecast",
41 translation_key=
"monthly_forecast",
42 suggested_display_precision=3,
43 value_key=
"consumption_forecast",
50 config_entry: ConfigEntry,
51 async_add_entities: AddEntitiesCallback,
53 """Set up sensors for device."""
54 coordinator: RymProDataUpdateCoordinator = hass.data[DOMAIN][config_entry.entry_id]
56 RymProSensor(coordinator, meter_id, description, config_entry.entry_id)
57 for meter_id, meter
in coordinator.data.items()
58 for description
in SENSOR_DESCRIPTIONS
63 """Sensor for RymPro meters."""
65 _attr_has_entity_name =
True
66 _attr_device_class = SensorDeviceClass.WATER
67 _attr_native_unit_of_measurement = UnitOfVolume.CUBIC_METERS
68 entity_description: RymProSensorEntityDescription
72 coordinator: RymProDataUpdateCoordinator,
74 description: RymProSensorEntityDescription,
77 """Initialize sensor."""
80 unique_id = f
"{entry_id}_{meter_id}"
84 identifiers={(DOMAIN, unique_id)},
85 manufacturer=
"Read Your Meter Pro",
86 name=f
"Meter {meter_id}",
92 """Return the state of the sensor."""
None __init__(self, RymProDataUpdateCoordinator coordinator, int meter_id, RymProSensorEntityDescription description, str entry_id)
float|None native_value(self)
_attr_extra_state_attributes
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)