From ebce6662647757037beee100d2c3742fd14b24eb Mon Sep 17 00:00:00 2001 From: arsaboo Date: Mon, 23 Oct 2017 13:05:20 -0400 Subject: [PATCH 1/4] Fix decimals in uptime sensor --- homeassistant/components/sensor/uptime.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/sensor/uptime.py b/homeassistant/components/sensor/uptime.py index 89c0fbffd8e..09034380c63 100644 --- a/homeassistant/components/sensor/uptime.py +++ b/homeassistant/components/sensor/uptime.py @@ -74,5 +74,5 @@ class UptimeSensor(Entity): if self.unit_of_measurement == 'days': div_factor *= 24 delta = delta.total_seconds() / div_factor - self._state = round(delta, 2) + self._state = format(round(delta, 2), '.2f') _LOGGER.debug("New value: %s", delta) From 46404a84ec364f7cf2ff38628db306b073f590ce Mon Sep 17 00:00:00 2001 From: arsaboo Date: Mon, 23 Oct 2017 13:45:20 -0400 Subject: [PATCH 2/4] Update tests --- tests/components/sensor/test_uptime.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/components/sensor/test_uptime.py b/tests/components/sensor/test_uptime.py index 991ecd3960b..baac1ed3201 100644 --- a/tests/components/sensor/test_uptime.py +++ b/tests/components/sensor/test_uptime.py @@ -59,14 +59,14 @@ class TestUptimeSensor(unittest.TestCase): sensor.async_update(), self.hass.loop ).result() - self.assertEqual(sensor.state, 1.00) + self.assertEqual(format(round(sensor.state, 2), '.2f'), 1.00) new_time = sensor.initial + timedelta(days=111.499) with patch('homeassistant.util.dt.now', return_value=new_time): run_coroutine_threadsafe( sensor.async_update(), self.hass.loop ).result() - self.assertEqual(sensor.state, 111.50) + self.assertEqual(format(round(sensor.state, 2), '.2f'), 111.50) def test_uptime_sensor_hours_output(self): """Test uptime sensor output data.""" @@ -78,11 +78,11 @@ class TestUptimeSensor(unittest.TestCase): sensor.async_update(), self.hass.loop ).result() - self.assertEqual(sensor.state, 16.00) + self.assertEqual(format(round(sensor.state, 2), '.2f'), 16.00) new_time = sensor.initial + timedelta(hours=72.499) with patch('homeassistant.util.dt.now', return_value=new_time): run_coroutine_threadsafe( sensor.async_update(), self.hass.loop ).result() - self.assertEqual(sensor.state, 72.50) + self.assertEqual(format(round(sensor.state, 2), '.2f'), 72.50) From 845fd532f093542e64a1df8ad4ea17dfc7674b89 Mon Sep 17 00:00:00 2001 From: arsaboo Date: Mon, 23 Oct 2017 14:08:38 -0400 Subject: [PATCH 3/4] Reverse tests --- tests/components/sensor/test_uptime.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/components/sensor/test_uptime.py b/tests/components/sensor/test_uptime.py index baac1ed3201..991ecd3960b 100644 --- a/tests/components/sensor/test_uptime.py +++ b/tests/components/sensor/test_uptime.py @@ -59,14 +59,14 @@ class TestUptimeSensor(unittest.TestCase): sensor.async_update(), self.hass.loop ).result() - self.assertEqual(format(round(sensor.state, 2), '.2f'), 1.00) + self.assertEqual(sensor.state, 1.00) new_time = sensor.initial + timedelta(days=111.499) with patch('homeassistant.util.dt.now', return_value=new_time): run_coroutine_threadsafe( sensor.async_update(), self.hass.loop ).result() - self.assertEqual(format(round(sensor.state, 2), '.2f'), 111.50) + self.assertEqual(sensor.state, 111.50) def test_uptime_sensor_hours_output(self): """Test uptime sensor output data.""" @@ -78,11 +78,11 @@ class TestUptimeSensor(unittest.TestCase): sensor.async_update(), self.hass.loop ).result() - self.assertEqual(format(round(sensor.state, 2), '.2f'), 16.00) + self.assertEqual(sensor.state, 16.00) new_time = sensor.initial + timedelta(hours=72.499) with patch('homeassistant.util.dt.now', return_value=new_time): run_coroutine_threadsafe( sensor.async_update(), self.hass.loop ).result() - self.assertEqual(format(round(sensor.state, 2), '.2f'), 72.50) + self.assertEqual(sensor.state, 72.50) From bd72f4578875fe7ef700efd771a499b5e6618b8b Mon Sep 17 00:00:00 2001 From: arsaboo Date: Mon, 23 Oct 2017 14:38:16 -0400 Subject: [PATCH 4/4] Added minutes to uptime sensor --- homeassistant/components/sensor/uptime.py | 6 +++-- tests/components/sensor/test_uptime.py | 29 +++++++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/sensor/uptime.py b/homeassistant/components/sensor/uptime.py index 09034380c63..91746af71f1 100644 --- a/homeassistant/components/sensor/uptime.py +++ b/homeassistant/components/sensor/uptime.py @@ -23,7 +23,7 @@ DEFAULT_NAME = 'Uptime' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, vol.Optional(CONF_UNIT_OF_MEASUREMENT, default='days'): - vol.All(cv.string, vol.In(['hours', 'days'])) + vol.All(cv.string, vol.In(['minutes', 'hours', 'days'])) }) @@ -73,6 +73,8 @@ class UptimeSensor(Entity): div_factor = 3600 if self.unit_of_measurement == 'days': div_factor *= 24 + elif self.unit_of_measurement == 'minutes': + div_factor /= 60 delta = delta.total_seconds() / div_factor - self._state = format(round(delta, 2), '.2f') + self._state = round(delta, 2) _LOGGER.debug("New value: %s", delta) diff --git a/tests/components/sensor/test_uptime.py b/tests/components/sensor/test_uptime.py index 991ecd3960b..5e8c39ad889 100644 --- a/tests/components/sensor/test_uptime.py +++ b/tests/components/sensor/test_uptime.py @@ -49,6 +49,16 @@ class TestUptimeSensor(unittest.TestCase): } assert setup_component(self.hass, 'sensor', config) + def test_uptime_sensor_config_minutes(self): + """Test uptime sensor with minutes defined in config.""" + config = { + 'sensor': { + 'platform': 'uptime', + 'unit_of_measurement': 'minutes', + } + } + assert setup_component(self.hass, 'sensor', config) + def test_uptime_sensor_days_output(self): """Test uptime sensor output data.""" sensor = UptimeSensor('test', 'days') @@ -86,3 +96,22 @@ class TestUptimeSensor(unittest.TestCase): self.hass.loop ).result() self.assertEqual(sensor.state, 72.50) + + def test_uptime_sensor_minutes_output(self): + """Test uptime sensor output data.""" + sensor = UptimeSensor('test', 'minutes') + self.assertEqual(sensor.unit_of_measurement, 'minutes') + new_time = sensor.initial + timedelta(minutes=16) + with patch('homeassistant.util.dt.now', return_value=new_time): + run_coroutine_threadsafe( + sensor.async_update(), + self.hass.loop + ).result() + self.assertEqual(sensor.state, 16.00) + new_time = sensor.initial + timedelta(minutes=12.499) + with patch('homeassistant.util.dt.now', return_value=new_time): + run_coroutine_threadsafe( + sensor.async_update(), + self.hass.loop + ).result() + self.assertEqual(sensor.state, 12.50)