Skip to content

Commit dccbe6b

Browse files
committed
feat: add some basic setters for q7
1 parent 0372d41 commit dccbe6b

File tree

2 files changed

+75
-1
lines changed

2 files changed

+75
-1
lines changed

roborock/devices/traits/b01/q7/__init__.py

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
"""Traits for Q7 B01 devices.
22
Potentially other devices may fall into this category in the future."""
33

4+
from typing import Any
5+
46
from roborock import B01Props
7+
from roborock.data.b01_q7.b01_q7_code_mappings import SCWindMapping, WaterLevelMapping
58
from roborock.devices.b01_channel import send_decoded_command
69
from roborock.devices.mqtt_channel import MqttChannel
710
from roborock.devices.traits import Trait
@@ -23,10 +26,30 @@ def __init__(self, channel: MqttChannel) -> None:
2326
async def query_values(self, props: list[RoborockB01Props]) -> B01Props | None:
2427
"""Query the device for the values of the given Q7 properties."""
2528
result = await send_decoded_command(
26-
self._channel, dps=10000, command=RoborockB01Q7Methods.GET_PROP, params={"property": props}
29+
self._channel,
30+
dps=10000,
31+
command=RoborockB01Q7Methods.GET_PROP,
32+
params={"property": props},
2733
)
2834
return B01Props.from_dict(result)
2935

36+
async def set_prop(self, prop: RoborockB01Props, value: Any) -> dict[str, Any]:
37+
"""Set a property on the device."""
38+
return await send_decoded_command(
39+
self._channel,
40+
dps=10000,
41+
command=RoborockB01Q7Methods.SET_PROP,
42+
params={prop: value},
43+
)
44+
45+
async def set_fan_speed(self, fan_speed: SCWindMapping) -> dict[str, Any]:
46+
"""Set the fan speed (wind)."""
47+
return await self.set_prop(RoborockB01Props.WIND, fan_speed.code)
48+
49+
async def set_water_level(self, water_level: WaterLevelMapping) -> dict[str, Any]:
50+
"""Set the water level (water)."""
51+
return await self.set_prop(RoborockB01Props.WATER, water_level.code)
52+
3053

3154
def create(channel: MqttChannel) -> Q7PropertiesApi:
3255
"""Create traits for B01 devices."""

roborock/roborock_typing.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,57 @@ class RoborockCommand(str, Enum):
280280
class RoborockB01Q7Methods(StrEnum):
281281
"""Methods used by the Roborock Q7 model."""
282282

283+
ADD_CLEAN_FAILED_POST = "add_clean_failed.post"
284+
CLEAN_FINISH_POST = "clean_finish.post"
285+
EVENT_BUILD_MAP_FINISH_POST = "event.BuildMapFinish.post"
286+
EVENT_MAP_CHANGE_POST = "event.map_change.post"
287+
EVENT_TYPE = "event.type"
288+
EVENT_WORK_APPOINT_CLEAN_FAILED_POST = "event.work_appoint_clean_failed.post"
289+
START_CLEAN_POST = "startClean.post"
290+
ADD_ORDER = "service.add_order"
291+
ADD_SWEEP_CLEAN = "service.add_sweep_clean"
292+
ARRANGE_ROOM = "service.arrange_room"
293+
DEL_MAP = "service.del_map"
294+
DEL_ORDER = "service.del_order"
295+
DEL_ORDERS = "service.del_orders"
296+
DELETE_RECORD_BY_URL = "service.delete_record_by_url"
297+
DOWNLOAD_VOICE_TYPE = "service.download_voice_type"
298+
ERASE_PREFERENCE = "service.erase_preference"
299+
FIND_DEVICE = "service.find_device"
300+
GET_ROOM_ORDER = "service.get_room_order"
301+
GET_VOICE_DOWNLOAD = "service.get_voice_download"
302+
HELLO_WIKKA = "service.hello_wikka"
303+
RENAME_MAP = "service.rename_map"
304+
RENAME_ROOM = "service.rename_room"
305+
RENAME_ROOMS = "service.rename_rooms"
306+
REPLACE_MAP = "service.replace_map"
307+
RESET_CONSUMABLE = "service.reset_consumable"
308+
SAVE_CARPET = "service.save_carpet"
309+
SAVE_RECOMMEND_FB = "service.save_recommend_fb"
310+
SAVE_SILL = "service.save_sill"
311+
SET_AREA_START = "service.set_area_start"
312+
SET_AREAS_START = "service.set_areas_start"
313+
SET_CUR_MAP = "service.set_cur_map"
314+
SET_DIRECTION = "service.set_direction"
315+
SET_GLOBAL_SORT = "service.set_global_sort"
316+
SET_MAP_HIDE = "service.set_map_hide"
317+
SET_MULTI_ROOM_MATERIAL = "service.set_multi_room_material"
318+
SET_POINT_CLEAN = "service.set_point_clean"
319+
SET_PREFERENCE = "service.set_preference"
320+
SET_PREFERENCE_TYPE = "service.set_preference_type"
321+
SET_QUIET_TIME = "service.set_quiet_time"
322+
SET_ROOM_CLEAN = "service.set_room_clean"
323+
SET_ROOM_ORDER = "service.set_room_order"
324+
SET_VIRTUAL_WALL = "service.set_virtual_wall"
325+
SET_ZONE_CLEAN = "service.set_zone_clean"
326+
SET_ZONE_POINTS = "service.set_zone_points"
327+
SPLIT_ROOM = "service.split_room"
328+
START_EXPLORE = "service.start_explore"
329+
START_POINT_CLEAN = "service.start_point_clean"
330+
START_RECHARGE = "service.start_recharge"
331+
STOP_RECHARGE = "service.stop_recharge"
332+
UPLOAD_BY_MAPID = "service.upload_by_mapid"
333+
UPLOAD_RECORD_BY_URL = "service.upload_record_by_url"
283334
GET_PROP = "prop.get"
284335
GET_MAP_LIST = "service.get_map_list"
285336
UPLOAD_BY_MAPTYPE = "service.upload_by_maptype"

0 commit comments

Comments
 (0)