1 """Support for Abode Security System sensors."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from dataclasses
import dataclass
7 from typing
import cast
9 from jaraco.abode.devices.sensor
import Sensor
14 SensorEntityDescription,
21 from .
import AbodeSystem
22 from .const
import DOMAIN
23 from .entity
import AbodeDevice
25 ABODE_TEMPERATURE_UNIT_HA_UNIT = {
26 "°F": UnitOfTemperature.FAHRENHEIT,
27 "°C": UnitOfTemperature.CELSIUS,
31 @dataclass(frozen=True, kw_only=True)
33 """Class describing Abode sensor entities."""
35 value_fn: Callable[[Sensor], float]
36 native_unit_of_measurement_fn: Callable[[Sensor], str]
39 SENSOR_TYPES: tuple[AbodeSensorDescription, ...] = (
42 device_class=SensorDeviceClass.TEMPERATURE,
43 native_unit_of_measurement_fn=
lambda device: ABODE_TEMPERATURE_UNIT_HA_UNIT[
46 value_fn=
lambda device: cast(float, device.temp),
50 device_class=SensorDeviceClass.HUMIDITY,
51 native_unit_of_measurement_fn=
lambda _: PERCENTAGE,
52 value_fn=
lambda device: cast(float, device.humidity),
56 device_class=SensorDeviceClass.ILLUMINANCE,
57 native_unit_of_measurement_fn=
lambda _: LIGHT_LUX,
58 value_fn=
lambda device: cast(float, device.lux),
64 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
66 """Set up Abode sensor devices."""
67 data: AbodeSystem = hass.data[DOMAIN]
71 for description
in SENSOR_TYPES
72 for device
in data.abode.get_devices(generic_type=
"sensor")
73 if description.key
in device.get_value(
"statuses")
78 """A sensor implementation for Abode devices."""
80 entity_description: AbodeSensorDescription
87 description: AbodeSensorDescription,
89 """Initialize a sensor for an Abode device."""
96 """Return the state of the sensor."""
101 """Return the native unit of measurement."""
str native_unit_of_measurement(self)
None __init__(self, AbodeSystem data, Sensor device, AbodeSensorDescription description)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)