Mark battery, humidity and pressure sensors as STATE_CLASS_MEASUREMENT (#50924)

* Mark battery, humidity and pressure sensors as STATE_CLASS_MEASUREMENT

* Fix deconz battery sensor
This commit is contained in:
Erik Montnemery 2021-05-24 11:36:42 +02:00 committed by GitHub
parent ec4a47d1db
commit b169a8dbda
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 44 additions and 8 deletions

View file

@ -28,7 +28,12 @@ SENSOR_TYPES = {
STATE_CLASS_MEASUREMENT, STATE_CLASS_MEASUREMENT,
), ),
"air_quality": ("Air Quality", None, None, None), "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), "light": ("Light", None, DEVICE_CLASS_ILLUMINANCE, None),
"noise": ("Noise", None, None, None), "noise": ("Noise", None, None, None),
} }

View file

@ -65,6 +65,8 @@ ICON = {
} }
STATE_CLASS = { STATE_CLASS = {
Humidity: STATE_CLASS_MEASUREMENT,
Pressure: STATE_CLASS_MEASUREMENT,
Temperature: STATE_CLASS_MEASUREMENT, Temperature: STATE_CLASS_MEASUREMENT,
} }
@ -300,6 +302,11 @@ class DeconzBattery(DeconzDevice, SensorEntity):
"""Return the class of the sensor.""" """Return the class of the sensor."""
return DEVICE_CLASS_BATTERY return DEVICE_CLASS_BATTERY
@property
def state_class(self):
"""Return the state class of the sensor."""
return STATE_CLASS_MEASUREMENT
@property @property
def unit_of_measurement(self): def unit_of_measurement(self):
"""Return the unit of measurement of this entity.""" """Return the unit of measurement of this entity."""

View file

@ -93,6 +93,7 @@ class HueBattery(GenericHueSensor, SensorEntity):
"""Battery class for when a batt-powered device is only represented as an event.""" """Battery class for when a batt-powered device is only represented as an event."""
_attr_device_class = DEVICE_CLASS_BATTERY _attr_device_class = DEVICE_CLASS_BATTERY
_attr_state_class = STATE_CLASS_MEASUREMENT
_attr_unit_of_measurement = PERCENTAGE _attr_unit_of_measurement = PERCENTAGE
@property @property

View file

