Skip to content

Commit 6310714

Browse files
Merge pull request #17 from Lash-L/dock_fix
fix: bug with dock commands
2 parents 3d650ea + 2f2cfb6 commit 6310714

File tree

3 files changed

+41
-10
lines changed

3 files changed

+41
-10
lines changed

roborock/api.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -446,11 +446,11 @@ async def get_consumable(self, device_id: str) -> Consumable:
446446

447447
async def get_washing_mode(self, device_id: str) -> RoborockDockWashingModeType:
448448
washing_mode = await self.send_command(device_id, RoborockCommand.GET_WASH_TOWEL_MODE)
449-
return WASH_MODE_MAP.get(washing_mode)
449+
return WASH_MODE_MAP.get(washing_mode['wash_mode'])
450450

451451
async def get_dust_collection_mode(self, device_id: str) -> RoborockDockDustCollectionType:
452452
dust_collection = await self.send_command(device_id, RoborockCommand.GET_DUST_COLLECTION_MODE)
453-
return DUST_COLLECTION_MAP.get(dust_collection)
453+
return DUST_COLLECTION_MAP.get(dust_collection['mode'])
454454

455455
async def get_mop_wash_mode(self, device_id: str) -> SmartWashParameters:
456456
mop_wash_mode = await self.send_command(device_id, RoborockCommand.GET_SMART_WASH_PARAMS)

roborock/code_mappings.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,8 @@ class RoborockDockType(str, Enum):
1414

1515
class RoborockDockDustCollectionType(str, Enum):
1616
SMART = "smart"
17-
QUICK = "quick"
18-
DAILY = "daily"
19-
STRONG = "strong"
17+
LIGHT = "light"
18+
BALANCED = "balanced"
2019
MAX = "max"
2120

2221

@@ -120,9 +119,8 @@ class RoborockDockWashingModeType(str, Enum):
120119

121120
DUST_COLLECTION_MAP = {
122121
0: RoborockDockDustCollectionType.SMART,
123-
1: RoborockDockDustCollectionType.QUICK,
124-
2: RoborockDockDustCollectionType.DAILY,
125-
3: RoborockDockDustCollectionType.STRONG,
122+
1: RoborockDockDustCollectionType.LIGHT,
123+
2: RoborockDockDustCollectionType.BALANCED,
126124
4: RoborockDockDustCollectionType.MAX,
127125
}
128126

tests/test_api.py

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
import paho.mqtt.client as mqtt
44
import pytest
55

6-
from roborock import RoborockClient, UserData, HomeData
6+
from roborock import RoborockClient, UserData, HomeData, RoborockDockDustCollectionType, SmartWashParameters, \
7+
RoborockDockWashingModeType
78
from roborock.api import PreparedRequest, RoborockMqttClient
89
from tests.mock_data import BASE_URL_REQUEST, GET_CODE_RESPONSE, USER_DATA, HOME_DATA_RAW
910

@@ -50,7 +51,7 @@ async def test_request_code():
5051
async def test_get_home_data():
5152
rc = RoborockClient("sample@gmail.com")
5253
with patch("roborock.api.RoborockClient._get_base_url") as mock_url, patch(
53-
"roborock.api.RoborockClient._get_header_client_id") as mock_header_client, patch(
54+
"roborock.api.RoborockClient._get_header_client_id") as mock_header_client, patch(
5455
"roborock.api.PreparedRequest.request") as mock_prepared_request:
5556
mock_prepared_request.side_effect = [{'code': 200, 'msg': 'success', 'data': {"rrHomeId": 1}},
5657
{'code': 200, 'success': True, 'result': HOME_DATA_RAW}]
@@ -59,3 +60,35 @@ async def test_get_home_data():
5960
result = await rc.get_home_data(user_data)
6061

6162
assert result == HomeData(HOME_DATA_RAW)
63+
64+
65+
@pytest.mark.asyncio
66+
async def test_get_dust_collection_mode():
67+
home_data = HomeData(HOME_DATA_RAW)
68+
device_map = {home_data.devices[0].duid: home_data.devices[0]}
69+
rmc = RoborockMqttClient(UserData(USER_DATA), device_map)
70+
with patch("roborock.api.RoborockMqttClient.send_command") as command:
71+
command.return_value = {"mode": 1}
72+
assert await rmc.get_dust_collection_mode(home_data.devices[0].duid) == RoborockDockDustCollectionType.LIGHT
73+
74+
75+
@pytest.mark.asyncio
76+
async def test_get_mop_wash_mode():
77+
home_data = HomeData(HOME_DATA_RAW)
78+
device_map = {home_data.devices[0].duid: home_data.devices[0]}
79+
rmc = RoborockMqttClient(UserData(USER_DATA), device_map)
80+
with patch("roborock.api.RoborockMqttClient.send_command") as command:
81+
command.return_value = {'smart_wash': 0, 'wash_interval': 1500}
82+
mop_wash = await rmc.get_mop_wash_mode(home_data.devices[0].duid)
83+
assert mop_wash.smart_wash == 0
84+
assert mop_wash.wash_interval == 1500
85+
86+
87+
@pytest.mark.asyncio
88+
async def test_get_washing_mode():
89+
home_data = HomeData(HOME_DATA_RAW)
90+
device_map = {home_data.devices[0].duid: home_data.devices[0]}
91+
rmc = RoborockMqttClient(UserData(USER_DATA), device_map)
92+
with patch("roborock.api.RoborockMqttClient.send_command") as command:
93+
command.return_value = {'wash_mode': 2}
94+
assert await rmc.get_washing_mode(home_data.devices[0].duid) == RoborockDockWashingModeType.DEEP

0 commit comments

Comments
 (0)