Add long-term statistics support for devolo Home Control (#57612)

* Add long-term statistics support

* Fix messed up rebase
This commit is contained in:
Guido Schmitz 2021-11-20 04:52:33 +01:00 committed by GitHub
parent 394ccae8a1
commit 02423d6edc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -12,6 +12,7 @@ from homeassistant.components.sensor import (
DEVICE_CLASS_POWER, DEVICE_CLASS_POWER,
DEVICE_CLASS_TEMPERATURE, DEVICE_CLASS_TEMPERATURE,
DEVICE_CLASS_VOLTAGE, DEVICE_CLASS_VOLTAGE,
STATE_CLASS_MEASUREMENT,
STATE_CLASS_TOTAL_INCREASING, STATE_CLASS_TOTAL_INCREASING,
SensorEntity, SensorEntity,
) )
@ -33,6 +34,16 @@ DEVICE_CLASS_MAPPING = {
"voltage": DEVICE_CLASS_VOLTAGE, "voltage": DEVICE_CLASS_VOLTAGE,
} }
STATE_CLASS_MAPPING = {
"battery": STATE_CLASS_MEASUREMENT,
"temperature": STATE_CLASS_MEASUREMENT,
"light": STATE_CLASS_MEASUREMENT,
"humidity": STATE_CLASS_MEASUREMENT,
"current": STATE_CLASS_MEASUREMENT,
"total": STATE_CLASS_TOTAL_INCREASING,
"voltage": STATE_CLASS_MEASUREMENT,
}
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
@ -106,6 +117,9 @@ class DevoloGenericMultiLevelDeviceEntity(DevoloMultiLevelDeviceEntity):
self._attr_device_class = DEVICE_CLASS_MAPPING.get( self._attr_device_class = DEVICE_CLASS_MAPPING.get(
self._multi_level_sensor_property.sensor_type self._multi_level_sensor_property.sensor_type
) )
self._attr_state_class = STATE_CLASS_MAPPING.get(
self._multi_level_sensor_property.sensor_type
)
self._attr_native_unit_of_measurement = self._multi_level_sensor_property.unit self._attr_native_unit_of_measurement = self._multi_level_sensor_property.unit
self._value = self._multi_level_sensor_property.value self._value = self._multi_level_sensor_property.value
@ -132,6 +146,7 @@ class DevoloBatteryEntity(DevoloMultiLevelDeviceEntity):
) )
self._attr_device_class = DEVICE_CLASS_MAPPING.get("battery") self._attr_device_class = DEVICE_CLASS_MAPPING.get("battery")
self._attr_state_class = STATE_CLASS_MAPPING.get("battery")
self._attr_entity_category = ENTITY_CATEGORY_DIAGNOSTIC self._attr_entity_category = ENTITY_CATEGORY_DIAGNOSTIC
self._attr_native_unit_of_measurement = PERCENTAGE self._attr_native_unit_of_measurement = PERCENTAGE
@ -158,6 +173,7 @@ class DevoloConsumptionEntity(DevoloMultiLevelDeviceEntity):
self._sensor_type = consumption self._sensor_type = consumption
self._attr_device_class = DEVICE_CLASS_MAPPING.get(consumption) self._attr_device_class = DEVICE_CLASS_MAPPING.get(consumption)
self._attr_state_class = STATE_CLASS_MAPPING.get(consumption)
self._attr_native_unit_of_measurement = getattr( self._attr_native_unit_of_measurement = getattr(
device_instance.consumption_property[element_uid], f"{consumption}_unit" device_instance.consumption_property[element_uid], f"{consumption}_unit"
) )