From bd72f4578875fe7ef700efd771a499b5e6618b8b Mon Sep 17 00:00:00 2001
From: arsaboo <arsaboo@gmx.com>
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)