Roborock
Roborock library for online and offline control of your vacuums.
Installation
Install this via pip (or your favourite package manager):
pip install python-roborock
Functionality
You can see all of the commands supported here
Sending Commands
Here is an example that requires no manual intervention and can be done all automatically. You can skip some steps by
caching values or looking at them and grabbing them manually.
import asyncio
from roborock import HomeDataProduct, DeviceData, RoborockCommand
from roborock.version_1_apis import RoborockMqttClientV1, RoborockLocalClientV1
from roborock.web_api import RoborockApiClient
async def main():
web_api = RoborockApiClient(username="youremailhere")
user_data = await web_api.pass_login(password="pass_here")
await web_api.request_code()
code = input("What is the code?")
user_data = await web_api.code_login(code)
home_data = await web_api.get_home_data_v2(user_data)
device = home_data.devices[0]
product_info: dict[str, HomeDataProduct] = {
product.id: product for product in home_data.products
}
device_data = DeviceData(device, product_info[device.product_id].model)
mqtt_client = RoborockMqttClientV1(user_data, device_data)
networking = await mqtt_client.get_networking()
local_device_data = DeviceData(device, product_info[device.product_id].model, networking.ip)
local_client = RoborockLocalClientV1(local_device_data)
status = await local_client.send_command(RoborockCommand.GET_STATUS)
status = await local_client.get_status()
asyncio.run(main())
Supported devices
You can find what devices are supported
here.
Please note this may not immediately contain the latest devices.
Credits
Thanks @rovo89 for https://gist.github.com/rovo89/dff47ed19fca0dfdda77503e66c2b7c7 And thanks @PiotrMachowski for https://github.com/PiotrMachowski/Home-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor