1 """Support for Honeywell (US) Total Connect Comfort sensors."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from dataclasses
import dataclass
9 from aiosomecomfort.device
import Device
14 SensorEntityDescription,
24 from .
import HoneywellData
25 from .const
import DOMAIN
27 OUTDOOR_TEMPERATURE_STATUS_KEY =
"outdoor_temperature"
28 OUTDOOR_HUMIDITY_STATUS_KEY =
"outdoor_humidity"
29 CURRENT_TEMPERATURE_STATUS_KEY =
"current_temperature"
30 CURRENT_HUMIDITY_STATUS_KEY =
"current_humidity"
34 """Get the correct temperature unit for the device."""
35 if device.temperature_unit ==
"C":
36 return UnitOfTemperature.CELSIUS
37 return UnitOfTemperature.FAHRENHEIT
40 @dataclass(frozen=True, kw_only=True)
42 """Describes a Honeywell sensor entity."""
44 value_fn: Callable[[Device], Any]
45 unit_fn: Callable[[Device], Any]
48 SENSOR_TYPES: tuple[HoneywellSensorEntityDescription, ...] = (
50 key=OUTDOOR_TEMPERATURE_STATUS_KEY,
51 translation_key=OUTDOOR_TEMPERATURE_STATUS_KEY,
52 device_class=SensorDeviceClass.TEMPERATURE,
53 state_class=SensorStateClass.MEASUREMENT,
54 value_fn=
lambda device: device.outdoor_temperature,
55 unit_fn=_get_temperature_sensor_unit,
58 key=OUTDOOR_HUMIDITY_STATUS_KEY,
59 translation_key=OUTDOOR_HUMIDITY_STATUS_KEY,
60 device_class=SensorDeviceClass.HUMIDITY,
61 state_class=SensorStateClass.MEASUREMENT,
62 value_fn=
lambda device: device.outdoor_humidity,
63 unit_fn=
lambda device: PERCENTAGE,
66 key=CURRENT_TEMPERATURE_STATUS_KEY,
67 device_class=SensorDeviceClass.TEMPERATURE,
68 state_class=SensorStateClass.MEASUREMENT,
69 value_fn=
lambda device: device.current_temperature,
70 unit_fn=_get_temperature_sensor_unit,
73 key=CURRENT_HUMIDITY_STATUS_KEY,
74 device_class=SensorDeviceClass.HUMIDITY,
75 state_class=SensorStateClass.MEASUREMENT,
76 value_fn=
lambda device: device.current_humidity,
77 unit_fn=
lambda device: PERCENTAGE,
84 config_entry: ConfigEntry,
85 async_add_entities: AddEntitiesCallback,
87 """Set up the Honeywell thermostat."""
88 data: HoneywellData = hass.data[DOMAIN][config_entry.entry_id]
92 for device
in data.devices.values()
93 for description
in SENSOR_TYPES
94 if getattr(device, description.key)
is not None
99 """Representation of a Honeywell US Outdoor Temperature Sensor."""
101 entity_description: HoneywellSensorEntityDescription
102 _attr_has_entity_name =
True
105 """Initialize the outdoor temperature sensor."""
112 identifiers={(DOMAIN, device.deviceid)},
114 manufacturer=
"Honeywell",
119 """Return the state."""
StateType native_value(self)
None __init__(self, device, description)
_attr_native_unit_of_measurement
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
str _get_temperature_sensor_unit(Device device)