mirror of
https://github.com/home-assistant/core.git
synced 2025-07-27 23:27:37 +00:00
Add wirelesstag ambient temperature sensor for Outdoor Probe (#60243)
* Added support for ambient temperature sensor for Outdoor Probe. * Switched to use of SensorEntityDescription for device_class. * Removed unused config param, restored use of _sensor_type ivar. * Use entity descriptions as dict for shorter iteration. * Clean up Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
This commit is contained in:
parent
15f62a7237
commit
de1527d0e9
@ -1,10 +1,22 @@
|
|||||||
"""Sensor support for Wireless Sensor Tags platform."""
|
"""Sensor support for Wireless Sensor Tags platform."""
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
from homeassistant.components.sensor import PLATFORM_SCHEMA, SensorEntity
|
from homeassistant.components.sensor import (
|
||||||
from homeassistant.const import CONF_MONITORED_CONDITIONS
|
PLATFORM_SCHEMA,
|
||||||
|
STATE_CLASS_MEASUREMENT,
|
||||||
|
SensorEntity,
|
||||||
|
SensorEntityDescription,
|
||||||
|
)
|
||||||
|
from homeassistant.const import (
|
||||||
|
CONF_MONITORED_CONDITIONS,
|
||||||
|
DEVICE_CLASS_HUMIDITY,
|
||||||
|
DEVICE_CLASS_ILLUMINANCE,
|
||||||
|
DEVICE_CLASS_TEMPERATURE,
|
||||||
|
)
|
||||||
from homeassistant.core import callback
|
from homeassistant.core import callback
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||||
@ -14,16 +26,45 @@ from . import DOMAIN as WIRELESSTAG_DOMAIN, SIGNAL_TAG_UPDATE, WirelessTagBaseSe
|
|||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
SENSOR_TEMPERATURE = "temperature"
|
SENSOR_TEMPERATURE = "temperature"
|
||||||
|
SENSOR_AMBIENT_TEMPERATURE = "ambient_temperature"
|
||||||
SENSOR_HUMIDITY = "humidity"
|
SENSOR_HUMIDITY = "humidity"
|
||||||
SENSOR_MOISTURE = "moisture"
|
SENSOR_MOISTURE = "moisture"
|
||||||
SENSOR_LIGHT = "light"
|
SENSOR_LIGHT = "light"
|
||||||
|
|
||||||
SENSOR_TYPES = [SENSOR_TEMPERATURE, SENSOR_HUMIDITY, SENSOR_MOISTURE, SENSOR_LIGHT]
|
SENSOR_TYPES: dict[str, SensorEntityDescription] = {
|
||||||
|
SENSOR_TEMPERATURE: SensorEntityDescription(
|
||||||
|
key=SENSOR_TEMPERATURE,
|
||||||
|
device_class=DEVICE_CLASS_TEMPERATURE,
|
||||||
|
state_class=STATE_CLASS_MEASUREMENT,
|
||||||
|
),
|
||||||
|
SENSOR_AMBIENT_TEMPERATURE: SensorEntityDescription(
|
||||||
|
key=SENSOR_AMBIENT_TEMPERATURE,
|
||||||
|
device_class=DEVICE_CLASS_TEMPERATURE,
|
||||||
|
state_class=STATE_CLASS_MEASUREMENT,
|
||||||
|
),
|
||||||
|
SENSOR_HUMIDITY: SensorEntityDescription(
|
||||||
|
key=SENSOR_HUMIDITY,
|
||||||
|
device_class=DEVICE_CLASS_HUMIDITY,
|
||||||
|
state_class=STATE_CLASS_MEASUREMENT,
|
||||||
|
),
|
||||||
|
SENSOR_MOISTURE: SensorEntityDescription(
|
||||||
|
key=SENSOR_MOISTURE,
|
||||||
|
device_class=SENSOR_MOISTURE,
|
||||||
|
state_class=STATE_CLASS_MEASUREMENT,
|
||||||
|
),
|
||||||
|
SENSOR_LIGHT: SensorEntityDescription(
|
||||||
|
key=SENSOR_LIGHT,
|
||||||
|
device_class=DEVICE_CLASS_ILLUMINANCE,
|
||||||
|
state_class=STATE_CLASS_MEASUREMENT,
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
|
SENSOR_KEYS: list[str] = list(SENSOR_TYPES)
|
||||||
|
|
||||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
|
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
|
||||||
{
|
{
|
||||||
vol.Required(CONF_MONITORED_CONDITIONS, default=[]): vol.All(
|
vol.Required(CONF_MONITORED_CONDITIONS, default=[]): vol.All(
|
||||||
cv.ensure_list, [vol.In(SENSOR_TYPES)]
|
cv.ensure_list, [vol.In(SENSOR_KEYS)]
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@ -35,11 +76,11 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
|||||||
sensors = []
|
sensors = []
|
||||||
tags = platform.tags
|
tags = platform.tags
|
||||||
for tag in tags.values():
|
for tag in tags.values():
|
||||||
for sensor_type in config.get(CONF_MONITORED_CONDITIONS):
|
for key in config[CONF_MONITORED_CONDITIONS]:
|
||||||
if sensor_type in tag.allowed_sensor_types:
|
if key not in tag.allowed_sensor_types:
|
||||||
sensors.append(
|
continue
|
||||||
WirelessTagSensor(platform, tag, sensor_type, hass.config)
|
description = SENSOR_TYPES[key]
|
||||||
)
|
sensors.append(WirelessTagSensor(platform, tag, description))
|
||||||
|
|
||||||
add_entities(sensors, True)
|
add_entities(sensors, True)
|
||||||
|
|
||||||
@ -47,11 +88,14 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
|||||||
class WirelessTagSensor(WirelessTagBaseSensor, SensorEntity):
|
class WirelessTagSensor(WirelessTagBaseSensor, SensorEntity):
|
||||||
"""Representation of a Sensor."""
|
"""Representation of a Sensor."""
|
||||||
|
|
||||||
def __init__(self, api, tag, sensor_type, config):
|
entity_description: SensorEntityDescription
|
||||||
|
|
||||||
|
def __init__(self, api, tag, description):
|
||||||
"""Initialize a WirelessTag sensor."""
|
"""Initialize a WirelessTag sensor."""
|
||||||
super().__init__(api, tag)
|
super().__init__(api, tag)
|
||||||
|
|
||||||
self._sensor_type = sensor_type
|
self._sensor_type = description.key
|
||||||
|
self.entity_description = description
|
||||||
self._name = self._tag.name
|
self._name = self._tag.name
|
||||||
|
|
||||||
# I want to see entity_id as:
|
# I want to see entity_id as:
|
||||||
@ -87,11 +131,6 @@ class WirelessTagSensor(WirelessTagBaseSensor, SensorEntity):
|
|||||||
"""Return the state of the sensor."""
|
"""Return the state of the sensor."""
|
||||||
return self._state
|
return self._state
|
||||||
|
|
||||||
@property
|
|
||||||
def device_class(self):
|
|
||||||
"""Return the class of the sensor."""
|
|
||||||
return self._sensor_type
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def native_unit_of_measurement(self):
|
def native_unit_of_measurement(self):
|
||||||
"""Return the unit of measurement."""
|
"""Return the unit of measurement."""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user