deCONZ - Add support for new switch type (#31362)
parent
dc5ca461a9
commit
b373c202c9
|
@ -47,7 +47,7 @@ DAMPERS = ["Level controllable output"]
|
|||
WINDOW_COVERS = ["Window covering device"]
|
||||
COVER_TYPES = DAMPERS + WINDOW_COVERS
|
||||
|
||||
POWER_PLUGS = ["On/Off plug-in unit", "Smart plug"]
|
||||
POWER_PLUGS = ["On/Off light", "On/Off plug-in unit", "Smart plug"]
|
||||
SIRENS = ["Warning device"]
|
||||
SWITCH_TYPES = POWER_PLUGS + SIRENS
|
||||
|
||||
|
|
|
@ -90,9 +90,12 @@ class DeconzLight(DeconzDevice, Light):
|
|||
"""Set up light."""
|
||||
super().__init__(device, gateway)
|
||||
|
||||
self._features = SUPPORT_BRIGHTNESS
|
||||
self._features |= SUPPORT_FLASH
|
||||
self._features |= SUPPORT_TRANSITION
|
||||
self._features = 0
|
||||
|
||||
if self._device.brightness is not None:
|
||||
self._features |= SUPPORT_BRIGHTNESS
|
||||
self._features |= SUPPORT_FLASH
|
||||
self._features |= SUPPORT_TRANSITION
|
||||
|
||||
if self._device.ct is not None:
|
||||
self._features |= SUPPORT_COLOR_TEMP
|
||||
|
|
|
@ -59,6 +59,12 @@ LIGHTS = {
|
|||
"state": {"reachable": True},
|
||||
"uniqueid": "00:00:00:00:00:00:00:02-00",
|
||||
},
|
||||
"4": {
|
||||
"name": "On off light",
|
||||
"state": {"on": True, "reachable": True},
|
||||
"type": "On and Off light",
|
||||
"uniqueid": "00:00:00:00:00:00:00:03-00",
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
|
@ -91,18 +97,25 @@ async def test_lights_and_groups(hass):
|
|||
assert "light.light_group" in gateway.deconz_ids
|
||||
assert "light.empty_group" not in gateway.deconz_ids
|
||||
assert "light.on_off_switch" not in gateway.deconz_ids
|
||||
# 4 entities
|
||||
assert len(hass.states.async_all()) == 4
|
||||
assert "light.on_off_light" in gateway.deconz_ids
|
||||
|
||||
assert len(hass.states.async_all()) == 5
|
||||
|
||||
rgb_light = hass.states.get("light.rgb_light")
|
||||
assert rgb_light.state == "on"
|
||||
assert rgb_light.attributes["brightness"] == 255
|
||||
assert rgb_light.attributes["hs_color"] == (224.235, 100.0)
|
||||
assert rgb_light.attributes["is_deconz_group"] is False
|
||||
assert rgb_light.attributes["supported_features"] == 61
|
||||
|
||||
tunable_white_light = hass.states.get("light.tunable_white_light")
|
||||
assert tunable_white_light.state == "on"
|
||||
assert tunable_white_light.attributes["color_temp"] == 2500
|
||||
assert tunable_white_light.attributes["supported_features"] == 2
|
||||
|
||||
on_off_light = hass.states.get("light.on_off_light")
|
||||
assert on_off_light.state == "on"
|
||||
assert on_off_light.attributes["supported_features"] == 0
|
||||
|
||||
light_group = hass.states.get("light.light_group")
|
||||
assert light_group.state == "on"
|
||||
|
@ -219,7 +232,7 @@ async def test_disable_light_groups(hass):
|
|||
assert "light.empty_group" not in gateway.deconz_ids
|
||||
assert "light.on_off_switch" not in gateway.deconz_ids
|
||||
# 3 entities
|
||||
assert len(hass.states.async_all()) == 3
|
||||
assert len(hass.states.async_all()) == 4
|
||||
|
||||
rgb_light = hass.states.get("light.rgb_light")
|
||||
assert rgb_light is not None
|
||||
|
|
|
@ -38,6 +38,13 @@ SWITCHES = {
|
|||
"state": {"reachable": True},
|
||||
"uniqueid": "00:00:00:00:00:00:00:03-00",
|
||||
},
|
||||
"5": {
|
||||
"id": "On off relay id",
|
||||
"name": "On off relay",
|
||||
"state": {"on": True, "reachable": True},
|
||||
"type": "On/Off light",
|
||||
"uniqueid": "00:00:00:00:00:00:00:04-00",
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
|
@ -68,7 +75,8 @@ async def test_switches(hass):
|
|||
assert "switch.smart_plug" in gateway.deconz_ids
|
||||
assert "switch.warning_device" in gateway.deconz_ids
|
||||
assert "switch.unsupported_switch" not in gateway.deconz_ids
|
||||
assert len(hass.states.async_all()) == 4
|
||||
assert "switch.on_off_relay" in gateway.deconz_ids
|
||||
assert len(hass.states.async_all()) == 5
|
||||
|
||||
on_off_switch = hass.states.get("switch.on_off_switch")
|
||||
assert on_off_switch.state == "on"
|
||||
|
@ -79,6 +87,9 @@ async def test_switches(hass):
|
|||
warning_device = hass.states.get("switch.warning_device")
|
||||
assert warning_device.state == "on"
|
||||
|
||||
on_off_relay = hass.states.get("switch.on_off_relay")
|
||||
assert on_off_relay.state == "on"
|
||||
|
||||
state_changed_event = {
|
||||
"t": "event",
|
||||
"e": "changed",
|
||||
|
|
Loading…
Reference in New Issue