Skip to main content

Deebot client library in python 3

Project description

Client Library for Deebot devices (Vacuums)

PyPI - Downloads Buy Me A Coffee

IMPORTANT: Contribution only

This project is maintained in our spare time. Please be patient and respectful.

It's not related to Ecovacs or Deebot and we don't get any support from them.

As all is reverse engineered it might take some time to add new features and we can't guarantee that all features will be added.

Unfortunately some people think we are paid to do this and get angry if things don't work as they expect. As result of this, we decided that this project is in a contribution only mode.

This means, if you want something to be supported/added, you have to provide a fix yourself, wait for someone else to fix it or pay someone to do it. Members will still review and help on pull requests.

Installation

If you have a recent version of Python 3, you should be able to do pip install deebot-client to get the most recently released version of this.

Usage

To get started, you'll need to have already set up an EcoVacs account using your smartphone.

You are welcome to try using this as a python library for other efforts. A simple usage might go something like this:

import aiohttp
import asyncio
import logging
import time

from deebot_client.api_client import ApiClient
from deebot_client.authentication import Authenticator, create_rest_config
from deebot_client.commands.json.clean import Clean, CleanAction
from deebot_client.events import BatteryEvent
from deebot_client.mqtt_client import MqttClient, create_mqtt_config
from deebot_client.util import md5
from deebot_client.device import Device

device_id = md5(str(time.time()))
account_id = "your email or phonenumber (cn)"
password_hash = md5("yourPassword")
country = "DE"


async def main():
  async with aiohttp.ClientSession() as session:
    logging.basicConfig(level=logging.DEBUG)
    rest_config = create_rest_config(session, device_id=device_id, alpha_2_country=country)

    authenticator = Authenticator(rest_config, account_id, password_hash)
    api_client = ApiClient(authenticator)

    devices_ = await api_client.get_devices()

    bot = Device(devices_.mqtt[0], authenticator)

    mqtt_config = create_mqtt_config(device_id=device_id, country=country)
    mqtt = MqttClient(mqtt_config, authenticator)
    await bot.initialize(mqtt)

    async def on_battery(event: BatteryEvent):
      # Do stuff on battery event
      if event.value == 100:
        # Battery full
        pass

    # Subscribe for events (more events available)
    bot.events.subscribe(BatteryEvent, on_battery)

    # Execute commands
    await bot.execute_command(Clean(CleanAction.START))
    await asyncio.sleep(900)  # Wait for...
    await bot.execute_command(Charge())


if __name__ == '__main__':
  loop = asyncio.get_event_loop()
  loop.create_task(main())
  loop.run_forever()

A more advanced example can be found here.

Note for Windows users

This library cannot be used out of the box with Windows due a limitation in the requirement aiomqtt. More information and a workaround can be found here

Thanks

My heartfelt thanks to:

  • deebotozmo, After all, this is a debotozmo fork :)
  • sucks, deebotozmo was forked from it :)
  • xmpppeek, a great library for examining XMPP traffic flows ( yes, your vacuum speaks Jabber!),
  • mitmproxy, a fantastic tool for analyzing HTTPS,
  • click, a wonderfully complete and thoughtful library for making Python command-line interfaces,
  • requests, a polished Python library for HTTP requests,
  • Decompilers online, which was very helpful in figuring out what the Android app was up to,
  • Albert Louw, who was kind enough to post code from his own experiments with his device, and
  • All the users who have given useful feedback and contributed code!

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

