Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

python-roborock

Package Overview
Dependencies
Maintainers
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

python-roborock

A package to control Roborock vacuums.

  • 2.7.2
  • PyPI
  • Socket score

Maintainers
2

Roborock

PyPI Version Supported Python versions License

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")
    # Login via your password
    user_data = await web_api.pass_login(password="pass_here")
    # Or login via a code
    await web_api.request_code()
    code = input("What is the code?")
    user_data = await web_api.code_login(code)

    # Get home data
    home_data = await web_api.get_home_data_v2(user_data)

    # Get the device you want
    device = home_data.devices[0]

    # Get product ids:
    product_info: dict[str, HomeDataProduct] = {
            product.id: product for product in home_data.products
        }
    # Create the Mqtt(aka cloud required) Client
    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)
    local_client = RoborockLocalClientV1(local_device_data)
    # You can use the send_command to send any command to the device
    status = await local_client.send_command(RoborockCommand.GET_STATUS)
    # Or use existing functions that will give you data classes
    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

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc