1 """Representation of Idasen Desk sensors."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from dataclasses
import dataclass
9 from homeassistant
import config_entries
13 SensorEntityDescription,
22 from .
import DeskData, IdasenDeskCoordinator
23 from .const
import DOMAIN
26 @dataclass(frozen=True, kw_only=True)
28 """Class describing IdasenDesk sensor entities."""
30 value_fn: Callable[[IdasenDeskCoordinator], float |
None]
36 translation_key=
"height",
37 native_unit_of_measurement=UnitOfLength.METERS,
38 device_class=SensorDeviceClass.DISTANCE,
39 state_class=SensorStateClass.MEASUREMENT,
40 entity_registry_enabled_default=
False,
41 suggested_display_precision=3,
42 value_fn=
lambda coordinator: coordinator.desk.height,
50 async_add_entities: AddEntitiesCallback,
52 """Set up Idasen Desk sensors."""
53 data: DeskData = hass.data[DOMAIN][entry.entry_id]
56 data.address, data.device_info, data.coordinator, sensor_description
58 for sensor_description
in SENSORS
63 """IdasenDesk sensor."""
65 entity_description: IdasenDeskSensorDescription
66 _attr_has_entity_name =
True
71 device_info: DeviceInfo,
72 coordinator: IdasenDeskCoordinator,
73 description: IdasenDeskSensorDescription,
75 """Initialize the IdasenDesk sensor entity."""
82 self.
_desk_desk = coordinator.desk
85 """When entity is added to hass."""
91 """Return True if entity is available."""
92 return super().available
and self.
_desk_desk.is_connected
is True
96 """Handle data update."""
101 """Update the native value attribute."""
None async_added_to_hass(self)
None __init__(self, str address, DeviceInfo device_info, IdasenDeskCoordinator coordinator, IdasenDeskSensorDescription description)
None _update_native_value(self)
None _handle_coordinator_update(self, *Any args)
None async_setup_entry(HomeAssistant hass, config_entries.ConfigEntry entry, AddEntitiesCallback async_add_entities)