Add state class and last reset to consumption sensor in devolo Home Control (#53337)

* Add state class and last reset

* Use STATE_CLASS_MEASUREMENT
pull/53350/head
Guido Schmitz 2021-07-22 18:24:06 +02:00 committed by GitHub
parent 24e07bc154
commit c9c1c62d67
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 12 additions and 1 deletions

View File

@ -12,6 +12,7 @@ from homeassistant.components.sensor import (
DEVICE_CLASS_POWER,
DEVICE_CLASS_TEMPERATURE,
DEVICE_CLASS_VOLTAGE,
STATE_CLASS_MEASUREMENT,
SensorEntity,
)
from homeassistant.config_entries import ConfigEntry
@ -167,6 +168,12 @@ class DevoloConsumptionEntity(DevoloMultiLevelDeviceEntity):
self._sensor_type = consumption
self._device_class = DEVICE_CLASS_MAPPING.get(consumption)
if consumption == "total":
self._attr_state_class = STATE_CLASS_MEASUREMENT
self._attr_last_reset = device_instance.consumption_property[
element_uid
].total_since
self._value = getattr(
device_instance.consumption_property[element_uid], consumption
)
@ -183,11 +190,15 @@ class DevoloConsumptionEntity(DevoloMultiLevelDeviceEntity):
def _sync(self, message: tuple) -> None:
"""Update the consumption sensor state."""
if message[0] == self._unique_id:
if message[0] == self._unique_id and message[2] != "total_since":
self._value = getattr(
self._device_instance.consumption_property[self._unique_id],
self._sensor_type,
)
elif message[0] == self._unique_id and message[2] == "total_since":
self._attr_last_reset = self._device_instance.consumption_property[
self._unique_id
].total_since
else:
self._generic_message(message)
self.schedule_update_ha_state()