diff --git a/homeassistant/components/integration/sensor.py b/homeassistant/components/integration/sensor.py index 6daecc6a305967..ba17a4484778eb 100644 --- a/homeassistant/components/integration/sensor.py +++ b/homeassistant/components/integration/sensor.py @@ -298,18 +298,14 @@ def calc_integration(event: EventType[EventStateChangedData]) -> None: old_state = event.data["old_state"] new_state = event.data["new_state"] - # We may want to update our state before an early return, - # based on the source sensor's unit_of_measurement - # or device_class. - update_state = False - if ( source_state := self.hass.states.get(self._sensor_source_id) ) is None or source_state.state == STATE_UNAVAILABLE: self._attr_available = False - update_state = True - else: - self._attr_available = True + self.async_write_ha_state() + return + + self._attr_available = True if old_state is None or new_state is None: # we can't calculate the elapsed time, so we can't calculate the integral @@ -317,10 +313,7 @@ def calc_integration(event: EventType[EventStateChangedData]) -> None: unit = new_state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) if unit is not None: - new_unit_of_measurement = self._unit(unit) - if self._unit_of_measurement != new_unit_of_measurement: - self._unit_of_measurement = new_unit_of_measurement - update_state = True + self._unit_of_measurement = self._unit(unit) if ( self.device_class is None @@ -329,10 +322,8 @@ def calc_integration(event: EventType[EventStateChangedData]) -> None: ): self._attr_device_class = SensorDeviceClass.ENERGY self._attr_icon = None - update_state = True - if update_state: - self.async_write_ha_state() + self.async_write_ha_state() try: # integration as the Riemann integral of previous measures.