deebot-client


Namedeebot-client JSON
Version 6.0.2 PyPI version JSON
download
home_page
SummaryDeebot client library in python 3
upload_time2024-02-26 18:21:45
maintainer
docs_urlNone
author
requires_python>=3.11.0
licenseGPL-3.0
keywords home automation homeassistant vacuum robot deebot ecovacs
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            # Client Library for Deebot devices (Vacuums)

[![PyPI - Downloads](https://img.shields.io/pypi/dw/deebot-client?style=for-the-badge)](https://pypi.org/project/deebot-client)
<a href="https://www.buymeacoffee.com/edenhaus" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/default-black.png" width="150px" height="35px" alt="Buy Me A Coffee" style="height: 35px !important;width: 150px !important;" ></a>

## 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:

```python
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 import *
from deebot_client.commands.clean import 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, country=country)

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

    devices_ = await api_client.get_devices()

    bot = Device(devices_[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](https://github.com/And3rsL/Deebot-for-Home-Assistant).

### 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](https://github.com/sbtinstruments/aiomqtt#note-for-windows-users)

## Thanks

My heartfelt thanks to:

- [deebotozmo](https://github.com/And3rsL/Deebotozmo), After all, this is a debotozmo fork :)
- [sucks](https://github.com/wpietri/sucks), deebotozmo was forked from it :)
- [xmpppeek](https://www.beneaththewaves.net/Software/XMPPPeek.html), a great library for examining XMPP traffic flows (
  yes, your vacuum speaks Jabber!),
- [mitmproxy](https://mitmproxy.org/), a fantastic tool for analyzing HTTPS,
- [click](http://click.pocoo.org/), a wonderfully complete and thoughtful library for making Python command-line
  interfaces,
- [requests](http://docs.python-requests.org/en/master/), a polished Python library for HTTP requests,
- [Decompilers online](http://www.javadecompilers.com/apk), 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](https://community.smartthings.com/t/ecovacs-deebot-n79/93410/33)
  with his device, and
- All the users who have given useful feedback and contributed code!

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "deebot-client",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.11.0",
    "maintainer_email": "",
    "keywords": "home,automation,homeassistant,vacuum,robot,deebot,ecovacs",
    "author": "",
    "author_email": "Robert Resch <robert@resch.dev>",
    "download_url": "https://files.pythonhosted.org/packages/f6/a1/0bdfd6eec185fb1f14749185efb43e05854cdb9f46d15b9d741a5e15f41e/deebot-client-6.0.2.tar.gz",
    "platform": null,
    "description": "# Client Library for Deebot devices (Vacuums)\n\n[![PyPI - Downloads](https://img.shields.io/pypi/dw/deebot-client?style=for-the-badge)](https://pypi.org/project/deebot-client)\n<a href=\"https://www.buymeacoffee.com/edenhaus\" target=\"_blank\"><img src=\"https://cdn.buymeacoffee.com/buttons/default-black.png\" width=\"150px\" height=\"35px\" alt=\"Buy Me A Coffee\" style=\"height: 35px !important;width: 150px !important;\" ></a>\n\n## Installation\n\nIf you have a recent version of Python 3, you should be able to\ndo `pip install deebot-client` to get the most recently released version of\nthis.\n\n## Usage\n\nTo get started, you'll need to have already set up an EcoVacs account\nusing your smartphone.\n\nYou are welcome to try using this as a python library for other efforts.\nA simple usage might go something like this:\n\n```python\nimport aiohttp\nimport asyncio\nimport logging\nimport time\n\nfrom deebot_client.api_client import ApiClient\nfrom deebot_client.authentication import Authenticator, create_rest_config\nfrom deebot_client.commands import *\nfrom deebot_client.commands.clean import CleanAction\nfrom deebot_client.events import BatteryEvent\nfrom deebot_client.mqtt_client import MqttClient, create_mqtt_config\nfrom deebot_client.util import md5\nfrom deebot_client.device import Device\n\ndevice_id = md5(str(time.time()))\naccount_id = \"your email or phonenumber (cn)\"\npassword_hash = md5(\"yourPassword\")\ncountry = \"de\"\n\n\nasync def main():\n  async with aiohttp.ClientSession() as session:\n    logging.basicConfig(level=logging.DEBUG)\n    rest_config = create_rest_config(session, device_id=device_id, country=country)\n\n    authenticator = Authenticator(rest_config, account_id, password_hash)\n    api_client = ApiClient(authenticator)\n\n    devices_ = await api_client.get_devices()\n\n    bot = Device(devices_[0], authenticator)\n\n    mqtt_config = create_mqtt_config(device_id=device_id, country=country)\n    mqtt = MqttClient(mqtt_config, authenticator)\n    await bot.initialize(mqtt)\n\n    async def on_battery(event: BatteryEvent):\n      # Do stuff on battery event\n      if event.value == 100:\n        # Battery full\n        pass\n\n    # Subscribe for events (more events available)\n    bot.events.subscribe(BatteryEvent, on_battery)\n\n    # Execute commands\n    await bot.execute_command(Clean(CleanAction.START))\n    await asyncio.sleep(900)  # Wait for...\n    await bot.execute_command(Charge())\n\n\nif __name__ == '__main__':\n  loop = asyncio.get_event_loop()\n  loop.create_task(main())\n  loop.run_forever()\n```\n\nA more advanced example can be found [here](https://github.com/And3rsL/Deebot-for-Home-Assistant).\n\n### Note for Windows users\n\nThis library cannot be used out of the box with Windows due a limitation in the requirement `aiomqtt`.\nMore information and a workaround can be found [here](https://github.com/sbtinstruments/aiomqtt#note-for-windows-users)\n\n## Thanks\n\nMy heartfelt thanks to:\n\n- [deebotozmo](https://github.com/And3rsL/Deebotozmo), After all, this is a debotozmo fork :)\n- [sucks](https://github.com/wpietri/sucks), deebotozmo was forked from it :)\n- [xmpppeek](https://www.beneaththewaves.net/Software/XMPPPeek.html), a great library for examining XMPP traffic flows (\n  yes, your vacuum speaks Jabber!),\n- [mitmproxy](https://mitmproxy.org/), a fantastic tool for analyzing HTTPS,\n- [click](http://click.pocoo.org/), a wonderfully complete and thoughtful library for making Python command-line\n  interfaces,\n- [requests](http://docs.python-requests.org/en/master/), a polished Python library for HTTP requests,\n- [Decompilers online](http://www.javadecompilers.com/apk), which was very helpful in figuring out what the Android app\n  was up to,\n- Albert Louw, who was kind enough to post code\n  from [his own experiments](https://community.smartthings.com/t/ecovacs-deebot-n79/93410/33)\n  with his device, and\n- All the users who have given useful feedback and contributed code!\n",
    "bugtrack_url": null,
    "license": "GPL-3.0",
    "summary": "Deebot client library in python 3",
    "version": "6.0.2",
    "project_urls": {
        "Bug Reports": "https://github.com/DeebotUniverse/client.py/issues",
        "Homepage": "https://deebot.readthedocs.io/",
        "Source Code": "https://github.com/DeebotUniverse/client.py"
    },
    "split_keywords": [
        "home",
        "automation",
        "homeassistant",
        "vacuum",
        "robot",
        "deebot",
        "ecovacs"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c63ab49cee4c8417cc51745c7bedb15737e59a5a6d38bf87ce0a0b8c1b8a2c0a",
                "md5": "3260d7f9f9fd1c0a8777599dfe04c2c6",
                "sha256": "fffd7eb5a9c64b6ec821496b81dce5680a80a47c902f0c0c74cac4bebf392fae"
            },
            "downloads": -1,
            "filename": "deebot_client-6.0.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "3260d7f9f9fd1c0a8777599dfe04c2c6",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.11.0",
            "size": 119922,
            "upload_time": "2024-02-26T18:21:42",
            "upload_time_iso_8601": "2024-02-26T18:21:42.209863Z",
            "url": "https://files.pythonhosted.org/packages/c6/3a/b49cee4c8417cc51745c7bedb15737e59a5a6d38bf87ce0a0b8c1b8a2c0a/deebot_client-6.0.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f6a10bdfd6eec185fb1f14749185efb43e05854cdb9f46d15b9d741a5e15f41e",
                "md5": "ebc7f942acb5273abce4caa201872e9e",
                "sha256": "ecbe8f9dfe3544683936523f178a3d838c1592a5f459cb4868f4e525469cdf8a"
            },
            "downloads": -1,
            "filename": "deebot-client-6.0.2.tar.gz",
            "has_sig": false,
            "md5_digest": "ebc7f942acb5273abce4caa201872e9e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.11.0",
            "size": 108262,
            "upload_time": "2024-02-26T18:21:45",
            "upload_time_iso_8601": "2024-02-26T18:21:45.998548Z",
            "url": "https://files.pythonhosted.org/packages/f6/a1/0bdfd6eec185fb1f14749185efb43e05854cdb9f46d15b9d741a5e15f41e/deebot-client-6.0.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-02-26 18:21:45",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "DeebotUniverse",
    "github_project": "client.py",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "requirements": [],
    "lcname": "deebot-client"
}
        
Elapsed time: 0.27427s