1 """PEGELONLINE sensor entities."""
3 from __future__
import annotations
5 from dataclasses
import dataclass
7 from aiopegelonline.models
import CurrentMeasurement
12 SensorEntityDescription,
19 from .
import PegelOnlineConfigEntry
20 from .coordinator
import PegelOnlineDataUpdateCoordinator
21 from .entity
import PegelOnlineEntity
24 @dataclass(frozen=True, kw_only=True)
26 """PEGELONLINE sensor entity description."""
31 SENSORS: tuple[PegelOnlineSensorEntityDescription, ...] = (
33 key=
"air_temperature",
34 translation_key=
"air_temperature",
35 measurement_key=
"air_temperature",
36 state_class=SensorStateClass.MEASUREMENT,
37 device_class=SensorDeviceClass.TEMPERATURE,
38 entity_registry_enabled_default=
False,
41 key=
"clearance_height",
42 translation_key=
"clearance_height",
43 measurement_key=
"clearance_height",
44 state_class=SensorStateClass.MEASUREMENT,
45 device_class=SensorDeviceClass.DISTANCE,
49 translation_key=
"oxygen_level",
50 measurement_key=
"oxygen_level",
51 state_class=SensorStateClass.MEASUREMENT,
52 entity_registry_enabled_default=
False,
56 measurement_key=
"ph_value",
57 state_class=SensorStateClass.MEASUREMENT,
58 device_class=SensorDeviceClass.PH,
59 entity_registry_enabled_default=
False,
63 translation_key=
"water_speed",
64 measurement_key=
"water_speed",
65 state_class=SensorStateClass.MEASUREMENT,
66 device_class=SensorDeviceClass.SPEED,
67 entity_registry_enabled_default=
False,
71 translation_key=
"water_flow",
72 measurement_key=
"water_flow",
73 state_class=SensorStateClass.MEASUREMENT,
74 entity_registry_enabled_default=
False,
78 translation_key=
"water_level",
79 measurement_key=
"water_level",
80 state_class=SensorStateClass.MEASUREMENT,
83 key=
"water_temperature",
84 translation_key=
"water_temperature",
85 measurement_key=
"water_temperature",
86 state_class=SensorStateClass.MEASUREMENT,
87 device_class=SensorDeviceClass.TEMPERATURE,
88 entity_registry_enabled_default=
False,
95 entry: PegelOnlineConfigEntry,
96 async_add_entities: AddEntitiesCallback,
98 """Set up the PEGELONLINE sensor."""
99 coordinator = entry.runtime_data
104 for description
in SENSORS
105 if getattr(coordinator.data, description.measurement_key)
is not None
111 """Representation of a PEGELONLINE sensor."""
113 entity_description: PegelOnlineSensorEntityDescription
117 coordinator: PegelOnlineDataUpdateCoordinator,
118 description: PegelOnlineSensorEntityDescription,
120 """Initialize a PEGELONLINE sensor."""
125 if description.device_class != SensorDeviceClass.PH:
138 """Return the measurement data of the entity."""
139 return getattr(self.coordinator.data, self.
entity_descriptionentity_description.measurement_key)
143 """Return the state of the device."""
_attr_extra_state_attributes
_attr_native_unit_of_measurement
None __init__(self, PegelOnlineDataUpdateCoordinator coordinator, PegelOnlineSensorEntityDescription description)
CurrentMeasurement measurement(self)
IssData update(pyiss.ISS iss)
None async_setup_entry(HomeAssistant hass, PegelOnlineConfigEntry entry, AddEntitiesCallback async_add_entities)