Skip to content

Commit aa3e6e4

Browse files
feat: add room mapping (#41)
* feat: add room mapping * fix: lint * chore: move room mapping to super class client * chore: linting * Update roborock/api.py Co-authored-by: Humberto Gontijo <[email protected]> --------- Co-authored-by: Humberto Gontijo <[email protected]>
1 parent 2fef937 commit aa3e6e4

File tree

3 files changed

+18
-1
lines changed

3 files changed

+18
-1
lines changed

roborock/api.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
MultiMapsList,
3232
NetworkInfo,
3333
RoborockDeviceInfo,
34+
RoomMapping,
3435
SmartWashParams,
3536
Status,
3637
UserData,
@@ -318,6 +319,16 @@ async def get_networking(self, device_id) -> NetworkInfo | None:
318319
_LOGGER.error(e)
319320
return None
320321

322+
async def get_room_mapping(self, device_id: str) -> list[RoomMapping]:
323+
"""Gets the mapping from segment id -> iot id. Only works on local api."""
324+
mapping = await self.send_command(device_id, RoborockCommand.GET_ROOM_MAPPING)
325+
if isinstance(mapping, list):
326+
return [
327+
RoomMapping(segment_id, iot_id)
328+
for segment_id, iot_id in [unpack_list(room, 2) for room in mapping]
329+
]
330+
return []
331+
321332

322333
class RoborockApiClient:
323334
def __init__(self, username: str, base_url=None) -> None:

roborock/containers.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,3 +341,9 @@ class RoborockDeviceInfo(RoborockBase):
341341
@dataclass
342342
class RoborockLocalDeviceInfo(RoborockDeviceInfo):
343343
network_info: NetworkInfo
344+
345+
346+
@dataclass
347+
class RoomMapping(RoborockBase):
348+
segment_id: int
349+
iot_id: str

roborock/local_api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
import async_timeout
1010

11-
from .api import SPECIAL_COMMANDS, RoborockClient, QUEUE_TIMEOUT
11+
from .api import QUEUE_TIMEOUT, SPECIAL_COMMANDS, RoborockClient
1212
from .containers import RoborockLocalDeviceInfo
1313
from .exceptions import CommandVacuumError, RoborockConnectionException, RoborockException
1414
from .roborock_message import RoborockMessage, RoborockParser

0 commit comments

Comments
 (0)