Always update Filter sensors attr on new_state (#89096)

* always update attr

* reset filter on unit change
pull/93920/head
Diogo Gomes 2023-06-01 02:03:55 +01:00 committed by GitHub
parent 11e268775c
commit 022fa1ee67
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 11 additions and 16 deletions

View File

@ -18,10 +18,8 @@ from homeassistant.components.input_number import DOMAIN as INPUT_NUMBER_DOMAIN
from homeassistant.components.recorder import get_instance, history
from homeassistant.components.sensor import (
ATTR_STATE_CLASS,
DEVICE_CLASSES as SENSOR_DEVICE_CLASSES,
DOMAIN as SENSOR_DOMAIN,
PLATFORM_SCHEMA,
STATE_CLASSES as SENSOR_STATE_CLASSES,
SensorDeviceClass,
SensorEntity,
)
@ -273,22 +271,15 @@ class SensorFilter(SensorEntity):
self._state = temp_state.state
if self._attr_icon is None:
self._attr_icon = new_state.attributes.get(ATTR_ICON, ICON)
self._attr_icon = new_state.attributes.get(ATTR_ICON, ICON)
self._attr_device_class = new_state.attributes.get(ATTR_DEVICE_CLASS)
self._attr_state_class = new_state.attributes.get(ATTR_STATE_CLASS)
if (
self._attr_device_class is None
and new_state.attributes.get(ATTR_DEVICE_CLASS) in SENSOR_DEVICE_CLASSES
if self._attr_native_unit_of_measurement != new_state.attributes.get(
ATTR_UNIT_OF_MEASUREMENT
):
self._attr_device_class = new_state.attributes.get(ATTR_DEVICE_CLASS)
if (
self._attr_state_class is None
and new_state.attributes.get(ATTR_STATE_CLASS) in SENSOR_STATE_CLASSES
):
self._attr_state_class = new_state.attributes.get(ATTR_STATE_CLASS)
if self._attr_native_unit_of_measurement is None:
for filt in self._filters:
filt.reset()
self._attr_native_unit_of_measurement = new_state.attributes.get(
ATTR_UNIT_OF_MEASUREMENT
)
@ -460,6 +451,10 @@ class Filter:
"""Return whether the current filter_state should be skipped."""
return self._skip_processing
def reset(self) -> None:
"""Reset filter."""
self.states.clear()
def _filter_state(self, new_state: FilterState) -> FilterState:
"""Implement filter."""
raise NotImplementedError()