diff --git a/homeassistant/components/broadlink/sensor.py b/homeassistant/components/broadlink/sensor.py index aa0aa6c5f0b..92708583c43 100644 --- a/homeassistant/components/broadlink/sensor.py +++ b/homeassistant/components/broadlink/sensor.py @@ -28,7 +28,12 @@ SENSOR_TYPES = { STATE_CLASS_MEASUREMENT, ), "air_quality": ("Air Quality", None, None, None), - "humidity": ("Humidity", PERCENTAGE, DEVICE_CLASS_HUMIDITY, None), + "humidity": ( + "Humidity", + PERCENTAGE, + DEVICE_CLASS_HUMIDITY, + STATE_CLASS_MEASUREMENT, + ), "light": ("Light", None, DEVICE_CLASS_ILLUMINANCE, None), "noise": ("Noise", None, None, None), } diff --git a/homeassistant/components/deconz/sensor.py b/homeassistant/components/deconz/sensor.py index 96963302139..bbc49f786ea 100644 --- a/homeassistant/components/deconz/sensor.py +++ b/homeassistant/components/deconz/sensor.py @@ -65,6 +65,8 @@ ICON = { } STATE_CLASS = { + Humidity: STATE_CLASS_MEASUREMENT, + Pressure: STATE_CLASS_MEASUREMENT, Temperature: STATE_CLASS_MEASUREMENT, } @@ -300,6 +302,11 @@ class DeconzBattery(DeconzDevice, SensorEntity): """Return the class of the sensor.""" return DEVICE_CLASS_BATTERY + @property + def state_class(self): + """Return the state class of the sensor.""" + return STATE_CLASS_MEASUREMENT + @property def unit_of_measurement(self): """Return the unit of measurement of this entity.""" diff --git a/homeassistant/components/hue/sensor.py b/homeassistant/components/hue/sensor.py index 0f1fa418287..a512012bc68 100644 --- a/homeassistant/components/hue/sensor.py +++ b/homeassistant/components/hue/sensor.py @@ -93,6 +93,7 @@ class HueBattery(GenericHueSensor, SensorEntity): """Battery class for when a batt-powered device is only represented as an event.""" _attr_device_class = DEVICE_CLASS_BATTERY + _attr_state_class = STATE_CLASS_MEASUREMENT _attr_unit_of_measurement = PERCENTAGE @property diff --git a/homeassistant/components/tasmota/sensor.py b/homeassistant/components/tasmota/sensor.py index 5faea128594..19c3e37fa57 100644 --- a/homeassistant/components/tasmota/sensor.py +++ b/homeassistant/components/tasmota/sensor.py @@ -53,7 +53,10 @@ ICON = "icon" SENSOR_DEVICE_CLASS_ICON_MAP = { hc.SENSOR_AMBIENT: {DEVICE_CLASS: DEVICE_CLASS_ILLUMINANCE}, hc.SENSOR_APPARENT_POWERUSAGE: {DEVICE_CLASS: DEVICE_CLASS_POWER}, - hc.SENSOR_BATTERY: {DEVICE_CLASS: DEVICE_CLASS_BATTERY}, + hc.SENSOR_BATTERY: { + DEVICE_CLASS: DEVICE_CLASS_BATTERY, + STATE_CLASS: STATE_CLASS_MEASUREMENT, + }, hc.SENSOR_CCT: {ICON: "mdi:temperature-kelvin"}, hc.SENSOR_CO2: {DEVICE_CLASS: DEVICE_CLASS_CO2}, hc.SENSOR_COLOR_BLUE: {ICON: "mdi:palette"}, @@ -64,7 +67,10 @@ SENSOR_DEVICE_CLASS_ICON_MAP = { hc.SENSOR_DISTANCE: {ICON: "mdi:leak"}, hc.SENSOR_ECO2: {ICON: "mdi:molecule-co2"}, hc.SENSOR_FREQUENCY: {ICON: "mdi:current-ac"}, - hc.SENSOR_HUMIDITY: {DEVICE_CLASS: DEVICE_CLASS_HUMIDITY}, + hc.SENSOR_HUMIDITY: { + DEVICE_CLASS: DEVICE_CLASS_HUMIDITY, + STATE_CLASS: STATE_CLASS_MEASUREMENT, + }, hc.SENSOR_ILLUMINANCE: {DEVICE_CLASS: DEVICE_CLASS_ILLUMINANCE}, hc.SENSOR_STATUS_IP: {ICON: "mdi:ip-network"}, hc.SENSOR_STATUS_LINK_COUNT: {ICON: "mdi:counter"}, @@ -81,8 +87,14 @@ SENSOR_DEVICE_CLASS_ICON_MAP = { hc.SENSOR_PM2_5: {ICON: "mdi:air-filter"}, hc.SENSOR_POWERFACTOR: {ICON: "mdi:alpha-f-circle-outline"}, hc.SENSOR_POWERUSAGE: {DEVICE_CLASS: DEVICE_CLASS_POWER}, - hc.SENSOR_PRESSURE: {DEVICE_CLASS: DEVICE_CLASS_PRESSURE}, - hc.SENSOR_PRESSUREATSEALEVEL: {DEVICE_CLASS: DEVICE_CLASS_PRESSURE}, + hc.SENSOR_PRESSURE: { + DEVICE_CLASS: DEVICE_CLASS_PRESSURE, + STATE_CLASS: STATE_CLASS_MEASUREMENT, + }, + hc.SENSOR_PRESSUREATSEALEVEL: { + DEVICE_CLASS: DEVICE_CLASS_PRESSURE, + STATE_CLASS: STATE_CLASS_MEASUREMENT, + }, hc.SENSOR_PROXIMITY: {ICON: "mdi:ruler"}, hc.SENSOR_REACTIVE_POWERUSAGE: {DEVICE_CLASS: DEVICE_CLASS_POWER}, hc.SENSOR_STATUS_LAST_RESTART_TIME: {DEVICE_CLASS: DEVICE_CLASS_TIMESTAMP}, diff --git a/homeassistant/components/xiaomi_miio/sensor.py b/homeassistant/components/xiaomi_miio/sensor.py index ed551a6dd49..16ca4d3e7ec 100644 --- a/homeassistant/components/xiaomi_miio/sensor.py +++ b/homeassistant/components/xiaomi_miio/sensor.py @@ -81,10 +81,16 @@ GATEWAY_SENSOR_TYPES = { state_class=STATE_CLASS_MEASUREMENT, ), "humidity": SensorType( - unit=PERCENTAGE, icon=None, device_class=DEVICE_CLASS_HUMIDITY + unit=PERCENTAGE, + icon=None, + device_class=DEVICE_CLASS_HUMIDITY, + state_class=STATE_CLASS_MEASUREMENT, ), "pressure": SensorType( - unit=PRESSURE_HPA, icon=None, device_class=DEVICE_CLASS_PRESSURE + unit=PRESSURE_HPA, + icon=None, + device_class=DEVICE_CLASS_PRESSURE, + state_class=STATE_CLASS_MEASUREMENT, ), "load_power": SensorType( unit=POWER_WATT, icon=None, device_class=DEVICE_CLASS_POWER diff --git a/homeassistant/components/zha/sensor.py b/homeassistant/components/zha/sensor.py index a6d7ae4ce9e..714df80eebb 100644 --- a/homeassistant/components/zha/sensor.py +++ b/homeassistant/components/zha/sensor.py @@ -179,6 +179,7 @@ class Battery(Sensor): SENSOR_ATTR = "battery_percentage_remaining" _device_class = DEVICE_CLASS_BATTERY + _state_class = STATE_CLASS_MEASUREMENT _unit = PERCENTAGE @staticmethod @@ -241,6 +242,7 @@ class Humidity(Sensor): SENSOR_ATTR = "measured_value" _device_class = DEVICE_CLASS_HUMIDITY _divisor = 100 + _state_class = STATE_CLASS_MEASUREMENT _unit = PERCENTAGE @@ -282,6 +284,7 @@ class Pressure(Sensor): SENSOR_ATTR = "measured_value" _device_class = DEVICE_CLASS_PRESSURE _decimals = 0 + _state_class = STATE_CLASS_MEASUREMENT _unit = PRESSURE_HPA diff --git a/homeassistant/components/zwave_js/sensor.py b/homeassistant/components/zwave_js/sensor.py index dcc21b236e8..40e28999a1a 100644 --- a/homeassistant/components/zwave_js/sensor.py +++ b/homeassistant/components/zwave_js/sensor.py @@ -122,9 +122,11 @@ class ZwaveSensorBase(ZWaveBaseEntity, SensorEntity): This should be run once during initialization so we don't have to calculate this value on every state update. """ + if self.info.primary_value.command_class == CommandClass.BATTERY: + return STATE_CLASS_MEASUREMENT if isinstance(self.info.primary_value.property_, str): property_lower = self.info.primary_value.property_.lower() - if "temperature" in property_lower: + if "humidity" in property_lower or "temperature" in property_lower: return STATE_CLASS_MEASUREMENT return None