mirror of
https://github.com/python-kasa/python-kasa.git
synced 2024-12-23 03:33:35 +00:00
Add brightness to lightstrip's set_effect (#415)
* Add brightness parameter to lightstrip's set_effect * Use None as default as effects have different default brightnesses
This commit is contained in:
parent
bfafbf9512
commit
6e7a588d40
@ -89,16 +89,19 @@ class SmartLightStrip(SmartBulb):
|
|||||||
|
|
||||||
@requires_update
|
@requires_update
|
||||||
async def set_effect(
|
async def set_effect(
|
||||||
self,
|
self, effect: str, *, brightness: Optional[int] = None
|
||||||
effect: str,
|
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Set an effect on the device.
|
"""Set an effect on the device.
|
||||||
|
|
||||||
:param str effect: The effect to set
|
:param str effect: The effect to set
|
||||||
|
:param int brightness: The wanted brightness
|
||||||
"""
|
"""
|
||||||
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.")
|
||||||
await self.set_custom_effect(EFFECT_MAPPING_V1[effect])
|
effect_dict = EFFECT_MAPPING_V1[effect]
|
||||||
|
if brightness is not None:
|
||||||
|
effect_dict["brightness"] = brightness
|
||||||
|
await self.set_custom_effect(effect_dict)
|
||||||
|
|
||||||
@requires_update
|
@requires_update
|
||||||
async def set_custom_effect(
|
async def set_custom_effect(
|
||||||
|
@ -30,6 +30,23 @@ async def test_effects_lightstrip_set_effect(dev: SmartLightStrip):
|
|||||||
assert dev.state_information["Effect"] == "Candy Cane"
|
assert dev.state_information["Effect"] == "Candy Cane"
|
||||||
|
|
||||||
|
|
||||||
|
@lightstrip
|
||||||
|
@pytest.mark.parametrize("brightness", [100, 50])
|
||||||
|
async def test_effects_lightstrip_set_effect_brightness(
|
||||||
|
dev: SmartLightStrip, brightness, mocker
|
||||||
|
):
|
||||||
|
query_helper = mocker.patch("kasa.SmartLightStrip._query_helper")
|
||||||
|
|
||||||
|
if brightness == 100: # test that default brightness works
|
||||||
|
await dev.set_effect("Candy Cane")
|
||||||
|
else:
|
||||||
|
await dev.set_effect("Candy Cane", brightness=brightness)
|
||||||
|
|
||||||
|
args, kwargs = query_helper.call_args_list[0]
|
||||||
|
payload = args[2]
|
||||||
|
assert payload["brightness"] == brightness
|
||||||
|
|
||||||
|
|
||||||
@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…
Reference in New Issue
Block a user