diff --git a/roborock/code_mappings.py b/roborock/code_mappings.py index 50579e1..e2b1dc4 100644 --- a/roborock/code_mappings.py +++ b/roborock/code_mappings.py @@ -254,6 +254,15 @@ class RoborockFanSpeedQRevoMaster(RoborockFanPowerCode): smart_mode = 110 +class RoborockFanSpeedQRevoCurv(RoborockFanPowerCode): + quiet = 101 + balanced = 102 + turbo = 103 + max = 104 + max_plus = 105 + smart_mode = 110 + + class RoborockFanSpeedP10(RoborockFanPowerCode): off = 105 quiet = 101 @@ -279,6 +288,14 @@ class RoborockMopModeCode(RoborockEnum): """Describes the mop mode of the vacuum cleaner.""" +class RoborockMopModeQRevoCurv(RoborockMopModeCode): + standard = 300 + deep = 301 + deep_plus = 303 + fast = 304 + smart_mode = 306 + + class RoborockMopModeS7(RoborockMopModeCode): """Describes the mop mode of the vacuum cleaner.""" @@ -351,6 +368,15 @@ class RoborockMopIntensityQRevoMaster(RoborockMopIntensityCode): smart_mode = 209 +class RoborockMopIntensityQRevoCurv(RoborockMopIntensityCode): + off = 200 + low = 201 + medium = 202 + high = 203 + custom_water_flow = 207 + smart_mode = 209 + + class RoborockMopIntensityP10(RoborockMopIntensityCode): """Describes the mop intensity of the vacuum cleaner.""" @@ -431,6 +457,7 @@ class RoborockDockTypeCode(RoborockEnum): s8_maxv_ultra_dock = 10 qrevo_master_dock = 14 qrevo_s_dock = 15 + qrevo_curv_dock = 17 class RoborockDockDustCollectionModeCode(RoborockEnum): diff --git a/roborock/const.py b/roborock/const.py index e274250..e15f086 100644 --- a/roborock/const.py +++ b/roborock/const.py @@ -31,6 +31,7 @@ ROBOROCK_Q7_MAX = "roborock.vacuum.a38" ROBOROCK_Q7PLUS = "roborock.vacuum.a40" ROBOROCK_QREVO_MASTER = "roborock.vacuum.a117" +ROBOROCK_QREVO_CURV = "roborock.vacuum.a135" ROBOROCK_Q8_MAX = "roborock.vacuum.a73" ROBOROCK_G10S_PRO = "roborock.vacuum.a26" ROBOROCK_G10S = "roborock.vacuum.a46" diff --git a/roborock/containers.py b/roborock/containers.py index 3bda790..4a5cd21 100644 --- a/roborock/containers.py +++ b/roborock/containers.py @@ -20,6 +20,7 @@ RoborockFanPowerCode, RoborockFanSpeedP10, RoborockFanSpeedQ7Max, + RoborockFanSpeedQRevoCurv, RoborockFanSpeedQRevoMaster, RoborockFanSpeedS6Pure, RoborockFanSpeedS7, @@ -30,12 +31,14 @@ RoborockMopIntensityCode, RoborockMopIntensityP10, RoborockMopIntensityQ7Max, + RoborockMopIntensityQRevoCurv, RoborockMopIntensityQRevoMaster, RoborockMopIntensityS5Max, RoborockMopIntensityS6MaxV, RoborockMopIntensityS7, RoborockMopIntensityS8MaxVUltra, RoborockMopModeCode, + RoborockMopModeQRevoCurv, RoborockMopModeQRevoMaster, RoborockMopModeS7, RoborockMopModeS8MaxVUltra, @@ -52,6 +55,7 @@ ROBOROCK_G10S_PRO, ROBOROCK_P10, ROBOROCK_Q7_MAX, + ROBOROCK_QREVO_CURV, ROBOROCK_QREVO_MASTER, ROBOROCK_QREVO_MAXV, ROBOROCK_QREVO_PRO, @@ -581,6 +585,13 @@ class QRevoMasterStatus(Status): mop_mode: RoborockMopModeQRevoMaster | None = None +@dataclass +class QRevoCurvStatus(Status): + fan_power: RoborockFanSpeedQRevoCurv | None = None + water_box_mode: RoborockMopIntensityQRevoCurv | None = None + mop_mode: RoborockMopModeQRevoCurv | None = None + + @dataclass class S6MaxVStatus(Status): fan_power: RoborockFanSpeedS7MaxV | None = None @@ -639,6 +650,7 @@ class S8MaxvUltraStatus(Status): ROBOROCK_S5_MAX: S5MaxStatus, ROBOROCK_Q7_MAX: Q7MaxStatus, ROBOROCK_QREVO_MASTER: QRevoMasterStatus, + ROBOROCK_QREVO_CURV: QRevoCurvStatus, ROBOROCK_S6: S6PureStatus, ROBOROCK_S6_MAXV: S6MaxVStatus, ROBOROCK_S6_PURE: S6PureStatus, diff --git a/roborock/version_1_apis/roborock_client_v1.py b/roborock/version_1_apis/roborock_client_v1.py index 88c942d..5cb9493 100644 --- a/roborock/version_1_apis/roborock_client_v1.py +++ b/roborock/version_1_apis/roborock_client_v1.py @@ -71,6 +71,7 @@ RoborockDockTypeCode.p10_pro_dock, RoborockDockTypeCode.s8_maxv_ultra_dock, RoborockDockTypeCode.qrevo_s_dock, + RoborockDockTypeCode.qrevo_curv_dock, ] RT = TypeVar("RT", bound=RoborockBase) EVICT_TIME = 60