mirror of
https://github.com/python-kasa/python-kasa.git
synced 2025-04-27 00:56:23 +00:00
Add transition parameter to lightstrip's set_effect (#416)
This commit is contained in:
parent
92636fe82d
commit
12c98eb58d
@ -89,18 +89,30 @@ class SmartLightStrip(SmartBulb):
|
|||||||
|
|
||||||
@requires_update
|
@requires_update
|
||||||
async def set_effect(
|
async def set_effect(
|
||||||
self, effect: str, *, brightness: Optional[int] = None
|
self,
|
||||||
|
effect: str,
|
||||||
|
*,
|
||||||
|
brightness: Optional[int] = None,
|
||||||
|
transition: Optional[int] = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Set an effect on the device.
|
"""Set an effect on the device.
|
||||||
|
|
||||||
|
If brightness or transition is defined, its value will be used instead of the effect-specific default.
|
||||||
|
|
||||||
|
See :meth:`effect_list` for available effects, or use :meth:`set_custom_effect` for custom effects.
|
||||||
|
|
||||||
:param str effect: The effect to set
|
:param str effect: The effect to set
|
||||||
:param int brightness: The wanted brightness
|
:param int brightness: The wanted brightness
|
||||||
|
:param int transition: The wanted transition time
|
||||||
"""
|
"""
|
||||||
if effect not in EFFECT_MAPPING_V1:
|
if effect not in EFFECT_MAPPING_V1:
|
||||||
raise SmartDeviceException(f"The effect {effect} is not a built in effect.")
|
raise SmartDeviceException(f"The effect {effect} is not a built in effect.")
|
||||||
effect_dict = EFFECT_MAPPING_V1[effect]
|
effect_dict = EFFECT_MAPPING_V1[effect]
|
||||||
if brightness is not None:
|
if brightness is not None:
|
||||||
effect_dict["brightness"] = brightness
|
effect_dict["brightness"] = brightness
|
||||||
|
if transition is not None:
|
||||||
|
effect_dict["transition"] = transition
|
||||||
|
|
||||||
await self.set_custom_effect(effect_dict)
|
await self.set_custom_effect(effect_dict)
|
||||||
|
|
||||||
@requires_update
|
@requires_update
|
||||||
|
@ -37,7 +37,8 @@ async def test_effects_lightstrip_set_effect_brightness(
|
|||||||
):
|
):
|
||||||
query_helper = mocker.patch("kasa.SmartLightStrip._query_helper")
|
query_helper = mocker.patch("kasa.SmartLightStrip._query_helper")
|
||||||
|
|
||||||
if brightness == 100: # test that default brightness works
|
# test that default brightness works (100 for candy cane)
|
||||||
|
if brightness == 100:
|
||||||
await dev.set_effect("Candy Cane")
|
await dev.set_effect("Candy Cane")
|
||||||
else:
|
else:
|
||||||
await dev.set_effect("Candy Cane", brightness=brightness)
|
await dev.set_effect("Candy Cane", brightness=brightness)
|
||||||
@ -47,6 +48,24 @@ async def test_effects_lightstrip_set_effect_brightness(
|
|||||||
assert payload["brightness"] == brightness
|
assert payload["brightness"] == brightness
|
||||||
|
|
||||||
|
|
||||||
|
@lightstrip
|
||||||
|
@pytest.mark.parametrize("transition", [500, 1000])
|
||||||
|
async def test_effects_lightstrip_set_effect_transition(
|
||||||
|
dev: SmartLightStrip, transition, mocker
|
||||||
|
):
|
||||||
|
query_helper = mocker.patch("kasa.SmartLightStrip._query_helper")
|
||||||
|
|
||||||
|
# test that default (500 for candy cane) transition works
|
||||||
|
if transition == 500:
|
||||||
|
await dev.set_effect("Candy Cane")
|
||||||
|
else:
|
||||||
|
await dev.set_effect("Candy Cane", transition=transition)
|
||||||
|
|
||||||
|
args, kwargs = query_helper.call_args_list[0]
|
||||||
|
payload = args[2]
|
||||||
|
assert payload["transition"] == transition
|
||||||
|
|
||||||
|
|
||||||
@lightstrip
|
@lightstrip
|
||||||
async def test_effects_lightstrip_has_effects(dev: SmartLightStrip):
|
async def test_effects_lightstrip_has_effects(dev: SmartLightStrip):
|
||||||
assert dev.has_effects is True
|
assert dev.has_effects is True
|
||||||
|
Loading…
x
Reference in New Issue
Block a user