-
-
Notifications
You must be signed in to change notification settings - Fork 31.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Improve Lutron RadioRA2 support, adding switches and scenes (#18330)
* Improve Lutron RadioRA2 support, adding switch and scene support. - Update the version of pylutron to 0.2 which has various bug fixes. - Switch to pylutron's per-device subscribe - Add switch support, and configure any non-dimmable output as a switch. - Add scene support, using any configured keypad button with a corresponding LED as a scene. * Fixes for comments in pull request #18330 * More fixes for comments in pull request #18330 * Remove unused imports * Cleanup in docstrings for Lutron scene support.
- Loading branch information
1 parent
bef85ec
commit b2081c5
Showing
4 changed files
with
129 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
""" | ||
Support for Lutron scenes. | ||
For more details about this platform, please refer to the documentation at | ||
https://home-assistant.io/components/scene.lutron/ | ||
""" | ||
import logging | ||
|
||
from homeassistant.components.lutron import ( | ||
LutronDevice, LUTRON_DEVICES, LUTRON_CONTROLLER) | ||
from homeassistant.components.scene import Scene | ||
|
||
_LOGGER = logging.getLogger(__name__) | ||
|
||
DEPENDENCIES = ['lutron'] | ||
|
||
|
||
def setup_platform(hass, config, add_entities, discovery_info=None): | ||
"""Set up the Lutron scenes.""" | ||
devs = [] | ||
for scene_data in hass.data[LUTRON_DEVICES]['scene']: | ||
(area_name, keypad_name, device, led) = scene_data | ||
dev = LutronScene(area_name, keypad_name, device, led, | ||
hass.data[LUTRON_CONTROLLER]) | ||
devs.append(dev) | ||
|
||
add_entities(devs, True) | ||
|
||
|
||
class LutronScene(LutronDevice, Scene): | ||
"""Representation of a Lutron Scene.""" | ||
|
||
def __init__(self, | ||
area_name, | ||
keypad_name, | ||
lutron_device, | ||
lutron_led, | ||
controller): | ||
"""Initialize the scene/button.""" | ||
super().__init__(area_name, lutron_device, controller) | ||
self._keypad_name = keypad_name | ||
self._led = lutron_led | ||
|
||
def activate(self): | ||
"""Activate the scene.""" | ||
self._lutron_device.press() | ||
|
||
@property | ||
def name(self): | ||
"""Return the name of the device.""" | ||
return "{} {}: {}".format(self._area_name, | ||
self._keypad_name, | ||
self._lutron_device.name) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
""" | ||
Support for Lutron switches. | ||
For more details about this platform, please refer to the documentation at | ||
https://home-assistant.io/components/switch.lutron/ | ||
""" | ||
import logging | ||
|
||
from homeassistant.components.switch import SwitchDevice | ||
from homeassistant.components.lutron import ( | ||
LutronDevice, LUTRON_DEVICES, LUTRON_CONTROLLER) | ||
|
||
_LOGGER = logging.getLogger(__name__) | ||
|
||
DEPENDENCIES = ['lutron'] | ||
|
||
|
||
def setup_platform(hass, config, add_entities, discovery_info=None): | ||
"""Set up the Lutron switches.""" | ||
devs = [] | ||
for (area_name, device) in hass.data[LUTRON_DEVICES]['switch']: | ||
dev = LutronSwitch(area_name, device, hass.data[LUTRON_CONTROLLER]) | ||
devs.append(dev) | ||
|
||
add_entities(devs, True) | ||
|
||
|
||
class LutronSwitch(LutronDevice, SwitchDevice): | ||
"""Representation of a Lutron Switch.""" | ||
|
||
def turn_on(self, **kwargs): | ||
"""Turn the switch on.""" | ||
self._lutron_device.level = 100 | ||
|
||
def turn_off(self, **kwargs): | ||
"""Turn the switch off.""" | ||
self._lutron_device.level = 0 | ||
|
||
@property | ||
def device_state_attributes(self): | ||
"""Return the state attributes.""" | ||
attr = {} | ||
attr['lutron_integration_id'] = self._lutron_device.id | ||
return attr | ||
|
||
@property | ||
def is_on(self): | ||
"""Return true if device is on.""" | ||
return self._lutron_device.last_level() > 0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters