Skip to content

Commit ca4cc37

Browse files
committed
feature: add cli status
1 parent 7631992 commit ca4cc37

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

roborock/cli.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,10 @@
1111
from pyshark.packet.packet import Packet # type: ignore
1212

1313
from roborock import RoborockException
14-
from roborock.containers import DeviceData, LoginData
14+
from roborock.containers import DeviceData, HomeDataProduct, LoginData
1515
from roborock.protocol import MessageParser
1616
from roborock.util import run_sync
17+
from roborock.version_1_apis.roborock_local_client_v1 import RoborockLocalClientV1
1718
from roborock.version_1_apis.roborock_mqtt_client_v1 import RoborockMqttClientV1
1819
from roborock.web_api import RoborockApiClient
1920

@@ -145,6 +146,29 @@ async def execute_scene(ctx, scene_id):
145146
await client.execute_scene(login_data.user_data, scene_id)
146147

147148

149+
@click.command()
150+
@click.option("--device_id", required=True)
151+
@click.pass_context
152+
@run_sync()
153+
async def status(ctx, device_id):
154+
context: RoborockContext = ctx.obj
155+
login_data = context.login_data()
156+
if not login_data.home_data:
157+
await _discover(ctx)
158+
login_data = context.login_data()
159+
home_data = login_data.home_data
160+
devices = home_data.devices + home_data.received_devices
161+
device = next(device for device in devices if device.duid == device_id)
162+
product_info: dict[str, HomeDataProduct] = {product.id: product for product in home_data.products}
163+
device_data = DeviceData(device, product_info[device.product_id].model)
164+
mqtt_client = RoborockMqttClientV1(login_data.user_data, device_data)
165+
networking = await mqtt_client.get_networking()
166+
local_device_data = DeviceData(device, product_info[device.product_id].model, networking.ip)
167+
local_client = RoborockLocalClientV1(local_device_data)
168+
status = await local_client.get_status()
169+
click.echo(json.dumps(status.as_dict(), indent=4))
170+
171+
148172
@click.command()
149173
@click.option("--device_id", required=True)
150174
@click.option("--cmd", required=True)
@@ -226,6 +250,7 @@ def on_package(packet: Packet):
226250
cli.add_command(list_devices)
227251
cli.add_command(list_scenes)
228252
cli.add_command(execute_scene)
253+
cli.add_command(status)
229254
cli.add_command(command)
230255
cli.add_command(parser)
231256

0 commit comments

Comments
 (0)