From bd72f4578875fe7ef700efd771a499b5e6618b8b Mon Sep 17 00:00:00 2001 From: arsaboo Date: Mon, 23 Oct 2017 14:38:16 -0400 Subject: [PATCH] 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)