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:
Steven B 2024-06-06 14:18:34 +01:00 committed by GitHub
parent 39fc21a124
commit 40e40522f9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 8 additions and 2 deletions

View File

@ -5,13 +5,14 @@ from __future__ import annotations
from typing import TYPE_CHECKING
from ...feature import Feature
from ...interfaces.fan import Fan as FanInterface
from ..smartmodule import SmartModule
if TYPE_CHECKING:
from ..smartdevice import SmartDevice
class Fan(SmartModule):
class Fan(SmartModule, FanInterface):
"""Implementation of fan_control module."""
REQUIRED_COMPONENT = "fan_control"
@ -54,7 +55,7 @@ class Fan(SmartModule):
@property
def fan_speed_level(self) -> int:
"""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):
"""Set fan speed level, 0 for off, 1-4 for on."""

View File

@ -64,6 +64,11 @@ async def test_fan_module(dev: SmartDevice, mocker: MockerFixture):
assert fan.fan_speed_level == 1
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 dev.update()
assert fan.fan_speed_level == 4