diff --git a/homeassistant/components/homekit/__init__.py b/homeassistant/components/homekit/__init__.py index 1c30de918e3..f8514a5d030 100644 --- a/homeassistant/components/homekit/__init__.py +++ b/homeassistant/components/homekit/__init__.py @@ -170,7 +170,8 @@ def get_accessory(hass, driver, state, aid, config): switch_type = config.get(CONF_TYPE, TYPE_SWITCH) a_type = SWITCH_TYPES[switch_type] - elif state.domain in ('automation', 'input_boolean', 'remote', 'script'): + elif state.domain in ('automation', 'input_boolean', 'remote', 'scene', + 'script'): a_type = 'Switch' elif state.domain == 'water_heater': diff --git a/homeassistant/components/homekit/type_switches.py b/homeassistant/components/homekit/type_switches.py index 75a9a31bee1..553d74f5a52 100644 --- a/homeassistant/components/homekit/type_switches.py +++ b/homeassistant/components/homekit/type_switches.py @@ -86,6 +86,8 @@ class Switch(HomeAccessory): def is_activate(self, state): """Check if entity is activate only.""" can_cancel = state.attributes.get(ATTR_CAN_CANCEL) + if self._domain == 'scene': + return True if self._domain == 'script' and not can_cancel: return True return False diff --git a/tests/components/homekit/test_get_accessories.py b/tests/components/homekit/test_get_accessories.py index 7d303c38e93..d39609b079a 100644 --- a/tests/components/homekit/test_get_accessories.py +++ b/tests/components/homekit/test_get_accessories.py @@ -139,6 +139,7 @@ def test_type_sensors(type_name, entity_id, state, attrs): ('Switch', 'automation.test', 'on', {}, {}), ('Switch', 'input_boolean.test', 'on', {}, {}), ('Switch', 'remote.test', 'on', {}, {}), + ('Switch', 'scene.test', 'on', {}, {}), ('Switch', 'script.test', 'on', {}, {}), ('Switch', 'switch.test', 'on', {}, {}), ('Switch', 'switch.test', 'on', {}, {CONF_TYPE: TYPE_SWITCH}), diff --git a/tests/components/homekit/test_type_switches.py b/tests/components/homekit/test_type_switches.py index c94929e560c..204cc90207c 100644 --- a/tests/components/homekit/test_type_switches.py +++ b/tests/components/homekit/test_type_switches.py @@ -180,6 +180,7 @@ async def test_valve_set_state(hass, hk_driver, events): @pytest.mark.parametrize('entity_id, attrs', [ + ('scene.test', {}), ('script.test', {}), ('script.test', {ATTR_CAN_CANCEL: False}), ])