diff --git a/homeassistant/components/emulated_hue/hue_api.py b/homeassistant/components/emulated_hue/hue_api.py index 632fdab12a4..3d51848686e 100644 --- a/homeassistant/components/emulated_hue/hue_api.py +++ b/homeassistant/components/emulated_hue/hue_api.py @@ -517,21 +517,35 @@ def get_entity_state(config, entity): def entity_to_json(config, entity, state): """Convert an entity to its Hue bridge JSON representation.""" + entity_features = entity.attributes.get(ATTR_SUPPORTED_FEATURES, 0) + if entity_features & SUPPORT_BRIGHTNESS: + return { + 'state': + { + HUE_API_STATE_ON: state[STATE_ON], + HUE_API_STATE_BRI: state[STATE_BRIGHTNESS], + HUE_API_STATE_HUE: state[STATE_HUE], + HUE_API_STATE_SAT: state[STATE_SATURATION], + 'reachable': True + }, + 'type': 'Dimmable light', + 'name': config.get_entity_name(entity), + 'modelid': 'HASS123', + 'uniqueid': entity.entity_id, + 'swversion': '123' + } return { 'state': { HUE_API_STATE_ON: state[STATE_ON], - HUE_API_STATE_BRI: state[STATE_BRIGHTNESS], - HUE_API_STATE_HUE: state[STATE_HUE], - HUE_API_STATE_SAT: state[STATE_SATURATION], 'reachable': True }, - 'type': 'Dimmable light', + 'type': 'On/off light', 'name': config.get_entity_name(entity), 'modelid': 'HASS123', 'uniqueid': entity.entity_id, 'swversion': '123' - } + } def create_hue_success_response(entity_id, attr, value): diff --git a/tests/components/emulated_hue/test_hue_api.py b/tests/components/emulated_hue/test_hue_api.py index c92fe2b17ef..7cd5a04081a 100644 --- a/tests/components/emulated_hue/test_hue_api.py +++ b/tests/components/emulated_hue/test_hue_api.py @@ -121,6 +121,10 @@ def hass_hue(loop, hass): kitchen_light_entity.entity_id, kitchen_light_entity.state, attributes=attrs) + # create a lamp without brightness support + hass.states.async_set( + 'light.no_brightness', 'on', {}) + # Ceiling Fan is explicitly excluded from being exposed ceiling_fan_entity = hass.states.get('fan.ceiling_fan') attrs = dict(ceiling_fan_entity.attributes) @@ -219,6 +223,15 @@ def test_discover_lights(hue_client): assert 'climate.ecobee' not in devices +@asyncio.coroutine +def test_light_without_brightness_supported(hass_hue, hue_client): + light_without_brightness_json = yield from perform_get_light_state( + hue_client, 'light.no_brightness', 200) + + assert light_without_brightness_json['state'][HUE_API_STATE_ON] is True + assert light_without_brightness_json['type'] == 'On/off light' + + @asyncio.coroutine def test_get_light_state(hass_hue, hue_client): """Test the getting of light state."""