diff --git a/homeassistant/components/alexa/smart_home.py b/homeassistant/components/alexa/smart_home.py index e9b1b845d3d..c0a42ef8aa6 100644 --- a/homeassistant/components/alexa/smart_home.py +++ b/homeassistant/components/alexa/smart_home.py @@ -328,8 +328,9 @@ class _AlexaBrightnessController(_AlexaInterface): def get_property(self, name): if name != 'brightness': raise _UnsupportedProperty(name) - - return round(self.entity.attributes['brightness'] / 255.0 * 100) + if 'brightness' in self.entity.attributes: + return round(self.entity.attributes['brightness'] / 255.0 * 100) + return 0 class _AlexaColorController(_AlexaInterface): diff --git a/tests/components/alexa/test_smart_home.py b/tests/components/alexa/test_smart_home.py index 487ff301c18..96e16544438 100644 --- a/tests/components/alexa/test_smart_home.py +++ b/tests/components/alexa/test_smart_home.py @@ -1095,6 +1095,23 @@ def test_report_lock_state(hass): properties.assert_equal('Alexa.LockController', 'lockState', 'JAMMED') +@asyncio.coroutine +def test_report_dimmable_light_state(hass): + """Test BrightnessController reports brightness correctly.""" + hass.states.async_set( + 'light.test_on', 'on', {'friendly_name': "Test light On", + 'brightness': 128, 'supported_features': 1}) + hass.states.async_set( + 'light.test_off', 'off', {'friendly_name': "Test light Off", + 'supported_features': 1}) + + properties = yield from reported_properties(hass, 'light.test_on') + properties.assert_equal('Alexa.BrightnessController', 'brightness', 50) + + properties = yield from reported_properties(hass, 'light.test_off') + properties.assert_equal('Alexa.BrightnessController', 'brightness', 0) + + @asyncio.coroutine def reported_properties(hass, endpoint): """Use ReportState to get properties and return them. @@ -1118,7 +1135,7 @@ class _ReportedProperties(object): for prop in self.properties: if prop['namespace'] == namespace and prop['name'] == name: assert prop['value'] == value - return prop + return prop assert False, 'property %s:%s not in %r' % ( namespace,