More robust sensor tolerance measurement in case of non-numeric sensor data

This commit is contained in:
Fabio Manganiello 2019-08-14 22:45:50 +02:00
parent e7448d90d6
commit 4a34fcd7fd
1 changed files with 18 additions and 8 deletions

View File

@ -118,15 +118,25 @@ class SensorBackend(Backend):
if v is None: if v is None:
continue continue
if isinstance(self.tolerance, dict): tolerance = None
tolerance = float(self.tolerance.get(k, self.default_tolerance)) isNaN = False
else:
try:
tolerance = float(self.tolerance)
except (TypeError, ValueError):
continue
if abs(v - self.data.get(k)) >= tolerance: try:
v = float(v)
except (TypeError, ValueError):
isNaN = True
if not isNaN:
if isinstance(self.tolerance, dict):
tolerance = float(self.tolerance.get(k, self.default_tolerance))
else:
try:
tolerance = float(self.tolerance)
except (TypeError, ValueError):
pass
if tolerance is None or isNaN or \
abs(v - self.data.get(k)) >= tolerance:
ret[k] = v ret[k] = v
return ret return ret