Guard invalid data sensor significant change (#74369)
parent
ce04480e60
commit
bb84484096
|
@ -63,13 +63,23 @@ def async_check_significant_change(
|
|||
absolute_change = 1.0
|
||||
percentage_change = 2.0
|
||||
|
||||
try:
|
||||
# New state is invalid, don't report it
|
||||
new_state_f = float(new_state)
|
||||
except ValueError:
|
||||
return False
|
||||
|
||||
try:
|
||||
# Old state was invalid, we should report again
|
||||
old_state_f = float(old_state)
|
||||
except ValueError:
|
||||
return True
|
||||
|
||||
if absolute_change is not None and percentage_change is not None:
|
||||
return _absolute_and_relative_change(
|
||||
float(old_state), float(new_state), absolute_change, percentage_change
|
||||
old_state_f, new_state_f, absolute_change, percentage_change
|
||||
)
|
||||
if absolute_change is not None:
|
||||
return check_absolute_change(
|
||||
float(old_state), float(new_state), absolute_change
|
||||
)
|
||||
return check_absolute_change(old_state_f, new_state_f, absolute_change)
|
||||
|
||||
return None
|
||||
|
|
|
@ -52,6 +52,8 @@ TEMP_FREEDOM_ATTRS = {
|
|||
("12.1", "12.2", TEMP_CELSIUS_ATTRS, False),
|
||||
("70", "71", TEMP_FREEDOM_ATTRS, True),
|
||||
("70", "70.5", TEMP_FREEDOM_ATTRS, False),
|
||||
("fail", "70", TEMP_FREEDOM_ATTRS, True),
|
||||
("70", "fail", TEMP_FREEDOM_ATTRS, False),
|
||||
],
|
||||
)
|
||||
async def test_significant_change_temperature(old_state, new_state, attrs, result):
|
||||
|
|
Loading…
Reference in New Issue