@ -53,7 +53,10 @@ ICON = "icon"
SENSOR_DEVICE_CLASS_ICON_MAP = { SENSOR_DEVICE_CLASS_ICON_MAP = {
hc.SENSOR_AMBIENT: {DEVICE_CLASS: DEVICE_CLASS_ILLUMINANCE}, hc.SENSOR_AMBIENT: {DEVICE_CLASS: DEVICE_CLASS_ILLUMINANCE},
hc.SENSOR_APPARENT_POWERUSAGE: {DEVICE_CLASS: DEVICE_CLASS_POWER}, 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_CCT: {ICON: "mdi:temperature-kelvin"},
hc.SENSOR_CO2: {DEVICE_CLASS: DEVICE_CLASS_CO2}, hc.SENSOR_CO2: {DEVICE_CLASS: DEVICE_CLASS_CO2},
hc.SENSOR_COLOR_BLUE: {ICON: "mdi:palette"}, hc.SENSOR_COLOR_BLUE: {ICON: "mdi:palette"},
@ -64,7 +67,10 @@ SENSOR_DEVICE_CLASS_ICON_MAP = {
hc.SENSOR_DISTANCE: {ICON: "mdi:leak"}, hc.SENSOR_DISTANCE: {ICON: "mdi:leak"},
hc.SENSOR_ECO2: {ICON: "mdi:molecule-co2"}, hc.SENSOR_ECO2: {ICON: "mdi:molecule-co2"},
hc.SENSOR_FREQUENCY: {ICON: "mdi:current-ac"}, 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_ILLUMINANCE: {DEVICE_CLASS: DEVICE_CLASS_ILLUMINANCE},
hc.SENSOR_STATUS_IP: {ICON: "mdi:ip-network"}, hc.SENSOR_STATUS_IP: {ICON: "mdi:ip-network"},
hc.SENSOR_STATUS_LINK_COUNT: {ICON: "mdi:counter"}, 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_PM2_5: {ICON: "mdi:air-filter"},
hc.SENSOR_POWERFACTOR: {ICON: "mdi:alpha-f-circle-outline"}, hc.SENSOR_POWERFACTOR: {ICON: "mdi:alpha-f-circle-outline"},
hc.SENSOR_POWERUSAGE: {DEVICE_CLASS: DEVICE_CLASS_POWER}, hc.SENSOR_POWERUSAGE: {DEVICE_CLASS: DEVICE_CLASS_POWER},
hc.SENSOR_PRESSURE: {DEVICE_CLASS: DEVICE_CLASS_PRESSURE}, hc.SENSOR_PRESSURE: {
hc.SENSOR_PRESSUREATSEALEVEL: {DEVICE_CLASS: DEVICE_CLASS_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_PROXIMITY: {ICON: "mdi:ruler"},
hc.SENSOR_REACTIVE_POWERUSAGE: {DEVICE_CLASS: DEVICE_CLASS_POWER}, hc.SENSOR_REACTIVE_POWERUSAGE: {DEVICE_CLASS: DEVICE_CLASS_POWER},
hc.SENSOR_STATUS_LAST_RESTART_TIME: {DEVICE_CLASS: DEVICE_CLASS_TIMESTAMP}, hc.SENSOR_STATUS_LAST_RESTART_TIME: {DEVICE_CLASS: DEVICE_CLASS_TIMESTAMP},

View file

@ -81,10 +81,16 @@ GATEWAY_SENSOR_TYPES = {
state_class=STATE_CLASS_MEASUREMENT, state_class=STATE_CLASS_MEASUREMENT,
), ),
"humidity": SensorType( "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( "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( "load_power": SensorType(
unit=POWER_WATT, icon=None, device_class=DEVICE_CLASS_POWER unit=POWER_WATT, icon=None, device_class=DEVICE_CLASS_POWER

View file

@ -179,6 +179,7 @@ class Battery(Sensor):
SENSOR_ATTR = "battery_percentage_remaining" SENSOR_ATTR = "battery_percentage_remaining"
_device_class = DEVICE_CLASS_BATTERY _device_class = DEVICE_CLASS_BATTERY
_state_class = STATE_CLASS_MEASUREMENT
_unit = PERCENTAGE _unit = PERCENTAGE
@staticmethod @staticmethod
@ -241,6 +242,7 @@ class Humidity(Sensor):
SENSOR_ATTR = "measured_value" SENSOR_ATTR = "measured_value"
_device_class = DEVICE_CLASS_HUMIDITY _device_class = DEVICE_CLASS_HUMIDITY
_divisor = 100 _divisor = 100
_state_class = STATE_CLASS_MEASUREMENT
_unit = PERCENTAGE _unit = PERCENTAGE
@ -282,6 +284,7 @@ class Pressure(Sensor):
SENSOR_ATTR = "measured_value" SENSOR_ATTR = "measured_value"
_device_class = DEVICE_CLASS_PRESSURE _device_class = DEVICE_CLASS_PRESSURE
_decimals = 0 _decimals = 0
_state_class = STATE_CLASS_MEASUREMENT
_unit = PRESSURE_HPA _unit = PRESSURE_HPA

View file

@ -122,9 +122,11 @@ class ZwaveSensorBase(ZWaveBaseEntity, SensorEntity):
This should be run once during initialization so we don't have to calculate This should be run once during initialization so we don't have to calculate
this value on every state update. 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): if isinstance(self.info.primary_value.property_, str):
property_lower = self.info.primary_value.property_.lower() 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 STATE_CLASS_MEASUREMENT
return None return None