Skip to content

Commit b2237d9

Browse files
Jezza34000jalcarasjalcarasLash-L
authored
feat: add q revo/p10 support (#114)
* feat add Q REVO support (RoborockFanSpeedP10 + RoborockMopModeP10) * feat add Q REVO support (model ROBOROCK_P10/roborock.vacuum.a75) * feat add Q REVO support (P10Status) * feat add Q REVO support (status data) * fix(P10Status): Change RoborockMopModeP10 by RoborockMopModeS8ProUltra * fix(RoborockMopModeP10): Remove * fix: change ordering of imports --------- Co-authored-by: jalcaras <[email protected]> Co-authored-by: jalcaras <[email protected]> Co-authored-by: Luke <[email protected]>
1 parent 0ade537 commit b2237d9

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

roborock/code_mappings.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,15 @@ class RoborockFanSpeedQ7Max(RoborockFanPowerCode):
172172
max = 104
173173

174174

175+
class RoborockFanSpeedP10(RoborockFanPowerCode):
176+
off = 105
177+
quiet = 101
178+
balanced = 102
179+
turbo = 103
180+
max = 104
181+
max_plus = 108
182+
183+
175184
class RoborockMopModeCode(RoborockEnum):
176185
"""Describes the mop mode of the vacuum cleaner."""
177186

roborock/const.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
ROBOROCK_C1 = "roborock.vacuum.c1"
3434
ROBOROCK_S8_PRO_ULTRA = "roborock.vacuum.a70"
3535
ROBOROCK_S8 = "roborock.vacuum.a51"
36+
ROBOROCK_P10 = "roborock.vacuum.a75"
3637

3738
SUPPORTED_VACUUMS = (
3839
[ # These are the devices that show up when you add a device - more could be supported and just not show up
@@ -51,5 +52,6 @@
5152
ROBOROCK_S8,
5253
ROBOROCK_S4_MAX,
5354
ROBOROCK_S7,
55+
ROBOROCK_P10,
5456
]
5557
)

roborock/containers.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
RoborockDockWashTowelModeCode,
1717
RoborockErrorCode,
1818
RoborockFanPowerCode,
19+
RoborockFanSpeedP10,
1920
RoborockFanSpeedQ7Max,
2021
RoborockFanSpeedS6Pure,
2122
RoborockFanSpeedS7,
@@ -32,6 +33,7 @@
3233
FILTER_REPLACE_TIME,
3334
MAIN_BRUSH_REPLACE_TIME,
3435
ROBOROCK_G10S_PRO,
36+
ROBOROCK_P10,
3537
ROBOROCK_Q7_MAX,
3638
ROBOROCK_S4_MAX,
3739
ROBOROCK_S5_MAX,
@@ -282,6 +284,16 @@ class Status(RoborockBase):
282284
charge_status: Optional[int] = None
283285
unsave_map_reason: Optional[int] = None
284286
unsave_map_flag: Optional[int] = None
287+
wash_status: Optional[int] = None
288+
distance_off: Optional[int] = None
289+
in_warmup: Optional[int] = None
290+
dry_status: Optional[int] = None
291+
rdt: Optional[int] = None
292+
clean_percent: Optional[int] = None
293+
rss: Optional[int] = None
294+
dss: Optional[int] = None
295+
common_status: Optional[int] = None
296+
corner_clean_mode: Optional[int] = None
285297

286298
def __post_init__(self) -> None:
287299
self.square_meter_clean_area = round(self.clean_area / 1000000, 1) if self.clean_area is not None else None
@@ -345,6 +357,13 @@ class S8Status(Status):
345357
mop_mode: Optional[RoborockMopModeS8ProUltra] = None
346358

347359

360+
@dataclass
361+
class P10Status(Status):
362+
fan_power: Optional[RoborockFanSpeedP10] = None
363+
water_box_mode: Optional[RoborockMopIntensityV2] = None
364+
mop_mode: Optional[RoborockMopModeS8ProUltra] = None
365+
366+
348367
ModelStatus: dict[str, Type[Status]] = {
349368
ROBOROCK_S4_MAX: S4MaxStatus,
350369
ROBOROCK_S5_MAX: S5MaxStatus,
@@ -357,6 +376,7 @@ class S8Status(Status):
357376
ROBOROCK_S8: S8Status,
358377
ROBOROCK_S8_PRO_ULTRA: S8ProUltraStatus,
359378
ROBOROCK_G10S_PRO: S7MaxVStatus,
379+
ROBOROCK_P10: P10Status,
360380
}
361381

362382

@@ -378,6 +398,7 @@ class CleanSummary(RoborockBase):
378398
clean_count: Optional[int] = None
379399
dust_collection_count: Optional[int] = None
380400
records: Optional[list[int]] = None
401+
last_clean_t: Optional[int] = None
381402

382403
def __post_init__(self) -> None:
383404
self.square_meter_clean_area = round(self.clean_area / 1000000, 1) if self.clean_area is not None else None

0 commit comments

Comments
 (0)