Fix wrong exposed light for emulated hue (#25581)

* Add auto detect if brightness is supported

* Fix

* Fix tests

* Cleanup
This commit is contained in:
croghostrider 2019-07-31 19:34:37 +02:00 committed by Paulus Schoutsen
parent 3a3f70ef21
commit 8ffc6c05b7
2 changed files with 32 additions and 5 deletions

View File

@ -517,6 +517,8 @@ 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':
{
@ -532,6 +534,18 @@ def entity_to_json(config, entity, state):
'uniqueid': entity.entity_id,
'swversion': '123'
}
return {
'state':
{
HUE_API_STATE_ON: state[STATE_ON],
'reachable': True
},
'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):

View File

@ -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."""