Add device class energy and last reset to sense (#53667)

This commit is contained in:
J. Nick Koston 2021-07-28 23:58:28 -05:00 committed by GitHub
parent ef2ca1cee9
commit e14a04df2e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,7 +1,10 @@
"""Support for monitoring a Sense energy sensor.""" """Support for monitoring a Sense energy sensor."""
import datetime
from homeassistant.components.sensor import STATE_CLASS_MEASUREMENT, SensorEntity from homeassistant.components.sensor import STATE_CLASS_MEASUREMENT, SensorEntity
from homeassistant.const import ( from homeassistant.const import (
ATTR_ATTRIBUTION, ATTR_ATTRIBUTION,
DEVICE_CLASS_ENERGY,
DEVICE_CLASS_POWER, DEVICE_CLASS_POWER,
ELECTRIC_POTENTIAL_VOLT, ELECTRIC_POTENTIAL_VOLT,
ENERGY_KILO_WATT_HOUR, ENERGY_KILO_WATT_HOUR,
@ -9,6 +12,7 @@ from homeassistant.const import (
) )
from homeassistant.core import callback from homeassistant.core import callback
from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.dispatcher import async_dispatcher_connect
import homeassistant.util.dt as dt_util
from .const import ( from .const import (
ACTIVE_NAME, ACTIVE_NAME,
@ -218,6 +222,8 @@ class SenseVoltageSensor(SensorEntity):
class SenseTrendsSensor(SensorEntity): class SenseTrendsSensor(SensorEntity):
"""Implementation of a Sense energy sensor.""" """Implementation of a Sense energy sensor."""
_attr_device_class = DEVICE_CLASS_ENERGY
_attr_state_class = STATE_CLASS_MEASUREMENT
_attr_unit_of_measurement = ENERGY_KILO_WATT_HOUR _attr_unit_of_measurement = ENERGY_KILO_WATT_HOUR
_attr_extra_state_attributes = {ATTR_ATTRIBUTION: ATTRIBUTION} _attr_extra_state_attributes = {ATTR_ATTRIBUTION: ATTRIBUTION}
_attr_icon = ICON _attr_icon = ICON
@ -252,6 +258,13 @@ class SenseTrendsSensor(SensorEntity):
"""Return if entity is available.""" """Return if entity is available."""
return self._had_any_update and self._coordinator.last_update_success return self._had_any_update and self._coordinator.last_update_success
@property
def last_reset(self) -> datetime.datetime:
"""Return the time when the sensor was last reset, if any."""
if self._sensor_type == "DAY":
return dt_util.start_of_local_day()
return None
@callback @callback
def _async_update(self): def _async_update(self):
"""Track if we had an update so we do not report zero data.""" """Track if we had an update so we do not report zero data."""