Add colortemp module (#814)

Allow controlling the color temperature via features interface:
```
$ kasa --host 192.168.xx.xx feature color_temperature                                                                                                                             
Color temperature (color_temperature): 0

$ kasa --host 192.168.xx.xx feature color_temperature 2000
Setting color_temperature to 2000
Raised error: Temperature should be between 2500 and 6500, was 2000
Run with --debug enabled to see stacktrace

$ kasa --host 192.168.xx.xx feature color_temperature 3000
Setting color_temperature to 3000

$ kasa --host 192.168.xx.xx feature color_temperature                                                                                                                             
Color temperature (color_temperature): 3000
```
This commit is contained in:
Teemu R
2024-03-15 17:36:07 +01:00
committed by GitHub
parent 270614aa02
commit d63f43a230
6 changed files with 99 additions and 0 deletions

View File

View File

@@ -0,0 +1,31 @@
import pytest
from kasa.smart import SmartDevice
from kasa.tests.conftest import parametrize
brightness = parametrize("colortemp smart", component_filter="color_temperature")
@brightness
async def test_colortemp_component(dev: SmartDevice):
"""Test brightness feature."""
assert isinstance(dev, SmartDevice)
assert "color_temperature" in dev._components
# Test getting the value
feature = dev.features["color_temperature"]
assert isinstance(feature.value, int)
assert isinstance(feature.minimum_value, int)
assert isinstance(feature.maximum_value, int)
# Test setting the value
# We need to take the min here, as L9xx reports a range [9000, 9000].
new_value = min(feature.minimum_value + 1, feature.maximum_value)
await feature.set_value(new_value)
assert feature.value == new_value
with pytest.raises(ValueError):
await feature.set_value(feature.minimum_value - 10)
with pytest.raises(ValueError):
await feature.set_value(feature.maximum_value + 10)