mirror of
https://github.com/python-kasa/python-kasa.git
synced 2025-04-27 17:16:24 +00:00
Fix fan speed level when off and derive smart fan module from common fan interface (#957)
Picked this up while updating the [Fan platform PR](https://github.com/home-assistant/core/pull/116605) for HA. The smart fan module was not correctly deriving from the common interface and the speed_level is reported as >0 when off.
This commit is contained in:
parent
39fc21a124
commit
40e40522f9
@ -5,13 +5,14 @@ from __future__ import annotations
|
|||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
from ...feature import Feature
|
from ...feature import Feature
|
||||||
|
from ...interfaces.fan import Fan as FanInterface
|
||||||
from ..smartmodule import SmartModule
|
from ..smartmodule import SmartModule
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from ..smartdevice import SmartDevice
|
from ..smartdevice import SmartDevice
|
||||||
|
|
||||||
|
|
||||||
class Fan(SmartModule):
|
class Fan(SmartModule, FanInterface):
|
||||||
"""Implementation of fan_control module."""
|
"""Implementation of fan_control module."""
|
||||||
|
|
||||||
REQUIRED_COMPONENT = "fan_control"
|
REQUIRED_COMPONENT = "fan_control"
|
||||||
@ -54,7 +55,7 @@ class Fan(SmartModule):
|
|||||||
@property
|
@property
|
||||||
def fan_speed_level(self) -> int:
|
def fan_speed_level(self) -> int:
|
||||||
"""Return fan speed level."""
|
"""Return fan speed level."""
|
||||||
return self.data["fan_speed_level"]
|
return 0 if self.data["device_on"] is False else self.data["fan_speed_level"]
|
||||||
|
|
||||||
async def set_fan_speed_level(self, level: int):
|
async def set_fan_speed_level(self, level: int):
|
||||||
"""Set fan speed level, 0 for off, 1-4 for on."""
|
"""Set fan speed level, 0 for off, 1-4 for on."""
|
||||||
|
@ -64,6 +64,11 @@ async def test_fan_module(dev: SmartDevice, mocker: MockerFixture):
|
|||||||
assert fan.fan_speed_level == 1
|
assert fan.fan_speed_level == 1
|
||||||
assert device.is_on
|
assert device.is_on
|
||||||
|
|
||||||
|
# Check that if the device is off the speed level is 0.
|
||||||
|
await device.set_state(False)
|
||||||
|
await dev.update()
|
||||||
|
assert fan.fan_speed_level == 0
|
||||||
|
|
||||||
await fan.set_fan_speed_level(4)
|
await fan.set_fan_speed_level(4)
|
||||||
await dev.update()
|
await dev.update()
|
||||||
assert fan.fan_speed_level == 4
|
assert fan.fan_speed_level == 4
|
||||||
|
Loading…
x
Reference in New Issue
Block a user