mirror of
https://github.com/home-assistant/core.git
synced 2025-07-21 12:17:07 +00:00
Integration Sensor Initial State (#55875)
* initial state is UNAVAILABLE * update tests
This commit is contained in:
parent
789f21c427
commit
1ca9deb520
@ -106,7 +106,7 @@ class IntegrationSensor(RestoreEntity, SensorEntity):
|
||||
"""Initialize the integration sensor."""
|
||||
self._sensor_source_id = source_entity
|
||||
self._round_digits = round_digits
|
||||
self._state = 0
|
||||
self._state = STATE_UNAVAILABLE
|
||||
self._method = integration_method
|
||||
|
||||
self._name = name if name is not None else f"{source_entity} integral"
|
||||
@ -187,7 +187,10 @@ class IntegrationSensor(RestoreEntity, SensorEntity):
|
||||
except AssertionError as err:
|
||||
_LOGGER.error("Could not calculate integral: %s", err)
|
||||
else:
|
||||
self._state += integral
|
||||
if isinstance(self._state, Decimal):
|
||||
self._state += integral
|
||||
else:
|
||||
self._state = integral
|
||||
self.async_write_ha_state()
|
||||
|
||||
async_track_state_change_event(
|
||||
@ -202,7 +205,9 @@ class IntegrationSensor(RestoreEntity, SensorEntity):
|
||||
@property
|
||||
def native_value(self):
|
||||
"""Return the state of the sensor."""
|
||||
return round(self._state, self._round_digits)
|
||||
if isinstance(self._state, Decimal):
|
||||
return round(self._state, self._round_digits)
|
||||
return self._state
|
||||
|
||||
@property
|
||||
def native_unit_of_measurement(self):
|
||||
|
@ -81,7 +81,6 @@ async def test_restore_state(hass: HomeAssistant) -> None:
|
||||
"platform": "integration",
|
||||
"name": "integration",
|
||||
"source": "sensor.power",
|
||||
"unit": ENERGY_KILO_WATT_HOUR,
|
||||
"round": 2,
|
||||
}
|
||||
}
|
||||
@ -116,7 +115,6 @@ async def test_restore_state_failed(hass: HomeAssistant) -> None:
|
||||
"platform": "integration",
|
||||
"name": "integration",
|
||||
"source": "sensor.power",
|
||||
"unit": ENERGY_KILO_WATT_HOUR,
|
||||
}
|
||||
}
|
||||
|
||||
@ -125,9 +123,10 @@ async def test_restore_state_failed(hass: HomeAssistant) -> None:
|
||||
|
||||
state = hass.states.get("sensor.integration")
|
||||
assert state
|
||||
assert state.state == "0"
|
||||
assert state.attributes.get("unit_of_measurement") == ENERGY_KILO_WATT_HOUR
|
||||
assert state.state == "unavailable"
|
||||
assert state.attributes.get("unit_of_measurement") is None
|
||||
assert state.attributes.get("state_class") == STATE_CLASS_TOTAL
|
||||
|
||||
assert "device_class" not in state.attributes
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user