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,
),
"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),
}

View file

@ -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."""

View file

@ -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

View file

@ -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},

View file

@ -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

View file

@ -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

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 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