initialize queue before filtering (#13842)

This commit is contained in:
Diogo Gomes 2018-04-13 13:25:03 +01:00 committed by Pascal Vizeli
parent 20ababec3e
commit ddd2003629
2 changed files with 14 additions and 3 deletions

View file

@ -341,7 +341,7 @@ class OutlierFilter(Filter):
def _filter_state(self, new_state):
"""Implement the outlier filter."""
if (self.states and
if (len(self.states) == self.states.maxlen and
abs(new_state.state -
statistics.median([s.state for s in self.states])) >
self._radius):

View file

@ -95,11 +95,11 @@ class TestFilterSensor(unittest.TestCase):
self.hass.block_till_done()
state = self.hass.states.get('sensor.test')
self.assertEqual('19.25', state.state)
self.assertEqual('17.05', state.state)
def test_outlier(self):
"""Test if outlier filter works."""
filt = OutlierFilter(window_size=10,
filt = OutlierFilter(window_size=3,
precision=2,
entity=None,
radius=4.0)
@ -107,6 +107,17 @@ class TestFilterSensor(unittest.TestCase):
filtered = filt.filter_state(state)
self.assertEqual(22, filtered.state)
def test_initial_outlier(self):
"""Test issue #13363."""
filt = OutlierFilter(window_size=3,
precision=2,
entity=None,
radius=4.0)
out = ha.State('sensor.test_monitored', 4000)
for state in [out]+self.values:
filtered = filt.filter_state(state)
self.assertEqual(22, filtered.state)
def test_lowpass(self):
"""Test if lowpass filter works."""
filt = LowPassFilter(window_size=10,