| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -17,6 +17,7 @@ class DeviceType(Enum): | |||
| 17 | 17 | LightStrip = "lightstrip" | |
| 18 | 18 | Sensor = "sensor" | |
| 19 | 19 | Hub = "hub" | |
| 20 | + Fan = "fan" | ||
| 20 | 21 | Unknown = "unknown" | |
| 21 | 22 | ||
| 22 | 23 | @staticmethod | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -8,6 +8,7 @@ | |||
| 8 | 8 | from .colortemp import ColorTemperatureModule | |
| 9 | 9 | from .devicemodule import DeviceModule | |
| 10 | 10 | from .energymodule import EnergyModule | |
| 11 | + from .fanmodule import FanModule | ||
| 11 | 12 | from .firmware import Firmware | |
| 12 | 13 | from .humidity import HumiditySensor | |
| 13 | 14 | from .ledmodule import LedModule | |
@@ -29,6 +30,7 @@ | |||
| 29 | 30 | "AutoOffModule", | |
| 30 | 31 | "LedModule", | |
| 31 | 32 | "Brightness", | |
| 33 | + "FanModule", | ||
| 32 | 34 | "Firmware", | |
| 33 | 35 | "CloudModule", | |
| 34 | 36 | "LightTransitionModule", | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,65 @@ | |||
| 1 | + """Implementation of fan_control module.""" | ||
| 2 | + from typing import TYPE_CHECKING, Dict | ||
| 3 | + | ||
| 4 | + from ...feature import Feature, FeatureType | ||
| 5 | + from ..smartmodule import SmartModule | ||
| 6 | + | ||
| 7 | + if TYPE_CHECKING: | ||
| 8 | + from ..smartdevice import SmartDevice | ||
| 9 | + | ||
| 10 | + | ||
| 11 | + class FanModule(SmartModule): | ||
| 12 | + """Implementation of fan_control module.""" | ||
| 13 | + | ||
| 14 | + REQUIRED_COMPONENT = "fan_control" | ||
| 15 | + | ||
| 16 | + def __init__(self, device: "SmartDevice", module: str): | ||
| 17 | + super().__init__(device, module) | ||
| 18 | + | ||
| 19 | + self._add_feature( | ||
| 20 | + Feature( | ||
| 21 | + device, | ||
| 22 | + "Fan speed level", | ||
| 23 | + container=self, | ||
| 24 | + attribute_getter="fan_speed_level", | ||
| 25 | + attribute_setter="set_fan_speed_level", | ||
| 26 | + icon="mdi:fan", | ||
| 27 | + type=FeatureType.Number, | ||
| 28 | + minimum_value=1, | ||
| 29 | + maximum_value=4, | ||
| 30 | + ) | ||
| 31 | + ) | ||
| 32 | + self._add_feature( | ||
| 33 | + Feature( | ||
| 34 | + device, | ||
| 35 | + "Fan sleep mode", | ||
| 36 | + container=self, | ||
| 37 | + attribute_getter="sleep_mode", | ||
| 38 | + attribute_setter="set_sleep_mode", | ||
| 39 | + icon="mdi:sleep", | ||
| 40 | + ) | ||
| 41 | + ) | ||
| 42 | + | ||
| 43 | + def query(self) -> Dict: | ||
| 44 | + """Query to execute during the update cycle.""" | ||
| 45 | + return {} | ||
| 46 | + | ||
| 47 | + @property | ||
| 48 | + def fan_speed_level(self) -> int: | ||
| 49 | + """Return fan speed level.""" | ||
| 50 | + return self.data["fan_speed_level"] | ||
| 51 | + | ||
| 52 | + async def set_fan_speed_level(self, level: int): | ||
| 53 | + """Set fan speed level.""" | ||
| 54 | + if level < 1 or level > 4: | ||
| 55 | + raise ValueError("Invalid level, should be in range 1-4.") | ||
| 56 | + return await self.call("set_device_info", {"fan_speed_level": level}) | ||
| 57 | + | ||
| 58 | + @property | ||
| 59 | + def sleep_mode(self) -> bool: | ||
| 60 | + """Return sleep mode status.""" | ||
| 61 | + return self.data["fan_sleep_mode_on"] | ||
| 62 | + | ||
| 63 | + async def set_sleep_mode(self, on: bool): | ||
| 64 | + """Set sleep mode.""" | ||
| 65 | + return await self.call("set_device_info", {"fan_sleep_mode_on": on}) | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -48,6 +48,8 @@ def device_type(self) -> DeviceType: | |||
| 48 | 48 | child_device_map = { | |
| 49 | 49 | "plug.powerstrip.sub-plug": DeviceType.Plug, | |
| 50 | 50 | "subg.trigger.temp-hmdt-sensor": DeviceType.Sensor, | |
| 51 | + "kasa.switch.outlet.sub-fan": DeviceType.Fan, | ||
| 52 | + "kasa.switch.outlet.sub-dimmer": DeviceType.Dimmer, | ||
| 51 | 53 | } | |
| 52 | 54 | dev_type = child_device_map.get(self.sys_info["category"]) | |
| 53 | 55 | if dev_type is None: | |
| Back | FazBrowse Home | New Git URL |
0 commit comments