deebot-client


Namedeebot-client JSON
Version 7.0.0 PyPI version JSON
download
home_pageNone
SummaryDeebot client library in python 3
upload_time2024-04-23 08:39:07
maintainerNone
docs_urlNone
authorNone
requires_python>=3.12.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.json.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, 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_[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": null,
    "name": "deebot-client",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.12.0",
    "maintainer_email": null,
    "keywords": "home, automation, homeassistant, vacuum, robot, deebot, ecovacs",
    "author": null,
    "author_email": "Robert Resch <robert@resch.dev>",
    "download_url": "https://files.pythonhosted.org/packages/d8/8b/1e44fff82dba4bd84024827e8fff07cd24f9c908cc6196c97ead256a985e/deebot_client-7.0.0.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.json.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, alpha_2_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": "7.0.0",
    "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": "4aeb6f622509a223203767d3639adbc47860438d3b39b0e7cbe5eaa28fc6fe85",
                "md5": "681e4c211723b04ed0e3e93047aa2b7a",
                "sha256": "020866c620d9232b851809bf91c475baba6f22a8036aad550a988cfd75062c18"
            },
            "downloads": -1,
            "filename": "deebot_client-7.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "681e4c211723b04ed0e3e93047aa2b7a",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.12.0",
            "size": 126482,
            "upload_time": "2024-04-23T08:39:05",
            "upload_time_iso_8601": "2024-04-23T08:39:05.342541Z",
            "url": "https://files.pythonhosted.org/packages/4a/eb/6f622509a223203767d3639adbc47860438d3b39b0e7cbe5eaa28fc6fe85/deebot_client-7.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d88b1e44fff82dba4bd84024827e8fff07cd24f9c908cc6196c97ead256a985e",
                "md5": "fc08c5fe7602927735baa435cd66f1a0",
                "sha256": "2326f342420bc4f8c6987caa9755b0a0267f102df9500ff8aab08eb35a075c4b"
            },
            "downloads": -1,
            "filename": "deebot_client-7.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "fc08c5fe7602927735baa435cd66f1a0",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.12.0",
            "size": 109626,
            "upload_time": "2024-04-23T08:39:07",
            "upload_time_iso_8601": "2024-04-23T08:39:07.965911Z",
            "url": "https://files.pythonhosted.org/packages/d8/8b/1e44fff82dba4bd84024827e8fff07cd24f9c908cc6196c97ead256a985e/deebot_client-7.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-23 08:39:07",
    "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.35365s