From 3a924295ff3c40de40ea4447bc8a63d4bc269e86 Mon Sep 17 00:00:00 2001 From: Michael Wyraz Date: Sat, 25 Mar 2017 22:44:09 +0100 Subject: [PATCH] Fix #6784 --- homeassistant/components/sensor/min_max.py | 38 ++++++++++++---------- tests/components/sensor/test_min_max.py | 12 +++---- 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/homeassistant/components/sensor/min_max.py b/homeassistant/components/sensor/min_max.py index 506163d1c70..a3774be91ed 100644 --- a/homeassistant/components/sensor/min_max.py +++ b/homeassistant/components/sensor/min_max.py @@ -34,8 +34,6 @@ ATTR_TO_PROPERTY = [ CONF_ENTITY_IDS = 'entity_ids' CONF_ROUND_DIGITS = 'round_digits' -DEFAULT_NAME = 'Min/Max/Avg Sensor' - ICON = 'mdi:calculator' SENSOR_TYPES = { @@ -47,7 +45,7 @@ SENSOR_TYPES = { PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_TYPE, default=SENSOR_TYPES[ATTR_MAX_VALUE]): vol.All(cv.string, vol.In(SENSOR_TYPES.values())), - vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, + vol.Optional(CONF_NAME): cv.string, vol.Required(CONF_ENTITY_IDS): cv.entity_ids, vol.Optional(CONF_ROUND_DIGITS, default=2): vol.Coerce(int), }) @@ -76,9 +74,13 @@ class MinMaxSensor(Entity): self._entity_ids = entity_ids self._sensor_type = sensor_type self._round_digits = round_digits - self._name = '{} {}'.format( - name, next(v for k, v in SENSOR_TYPES.items() - if self._sensor_type == v)) + + if name: + self._name = name + else: + self._name = '{} sensor'.format( + next(v for k, v in SENSOR_TYPES.items() + if self._sensor_type == v)).capitalize() self._unit_of_measurement = None self.min_value = self.max_value = self.mean = STATE_UNKNOWN self.count_sensors = len(self._entity_ids) @@ -154,31 +156,33 @@ class MinMaxSensor(Entity): self.max_value = self.calc_max(sensor_values) self.mean = self.calc_mean(sensor_values) + # pylint: disable=R0201 def calc_min(self, sensor_values): """Calculate min 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 + for sval in sensor_values: + if sval != STATE_UNKNOWN: + if val == STATE_UNKNOWN or val > sval: + val = sval return val + # pylint: disable=R0201 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 + for sval in sensor_values: + if sval != STATE_UNKNOWN: + if val == STATE_UNKNOWN or val < sval: + val = sval 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 + for sval in sensor_values: + if sval != STATE_UNKNOWN: + val += sval count += 1 if count == 0: return STATE_UNKNOWN diff --git a/tests/components/sensor/test_min_max.py b/tests/components/sensor/test_min_max.py index be140127b45..1e95eed7108 100644 --- a/tests/components/sensor/test_min_max.py +++ b/tests/components/sensor/test_min_max.py @@ -29,7 +29,7 @@ class TestMinMaxSensor(unittest.TestCase): config = { 'sensor': { 'platform': 'min_max', - 'name': 'test', + 'name': 'test_min', 'type': 'min', 'entity_ids': [ 'sensor.test_1', @@ -58,7 +58,7 @@ class TestMinMaxSensor(unittest.TestCase): config = { 'sensor': { 'platform': 'min_max', - 'name': 'test', + 'name': 'test_max', 'type': 'max', 'entity_ids': [ 'sensor.test_1', @@ -87,7 +87,7 @@ class TestMinMaxSensor(unittest.TestCase): config = { 'sensor': { 'platform': 'min_max', - 'name': 'test', + 'name': 'test_mean', 'type': 'mean', 'entity_ids': [ 'sensor.test_1', @@ -116,7 +116,7 @@ class TestMinMaxSensor(unittest.TestCase): config = { 'sensor': { 'platform': 'min_max', - 'name': 'test', + 'name': 'test_mean', 'type': 'mean', 'round_digits': 1, 'entity_ids': [ @@ -146,7 +146,7 @@ class TestMinMaxSensor(unittest.TestCase): config = { 'sensor': { 'platform': 'min_max', - 'name': 'test', + 'name': 'test_mean', 'type': 'mean', 'round_digits': 4, 'entity_ids': [ @@ -176,7 +176,7 @@ class TestMinMaxSensor(unittest.TestCase): config = { 'sensor': { 'platform': 'min_max', - 'name': 'test', + 'name': 'test_max', 'type': 'max', 'entity_ids': [ 'sensor.test_1',