diff --git a/homeassistant/components/roborock/__init__.py b/homeassistant/components/roborock/__init__.py index 39bef7b7b42098..77764e1b7007d7 100644 --- a/homeassistant/components/roborock/__init__.py +++ b/homeassistant/components/roborock/__init__.py @@ -15,7 +15,7 @@ RoborockInvalidUserAgreement, RoborockNoUserAgreement, ) -from roborock.containers import DeviceData, HomeDataDevice, HomeDataProduct, UserData +from roborock.data import DeviceData, HomeDataDevice, HomeDataProduct, UserData from roborock.version_1_apis.roborock_mqtt_client_v1 import RoborockMqttClientV1 from roborock.version_a01_apis import RoborockMqttClientA01 from roborock.web_api import RoborockApiClient diff --git a/homeassistant/components/roborock/binary_sensor.py b/homeassistant/components/roborock/binary_sensor.py index a2c34f5c59d570..90583619d385a7 100644 --- a/homeassistant/components/roborock/binary_sensor.py +++ b/homeassistant/components/roborock/binary_sensor.py @@ -5,7 +5,7 @@ from collections.abc import Callable from dataclasses import dataclass -from roborock.containers import RoborockStateCode +from roborock.data import RoborockStateCode from roborock.roborock_typing import DeviceProp from homeassistant.components.binary_sensor import ( diff --git a/homeassistant/components/roborock/config_flow.py b/homeassistant/components/roborock/config_flow.py index d1f582a94c88dc..2d602ead4652a0 100644 --- a/homeassistant/components/roborock/config_flow.py +++ b/homeassistant/components/roborock/config_flow.py @@ -7,7 +7,7 @@ import logging from typing import Any -from roborock.containers import UserData +from roborock.data import UserData from roborock.exceptions import ( RoborockAccountDoesNotExist, RoborockException, diff --git a/homeassistant/components/roborock/coordinator.py b/homeassistant/components/roborock/coordinator.py index 192a52f925d4a0..4e8a28d29745bc 100644 --- a/homeassistant/components/roborock/coordinator.py +++ b/homeassistant/components/roborock/coordinator.py @@ -10,13 +10,13 @@ from propcache.api import cached_property from roborock import HomeDataRoom -from roborock.code_mappings import RoborockCategory -from roborock.containers import ( +from roborock.data import ( DeviceData, HomeDataDevice, HomeDataProduct, HomeDataScene, NetworkInfo, + RoborockCategory, UserData, ) from roborock.exceptions import RoborockException diff --git a/homeassistant/components/roborock/entity.py b/homeassistant/components/roborock/entity.py index 404f239c93a90b..cfc8a98dfe7572 100644 --- a/homeassistant/components/roborock/entity.py +++ b/homeassistant/components/roborock/entity.py @@ -4,7 +4,7 @@ from roborock.api import RoborockClient from roborock.command_cache import CacheableAttribute -from roborock.containers import Consumable, Status +from roborock.data import Consumable, Status from roborock.exceptions import RoborockException from roborock.roborock_message import RoborockDataProtocol from roborock.roborock_typing import RoborockCommand diff --git a/homeassistant/components/roborock/manifest.json b/homeassistant/components/roborock/manifest.json index 9339f70576b71a..5251713362e934 100644 --- a/homeassistant/components/roborock/manifest.json +++ b/homeassistant/components/roborock/manifest.json @@ -19,7 +19,7 @@ "loggers": ["roborock"], "quality_scale": "silver", "requirements": [ - "python-roborock==2.50.2", + "python-roborock==3.3.3", "vacuum-map-parser-roborock==0.1.4" ] } diff --git a/homeassistant/components/roborock/models.py b/homeassistant/components/roborock/models.py index ab40f23d574b82..53260ff4984365 100644 --- a/homeassistant/components/roborock/models.py +++ b/homeassistant/components/roborock/models.py @@ -4,7 +4,7 @@ from datetime import datetime from typing import Any -from roborock.containers import HomeDataDevice, HomeDataProduct, NetworkInfo +from roborock.data import HomeDataDevice, HomeDataProduct, NetworkInfo from roborock.roborock_typing import DeviceProp from vacuum_map_parser_base.map_data import MapData diff --git a/homeassistant/components/roborock/select.py b/homeassistant/components/roborock/select.py index 4b03e03325b4fe..4d3b7076ae5f15 100644 --- a/homeassistant/components/roborock/select.py +++ b/homeassistant/components/roborock/select.py @@ -4,7 +4,7 @@ from collections.abc import Callable from dataclasses import dataclass -from roborock.code_mappings import RoborockDockDustCollectionModeCode +from roborock.data import RoborockDockDustCollectionModeCode from roborock.roborock_message import RoborockDataProtocol from roborock.roborock_typing import DeviceProp, RoborockCommand diff --git a/homeassistant/components/roborock/sensor.py b/homeassistant/components/roborock/sensor.py index af9391badda751..3c530fd4192ee2 100644 --- a/homeassistant/components/roborock/sensor.py +++ b/homeassistant/components/roborock/sensor.py @@ -6,12 +6,15 @@ from dataclasses import dataclass import datetime -from roborock.code_mappings import DyadError, RoborockDyadStateCode, ZeoError, ZeoState -from roborock.containers import ( +from roborock.data import ( + DyadError, RoborockDockErrorCode, RoborockDockTypeCode, + RoborockDyadStateCode, RoborockErrorCode, RoborockStateCode, + ZeoError, + ZeoState, ) from roborock.roborock_message import ( RoborockDataProtocol, diff --git a/homeassistant/components/roborock/vacuum.py b/homeassistant/components/roborock/vacuum.py index 0de5678ea889a8..8d45686340ea2e 100644 --- a/homeassistant/components/roborock/vacuum.py +++ b/homeassistant/components/roborock/vacuum.py @@ -2,7 +2,7 @@ from typing import Any -from roborock.code_mappings import RoborockStateCode +from roborock.data import RoborockStateCode from roborock.roborock_message import RoborockDataProtocol from roborock.roborock_typing import RoborockCommand import voluptuous as vol diff --git a/requirements_all.txt b/requirements_all.txt index a365a8727dd87d..c617c23cbd38dc 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2565,7 +2565,7 @@ python-rabbitair==0.0.8 python-ripple-api==0.0.3 # homeassistant.components.roborock -python-roborock==2.50.2 +python-roborock==3.3.3 # homeassistant.components.smarttub python-smarttub==0.0.44 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 9c87033b2883b4..86e75d37697fb5 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -2135,7 +2135,7 @@ python-pooldose==0.7.0 python-rabbitair==0.0.8 # homeassistant.components.roborock -python-roborock==2.50.2 +python-roborock==3.3.3 # homeassistant.components.smarttub python-smarttub==0.0.44 diff --git a/script/hassfest/requirements.py b/script/hassfest/requirements.py index f413b15872cc27..f1048b866e22bf 100644 --- a/script/hassfest/requirements.py +++ b/script/hassfest/requirements.py @@ -242,7 +242,6 @@ }, "ring": {"ring-doorbell": {"async-timeout"}}, "rmvtransport": {"pyrmvtransport": {"async-timeout"}}, - "roborock": {"python-roborock": {"async-timeout"}}, "samsungtv": {"async-upnp-client": {"async-timeout"}}, "screenlogic": {"screenlogicpy": {"async-timeout"}}, "sense": {"sense-energy": {"async-timeout"}}, diff --git a/tests/components/roborock/conftest.py b/tests/components/roborock/conftest.py index ea569399ace7a4..25583a186c8b95 100644 --- a/tests/components/roborock/conftest.py +++ b/tests/components/roborock/conftest.py @@ -10,7 +10,7 @@ import pytest from roborock import RoborockCategory, RoomMapping -from roborock.code_mappings import DyadError, RoborockDyadStateCode, ZeoError, ZeoState +from roborock.data import DyadError, RoborockDyadStateCode, ZeoError, ZeoState from roborock.roborock_message import RoborockDyadDataProtocol, RoborockZeoProtocol from roborock.version_a01_apis import RoborockMqttClientA01 diff --git a/tests/components/roborock/mock_data.py b/tests/components/roborock/mock_data.py index 1495dcb686c674..4fba791938b47e 100644 --- a/tests/components/roborock/mock_data.py +++ b/tests/components/roborock/mock_data.py @@ -3,7 +3,7 @@ from __future__ import annotations from PIL import Image -from roborock.containers import ( +from roborock.data import ( CleanRecord, CleanSummary, Consumable, diff --git a/tests/components/roborock/snapshots/test_diagnostics.ambr b/tests/components/roborock/snapshots/test_diagnostics.ambr index bf7fbfaadc399f..52969cec4b3743 100644 --- a/tests/components/roborock/snapshots/test_diagnostics.ambr +++ b/tests/components/roborock/snapshots/test_diagnostics.ambr @@ -213,40 +213,29 @@ 1672543330, 1672458041, ]), - 'squareMeterCleanArea': 1159.2, }), 'consumable': dict({ - 'cleaningBrushTimeLeft': 235, 'cleaningBrushWorkTimes': 65, - 'dustCollectionTimeLeft': 65, 'dustCollectionWorkTimes': 25, 'filterElementWorkTime': 0, - 'filterTimeLeft': 465618, 'filterWorkTime': 74382, - 'mainBrushTimeLeft': 1005618, 'mainBrushWorkTime': 74382, 'sensorDirtyTime': 74382, - 'sensorTimeLeft': 33618, - 'sideBrushTimeLeft': 645618, 'sideBrushWorkTime': 74382, - 'strainerTimeLeft': 85, 'strainerWorkTimes': 65, }), 'lastCleanRecord': dict({ 'area': 20965000, 'avoidCount': 19, 'begin': 1672543330, - 'beginDatetime': '2023-01-01T03:22:10+00:00', 'cleanType': 3, 'complete': 1, 'duration': 1176, 'dustCollectionStatus': 1, 'end': 1672544638, - 'endDatetime': '2023-01-01T03:43:58+00:00', 'error': 0, 'finishReason': 56, 'mapFlag': 0, - 'squareMeterArea': 21.0, 'startType': 2, 'washCount': 2, }), @@ -271,17 +260,7 @@ 'dockType': 3, 'dustCollectionStatus': 0, 'errorCode': 0, - 'errorCodeName': 'none', 'fanPower': 102, - 'fanPowerName': 'balanced', - 'fanPowerOptions': list([ - 'off', - 'quiet', - 'balanced', - 'turbo', - 'max', - 'custom', - ]), 'homeSecEnablePassword': 0, 'homeSecStatus': 0, 'inCleaning': 0, @@ -295,12 +274,9 @@ 'mapStatus': 3, 'mopForbiddenEnable': 1, 'mopMode': 300, - 'mopModeName': 'standard', 'msgSeq': 458, 'msgVer': 2, - 'squareMeterCleanArea': 21.0, 'state': 8, - 'stateName': 'charging', 'switchMapMode': 0, 'unsaveMapFlag': 0, 'unsaveMapReason': 0, @@ -308,7 +284,6 @@ 'washReady': 0, 'waterBoxCarriageStatus': 1, 'waterBoxMode': 203, - 'waterBoxModeName': 'intense', 'waterBoxStatus': 1, 'waterShortageStatus': 0, }), @@ -498,40 +473,29 @@ 1672543330, 1672458041, ]), - 'squareMeterCleanArea': 1159.2, }), 'consumable': dict({ - 'cleaningBrushTimeLeft': 235, 'cleaningBrushWorkTimes': 65, - 'dustCollectionTimeLeft': 65, 'dustCollectionWorkTimes': 25, 'filterElementWorkTime': 0, - 'filterTimeLeft': 465618, 'filterWorkTime': 74382, - 'mainBrushTimeLeft': 1005618, 'mainBrushWorkTime': 74382, 'sensorDirtyTime': 74382, - 'sensorTimeLeft': 33618, - 'sideBrushTimeLeft': 645618, 'sideBrushWorkTime': 74382, - 'strainerTimeLeft': 85, 'strainerWorkTimes': 65, }), 'lastCleanRecord': dict({ 'area': 20965000, 'avoidCount': 19, 'begin': 1672543330, - 'beginDatetime': '2023-01-01T03:22:10+00:00', 'cleanType': 3, 'complete': 1, 'duration': 1176, 'dustCollectionStatus': 1, 'end': 1672544638, - 'endDatetime': '2023-01-01T03:43:58+00:00', 'error': 0, 'finishReason': 56, 'mapFlag': 0, - 'squareMeterArea': 21.0, 'startType': 2, 'washCount': 2, }), @@ -556,17 +520,7 @@ 'dockType': 3, 'dustCollectionStatus': 0, 'errorCode': 0, - 'errorCodeName': 'none', 'fanPower': 102, - 'fanPowerName': 'balanced', - 'fanPowerOptions': list([ - 'off', - 'quiet', - 'balanced', - 'turbo', - 'max', - 'custom', - ]), 'homeSecEnablePassword': 0, 'homeSecStatus': 0, 'inCleaning': 0, @@ -580,12 +534,9 @@ 'mapStatus': 3, 'mopForbiddenEnable': 1, 'mopMode': 300, - 'mopModeName': 'standard', 'msgSeq': 458, 'msgVer': 2, - 'squareMeterCleanArea': 21.0, 'state': 8, - 'stateName': 'charging', 'switchMapMode': 0, 'unsaveMapFlag': 0, 'unsaveMapReason': 0, @@ -593,7 +544,6 @@ 'washReady': 0, 'waterBoxCarriageStatus': 1, 'waterBoxMode': 203, - 'waterBoxModeName': 'intense', 'waterBoxStatus': 1, 'waterShortageStatus': 0, }), diff --git a/tests/components/roborock/test_image.py b/tests/components/roborock/test_image.py index b7c811e0ce2f01..93234d084a65b9 100644 --- a/tests/components/roborock/test_image.py +++ b/tests/components/roborock/test_image.py @@ -8,6 +8,7 @@ from PIL import Image import pytest from roborock import RoborockException +from roborock.data import RoborockStateCode from vacuum_map_parser_base.map_data import ImageConfig, ImageData from homeassistant.components.roborock import DOMAIN @@ -317,7 +318,7 @@ async def test_map_status_change( # Copy the device prop so we don't override it prop = copy.deepcopy(PROP) - prop.status.state_name = "testing" + prop.status.state = RoborockStateCode.docking new_map_data = copy.deepcopy(MAP_DATA) new_map_data.image = ImageData( 100, 10, 10, 10, 10, ImageConfig(), Image.new("RGB", (2, 2)), lambda p: p