deebot_client-18.2.0.tar.gz (227.7 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

deebot_client-18.2.0-cp314-cp314-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.14Windows x86-64

deebot_client-18.2.0-cp314-cp314-musllinux_1_2_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

deebot_client-18.2.0-cp314-cp314-musllinux_1_2_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

deebot_client-18.2.0-cp314-cp314-manylinux_2_34_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ x86-64

deebot_client-18.2.0-cp314-cp314-manylinux_2_34_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ ARM64

deebot_client-18.2.0-cp314-cp314-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

deebot_client-18.2.0-cp314-cp314-macosx_10_12_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

File details

Details for the file deebot_client-18.2.0.tar.gz.

File metadata

  • Download URL: deebot_client-18.2.0.tar.gz
  • Upload date:
  • Size: 227.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for deebot_client-18.2.0.tar.gz
Algorithm Hash digest
SHA256 a3a14bf27612b2126eb20cbc839760d61992f73cd9eb1b333eb9312ebfd85c89
MD5 018d37e0332651490e7747edfb1affc7
BLAKE2b-256 f06b817313af3b6eb854dad75e59a5f3d80e4598f73b3ccb787236c693b2a460

See more details on using hashes here.

Provenance

The following attestation bundles were made for deebot_client-18.2.0.tar.gz:

Publisher: ci.yml on DeebotUniverse/client.py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file deebot_client-18.2.0-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for deebot_client-18.2.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 baa96a60ab78575633c595060cb1c91e2a20394b762dd09e6496112ae5b8518d
MD5 4de55a9d00f8cd449d730eb24cad09d1
BLAKE2b-256 98e71fc09177000cd0e1c2f495549dcd4bf85e1ee324c2ced02a0ec15feec8f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for deebot_client-18.2.0-cp314-cp314-win_amd64.whl:

Publisher: ci.yml on DeebotUniverse/client.py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file deebot_client-18.2.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for deebot_client-18.2.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fde8269c41031d60640fb378a4bdfe3b4e61eba407846e0bcc2341dcaae32c06
MD5 cd58d68fc6c49316a82d3625cfebb1bd
BLAKE2b-256 2c38f6a9f6fce3fe641ac2a78c5484c41c1a08aba7b97ff4f0e97e3d67162709

See more details on using hashes here.

Provenance

The following attestation bundles were made for deebot_client-18.2.0-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: ci.yml on DeebotUniverse/client.py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file deebot_client-18.2.0-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for deebot_client-18.2.0-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b82b4224a1a9cecc4f5545725f2c954452c5f208215c629371b7b9d69fd7b879
MD5 86e82e57b643056397e484803487e26c
BLAKE2b-256 43740e47be511be77a15add89be4fb244164a8a7499d1a8dd718c558d4cb762b

See more details on using hashes here.

Provenance

The following attestation bundles were made for deebot_client-18.2.0-cp314-cp314-musllinux_1_2_aarch64.whl:

Publisher: ci.yml on DeebotUniverse/client.py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file deebot_client-18.2.0-cp314-cp314-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for deebot_client-18.2.0-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 1ceb3a19d61345c3d8cbfe94d0a9ef47f2736b71e386266f0e1b835f21c5b410
MD5 57614433bbd977ae53e9a45335f822c1
BLAKE2b-256 2292dc17ebc8b4ebff0d213bd65fb1136996c03db1e9485c723898a2a1c69175

See more details on using hashes here.

Provenance

The following attestation bundles were made for deebot_client-18.2.0-cp314-cp314-manylinux_2_34_x86_64.whl:

Publisher: ci.yml on DeebotUniverse/client.py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file deebot_client-18.2.0-cp314-cp314-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for deebot_client-18.2.0-cp314-cp314-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 3bd38ecd21c570d461c03150e13ef33b97dafc30ed08ae5ed4010fffa0ebfcc9
MD5 df87b101492fc0a804a1db659149cb7a
BLAKE2b-256 93d867feff36da3812131629ed57ce22db431517167b208fd06c30f8a3725cf2

See more details on using hashes here.

Provenance

The following attestation bundles were made for deebot_client-18.2.0-cp314-cp314-manylinux_2_34_aarch64.whl:

Publisher: ci.yml on DeebotUniverse/client.py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file deebot_client-18.2.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for deebot_client-18.2.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 16003930eeaa87521c99ef994da7e2415600127750ddd365718d3d6dbc88792c
MD5 c8550a794c8968dd9dc98925d2156cd5
BLAKE2b-256 fee06b5cc42a3a9b3530fc9afb9f915a1da01511f02229824f2fda9ea6f93dda

See more details on using hashes here.

Provenance

The following attestation bundles were made for deebot_client-18.2.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: ci.yml on DeebotUniverse/client.py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file deebot_client-18.2.0-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for deebot_client-18.2.0-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 24b489c6f81802fc215602c3366378fcf04176be49f1fffa9d5310c3616fddc7
MD5 4f0498a9486613af8d4eb65e10c319b9
BLAKE2b-256 07e61937a3065b22d87f0519d90583e09840208bff5e9c30f9f1696ff0471e30

See more details on using hashes here.

Provenance

The following attestation bundles were made for deebot_client-18.2.0-cp314-cp314-macosx_10_12_x86_64.whl:

Publisher: ci.yml on DeebotUniverse/client.py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page