From 5611b6e0b054972f33c534cfb53971f7ce08940d Mon Sep 17 00:00:00 2001 From: Dan Jones Date: Tue, 25 Jun 2019 20:22:37 -0400 Subject: [PATCH 01/12] Added fan support to the lutron_caseta component. Additional changes were required of pylutron_caseta to get this to work. Those changes are in a separate pull request against that repository. --- .../components/lutron_caseta/__init__.py | 2 +- homeassistant/components/lutron_caseta/fan.py | 75 +++++++++++++++++++ 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 homeassistant/components/lutron_caseta/fan.py diff --git a/homeassistant/components/lutron_caseta/__init__.py b/homeassistant/components/lutron_caseta/__init__.py index 516b5ccd7c864f..c31fc608616174 100644 --- a/homeassistant/components/lutron_caseta/__init__.py +++ b/homeassistant/components/lutron_caseta/__init__.py @@ -28,7 +28,7 @@ }, extra=vol.ALLOW_EXTRA) LUTRON_CASETA_COMPONENTS = [ - 'light', 'switch', 'cover', 'scene' + 'light', 'switch', 'cover', 'scene', 'fan' ] diff --git a/homeassistant/components/lutron_caseta/fan.py b/homeassistant/components/lutron_caseta/fan.py new file mode 100644 index 00000000000000..b218faf406b212 --- /dev/null +++ b/homeassistant/components/lutron_caseta/fan.py @@ -0,0 +1,75 @@ +"""Support for Lutron Caseta fans.""" +import logging + +from homeassistant.components.fan import (SPEED_LOW, SPEED_MEDIUM, SPEED_HIGH, SPEED_OFF, + SUPPORT_SET_SPEED, FanEntity, DOMAIN) + +from . import LUTRON_CASETA_SMARTBRIDGE, LutronCasetaDevice + +_LOGGER = logging.getLogger(__name__) + +LUTRON_SPEED_OFF = 'Off' +LUTRON_SPEED_LOW = 'Low' +LUTRON_SPEED_MEDIUM = 'Medium' +LUTRON_SPEED_MEDIUMHIGH = "MediumHigh" +LUTRON_SPEED_HIGH = 'High' + +async def async_setup_platform( + hass, config, async_add_entities, discovery_info=None): + """Set up Lutron fan.""" + devs = [] + bridge = hass.data[LUTRON_CASETA_SMARTBRIDGE] + fan_devices = bridge.get_devices_by_domain(DOMAIN) + + for fan_device in fan_devices: + dev = LutronCasetaFan(fan_device, bridge) + devs.append(dev) + + async_add_entities(devs, True) + return True + +class LutronCasetaFan(LutronCasetaDevice, FanEntity): + """Representation of a Lutron Caseta fan. Including Fan Speed.""" + + @property + def speed(self) -> str: + """Return the current speed.""" + return self._speed + + @property + def speed_list(self) -> list: + """Get the list of available speeds. + Note: The default Hass Speeds were all lower case and missing MediumHigh + Lutron Case and fan speeds specified instead.""" + return [LUTRON_SPEED_OFF, LUTRON_SPEED_LOW, LUTRON_SPEED_MEDIUM , LUTRON_SPEED_MEDIUMHIGH, LUTRON_SPEED_HIGH] + + @property + def supported_features(self) -> int: + """Flag supported features. Speed Only""" + return SUPPORT_SET_SPEED + + async def async_turn_on(self, speed: str = None, **kwargs): + """Turn the fan on.""" + if speed is None: + speed = LUTRON_SPEED_MEDIUMHIGH + await self.async_set_speed(speed) + + async def async_turn_off(self, **kwargs): + """Turn the fan off.""" + await self.async_set_speed(LUTRON_SPEED_OFF) + + async def async_set_speed(self, speed: str) -> None: + """Set the speed of the fan.""" + self._speed = speed + self._smartbridge.set_fan(self._device_id, self._speed) + + @property + def is_on(self): + """Return true if device is on.""" + return self._state["fan_speed"] in [LUTRON_SPEED_LOW, LUTRON_SPEED_MEDIUM, LUTRON_SPEED_MEDIUMHIGH, LUTRON_SPEED_HIGH] + + async def async_update(self): + """Update when forcing a refresh of the device.""" + self._state = self._smartbridge.get_device_by_id(self._device_id) + self._speed = self._state["fan_speed"] + _LOGGER.debug("State of this lutron fan device is %s", self._state) From fddf13831dbaacfeb1ac82670fb7e9a4f3e08c97 Mon Sep 17 00:00:00 2001 From: Dan Jones Date: Thu, 4 Jul 2019 17:39:22 -0400 Subject: [PATCH 02/12] Added SSL Config and tidying up --- .../components/lutron_caseta/__init__.py | 7 ++++-- homeassistant/components/lutron_caseta/fan.py | 24 ++++++++++++------- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/lutron_caseta/__init__.py b/homeassistant/components/lutron_caseta/__init__.py index c31fc608616174..890af1a299fb6a 100644 --- a/homeassistant/components/lutron_caseta/__init__.py +++ b/homeassistant/components/lutron_caseta/__init__.py @@ -17,6 +17,7 @@ CONF_KEYFILE = 'keyfile' CONF_CERTFILE = 'certfile' CONF_CA_CERTS = 'ca_certs' +CONF_CERT_REQUIRED = 'cert_required' CONFIG_SCHEMA = vol.Schema({ DOMAIN: vol.Schema({ @@ -24,6 +25,7 @@ vol.Required(CONF_KEYFILE): cv.string, vol.Required(CONF_CERTFILE): cv.string, vol.Required(CONF_CA_CERTS): cv.string, + vol.Optional(CONF_CERT_REQUIRED, default=False): cv.boolean, }) }, extra=vol.ALLOW_EXTRA) @@ -31,7 +33,6 @@ 'light', 'switch', 'cover', 'scene', 'fan' ] - async def async_setup(hass, base_config): """Set up the Lutron component.""" from pylutron_caseta.smartbridge import Smartbridge @@ -40,9 +41,11 @@ async def async_setup(hass, base_config): keyfile = hass.config.path(config[CONF_KEYFILE]) certfile = hass.config.path(config[CONF_CERTFILE]) ca_certs = hass.config.path(config[CONF_CA_CERTS]) + cert_required = config[CONF_CERT_REQUIRED] + bridge = Smartbridge.create_tls( hostname=config[CONF_HOST], keyfile=keyfile, certfile=certfile, - ca_certs=ca_certs) + ca_certs=ca_certs, cert_required=cert_required) hass.data[LUTRON_CASETA_SMARTBRIDGE] = bridge await bridge.connect() if not hass.data[LUTRON_CASETA_SMARTBRIDGE].is_connected(): diff --git a/homeassistant/components/lutron_caseta/fan.py b/homeassistant/components/lutron_caseta/fan.py index b218faf406b212..068070d1281145 100644 --- a/homeassistant/components/lutron_caseta/fan.py +++ b/homeassistant/components/lutron_caseta/fan.py @@ -1,8 +1,8 @@ """Support for Lutron Caseta fans.""" import logging -from homeassistant.components.fan import (SPEED_LOW, SPEED_MEDIUM, SPEED_HIGH, SPEED_OFF, - SUPPORT_SET_SPEED, FanEntity, DOMAIN) +from homeassistant.components.fan import ( + SUPPORT_SET_SPEED, FanEntity, DOMAIN) from . import LUTRON_CASETA_SMARTBRIDGE, LutronCasetaDevice @@ -14,6 +14,7 @@ LUTRON_SPEED_MEDIUMHIGH = "MediumHigh" LUTRON_SPEED_HIGH = 'High' + async def async_setup_platform( hass, config, async_add_entities, discovery_info=None): """Set up Lutron fan.""" @@ -28,6 +29,7 @@ async def async_setup_platform( async_add_entities(devs, True) return True + class LutronCasetaFan(LutronCasetaDevice, FanEntity): """Representation of a Lutron Caseta fan. Including Fan Speed.""" @@ -39,13 +41,17 @@ def speed(self) -> str: @property def speed_list(self) -> list: """Get the list of available speeds. - Note: The default Hass Speeds were all lower case and missing MediumHigh - Lutron Case and fan speeds specified instead.""" - return [LUTRON_SPEED_OFF, LUTRON_SPEED_LOW, LUTRON_SPEED_MEDIUM , LUTRON_SPEED_MEDIUMHIGH, LUTRON_SPEED_HIGH] + + Note: The default Hass Speeds were all lower case + and missing MediumHigh. Lutron Case and fan + speeds specified instead. + """ + return [LUTRON_SPEED_OFF, LUTRON_SPEED_LOW, LUTRON_SPEED_MEDIUM, + LUTRON_SPEED_MEDIUMHIGH, LUTRON_SPEED_HIGH] @property def supported_features(self) -> int: - """Flag supported features. Speed Only""" + """Flag supported features. Speed Only.""" return SUPPORT_SET_SPEED async def async_turn_on(self, speed: str = None, **kwargs): @@ -66,10 +72,12 @@ async def async_set_speed(self, speed: str) -> None: @property def is_on(self): """Return true if device is on.""" - return self._state["fan_speed"] in [LUTRON_SPEED_LOW, LUTRON_SPEED_MEDIUM, LUTRON_SPEED_MEDIUMHIGH, LUTRON_SPEED_HIGH] + return self._state["fan_speed"] in [LUTRON_SPEED_LOW, + LUTRON_SPEED_MEDIUM, LUTRON_SPEED_MEDIUMHIGH, + LUTRON_SPEED_HIGH] async def async_update(self): """Update when forcing a refresh of the device.""" self._state = self._smartbridge.get_device_by_id(self._device_id) self._speed = self._state["fan_speed"] - _LOGGER.debug("State of this lutron fan device is %s", self._state) + _LOGGER.debug("State of this lutron fan device is %s", self._state) \ No newline at end of file From 8d6e706d7612ef12d195d274510d6981c16cbcad Mon Sep 17 00:00:00 2001 From: Dan Jones Date: Thu, 4 Jul 2019 17:46:30 -0400 Subject: [PATCH 03/12] Further tidying up --- homeassistant/components/lutron_caseta/__init__.py | 1 + homeassistant/components/lutron_caseta/fan.py | 9 +++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/lutron_caseta/__init__.py b/homeassistant/components/lutron_caseta/__init__.py index 890af1a299fb6a..079b18e8cc47cd 100644 --- a/homeassistant/components/lutron_caseta/__init__.py +++ b/homeassistant/components/lutron_caseta/__init__.py @@ -33,6 +33,7 @@ 'light', 'switch', 'cover', 'scene', 'fan' ] + async def async_setup(hass, base_config): """Set up the Lutron component.""" from pylutron_caseta.smartbridge import Smartbridge diff --git a/homeassistant/components/lutron_caseta/fan.py b/homeassistant/components/lutron_caseta/fan.py index 068070d1281145..0fba2696d802b7 100644 --- a/homeassistant/components/lutron_caseta/fan.py +++ b/homeassistant/components/lutron_caseta/fan.py @@ -47,7 +47,7 @@ def speed_list(self) -> list: speeds specified instead. """ return [LUTRON_SPEED_OFF, LUTRON_SPEED_LOW, LUTRON_SPEED_MEDIUM, - LUTRON_SPEED_MEDIUMHIGH, LUTRON_SPEED_HIGH] + LUTRON_SPEED_MEDIUMHIGH, LUTRON_SPEED_HIGH] @property def supported_features(self) -> int: @@ -73,11 +73,12 @@ async def async_set_speed(self, speed: str) -> None: def is_on(self): """Return true if device is on.""" return self._state["fan_speed"] in [LUTRON_SPEED_LOW, - LUTRON_SPEED_MEDIUM, LUTRON_SPEED_MEDIUMHIGH, - LUTRON_SPEED_HIGH] + LUTRON_SPEED_MEDIUM, + LUTRON_SPEED_MEDIUMHIGH, + LUTRON_SPEED_HIGH] async def async_update(self): """Update when forcing a refresh of the device.""" self._state = self._smartbridge.get_device_by_id(self._device_id) self._speed = self._state["fan_speed"] - _LOGGER.debug("State of this lutron fan device is %s", self._state) \ No newline at end of file + _LOGGER.debug("State of this lutron fan device is %s", self._state) From 78ce9e467a7c7797a67ea493d7e7ec992e3e60f7 Mon Sep 17 00:00:00 2001 From: Dan Jones Date: Thu, 4 Jul 2019 18:47:55 -0400 Subject: [PATCH 04/12] More Tidying --- homeassistant/components/lutron_caseta/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/lutron_caseta/__init__.py b/homeassistant/components/lutron_caseta/__init__.py index 079b18e8cc47cd..7416a23fb8aefa 100644 --- a/homeassistant/components/lutron_caseta/__init__.py +++ b/homeassistant/components/lutron_caseta/__init__.py @@ -46,7 +46,7 @@ async def async_setup(hass, base_config): bridge = Smartbridge.create_tls( hostname=config[CONF_HOST], keyfile=keyfile, certfile=certfile, - ca_certs=ca_certs, cert_required=cert_required) + ca_certs=ca_certs, cert_required) hass.data[LUTRON_CASETA_SMARTBRIDGE] = bridge await bridge.connect() if not hass.data[LUTRON_CASETA_SMARTBRIDGE].is_connected(): From 5dae49d52a7ea5f22b39a6206df0c941657c8c15 Mon Sep 17 00:00:00 2001 From: Dan Jones Date: Thu, 4 Jul 2019 19:04:53 -0400 Subject: [PATCH 05/12] More Tidying --- homeassistant/components/lutron_caseta/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/lutron_caseta/__init__.py b/homeassistant/components/lutron_caseta/__init__.py index 7416a23fb8aefa..079b18e8cc47cd 100644 --- a/homeassistant/components/lutron_caseta/__init__.py +++ b/homeassistant/components/lutron_caseta/__init__.py @@ -46,7 +46,7 @@ async def async_setup(hass, base_config): bridge = Smartbridge.create_tls( hostname=config[CONF_HOST], keyfile=keyfile, certfile=certfile, - ca_certs=ca_certs, cert_required) + ca_certs=ca_certs, cert_required=cert_required) hass.data[LUTRON_CASETA_SMARTBRIDGE] = bridge await bridge.connect() if not hass.data[LUTRON_CASETA_SMARTBRIDGE].is_connected(): From f6a3b2c02e1c28fb8490761474a607727bad7645 Mon Sep 17 00:00:00 2001 From: Dan Jones Date: Fri, 5 Jul 2019 19:47:55 -0400 Subject: [PATCH 06/12] Fixing small pylint issues --- homeassistant/components/lutron_caseta/fan.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/lutron_caseta/fan.py b/homeassistant/components/lutron_caseta/fan.py index 0fba2696d802b7..bf08b52d425850 100644 --- a/homeassistant/components/lutron_caseta/fan.py +++ b/homeassistant/components/lutron_caseta/fan.py @@ -36,7 +36,7 @@ class LutronCasetaFan(LutronCasetaDevice, FanEntity): @property def speed(self) -> str: """Return the current speed.""" - return self._speed + return self._state["fan_speed"] @property def speed_list(self) -> list: @@ -66,8 +66,7 @@ async def async_turn_off(self, **kwargs): async def async_set_speed(self, speed: str) -> None: """Set the speed of the fan.""" - self._speed = speed - self._smartbridge.set_fan(self._device_id, self._speed) + self._smartbridge.set_fan(self._device_id, speed) @property def is_on(self): @@ -80,5 +79,4 @@ def is_on(self): async def async_update(self): """Update when forcing a refresh of the device.""" self._state = self._smartbridge.get_device_by_id(self._device_id) - self._speed = self._state["fan_speed"] _LOGGER.debug("State of this lutron fan device is %s", self._state) From 5ba3c83214994098429c99aac1e33495e74ad416 Mon Sep 17 00:00:00 2001 From: Dan Jones Date: Fri, 12 Jul 2019 10:54:10 -0400 Subject: [PATCH 07/12] Updates from PR and removal of config --- .../components/lutron_caseta/__init__.py | 5 +- homeassistant/components/lutron_caseta/fan.py | 50 ++++++++++--------- 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/homeassistant/components/lutron_caseta/__init__.py b/homeassistant/components/lutron_caseta/__init__.py index 079b18e8cc47cd..99223e9fa4ec0b 100644 --- a/homeassistant/components/lutron_caseta/__init__.py +++ b/homeassistant/components/lutron_caseta/__init__.py @@ -17,7 +17,6 @@ CONF_KEYFILE = 'keyfile' CONF_CERTFILE = 'certfile' CONF_CA_CERTS = 'ca_certs' -CONF_CERT_REQUIRED = 'cert_required' CONFIG_SCHEMA = vol.Schema({ DOMAIN: vol.Schema({ @@ -25,7 +24,6 @@ vol.Required(CONF_KEYFILE): cv.string, vol.Required(CONF_CERTFILE): cv.string, vol.Required(CONF_CA_CERTS): cv.string, - vol.Optional(CONF_CERT_REQUIRED, default=False): cv.boolean, }) }, extra=vol.ALLOW_EXTRA) @@ -42,11 +40,10 @@ async def async_setup(hass, base_config): keyfile = hass.config.path(config[CONF_KEYFILE]) certfile = hass.config.path(config[CONF_CERTFILE]) ca_certs = hass.config.path(config[CONF_CA_CERTS]) - cert_required = config[CONF_CERT_REQUIRED] bridge = Smartbridge.create_tls( hostname=config[CONF_HOST], keyfile=keyfile, certfile=certfile, - ca_certs=ca_certs, cert_required=cert_required) + ca_certs=ca_certs) hass.data[LUTRON_CASETA_SMARTBRIDGE] = bridge await bridge.connect() if not hass.data[LUTRON_CASETA_SMARTBRIDGE].is_connected(): diff --git a/homeassistant/components/lutron_caseta/fan.py b/homeassistant/components/lutron_caseta/fan.py index bf08b52d425850..6557f59c948153 100644 --- a/homeassistant/components/lutron_caseta/fan.py +++ b/homeassistant/components/lutron_caseta/fan.py @@ -2,18 +2,28 @@ import logging from homeassistant.components.fan import ( - SUPPORT_SET_SPEED, FanEntity, DOMAIN) + SUPPORT_SET_SPEED, FanEntity, DOMAIN, + SPEED_HIGH, SPEED_LOW, SPEED_MEDIUM, SPEED_OFF) from . import LUTRON_CASETA_SMARTBRIDGE, LutronCasetaDevice _LOGGER = logging.getLogger(__name__) -LUTRON_SPEED_OFF = 'Off' -LUTRON_SPEED_LOW = 'Low' -LUTRON_SPEED_MEDIUM = 'Medium' -LUTRON_SPEED_MEDIUMHIGH = "MediumHigh" -LUTRON_SPEED_HIGH = 'High' - +VALUE_TO_SPEED = { + 'Off': SPEED_OFF, + 'Low': SPEED_LOW, + 'Medium': SPEED_MEDIUM, + 'High': SPEED_HIGH, + 'MediumHigh': 'mediumhigh' +} + +SPEED_TO_VALUE = { + SPEED_OFF: 'Off', + SPEED_LOW: 'Low', + SPEED_MEDIUM: 'Medium', + SPEED_HIGH: 'High', + 'mediumhigh': 'MediumHigh' +} async def async_setup_platform( hass, config, async_add_entities, discovery_info=None): @@ -36,18 +46,12 @@ class LutronCasetaFan(LutronCasetaDevice, FanEntity): @property def speed(self) -> str: """Return the current speed.""" - return self._state["fan_speed"] + return VALUE_TO_SPEED[self._state["fan_speed"]] @property def speed_list(self) -> list: - """Get the list of available speeds. - - Note: The default Hass Speeds were all lower case - and missing MediumHigh. Lutron Case and fan - speeds specified instead. - """ - return [LUTRON_SPEED_OFF, LUTRON_SPEED_LOW, LUTRON_SPEED_MEDIUM, - LUTRON_SPEED_MEDIUMHIGH, LUTRON_SPEED_HIGH] + """Get the list of available speeds.""" + return [SPEED_OFF, SPEED_LOW, SPEED_MEDIUM, 'mediumhigh', SPEED_HIGH] @property def supported_features(self) -> int: @@ -57,24 +61,24 @@ def supported_features(self) -> int: async def async_turn_on(self, speed: str = None, **kwargs): """Turn the fan on.""" if speed is None: - speed = LUTRON_SPEED_MEDIUMHIGH + speed = 'mediumhigh' await self.async_set_speed(speed) async def async_turn_off(self, **kwargs): """Turn the fan off.""" - await self.async_set_speed(LUTRON_SPEED_OFF) + await self.async_set_speed(SPEED_OFF) async def async_set_speed(self, speed: str) -> None: """Set the speed of the fan.""" - self._smartbridge.set_fan(self._device_id, speed) + self._smartbridge.set_fan(self._device_id, SPEED_TO_VALUE[speed]) @property def is_on(self): """Return true if device is on.""" - return self._state["fan_speed"] in [LUTRON_SPEED_LOW, - LUTRON_SPEED_MEDIUM, - LUTRON_SPEED_MEDIUMHIGH, - LUTRON_SPEED_HIGH] + return VALUE_TO_SPEED[self._state["fan_speed"]] in [SPEED_LOW, + SPEED_MEDIUM, + 'mediumhigh', + SPEED_HIGH] async def async_update(self): """Update when forcing a refresh of the device.""" From 34d01abccc73c1d64a03f66b55b744253402c648 Mon Sep 17 00:00:00 2001 From: Dan Jones Date: Fri, 12 Jul 2019 11:12:16 -0400 Subject: [PATCH 08/12] Fixing messed up indent --- homeassistant/components/lutron_caseta/fan.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/lutron_caseta/fan.py b/homeassistant/components/lutron_caseta/fan.py index 6557f59c948153..bb61a800f78c4e 100644 --- a/homeassistant/components/lutron_caseta/fan.py +++ b/homeassistant/components/lutron_caseta/fan.py @@ -25,6 +25,7 @@ 'mediumhigh': 'MediumHigh' } + async def async_setup_platform( hass, config, async_add_entities, discovery_info=None): """Set up Lutron fan.""" @@ -76,9 +77,9 @@ async def async_set_speed(self, speed: str) -> None: def is_on(self): """Return true if device is on.""" return VALUE_TO_SPEED[self._state["fan_speed"]] in [SPEED_LOW, - SPEED_MEDIUM, - 'mediumhigh', - SPEED_HIGH] + SPEED_MEDIUM, + 'mediumhigh', + SPEED_HIGH] async def async_update(self): """Update when forcing a refresh of the device.""" From ca4740b6b9a1fa97f04268b557931e6fd1177e78 Mon Sep 17 00:00:00 2001 From: Dan Jones Date: Fri, 12 Jul 2019 12:31:41 -0400 Subject: [PATCH 09/12] Removed MediumHigh Speed --- homeassistant/components/lutron_caseta/fan.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/homeassistant/components/lutron_caseta/fan.py b/homeassistant/components/lutron_caseta/fan.py index bb61a800f78c4e..249e943528d0ed 100644 --- a/homeassistant/components/lutron_caseta/fan.py +++ b/homeassistant/components/lutron_caseta/fan.py @@ -13,16 +13,14 @@ 'Off': SPEED_OFF, 'Low': SPEED_LOW, 'Medium': SPEED_MEDIUM, - 'High': SPEED_HIGH, - 'MediumHigh': 'mediumhigh' + 'High': SPEED_HIGH } SPEED_TO_VALUE = { SPEED_OFF: 'Off', SPEED_LOW: 'Low', SPEED_MEDIUM: 'Medium', - SPEED_HIGH: 'High', - 'mediumhigh': 'MediumHigh' + SPEED_HIGH: 'High' } @@ -52,7 +50,7 @@ def speed(self) -> str: @property def speed_list(self) -> list: """Get the list of available speeds.""" - return [SPEED_OFF, SPEED_LOW, SPEED_MEDIUM, 'mediumhigh', SPEED_HIGH] + return [SPEED_OFF, SPEED_LOW, SPEED_MEDIUM, SPEED_HIGH] @property def supported_features(self) -> int: @@ -62,7 +60,7 @@ def supported_features(self) -> int: async def async_turn_on(self, speed: str = None, **kwargs): """Turn the fan on.""" if speed is None: - speed = 'mediumhigh' + speed = SPEED_MEDIUM await self.async_set_speed(speed) async def async_turn_off(self, **kwargs): @@ -78,7 +76,6 @@ def is_on(self): """Return true if device is on.""" return VALUE_TO_SPEED[self._state["fan_speed"]] in [SPEED_LOW, SPEED_MEDIUM, - 'mediumhigh', SPEED_HIGH] async def async_update(self): From d2dbb5a42f242dd3303afd5ced2be003d7a47885 Mon Sep 17 00:00:00 2001 From: Dan Jones Date: Wed, 17 Jul 2019 18:02:02 -0400 Subject: [PATCH 10/12] Added Speed list and removed setup_platform return --- homeassistant/components/lutron_caseta/fan.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/lutron_caseta/fan.py b/homeassistant/components/lutron_caseta/fan.py index 249e943528d0ed..e26a5e521505f8 100644 --- a/homeassistant/components/lutron_caseta/fan.py +++ b/homeassistant/components/lutron_caseta/fan.py @@ -23,6 +23,7 @@ SPEED_HIGH: 'High' } +FAN_SPEEDS = [STATE_OFF, SPEED_LOW, SPEED_MEDIUM, SPEED_HIGH] async def async_setup_platform( hass, config, async_add_entities, discovery_info=None): @@ -36,7 +37,6 @@ async def async_setup_platform( devs.append(dev) async_add_entities(devs, True) - return True class LutronCasetaFan(LutronCasetaDevice, FanEntity): @@ -50,7 +50,7 @@ def speed(self) -> str: @property def speed_list(self) -> list: """Get the list of available speeds.""" - return [SPEED_OFF, SPEED_LOW, SPEED_MEDIUM, SPEED_HIGH] + return FAN_SPEEDS @property def supported_features(self) -> int: From 0091720ec2a87aed816e4966087c2cf9cb2574cd Mon Sep 17 00:00:00 2001 From: Dan Jones Date: Wed, 17 Jul 2019 18:02:42 -0400 Subject: [PATCH 11/12] Added Speed list and removed setup_platform return --- homeassistant/components/lutron_caseta/fan.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/lutron_caseta/fan.py b/homeassistant/components/lutron_caseta/fan.py index e26a5e521505f8..0b45c2c3a7502f 100644 --- a/homeassistant/components/lutron_caseta/fan.py +++ b/homeassistant/components/lutron_caseta/fan.py @@ -23,7 +23,7 @@ SPEED_HIGH: 'High' } -FAN_SPEEDS = [STATE_OFF, SPEED_LOW, SPEED_MEDIUM, SPEED_HIGH] +FAN_SPEEDS = [SPEED_OFF, SPEED_LOW, SPEED_MEDIUM, SPEED_HIGH] async def async_setup_platform( hass, config, async_add_entities, discovery_info=None): From f9c80744a24212a064322aaa18711c6b946eabd2 Mon Sep 17 00:00:00 2001 From: Dan Jones Date: Wed, 17 Jul 2019 18:33:27 -0400 Subject: [PATCH 12/12] Fixing Spacing --- homeassistant/components/lutron_caseta/fan.py | 1 + 1 file changed, 1 insertion(+) diff --git a/homeassistant/components/lutron_caseta/fan.py b/homeassistant/components/lutron_caseta/fan.py index 0b45c2c3a7502f..22c3f6d64006a7 100644 --- a/homeassistant/components/lutron_caseta/fan.py +++ b/homeassistant/components/lutron_caseta/fan.py @@ -25,6 +25,7 @@ FAN_SPEEDS = [SPEED_OFF, SPEED_LOW, SPEED_MEDIUM, SPEED_HIGH] + async def async_setup_platform( hass, config, async_add_entities, discovery_info=None): """Set up Lutron fan."""