1 """Sensor support for Wireless Sensor Tags platform."""
3 from __future__
import annotations
7 import voluptuous
as vol
10 PLATFORM_SCHEMA
as SENSOR_PLATFORM_SCHEMA,
13 SensorEntityDescription,
23 from .const
import DOMAIN, SIGNAL_TAG_UPDATE
24 from .entity
import WirelessTagBaseSensor
25 from .util
import async_migrate_unique_id
27 _LOGGER = logging.getLogger(__name__)
29 SENSOR_TEMPERATURE =
"temperature"
30 SENSOR_AMBIENT_TEMPERATURE =
"ambient_temperature"
31 SENSOR_HUMIDITY =
"humidity"
32 SENSOR_MOISTURE =
"moisture"
33 SENSOR_LIGHT =
"light"
35 SENSOR_TYPES: dict[str, SensorEntityDescription] = {
37 key=SENSOR_TEMPERATURE,
38 device_class=SensorDeviceClass.TEMPERATURE,
39 state_class=SensorStateClass.MEASUREMENT,
42 key=SENSOR_AMBIENT_TEMPERATURE,
43 device_class=SensorDeviceClass.TEMPERATURE,
44 state_class=SensorStateClass.MEASUREMENT,
48 device_class=SensorDeviceClass.HUMIDITY,
49 state_class=SensorStateClass.MEASUREMENT,
53 device_class=SensorDeviceClass.MOISTURE,
54 state_class=SensorStateClass.MEASUREMENT,
58 device_class=SensorDeviceClass.ILLUMINANCE,
59 state_class=SensorStateClass.MEASUREMENT,
63 SENSOR_KEYS: list[str] =
list(SENSOR_TYPES)
65 PLATFORM_SCHEMA = SENSOR_PLATFORM_SCHEMA.extend(
67 vol.Required(CONF_MONITORED_CONDITIONS, default=[]): vol.All(
68 cv.ensure_list, [vol.In(SENSOR_KEYS)]
77 async_add_entities: AddEntitiesCallback,
78 discovery_info: DiscoveryInfoType |
None =
None,
80 """Set up the sensor platform."""
81 platform = hass.data[DOMAIN]
84 for tag
in tags.values():
85 for key
in config[CONF_MONITORED_CONDITIONS]:
86 if key
not in tag.allowed_sensor_types:
88 description = SENSOR_TYPES[key]
96 """Representation of a Sensor."""
98 entity_description: SensorEntityDescription
101 """Initialize a WirelessTag sensor."""
116 """Register callbacks."""
127 """Provide name savvy to be used in entity_id name of self."""
128 return self.
namenamename.lower().replace(
" ",
"_")
132 """Return the state of the sensor."""
137 """Return the unit of measurement."""
138 return self.
_sensor_sensor.unit
142 """Return sensor current value."""
143 return self.
_sensor_sensor.value
147 """Return tag sensor entity."""
152 """Handle push notification sent by tag manager."""
153 _LOGGER.debug(
"Entity to update state: %s with new tag: %s", self, new_tag)
def updated_state_value(self)
None async_write_ha_state(self)
None async_on_remove(self, CALLBACK_TYPE func)
str|UndefinedType|None name(self)
None async_migrate_unique_id(HomeAssistant hass, ConfigEntry config_entry, Appliance device)
None async_setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback async_add_entities, DiscoveryInfoType|None discovery_info=None)
Callable[[], None] async_dispatcher_connect(HomeAssistant hass, str signal, Callable[..., Any] target)