Fix #6783, remove a test that makes no sense anymore

This commit is contained in:
Michael Wyraz
2017-03-25 22:11:44 +01:00
parent ee6c9ab6a9
commit aa609d8843
2 changed files with 40 additions and 57 deletions

View File

@@ -98,7 +98,7 @@ class MinMaxSensor(Entity):
if self._unit_of_measurement != new_state.attributes.get( if self._unit_of_measurement != new_state.attributes.get(
ATTR_UNIT_OF_MEASUREMENT): ATTR_UNIT_OF_MEASUREMENT):
_LOGGER.warning("Units of measurement do not match") _LOGGER.warning("Units of measurement do not match")
return
try: try:
self.states[entity] = float(new_state.state) self.states[entity] = float(new_state.state)
except ValueError: except ValueError:
@@ -150,10 +150,36 @@ class MinMaxSensor(Entity):
"""Get the latest data and updates the states.""" """Get the latest data and updates the states."""
sensor_values = [self.states[k] for k in self._entity_ids sensor_values = [self.states[k] for k in self._entity_ids
if k in self.states] if k in self.states]
if len(sensor_values) == self.count_sensors: self.min_value = self.calc_min(sensor_values)
self.min_value = min(sensor_values) self.max_value = self.calc_max(sensor_values)
self.max_value = max(sensor_values) self.mean = self.calc_mean(sensor_values)
self.mean = round(sum(sensor_values) / self.count_sensors,
self._round_digits) def calc_min(self, sensor_values):
else: """Calculate min value, honoring unkown states."""
self.min_value = self.max_value = self.mean = STATE_UNKNOWN val = STATE_UNKNOWN
for v in sensor_values:
if v != STATE_UNKNOWN:
if val == STATE_UNKNOWN or val > v:
val = v
return val
def calc_max(self, sensor_values):
"""Calculate max value, honoring unkown states."""
val = STATE_UNKNOWN
for v in sensor_values:
if v != STATE_UNKNOWN:
if val == STATE_UNKNOWN or val < v:
val = v
return val
def calc_mean(self, sensor_values):
"""Calculate mean value, honoring unkown states."""
val = 0
count = 0
for v in sensor_values:
if v != STATE_UNKNOWN:
val += v
count += 1
if count == 0:
return STATE_UNKNOWN
return round(val/count, self._round_digits)

View File

@@ -2,8 +2,7 @@
import unittest import unittest
from homeassistant.setup import setup_component from homeassistant.setup import setup_component
from homeassistant.const import ( from homeassistant.const import STATE_UNKNOWN
STATE_UNKNOWN, ATTR_UNIT_OF_MEASUREMENT, TEMP_CELSIUS, TEMP_FAHRENHEIT)
from tests.common import get_test_home_assistant from tests.common import get_test_home_assistant
@@ -191,62 +190,20 @@ class TestMinMaxSensor(unittest.TestCase):
entity_ids = config['sensor']['entity_ids'] entity_ids = config['sensor']['entity_ids']
self.hass.states.set(entity_ids[0], self.values[0]) self.hass.states.set(entity_ids[0], STATE_UNKNOWN)
self.hass.block_till_done() self.hass.block_till_done()
state = self.hass.states.get('sensor.test_max') state = self.hass.states.get('sensor.test_max')
self.assertEqual(STATE_UNKNOWN, state.state) self.assertEqual(STATE_UNKNOWN, state.state)
self.hass.states.set(entity_ids[1], self.values[1]) self.hass.states.set(entity_ids[2], self.values[1])
self.hass.block_till_done()
state = self.hass.states.get('sensor.test_max')
self.assertEqual(STATE_UNKNOWN, state.state)
self.hass.states.set(entity_ids[2], self.values[2])
self.hass.block_till_done() self.hass.block_till_done()
state = self.hass.states.get('sensor.test_max') state = self.hass.states.get('sensor.test_max')
self.assertNotEqual(STATE_UNKNOWN, state.state) self.assertNotEqual(STATE_UNKNOWN, state.state)
def test_different_unit_of_measurement(self): self.hass.states.set(entity_ids[2], STATE_UNKNOWN)
"""Test for different unit of measurement."""
config = {
'sensor': {
'platform': 'min_max',
'name': 'test',
'type': 'mean',
'entity_ids': [
'sensor.test_1',
'sensor.test_2',
'sensor.test_3',
]
}
}
assert setup_component(self.hass, 'sensor', config)
entity_ids = config['sensor']['entity_ids']
self.hass.states.set(entity_ids[0], self.values[0],
{ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS})
self.hass.block_till_done() self.hass.block_till_done()
state = self.hass.states.get('sensor.test_mean') state = self.hass.states.get('sensor.test_max')
self.assertNotEqual(STATE_UNKNOWN, state.state)
self.assertEqual(STATE_UNKNOWN, state.state)
self.assertEqual('°C', state.attributes.get('unit_of_measurement'))
self.hass.states.set(entity_ids[1], self.values[1],
{ATTR_UNIT_OF_MEASUREMENT: TEMP_FAHRENHEIT})
self.hass.block_till_done()
self.assertEqual(STATE_UNKNOWN, state.state)
self.assertEqual('°C', state.attributes.get('unit_of_measurement'))
self.hass.states.set(entity_ids[2], self.values[2],
{ATTR_UNIT_OF_MEASUREMENT: '%'})
self.hass.block_till_done()
self.assertEqual(STATE_UNKNOWN, state.state)
self.assertEqual('°C', state.attributes.get('unit_of_measurement'))