diff --git a/homeassistant/components/bme280/sensor.py b/homeassistant/components/bme280/sensor.py index 2c3ab0303b0..6a54432d190 100644 --- a/homeassistant/components/bme280/sensor.py +++ b/homeassistant/components/bme280/sensor.py @@ -12,6 +12,9 @@ from homeassistant.components.sensor import PLATFORM_SCHEMA, SensorEntity from homeassistant.const import ( CONF_MONITORED_CONDITIONS, CONF_NAME, + DEVICE_CLASS_HUMIDITY, + DEVICE_CLASS_PRESSURE, + DEVICE_CLASS_TEMPERATURE, PERCENTAGE, TEMP_FAHRENHEIT, ) @@ -48,9 +51,9 @@ SENSOR_TEMP = "temperature" SENSOR_HUMID = "humidity" SENSOR_PRESS = "pressure" SENSOR_TYPES = { - SENSOR_TEMP: ["Temperature", None], - SENSOR_HUMID: ["Humidity", PERCENTAGE], - SENSOR_PRESS: ["Pressure", "mb"], + SENSOR_TEMP: ["Temperature", None, DEVICE_CLASS_TEMPERATURE], + SENSOR_HUMID: ["Humidity", PERCENTAGE, DEVICE_CLASS_HUMIDITY], + SENSOR_PRESS: ["Pressure", "mb", DEVICE_CLASS_PRESSURE], } DEFAULT_MONITORED = [SENSOR_TEMP, SENSOR_HUMID, SENSOR_PRESS] @@ -146,6 +149,7 @@ class BME280Sensor(SensorEntity): self.type = sensor_type self._state = None self._unit_of_measurement = SENSOR_TYPES[sensor_type][1] + self._attr_device_class = SENSOR_TYPES[sensor_type][2] @property def name(self): diff --git a/homeassistant/components/bme680/sensor.py b/homeassistant/components/bme680/sensor.py index f3d6b9428ea..6e4e2de79b9 100644 --- a/homeassistant/components/bme680/sensor.py +++ b/homeassistant/components/bme680/sensor.py @@ -11,6 +11,9 @@ from homeassistant.components.sensor import PLATFORM_SCHEMA, SensorEntity from homeassistant.const import ( CONF_MONITORED_CONDITIONS, CONF_NAME, + DEVICE_CLASS_HUMIDITY, + DEVICE_CLASS_PRESSURE, + DEVICE_CLASS_TEMPERATURE, PERCENTAGE, TEMP_FAHRENHEIT, ) @@ -53,11 +56,11 @@ SENSOR_PRESS = "pressure" SENSOR_GAS = "gas" SENSOR_AQ = "airquality" SENSOR_TYPES = { - SENSOR_TEMP: ["Temperature", None], - SENSOR_HUMID: ["Humidity", PERCENTAGE], - SENSOR_PRESS: ["Pressure", "mb"], - SENSOR_GAS: ["Gas Resistance", "Ohms"], - SENSOR_AQ: ["Air Quality", PERCENTAGE], + SENSOR_TEMP: ["Temperature", None, DEVICE_CLASS_TEMPERATURE], + SENSOR_HUMID: ["Humidity", PERCENTAGE, DEVICE_CLASS_HUMIDITY], + SENSOR_PRESS: ["Pressure", "mb", DEVICE_CLASS_PRESSURE], + SENSOR_GAS: ["Gas Resistance", "Ohms", None], + SENSOR_AQ: ["Air Quality", PERCENTAGE, None], } DEFAULT_MONITORED = [SENSOR_TEMP, SENSOR_HUMID, SENSOR_PRESS, SENSOR_AQ] OVERSAMPLING_VALUES = {0, 1, 2, 4, 8, 16} @@ -327,6 +330,7 @@ class BME680Sensor(SensorEntity): self.type = sensor_type self._state = None self._unit_of_measurement = SENSOR_TYPES[sensor_type][1] + self._attr_device_class = SENSOR_TYPES[sensor_type][2] @property def name(self): diff --git a/homeassistant/components/dht/sensor.py b/homeassistant/components/dht/sensor.py index 72780832960..1300c165b37 100644 --- a/homeassistant/components/dht/sensor.py +++ b/homeassistant/components/dht/sensor.py @@ -12,6 +12,8 @@ from homeassistant.const import ( CONF_MONITORED_CONDITIONS, CONF_NAME, CONF_PIN, + DEVICE_CLASS_HUMIDITY, + DEVICE_CLASS_TEMPERATURE, PERCENTAGE, TEMP_FAHRENHEIT, ) @@ -33,8 +35,8 @@ MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=30) SENSOR_TEMPERATURE = "temperature" SENSOR_HUMIDITY = "humidity" SENSOR_TYPES = { - SENSOR_TEMPERATURE: ["Temperature", None], - SENSOR_HUMIDITY: ["Humidity", PERCENTAGE], + SENSOR_TEMPERATURE: ["Temperature", None, DEVICE_CLASS_TEMPERATURE], + SENSOR_HUMIDITY: ["Humidity", PERCENTAGE, DEVICE_CLASS_HUMIDITY], } @@ -124,6 +126,7 @@ class DHTSensor(SensorEntity): self.humidity_offset = humidity_offset self._state = None self._unit_of_measurement = SENSOR_TYPES[sensor_type][1] + self._attr_device_class = SENSOR_TYPES[sensor_type][2] @property def name(self): diff --git a/homeassistant/components/ecobee/sensor.py b/homeassistant/components/ecobee/sensor.py index 275db46ab0a..24ba36bedd8 100644 --- a/homeassistant/components/ecobee/sensor.py +++ b/homeassistant/components/ecobee/sensor.py @@ -12,8 +12,8 @@ from homeassistant.const import ( from .const import DOMAIN, ECOBEE_MODEL_TO_NAME, MANUFACTURER SENSOR_TYPES = { - "temperature": ["Temperature", TEMP_FAHRENHEIT], - "humidity": ["Humidity", PERCENTAGE], + "temperature": ["Temperature", TEMP_FAHRENHEIT, DEVICE_CLASS_TEMPERATURE], + "humidity": ["Humidity", PERCENTAGE, DEVICE_CLASS_HUMIDITY], } @@ -44,6 +44,7 @@ class EcobeeSensor(SensorEntity): self.index = sensor_index self._state = None self._unit_of_measurement = SENSOR_TYPES[sensor_type][1] + self._attr_device_class = SENSOR_TYPES[sensor_type][2] @property def name(self): diff --git a/homeassistant/components/greeneye_monitor/sensor.py b/homeassistant/components/greeneye_monitor/sensor.py index 337a471eb2b..0aa106e6801 100644 --- a/homeassistant/components/greeneye_monitor/sensor.py +++ b/homeassistant/components/greeneye_monitor/sensor.py @@ -4,6 +4,7 @@ from homeassistant.const import ( CONF_NAME, CONF_SENSOR_TYPE, CONF_TEMPERATURE_UNIT, + DEVICE_CLASS_TEMPERATURE, POWER_WATT, TIME_HOURS, TIME_MINUTES, @@ -240,6 +241,7 @@ class PulseCounter(GEMSensor): class TemperatureSensor(GEMSensor): """Entity showing temperature from one temperature sensor.""" + _attr_device_class = DEVICE_CLASS_TEMPERATURE _attr_icon = TEMPERATURE_ICON def __init__(self, monitor_serial_number, number, name, unit): diff --git a/homeassistant/components/htu21d/sensor.py b/homeassistant/components/htu21d/sensor.py index d32eebf6d5f..ccbe6a31de2 100644 --- a/homeassistant/components/htu21d/sensor.py +++ b/homeassistant/components/htu21d/sensor.py @@ -8,7 +8,13 @@ import smbus import voluptuous as vol from homeassistant.components.sensor import PLATFORM_SCHEMA, SensorEntity -from homeassistant.const import CONF_NAME, PERCENTAGE, TEMP_FAHRENHEIT +from homeassistant.const import ( + CONF_NAME, + DEVICE_CLASS_HUMIDITY, + DEVICE_CLASS_TEMPERATURE, + PERCENTAGE, + TEMP_FAHRENHEIT, +) import homeassistant.helpers.config_validation as cv from homeassistant.util import Throttle from homeassistant.util.temperature import celsius_to_fahrenheit @@ -32,6 +38,11 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( } ) +DEVICE_CLASS_MAP = { + SENSOR_TEMPERATURE: DEVICE_CLASS_TEMPERATURE, + SENSOR_HUMIDITY: DEVICE_CLASS_HUMIDITY, +} + async def async_setup_platform(hass, config, async_add_entities, discovery_info=None): """Set up the HTU21D sensor.""" @@ -79,6 +90,7 @@ class HTU21DSensor(SensorEntity): self._unit_of_measurement = unit self._client = htu21d_client self._state = None + self._attr_device_class = DEVICE_CLASS_MAP[variable] @property def name(self) -> str: diff --git a/homeassistant/components/mhz19/sensor.py b/homeassistant/components/mhz19/sensor.py index 0f0735dd5da..63a1181f720 100644 --- a/homeassistant/components/mhz19/sensor.py +++ b/homeassistant/components/mhz19/sensor.py @@ -11,6 +11,8 @@ from homeassistant.const import ( CONCENTRATION_PARTS_PER_MILLION, CONF_MONITORED_CONDITIONS, CONF_NAME, + DEVICE_CLASS_CO2, + DEVICE_CLASS_TEMPERATURE, TEMP_FAHRENHEIT, ) import homeassistant.helpers.config_validation as cv @@ -29,8 +31,8 @@ ATTR_CO2_CONCENTRATION = "co2_concentration" SENSOR_TEMPERATURE = "temperature" SENSOR_CO2 = "co2" SENSOR_TYPES = { - SENSOR_TEMPERATURE: ["Temperature", None], - SENSOR_CO2: ["CO2", CONCENTRATION_PARTS_PER_MILLION], + SENSOR_TEMPERATURE: ["Temperature", None, DEVICE_CLASS_TEMPERATURE], + SENSOR_CO2: ["CO2", CONCENTRATION_PARTS_PER_MILLION, DEVICE_CLASS_CO2], } PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( { @@ -80,6 +82,7 @@ class MHZ19Sensor(SensorEntity): self._unit_of_measurement = SENSOR_TYPES[sensor_type][1] self._ppm = None self._temperature = None + self._attr_device_class = SENSOR_TYPES[sensor_type][2] @property def name(self): diff --git a/homeassistant/components/mysensors/sensor.py b/homeassistant/components/mysensors/sensor.py index 6a5c80e1e8a..1cb2b632362 100644 --- a/homeassistant/components/mysensors/sensor.py +++ b/homeassistant/components/mysensors/sensor.py @@ -115,14 +115,12 @@ class MySensorsSensor(mysensors.device.MySensorsEntity, SensorEntity): @property def device_class(self) -> str | None: """Return the device class of this entity.""" - icon = self._get_sensor_type()[2] - return icon + return self._get_sensor_type()[2] @property def icon(self) -> str | None: """Return the icon to use in the frontend, if any.""" - icon = self._get_sensor_type()[1] - return icon + return self._get_sensor_type()[1] @property def unit_of_measurement(self) -> str | None: diff --git a/homeassistant/components/temper/sensor.py b/homeassistant/components/temper/sensor.py index 7edbd3ba812..7d447d3f9ea 100644 --- a/homeassistant/components/temper/sensor.py +++ b/homeassistant/components/temper/sensor.py @@ -8,6 +8,7 @@ from homeassistant.components.sensor import PLATFORM_SCHEMA, SensorEntity from homeassistant.const import ( CONF_NAME, CONF_OFFSET, + DEVICE_CLASS_TEMPERATURE, DEVICE_DEFAULT_NAME, TEMP_FAHRENHEIT, ) @@ -68,6 +69,7 @@ class TemperSensor(SensorEntity): self.current_value = None self._name = name self.set_temper_device(temper_device) + self._attr_device_class = DEVICE_CLASS_TEMPERATURE @property def name(self): diff --git a/homeassistant/components/thermoworks_smoke/sensor.py b/homeassistant/components/thermoworks_smoke/sensor.py index 86427349f31..1bdbbc5fcc3 100644 --- a/homeassistant/components/thermoworks_smoke/sensor.py +++ b/homeassistant/components/thermoworks_smoke/sensor.py @@ -18,6 +18,7 @@ from homeassistant.const import ( CONF_EXCLUDE, CONF_MONITORED_CONDITIONS, CONF_PASSWORD, + DEVICE_CLASS_TEMPERATURE, TEMP_FAHRENHEIT, ) import homeassistant.helpers.config_validation as cv @@ -105,6 +106,7 @@ class ThermoworksSmokeSensor(SensorEntity): self._unique_id = f"{serial}-{sensor_type}" self.serial = serial self.mgr = mgr + self._attr_device_class = DEVICE_CLASS_TEMPERATURE self.update_unit() @property diff --git a/homeassistant/components/waterfurnace/sensor.py b/homeassistant/components/waterfurnace/sensor.py index fe7c94ed634..8691cc4ed02 100644 --- a/homeassistant/components/waterfurnace/sensor.py +++ b/homeassistant/components/waterfurnace/sensor.py @@ -1,7 +1,12 @@ """Support for Waterfurnace.""" from homeassistant.components.sensor import ENTITY_ID_FORMAT, SensorEntity -from homeassistant.const import PERCENTAGE, POWER_WATT, TEMP_FAHRENHEIT +from homeassistant.const import ( + DEVICE_CLASS_TEMPERATURE, + PERCENTAGE, + POWER_WATT, + TEMP_FAHRENHEIT, +) from homeassistant.core import callback from homeassistant.util import slugify @@ -12,9 +17,15 @@ class WFSensorConfig: """Water Furnace Sensor configuration.""" def __init__( - self, friendly_name, field, icon="mdi:gauge", unit_of_measurement=None + self, + friendly_name, + field, + icon="mdi:gauge", + unit_of_measurement=None, + device_class=None, ): """Initialize configuration.""" + self.device_class = device_class self.friendly_name = friendly_name self.field = field self.icon = icon @@ -25,13 +36,19 @@ SENSORS = [ WFSensorConfig("Furnace Mode", "mode"), WFSensorConfig("Total Power", "totalunitpower", "mdi:flash", POWER_WATT), WFSensorConfig( - "Active Setpoint", "tstatactivesetpoint", "mdi:thermometer", TEMP_FAHRENHEIT + "Active Setpoint", + "tstatactivesetpoint", + None, + TEMP_FAHRENHEIT, + DEVICE_CLASS_TEMPERATURE, ), - WFSensorConfig("Leaving Air", "leavingairtemp", "mdi:thermometer", TEMP_FAHRENHEIT), - WFSensorConfig("Room Temp", "tstatroomtemp", "mdi:thermometer", TEMP_FAHRENHEIT), WFSensorConfig( - "Loop Temp", "enteringwatertemp", "mdi:thermometer", TEMP_FAHRENHEIT + "Leaving Air", "leavingairtemp", None, TEMP_FAHRENHEIT, DEVICE_CLASS_TEMPERATURE ), + WFSensorConfig( + "Room Temp", "tstatroomtemp", None, TEMP_FAHRENHEIT, DEVICE_CLASS_TEMPERATURE + ), + WFSensorConfig("Loop Temp", "enteringwatertemp", None, TEMP_FAHRENHEIT), WFSensorConfig( "Humidity Set Point", "tstathumidsetpoint", "mdi:water-percent", PERCENTAGE ), @@ -71,6 +88,7 @@ class WaterFurnaceSensor(SensorEntity): self._state = None self._icon = config.icon self._unit_of_measurement = config.unit_of_measurement + self._attr_device_class = config.device_class # This ensures that the sensors are isolated per waterfurnace unit self.entity_id = ENTITY_ID_FORMAT.format(