diff options
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-deebot-client.spec | 374 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 376 insertions, 0 deletions
@@ -0,0 +1 @@ +/deebot-client-1.6.1.tar.gz diff --git a/python-deebot-client.spec b/python-deebot-client.spec new file mode 100644 index 0000000..e7bdfa5 --- /dev/null +++ b/python-deebot-client.spec @@ -0,0 +1,374 @@ +%global _empty_manifest_terminate_build 0 +Name: python-deebot-client +Version: 1.6.1 +Release: 1 +Summary: a library for controlling certain deebot vacuums +License: GPL-3.0 +URL: https://github.com/DeebotUniverse/client.py +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/c5/0a/8d544734b60d6a6dd0b68f317f0839106676d99682b022f9734732b177f4/deebot-client-1.6.1.tar.gz +BuildArch: noarch + +Requires: python3-aiohttp +Requires: python3-cachetools +Requires: python3-gmqtt +Requires: python3-numpy +Requires: python3-Pillow + +%description +# Client Library for Deebot Vacuums + +[](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 import create_instances +from deebot_client.commands import * +from deebot_client.commands.clean import CleanAction +from deebot_client.models import Configuration +from deebot_client.mqtt_client import MqttClient +from deebot_client.events import BatteryEvent +from deebot_client.util import md5 +from deebot_client.vacuum_bot import VacuumBot + +device_id = md5(str(time.time())) +account_id = "your email or phonenumber (cn)" +password_hash = md5("yourPassword") +continent = "eu" +country = "de" + + +async def main(): + async with aiohttp.ClientSession() as session: + logging.basicConfig(level=logging.DEBUG) + config = Configuration(session, + device_id=device_id, country=country, continent=continent, + ) + + (authenticator, api_client) = create_instances(config, account_id, password_hash) + + devices_ = await api_client.get_devices() + + bot = VacuumBot(devices_[0], api_client) + + mqtt = MqttClient(config, authenticator) + await mqtt.initialize() + await mqtt.subscribe(bot) + + 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). + +## 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 Jabbber!), +- [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! + + +%package -n python3-deebot-client +Summary: a library for controlling certain deebot vacuums +Provides: python-deebot-client +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-deebot-client +# Client Library for Deebot Vacuums + +[](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 import create_instances +from deebot_client.commands import * +from deebot_client.commands.clean import CleanAction +from deebot_client.models import Configuration +from deebot_client.mqtt_client import MqttClient +from deebot_client.events import BatteryEvent +from deebot_client.util import md5 +from deebot_client.vacuum_bot import VacuumBot + +device_id = md5(str(time.time())) +account_id = "your email or phonenumber (cn)" +password_hash = md5("yourPassword") +continent = "eu" +country = "de" + + +async def main(): + async with aiohttp.ClientSession() as session: + logging.basicConfig(level=logging.DEBUG) + config = Configuration(session, + device_id=device_id, country=country, continent=continent, + ) + + (authenticator, api_client) = create_instances(config, account_id, password_hash) + + devices_ = await api_client.get_devices() + + bot = VacuumBot(devices_[0], api_client) + + mqtt = MqttClient(config, authenticator) + await mqtt.initialize() + await mqtt.subscribe(bot) + + 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). + +## 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 Jabbber!), +- [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! + + +%package help +Summary: Development documents and examples for deebot-client +Provides: python3-deebot-client-doc +%description help +# Client Library for Deebot Vacuums + +[](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 import create_instances +from deebot_client.commands import * +from deebot_client.commands.clean import CleanAction +from deebot_client.models import Configuration +from deebot_client.mqtt_client import MqttClient +from deebot_client.events import BatteryEvent +from deebot_client.util import md5 +from deebot_client.vacuum_bot import VacuumBot + +device_id = md5(str(time.time())) +account_id = "your email or phonenumber (cn)" +password_hash = md5("yourPassword") +continent = "eu" +country = "de" + + +async def main(): + async with aiohttp.ClientSession() as session: + logging.basicConfig(level=logging.DEBUG) + config = Configuration(session, + device_id=device_id, country=country, continent=continent, + ) + + (authenticator, api_client) = create_instances(config, account_id, password_hash) + + devices_ = await api_client.get_devices() + + bot = VacuumBot(devices_[0], api_client) + + mqtt = MqttClient(config, authenticator) + await mqtt.initialize() + await mqtt.subscribe(bot) + + 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). + +## 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 Jabbber!), +- [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! + + +%prep +%autosetup -n deebot-client-1.6.1 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-deebot-client -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Fri May 05 2023 Python_Bot <Python_Bot@openeuler.org> - 1.6.1-1 +- Package Spec generated @@ -0,0 +1 @@ +e8ba21647f0337211d1b0663a35549e7 deebot-client-1.6.1.tar.gz |
