Skip to content

Commit 5fef26d

Browse files
feat: single device api and discovery method
1 parent 5a32932 commit 5fef26d

File tree

3 files changed

+13
-4
lines changed

3 files changed

+13
-4
lines changed

mypy.ini

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
[mypy]
22
check_untyped_defs = True
3-
exclude = cli.py
3+
4+
[mypy-construct]
5+
ignore_missing_imports = True

roborock/cli.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ async def _discover(ctx):
8383
home_data = await client.get_home_data(login_data.user_data)
8484
context.update(LoginData(**login_data.as_dict(), home_data=home_data))
8585
click.echo(
86-
f"Discovered devices {', '.join([device.name for device in home_data.devices + home_data.received_devices])}"
86+
f"Discovered devices {', '.join([device.name for device in home_data.get_all_devices()])}"
8787
)
8888

8989

@@ -123,8 +123,7 @@ async def command(ctx, cmd, device_id, params):
123123
await _discover(ctx)
124124
login_data = context.login_data()
125125
home_data = login_data.home_data
126-
devices = home_data.devices + home_data.received_devices
127-
device = next((device for device in devices if device.duid == device_id), None)
126+
device = next((device for device in home_data.get_all_devices() if device.duid == device_id))
128127
device_info = RoborockDeviceInfo(device=device)
129128
mqtt_client = RoborockMqttClient(login_data.user_data, device_info)
130129
await mqtt_client.send_command(cmd, params)

roborock/containers.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,14 @@ class HomeData(RoborockBase):
177177
received_devices: Optional[list[HomeDataDevice]] = None
178178
rooms: Optional[list[HomeDataRoom]] = None
179179

180+
def get_all_devices(self) -> list[HomeDataDevice]:
181+
devices = []
182+
if self.devices is not None:
183+
devices += self.devices
184+
if self.received_devices is not None:
185+
devices += self.received_devices
186+
return devices
187+
180188

181189
@dataclass
182190
class LoginData(RoborockBase):

0 commit comments

Comments
 (0)