Ignore utility_meter restore state if state is invalid (#57010)

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
This commit is contained in:
Diogo Gomes 2021-10-04 05:59:36 +01:00 committed by GitHub
parent 255ffe801b
commit 79b10c43d8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,5 +1,6 @@
"""Utility meter from sensors providing raw data."""
from datetime import date, datetime, timedelta
import decimal
from decimal import Decimal, DecimalException
import logging
@ -323,8 +324,18 @@ class UtilityMeterSensor(RestoreEntity, SensorEntity):
state = await self.async_get_last_state()
if state:
try:
self._state = Decimal(state.state)
self._unit_of_measurement = state.attributes.get(ATTR_UNIT_OF_MEASUREMENT)
except decimal.InvalidOperation:
_LOGGER.error(
"Could not restore state <%s>. Resetting utility_meter.%s",
state.state,
self.name,
)
else:
self._unit_of_measurement = state.attributes.get(
ATTR_UNIT_OF_MEASUREMENT
)
self._last_period = (
float(state.attributes.get(ATTR_LAST_PERIOD))
if state.attributes.get(ATTR_LAST_PERIOD)