mirror of
				https://github.com/python-kasa/python-kasa.git
				synced 2025-10-31 12:41:54 +00:00 
			
		
		
		
	Do not send light_on value to iot bulb set_state (#1090)
Passing this extra value caused the `ignore_default` check in the `IotBulb._set_light_state` method to fail which causes the device to come back on to the default state.
This commit is contained in:
		| @@ -326,6 +326,7 @@ class IotBulb(IotDevice): | ||||
|         self, state: dict, *, transition: int | None = None | ||||
|     ) -> dict: | ||||
|         """Set the light state.""" | ||||
|         state = {**state} | ||||
|         if transition is not None: | ||||
|             state["transition_period"] = transition | ||||
|  | ||||
|   | ||||
| @@ -230,6 +230,8 @@ class Light(IotModule, LightInterface): | ||||
|                 state_dict["on_off"] = 1 | ||||
|             else: | ||||
|                 state_dict["on_off"] = int(state.light_on) | ||||
|             # Remove the light_on from the dict | ||||
|             state_dict.pop("light_on", None) | ||||
|             return await bulb._set_light_state(state_dict, transition=transition) | ||||
|  | ||||
|     @property | ||||
|   | ||||
| @@ -9,7 +9,7 @@ from voluptuous import ( | ||||
|     Schema, | ||||
| ) | ||||
|  | ||||
| from kasa import Device, DeviceType, IotLightPreset, KasaException, Module | ||||
| from kasa import Device, DeviceType, IotLightPreset, KasaException, LightState, Module | ||||
| from kasa.iot import IotBulb, IotDimmer | ||||
|  | ||||
| from .conftest import ( | ||||
| @@ -96,6 +96,22 @@ async def test_set_hsv_transition(dev: IotBulb, mocker): | ||||
|     ) | ||||
|  | ||||
|  | ||||
| @bulb_iot | ||||
| async def test_light_set_state(dev: IotBulb, mocker): | ||||
|     """Testing setting LightState on the light module.""" | ||||
|     light = dev.modules.get(Module.Light) | ||||
|     assert light | ||||
|     set_light_state = mocker.spy(dev, "_set_light_state") | ||||
|     state = LightState(light_on=True) | ||||
|     await light.set_state(state) | ||||
|  | ||||
|     set_light_state.assert_called_with({"on_off": 1}, transition=None) | ||||
|     state = LightState(light_on=False) | ||||
|     await light.set_state(state) | ||||
|  | ||||
|     set_light_state.assert_called_with({"on_off": 0}, transition=None) | ||||
|  | ||||
|  | ||||
| @color_bulb | ||||
| @turn_on | ||||
| async def test_invalid_hsv(dev: Device, turn_on): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Steven B.
					Steven B.