python-roborock 2.3.0__tar.gz → 2.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {python_roborock-2.3.0 → python_roborock-2.4.0}/PKG-INFO +1 -1
- {python_roborock-2.3.0 → python_roborock-2.4.0}/pyproject.toml +1 -1
- {python_roborock-2.3.0 → python_roborock-2.4.0}/roborock/code_mappings.py +96 -2
- {python_roborock-2.3.0 → python_roborock-2.4.0}/roborock/const.py +4 -1
- {python_roborock-2.3.0 → python_roborock-2.4.0}/roborock/containers.py +17 -4
- {python_roborock-2.3.0 → python_roborock-2.4.0}/LICENSE +0 -0
- {python_roborock-2.3.0 → python_roborock-2.4.0}/README.md +0 -0
- {python_roborock-2.3.0 → python_roborock-2.4.0}/roborock/__init__.py +0 -0
- {python_roborock-2.3.0 → python_roborock-2.4.0}/roborock/api.py +0 -0
- {python_roborock-2.3.0 → python_roborock-2.4.0}/roborock/cli.py +0 -0
- {python_roborock-2.3.0 → python_roborock-2.4.0}/roborock/cloud_api.py +0 -0
- {python_roborock-2.3.0 → python_roborock-2.4.0}/roborock/command_cache.py +0 -0
- {python_roborock-2.3.0 → python_roborock-2.4.0}/roborock/exceptions.py +0 -0
- {python_roborock-2.3.0 → python_roborock-2.4.0}/roborock/local_api.py +0 -0
- {python_roborock-2.3.0 → python_roborock-2.4.0}/roborock/protocol.py +0 -0
- {python_roborock-2.3.0 → python_roborock-2.4.0}/roborock/py.typed +0 -0
- {python_roborock-2.3.0 → python_roborock-2.4.0}/roborock/roborock_future.py +0 -0
- {python_roborock-2.3.0 → python_roborock-2.4.0}/roborock/roborock_message.py +0 -0
- {python_roborock-2.3.0 → python_roborock-2.4.0}/roborock/roborock_typing.py +0 -0
- {python_roborock-2.3.0 → python_roborock-2.4.0}/roborock/util.py +0 -0
- {python_roborock-2.3.0 → python_roborock-2.4.0}/roborock/version_1_apis/__init__.py +0 -0
- {python_roborock-2.3.0 → python_roborock-2.4.0}/roborock/version_1_apis/roborock_client_v1.py +0 -0
- {python_roborock-2.3.0 → python_roborock-2.4.0}/roborock/version_1_apis/roborock_local_client_v1.py +0 -0
- {python_roborock-2.3.0 → python_roborock-2.4.0}/roborock/version_1_apis/roborock_mqtt_client_v1.py +0 -0
- {python_roborock-2.3.0 → python_roborock-2.4.0}/roborock/version_a01_apis/__init__.py +0 -0
- {python_roborock-2.3.0 → python_roborock-2.4.0}/roborock/version_a01_apis/roborock_client_a01.py +0 -0
- {python_roborock-2.3.0 → python_roborock-2.4.0}/roborock/version_a01_apis/roborock_mqtt_client_a01.py +0 -0
- {python_roborock-2.3.0 → python_roborock-2.4.0}/roborock/web_api.py +0 -0
|
@@ -4,6 +4,7 @@ import logging
|
|
|
4
4
|
from enum import Enum, IntEnum
|
|
5
5
|
|
|
6
6
|
_LOGGER = logging.getLogger(__name__)
|
|
7
|
+
completed_warnings = set()
|
|
7
8
|
|
|
8
9
|
|
|
9
10
|
class RoborockEnum(IntEnum):
|
|
@@ -16,10 +17,16 @@ class RoborockEnum(IntEnum):
|
|
|
16
17
|
@classmethod
|
|
17
18
|
def _missing_(cls: type[RoborockEnum], key) -> RoborockEnum:
|
|
18
19
|
if hasattr(cls, "unknown"):
|
|
19
|
-
|
|
20
|
+
warning = f"Missing {cls.__name__} code: {key} - defaulting to 'unknown'"
|
|
21
|
+
if warning not in completed_warnings:
|
|
22
|
+
completed_warnings.add(warning)
|
|
23
|
+
_LOGGER.warning(warning)
|
|
20
24
|
return cls.unknown # type: ignore
|
|
21
25
|
default_value = next(item for item in cls)
|
|
22
|
-
|
|
26
|
+
warning = f"Missing {cls.__name__} code: {key} - defaulting to {default_value}"
|
|
27
|
+
if warning not in completed_warnings:
|
|
28
|
+
completed_warnings.add(warning)
|
|
29
|
+
_LOGGER.warning(warning)
|
|
23
30
|
return default_value
|
|
24
31
|
|
|
25
32
|
@classmethod
|
|
@@ -415,6 +422,93 @@ class RoborockCategory(Enum):
|
|
|
415
422
|
return RoborockCategory.UNKNOWN
|
|
416
423
|
|
|
417
424
|
|
|
425
|
+
class RoborockFinishReason(RoborockEnum):
|
|
426
|
+
manual_interrupt = 21 # Cleaning interrupted by user
|
|
427
|
+
cleanup_interrupted = 24 # Cleanup interrupted
|
|
428
|
+
manual_interrupt_2 = 21
|
|
429
|
+
breakpoint = 32 # Could not continue cleaning
|
|
430
|
+
breakpoint_2 = 33
|
|
431
|
+
cleanup_interrupted_2 = 34
|
|
432
|
+
manual_interrupt_3 = 35
|
|
433
|
+
manual_interrupt_4 = 36
|
|
434
|
+
manual_interrupt_5 = 37
|
|
435
|
+
manual_interrupt_6 = 43
|
|
436
|
+
locate_fail = 45 # Positioning Failed
|
|
437
|
+
cleanup_interrupted_3 = 64
|
|
438
|
+
locate_fail_2 = 65
|
|
439
|
+
manual_interrupt_7 = 48
|
|
440
|
+
manual_interrupt_8 = 49
|
|
441
|
+
manual_interrupt_9 = 50
|
|
442
|
+
cleanup_interrupted_4 = 51
|
|
443
|
+
finished_cleaning = 52 # Finished cleaning
|
|
444
|
+
finished_cleaning_2 = 54
|
|
445
|
+
finished_cleaning_3 = 55
|
|
446
|
+
finished_cleaning_4 = 56
|
|
447
|
+
finished_clenaing_5 = 57
|
|
448
|
+
manual_interrupt_10 = 60
|
|
449
|
+
area_unreachable = 61 # Area unreachable
|
|
450
|
+
area_unreachable_2 = 62
|
|
451
|
+
washing_error = 67 # Washing error
|
|
452
|
+
back_to_wash_failure = 68 # Failed to return to the dock
|
|
453
|
+
cleanup_interrupted_5 = 101
|
|
454
|
+
breakpoint_4 = 102
|
|
455
|
+
manual_interrupt_11 = 103
|
|
456
|
+
cleanup_interrupted_6 = 104
|
|
457
|
+
cleanup_interrupted_7 = 105
|
|
458
|
+
cleanup_interrupted_8 = 106
|
|
459
|
+
cleanup_interrupted_9 = 107
|
|
460
|
+
cleanup_interrupted_10 = 109
|
|
461
|
+
cleanup_interrupted_11 = 110
|
|
462
|
+
patrol_success = 114 # Cruise completed
|
|
463
|
+
patrol_fail = 115 # Cruise failed
|
|
464
|
+
pet_patrol_success = 116 # Pet found
|
|
465
|
+
pet_patrol_fail = 117 # Pet found failed
|
|
466
|
+
|
|
467
|
+
|
|
468
|
+
class RoborockInCleaning(RoborockEnum):
|
|
469
|
+
complete = 0
|
|
470
|
+
global_clean_not_complete = 1
|
|
471
|
+
zone_clean_not_complete = 2
|
|
472
|
+
segment_clean_not_complete = 3
|
|
473
|
+
|
|
474
|
+
|
|
475
|
+
class RoborockCleanType(RoborockEnum):
|
|
476
|
+
all_zone = 1
|
|
477
|
+
draw_zone = 2
|
|
478
|
+
select_zone = 3
|
|
479
|
+
quick_build = 4
|
|
480
|
+
video_patrol = 5
|
|
481
|
+
pet_patrol = 6
|
|
482
|
+
|
|
483
|
+
|
|
484
|
+
class RoborockStartType(RoborockEnum):
|
|
485
|
+
button = 1
|
|
486
|
+
app = 2
|
|
487
|
+
schedule = 3
|
|
488
|
+
mi_home = 4
|
|
489
|
+
quick_start = 5
|
|
490
|
+
voice_control = 13
|
|
491
|
+
routines = 101
|
|
492
|
+
alexa = 801
|
|
493
|
+
google = 802
|
|
494
|
+
ifttt = 803
|
|
495
|
+
yandex = 804
|
|
496
|
+
homekit = 805
|
|
497
|
+
xiaoai = 806
|
|
498
|
+
tmall_genie = 807
|
|
499
|
+
duer = 808
|
|
500
|
+
dingdong = 809
|
|
501
|
+
siri = 810
|
|
502
|
+
clova = 811
|
|
503
|
+
wechat = 901
|
|
504
|
+
alipay = 902
|
|
505
|
+
aqara = 903
|
|
506
|
+
hisense = 904
|
|
507
|
+
huawei = 905
|
|
508
|
+
widget_launch = 820
|
|
509
|
+
smart_watch = 821
|
|
510
|
+
|
|
511
|
+
|
|
418
512
|
class DyadSelfCleanMode(RoborockEnum):
|
|
419
513
|
self_clean = 1
|
|
420
514
|
self_clean_and_dry = 2
|
|
@@ -42,8 +42,11 @@ ROBOROCK_1S = "roborock.vacuum.m1s"
|
|
|
42
42
|
ROBOROCK_C1 = "roborock.vacuum.c1"
|
|
43
43
|
ROBOROCK_S8_PRO_ULTRA = "roborock.vacuum.a70"
|
|
44
44
|
ROBOROCK_S8 = "roborock.vacuum.a51"
|
|
45
|
-
ROBOROCK_P10 = "roborock.vacuum.a75"
|
|
45
|
+
ROBOROCK_P10 = "roborock.vacuum.a75" # also known as q_revo
|
|
46
46
|
ROBOROCK_S8_MAXV_ULTRA = "roborock.vacuum.a97"
|
|
47
|
+
ROBOROCK_QREVO_S = "roborock.vacuum.a104"
|
|
48
|
+
ROBOROCK_QREVO_PRO = "roborock.vacuum.a101"
|
|
49
|
+
ROBOROCK_QREVO_MAXV = "roborock.vacuum.a87"
|
|
47
50
|
|
|
48
51
|
ROBOROCK_DYAD_AIR = "roborock.wetdryvac.a107"
|
|
49
52
|
ROBOROCK_DYAD_PRO_COMBO = "roborock.wetdryvac.a83"
|
|
@@ -13,6 +13,7 @@ from dacite import Config, from_dict
|
|
|
13
13
|
|
|
14
14
|
from .code_mappings import (
|
|
15
15
|
RoborockCategory,
|
|
16
|
+
RoborockCleanType,
|
|
16
17
|
RoborockDockDustCollectionModeCode,
|
|
17
18
|
RoborockDockErrorCode,
|
|
18
19
|
RoborockDockTypeCode,
|
|
@@ -25,6 +26,8 @@ from .code_mappings import (
|
|
|
25
26
|
RoborockFanSpeedS7,
|
|
26
27
|
RoborockFanSpeedS7MaxV,
|
|
27
28
|
RoborockFanSpeedS8MaxVUltra,
|
|
29
|
+
RoborockFinishReason,
|
|
30
|
+
RoborockInCleaning,
|
|
28
31
|
RoborockMopIntensityCode,
|
|
29
32
|
RoborockMopIntensityP10,
|
|
30
33
|
RoborockMopIntensityS5Max,
|
|
@@ -36,6 +39,7 @@ from .code_mappings import (
|
|
|
36
39
|
RoborockMopModeS7,
|
|
37
40
|
RoborockMopModeS8MaxVUltra,
|
|
38
41
|
RoborockMopModeS8ProUltra,
|
|
42
|
+
RoborockStartType,
|
|
39
43
|
RoborockStateCode,
|
|
40
44
|
)
|
|
41
45
|
from .const import (
|
|
@@ -47,6 +51,9 @@ from .const import (
|
|
|
47
51
|
ROBOROCK_G10S_PRO,
|
|
48
52
|
ROBOROCK_P10,
|
|
49
53
|
ROBOROCK_Q7_MAX,
|
|
54
|
+
ROBOROCK_QREVO_MAXV,
|
|
55
|
+
ROBOROCK_QREVO_PRO,
|
|
56
|
+
ROBOROCK_QREVO_S,
|
|
50
57
|
ROBOROCK_S4_MAX,
|
|
51
58
|
ROBOROCK_S5_MAX,
|
|
52
59
|
ROBOROCK_S6,
|
|
@@ -408,7 +415,7 @@ class Status(RoborockBase):
|
|
|
408
415
|
square_meter_clean_area: float | None = None
|
|
409
416
|
error_code: RoborockErrorCode | None = None
|
|
410
417
|
map_present: int | None = None
|
|
411
|
-
in_cleaning:
|
|
418
|
+
in_cleaning: RoborockInCleaning | None = None
|
|
412
419
|
in_returning: int | None = None
|
|
413
420
|
in_fresh_state: int | None = None
|
|
414
421
|
lab_status: int | None = None
|
|
@@ -574,6 +581,12 @@ ModelStatus: dict[str, type[Status]] = {
|
|
|
574
581
|
ROBOROCK_S8_PRO_ULTRA: S8ProUltraStatus,
|
|
575
582
|
ROBOROCK_G10S_PRO: S7MaxVStatus,
|
|
576
583
|
ROBOROCK_P10: P10Status,
|
|
584
|
+
# These likely are not correct,
|
|
585
|
+
# but i am currently unable to do my typical reverse engineering/ get any data from users on this,
|
|
586
|
+
# so this will be here in the mean time.
|
|
587
|
+
ROBOROCK_QREVO_S: P10Status,
|
|
588
|
+
ROBOROCK_QREVO_MAXV: P10Status,
|
|
589
|
+
ROBOROCK_QREVO_PRO: P10Status,
|
|
577
590
|
ROBOROCK_S8_MAXV_ULTRA: S8MaxvUltraStatus,
|
|
578
591
|
}
|
|
579
592
|
|
|
@@ -613,9 +626,9 @@ class CleanRecord(RoborockBase):
|
|
|
613
626
|
square_meter_area: float | None = None
|
|
614
627
|
error: int | None = None
|
|
615
628
|
complete: int | None = None
|
|
616
|
-
start_type:
|
|
617
|
-
clean_type:
|
|
618
|
-
finish_reason:
|
|
629
|
+
start_type: RoborockStartType | None = None
|
|
630
|
+
clean_type: RoborockCleanType | None = None
|
|
631
|
+
finish_reason: RoborockFinishReason | None = None
|
|
619
632
|
dust_collection_status: int | None = None
|
|
620
633
|
avoid_count: int | None = None
|
|
621
634
|
wash_count: int | None = None
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_roborock-2.3.0 → python_roborock-2.4.0}/roborock/version_1_apis/roborock_client_v1.py
RENAMED
|
File without changes
|
{python_roborock-2.3.0 → python_roborock-2.4.0}/roborock/version_1_apis/roborock_local_client_v1.py
RENAMED
|
File without changes
|
{python_roborock-2.3.0 → python_roborock-2.4.0}/roborock/version_1_apis/roborock_mqtt_client_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
{python_roborock-2.3.0 → python_roborock-2.4.0}/roborock/version_a01_apis/roborock_client_a01.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|