Skip to content

Commit d742167

Browse files
committed
feat(q10): Add status trait and fan level mapping
1 parent d9e226c commit d742167

File tree

3 files changed

+11
-7
lines changed

3 files changed

+11
-7
lines changed

roborock/data/b01_q10/b01_q10_code_mappings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ class YXFanLevel(RoborockModeEnum):
126126
STRONG = "strong", 3
127127
MAX = "max", 4
128128
SUPER = "super", 5
129+
CUSTOM = "custom", 8
129130

130131

131132
class YXWaterLevel(RoborockModeEnum):

roborock/devices/rpc/b01_q10_channel.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44

55
import asyncio
66
import logging
7-
from typing import Any, Iterable
7+
from collections.abc import Iterable
8+
from typing import Any
89

910
from roborock.data.b01_q10.b01_q10_code_mappings import B01_Q10_DP
1011
from roborock.devices.transport.mqtt_channel import MqttChannel

roborock/devices/traits/b01/q10/status.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from __future__ import annotations
44

5-
from typing import Any
5+
from typing import Any, cast
66

77
from roborock.data.b01_q10.b01_q10_code_mappings import (
88
B01_Q10_DP,
@@ -46,7 +46,7 @@ def state_code(self) -> int | None:
4646
@property
4747
def state(self) -> YXDeviceState | None:
4848
code = self.state_code
49-
return YXDeviceState.from_code_optional(code) if code is not None else None
49+
return cast(YXDeviceState | None, YXDeviceState.from_code_optional(code)) if code is not None else None
5050

5151
@property
5252
def battery(self) -> int | None:
@@ -55,22 +55,24 @@ def battery(self) -> int | None:
5555
@property
5656
def fan_level(self) -> YXFanLevel | None:
5757
value = self._data.get(B01_Q10_DP.FUN_LEVEL)
58-
return YXFanLevel.from_code_optional(value) if value is not None else None
58+
return cast(YXFanLevel | None, YXFanLevel.from_code_optional(value)) if value is not None else None
5959

6060
@property
6161
def water_level(self) -> YXWaterLevel | None:
6262
value = self._data.get(B01_Q10_DP.WATER_LEVEL)
63-
return YXWaterLevel.from_code_optional(value) if value is not None else None
63+
return cast(YXWaterLevel | None, YXWaterLevel.from_code_optional(value)) if value is not None else None
6464

6565
@property
6666
def clean_mode(self) -> YXDeviceWorkMode | None:
6767
value = self._data.get(B01_Q10_DP.CLEAN_MODE)
68-
return YXDeviceWorkMode.from_code_optional(value) if value is not None else None
68+
return cast(YXDeviceWorkMode | None, YXDeviceWorkMode.from_code_optional(value)) if value is not None else None
6969

7070
@property
7171
def clean_task(self) -> YXDeviceCleanTask | None:
7272
value = self._data.get(B01_Q10_DP.CLEAN_TASK_TYPE)
73-
return YXDeviceCleanTask.from_code_optional(value) if value is not None else None
73+
return (
74+
cast(YXDeviceCleanTask | None, YXDeviceCleanTask.from_code_optional(value)) if value is not None else None
75+
)
7476

7577
@property
7678
def cleaning_progress(self) -> int | None:

0 commit comments

Comments
 (0)