FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Convert carpet_clean_mode to carpet_boost switch (#1486) · python-kasa/python-kasa@781d07f · GitHub

Repository navigation

Commit 781d07f

Browse files
authored
Convert carpet_clean_mode to carpet_boost switch (#1486)
1 parent 1df05af commit 781d07f

2 files changed

Lines changed: 16 additions & 39 deletions

File tree

‎kasa/smart/modules/clean.py‎

Lines changed: 12 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import logging
66
from datetime import timedelta
7-
from enum import IntEnum, StrEnum
7+
from enum import IntEnum
88
from typing import Annotated, Literal
99

1010
from ...feature import Feature
@@ -58,13 +58,6 @@ class FanSpeed(IntEnum):
5858
Ultra = 5
5959

6060

61-
class CarpetCleanMode(StrEnum):
62-
"""Carpet clean mode."""
63-
64-
Normal = "normal"
65-
Boost = "boost"
66-
67-
6861
class AreaUnit(IntEnum):
6962
"""Area unit."""
7063

@@ -184,15 +177,14 @@ def _initialize_features(self) -> None:
184177
self._add_feature(
185178
Feature(
186179
self._device,
187-
id="carpet_clean_mode",
188-
name="Carpet clean mode",
180+
id="carpet_boost",
181+
name="Carpet boost",
189182
container=self,
190-
attribute_getter="carpet_clean_mode",
191-
attribute_setter="set_carpet_clean_mode",
183+
attribute_getter="carpet_boost",
184+
attribute_setter="set_carpet_boost",
192185
icon="mdi:rug",
193-
choices_getter=lambda: list(CarpetCleanMode.__members__),
194186
category=Feature.Category.Config,
195-
type=Feature.Type.Choice,
187+
type=Feature.Type.Switch,
196188
)
197189
)
198190
self._add_feature(
@@ -380,22 +372,14 @@ def status(self) -> Status:
380372
return Status.UnknownInternal
381373

382374
@property
383-
def carpet_clean_mode(self) -> Annotated[str, FeatureAttribute()]:
384-
"""Return carpet clean mode."""
385-
return CarpetCleanMode(self.data["getCarpetClean"]["carpet_clean_prefer"]).name
375+
def carpet_boost(self) -> bool:
376+
"""Return carpet boost mode."""
377+
return self.data["getCarpetClean"]["carpet_clean_prefer"] == "boost"
386378

387-
async def set_carpet_clean_mode(
388-
self, mode: str
389-
) -> Annotated[dict, FeatureAttribute()]:
379+
async def set_carpet_boost(self, on: bool) -> dict:
390380
"""Set carpet clean mode."""
391-
name_to_value = {x.name: x.value for x in CarpetCleanMode}
392-
if mode not in name_to_value:
393-
raise ValueError(
394-
"Invalid carpet clean mode %s, available %s", mode, name_to_value
395-
)
396-
return await self.call(
397-
"setCarpetClean", {"carpet_clean_prefer": name_to_value[mode]}
398-
)
381+
mode = "boost" if on else "normal"
382+
return await self.call("setCarpetClean", {"carpet_clean_prefer": mode})
399383

400384
@property
401385
def area_unit(self) -> AreaUnit:

‎tests/smart/modules/test_clean.py‎

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
("vacuum_status", "status", Status),
2222
("vacuum_error", "error", ErrorCode),
2323
("vacuum_fan_speed", "fan_speed_preset", str),
24-
("carpet_clean_mode", "carpet_clean_mode", str),
24+
("carpet_boost", "carpet_boost", bool),
2525
("battery_level", "battery", int),
2626
],
2727
)
@@ -71,11 +71,11 @@ async def test_features(dev: SmartDevice, feature: str, prop_name: str, type: ty
7171
id="vacuum_fan_speed",
7272
),
7373
pytest.param(
74-
"carpet_clean_mode",
75-
"Boost",
74+
"carpet_boost",
75+
True,
7676
"setCarpetClean",
7777
{"carpet_clean_prefer": "boost"},
78-
id="carpet_clean_mode",
78+
id="carpet_boost",
7979
),
8080
pytest.param(
8181
"clean_count",
@@ -218,13 +218,6 @@ async def test_unknown_status(
218218
"Invalid fan speed",
219219
id="vacuum_fan_speed",
220220
),
221-
pytest.param(
222-
"carpet_clean_mode",
223-
"invalid mode",
224-
ValueError,
225-
"Invalid carpet clean mode",
226-
id="carpet_clean_mode",
227-
),
228221
],
229222
)
230223
async def test_invalid_settings(

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL