sucks icon indicating copy to clipboard operation
sucks copied to clipboard

Add D900 (IOTMQ) and Ozmo930 Support

Open bmartin5692 opened this issue 6 years ago • 50 comments

Add support for D900 series robots addressing #37

  • Add EcoVacsIOTMQ class to support "IOTMQ" devices
    • IOTMQ devices will be added manually via list for now, it seems limited to D900 currently
  • Added tests to cover
  • Updated protocol.md with additional details

Add support for Ozmo930 addressing #11

bmartin5692 avatar Feb 19 '19 03:02 bmartin5692

Hi! I keep seeing things added to this pull request, plus mailing list discussion. so I figure it's more WIP than an actual request to merge. Please let me know when you feel like it's getting close and I'll take a look.

wpietri avatar Feb 28 '19 16:02 wpietri

Hi @wpietri ,

Apologies for the chatter and seemingly endless commits to this PR. After this morning's fix for the tests, I think this is good for review now - I was planning on commenting to request one as of today anyway. There are no further changes to be done in my fork for this, pending any requests from review.

The additions to support the D900 and Ozmo 930 have both been tested by at least two users with successful results. I think now having users with other models (M80/N79) test the changes for backward compatibility would be good.

I understand this is a massive addition, please let me know if I can help as you work through a review.

bmartin5692 avatar Feb 28 '19 18:02 bmartin5692

Glad to hear it. I've put this on my to-do list. My main dev machine is in for service, but I hope to have it back next week. Were there particular things in the code you thought could benefit from discussion?

wpietri avatar Feb 28 '19 19:02 wpietri

No, nothing in particular. Obviously lots of changes to support MQTT for the D900, but I tried to mirror the XMPP class as much as possible and keep the API unchanged. There are tests to go with everything as well.

bmartin5692 avatar Mar 01 '19 01:03 bmartin5692

I would like to help with the ozmo 930 protocol. However I cannot figure out how to sniff the packets to my ozmo. I can get the http requests from the android app but don't see anything to and from my ozmo. How do you guys go about this exactly? I use debian and Windows 10 for my dev pcs.

ktnrg45 avatar Apr 13 '19 23:04 ktnrg45

Hi ktnrg,

Have you tried sucks with this PR or my branch? Did it not work for you?

The Ozmo930 uses XMPP for communication and you’ll have to use XMPPeek to MitM the traffic. Also check out the dev resources: https://github.com/wpietri/sucks/blob/master/developing.md

On Apr 13, 2019, at 7:48 PM, ktnrg45 [email protected] wrote:

I would like to help with the ozmo 930 protocol. However I cannot figure out how to sniff the packets to my ozmo. I can get the http requests from the android app but don't see anything to and from my ozmo. How do you guys go about this exactly? I use debian and Windows 10 for my dev pcs.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or mute the thread.

bmartin5692 avatar Apr 14 '19 00:04 bmartin5692

No I havent tried anything other than the latest pypi for sucks. Ill try your branch in a bit. I guess where I'm stuck at is redirecting traffic from the ecovacs server. My router is a Google Wifi and im not sure if I can redirect, so I was hoping there was a way to do that with debian or windowd that you know about.

ktnrg45 avatar Apr 14 '19 03:04 ktnrg45

Hi, thanks a lot for adding Ozmo 930 support. Any ETA for marging this pull request inside the @wpietri master branch? Considering also the @OverloadUT fix (https://github.com/wpietri/sucks/pull/67) we will benefit of a full support also inside Home Assistant / Hassio. Thanks for the hard work.

lollo78 avatar Apr 21 '19 14:04 lollo78

Hi awesome coders, just letting you know that this fork also works with the D600 series, just briefly tested it tonight.

scottyphillips avatar May 05 '19 08:05 scottyphillips

How can I use this PR ? Can someone explain to me ?

DFC1990 avatar Jun 13 '19 18:06 DFC1990

@DFC1990

How can I use this PR ? Can someone explain to me ?

Until it is merged, it may be easiest to use my fork: https://github.com/bmartin5692/sucks/tree/master

bmartin5692 avatar Jun 14 '19 16:06 bmartin5692

@bmartin5692 Yes, I've tried that..... but I can't install it... I try it with python setup.py install and with ./sucks.sh.

with setup.py it installed on my system but says ssl error....

and with setup.sh it says module requests not found, but requests is installed....

i don't know how to installed it ^^

Sorry for my bad English :-D

DFC1990 avatar Jun 14 '19 16:06 DFC1990

@DFC1990 - Have you tried since this morning? I just merged the changes from #67 into my master this morning. That may address the ssl errors you are seeing.

bmartin5692 avatar Jun 14 '19 16:06 bmartin5692

@bmartin5692 I've tried it before 30 minutes...

I get this error:

root@raspberrypi:~/letzerversuch# sucks --debug login Ecovacs app email: [email protected] Ecovacs app password: your two-letter country code [de]: de your two-letter continent code [eu]: eu Verify SSL for API requests [True]: True sucks DEBUG Setting up EcoVacsAPI sucks DEBUG calling main api user/login with (('account', 'n1gyDJ4f52Ql5yJwh/J37nX0/OBOQPAn53jsmGk/ePWdGBDS4V5UfOsX04NM6ImN1PavZdotIzpnU3VXj2i7s2+c4FazitS8zyWmqULLoWRGykuXXXITgUXwn/rSW0SMRpyJy8FuCRasWspHLzRBrJrLXXX='), ('password', 'ipD2yon+U6Vs9TicQ2An/BfYBjfIr3XXXN1xPzMIruhFooU0SMw8yY1bz9C+IO00RXxf2fCL1e1jNujL9d5HTFDEF7MFCw0BYgFJP5qVhik70a2u74rmFSZ23MafvOMojnDFP9hybDCQe26CFVS8PXXX=')) sucks DEBUG got {'time': 1560610476220, 'code': '0000', 'msg': '操作成功', 'data': {'accessToken': '248eebf4721687cdd4f28df525f4a554', 'country': 'de', 'username': 'XXX, 'uid': '20190613163804_1b4f3adaacaf3249653ab2de1fcf0483', 'email': '[email protected]'}} sucks DEBUG calling main api user/getAuthCode with (('uid', '20190613163804_1b4f3adaacaf3249653ab2de1fcf0483'), ('accessToken', '248eebf4721687cdd4f28df525f4a554')) sucks DEBUG got {'time': 1560610476726, 'code': '0000', 'msg': '操作成功', 'data': {'ecovacsUid': '20190613103804_131135544a747551353bb411495aXXX, 'authCode': 'de_8583f8d0c432281814040eXXX'}} sucks DEBUG calling portal api users/user.do function loginByItToken with {'resource': 'c2478e32', 'userId': '20190613163804_1b4f3adaacaf3249653abXXXX', 'country': 'DE', 'realm': 'ecouser.net', 'token': 'de_8583f8d0c432281814040eaf68779ddf'} sucks DEBUG got {'todo': 'result', 'errno': 0, 'result': 'fail', 'error': 'set token error.'} sucks ERROR call to loginByItToken failed with {'todo': 'result', 'errno': 0, 'result': 'fail', 'error': 'set token error.'} Traceback (most recent call last): File "/usr/local/bin/sucks", line 11, in load_entry_point('sucks==0.9.3', 'console_scripts', 'sucks')() File "/usr/local/lib/python3.5/dist-packages/click/core.py", line 764, in call return self.main(*args, **kwargs) File "/usr/local/lib/python3.5/dist-packages/click/core.py", line 717, in main rv = self.invoke(ctx) File "/usr/local/lib/python3.5/dist-packages/click/core.py", line 1163, in invoke rv.append(sub_ctx.command.invoke(sub_ctx)) File "/usr/local/lib/python3.5/dist-packages/click/core.py", line 956, in invoke return ctx.invoke(self.callback, **ctx.params) File "/usr/local/lib/python3.5/dist-packages/click/core.py", line 555, in invoke return callback(*args, **kwargs) File "/usr/local/lib/python3.5/dist-packages/sucks-0.9.3-py3.5.egg/sucks/cli.py", line 153, in login File "/usr/local/lib/python3.5/dist-packages/sucks-0.9.3-py3.5.egg/sucks/init.py", line 185, in init File "/usr/local/lib/python3.5/dist-packages/sucks-0.9.3-py3.5.egg/sucks/init.py", line 273, in __call_login_by_it_token File "/usr/local/lib/python3.5/dist-packages/sucks-0.9.3-py3.5.egg/sucks/init.py", line 264, in __call_portal_api RuntimeError: failure set token error. (0) for call loginByItToken and parameters {'resource': 'c2478e32', 'realm': 'ecouser.net', 'token': 'de_8583f8d0c432281814040eaf6XXX', 'todo': 'loginByItToken', 'userId': '20190613163804_1b4f3adaacaf3249653abXXX', 'country': 'DE'}

DFC1990 avatar Jun 14 '19 16:06 DFC1990

@DFC1990 - The latest changes to this PR / my master should address the issue with logging in from Germany. This should address #71 as well for @christophstein

bmartin5692 avatar Jun 15 '19 19:06 bmartin5692

@bmartin5692

Am I doing something wrong? I have updated your repo and reinstalled with "python setup.py install". and then I tried to log in.

sucks --debug login Ecovacs app email: [email protected] Ecovacs app password: your two-letter country code [de]: de your two-letter continent code [eu]: eu Verify SSL for API requests [True]: True sucks DEBUG Setting up EcoVacsAPI sucks DEBUG calling main api user/login with (('account', 'BXg6gGmUe9YkZQQQitROxIh6ughZpH8ukHtdpjvnIt4bScKjAb3MmZoja4wIgFGbIoGRPITs5JdlZHwMbmVDKY0lxuYTJ7dkEgRO8E5nI2ZvrpuSDKYg9FiZGHJ7CWp9DWCRURvhoQGvjNni+xdOaCpmOIGG4MHzAfc/v1S31Mk='), ('password', 'r8jdtXGU2uj9EjgQeNseDgViuMXMq2tKG1E/TEqkItChiFnsgkSmn7lePXWZUy9EDEpt5N91FiF3dlzEjsVXnlarJqNxah+NrGG6v8122Ixtl1eKZzRKmSB1vtVBQbWIz3CuoOPKPa5MJpm6QRKvGDHq0Oc0OHYEvb7Yj5tRveE=')) sucks DEBUG got {'msg': '操作成功', 'data': {'country': 'de', 'username': 'EAYU3NP2', 'email': '[email protected]', 'accessToken': '88b0670c8f2dea7c3a8667ba6e799701', 'uid': '20190613163804_1b4f3adaacaf3249653ab2de1fcf0483'}, 'time': 1560630723353, 'code': '0000'} sucks DEBUG calling main api user/getAuthCode with (('uid', '20190613163804_1b4f3adaacaf3249653ab2de1fcf0483'), ('accessToken', '88b0670c8f2dea7c3a8667ba6e799701')) sucks DEBUG got {'msg': '操作成功', 'data': {'authCode': 'de_d1cad5269bf0ebd017699cdb15f9a4ab', 'ecovacsUid': '20190613103804_131135544a747551353bb411495a543d'}, 'time': 1560630723878, 'code': '0000'} sucks DEBUG calling portal api users/user.do function loginByItToken with {'country': 'DE', 'token': 'de_d1cad5269bf0ebd017699cdb15f9a4ab', 'resource': 'b1109eef', 'userId': '20190613163804_1b4f3adaacaf3249653ab2de1fcf0483', 'realm': 'ecouser.net'} sucks DEBUG got {'errno': 0, 'result': 'fail', 'error': 'set token error.', 'todo': 'result'} sucks ERROR call to loginByItToken failed with {'errno': 0, 'result': 'fail', 'error': 'set token error.', 'todo': 'result'} Traceback (most recent call last): File "/usr/local/bin/sucks", line 11, in load_entry_point('sucks==0.9.3', 'console_scripts', 'sucks')() File "/home/pi/.local/lib/python3.5/site-packages/click/core.py", line 764, in call return self.main(*args, **kwargs) File "/home/pi/.local/lib/python3.5/site-packages/click/core.py", line 717, in main rv = self.invoke(ctx) File "/home/pi/.local/lib/python3.5/site-packages/click/core.py", line 1163, in invoke rv.append(sub_ctx.command.invoke(sub_ctx)) File "/home/pi/.local/lib/python3.5/site-packages/click/core.py", line 956, in invoke return ctx.invoke(self.callback, **ctx.params) File "/home/pi/.local/lib/python3.5/site-packages/click/core.py", line 555, in invoke return callback(*args, **kwargs) File "/usr/local/lib/python3.5/dist-packages/sucks-0.9.3-py3.5.egg/sucks/cli.py", line 153, in login File "/usr/local/lib/python3.5/dist-packages/sucks-0.9.3-py3.5.egg/sucks/init.py", line 185, in init File "/usr/local/lib/python3.5/dist-packages/sucks-0.9.3-py3.5.egg/sucks/init.py", line 273, in __call_login_by_it_token File "/usr/local/lib/python3.5/dist-packages/sucks-0.9.3-py3.5.egg/sucks/init.py", line 264, in __call_portal_api RuntimeError: failure set token error. (0) for call loginByItToken and parameters {'country': 'DE', 'token': 'de_d1cad5269bf0ebd017699cdb15f9a4ab', 'todo': 'loginByItToken', 'resource': 'b1109eef', 'userId': '20190613163804_1b4f3adaacaf3249653ab2de1fcf0483', 'realm': 'ecouser.net'} pi@raspberrypi:~/sucks $

I've tried it with sucks.sh

./sucks.sh --debug login Ecovacs app email: [email protected] Ecovacs app password: urllib3.connectionpool DEBUG Starting new HTTP connection (1): ipinfo.io:80 urllib3.connectionpool DEBUG http://ipinfo.io:80 "GET /json HTTP/1.1" 200 None your two-letter country code [de]: de your two-letter continent code [eu]: eu Verify SSL for API requests [True]: True sucks DEBUG Setting up EcoVacsAPI sucks DEBUG calling main api user/login with (('account', 'TLUYEoGYrq/hkbZxCNJ0fu9GO9n+TEIDfWcZTauJVies8T7fcPyer/gq0BjUd7gDqnxfMATFdYx03aB/i3c6/ZV1Hm0id1ndyOKD7dnSYK/pLrqr2vs2ccBuPeXXX6R1HSgJuROHl88oPgxpovbzJbU67kt4PdaSAEA='), ('password', 'wA7rDXWuGXBIoNEWQ3SNfXXXlYYuIV0fS8t6dl1YJbgOecMA4gsX+4bVL0A+5hzjSv1LKNE77M8d06wCA4GAfHAERAFrQlc+ps1fARL8kfRfgk71NDvY7YdgjLMJfB7xI1XCWXXXmb0zpPB02k9c=')) urllib3.connectionpool DEBUG Starting new HTTPS connection (1): eco-de-api.ecovacs.com:443 urllib3.connectionpool DEBUG https://eco-de-api.ecovacs.com:443 "GET /v1/private/de/en/75c9eeaad11e65a80c88b6a64abc6a16/i_eco_e/1.3.5/c_googleplay/1/user/login?account=TLUYEoGYrq%2FhkbZxCNJ0fu9GO9n%2BTEIDfWcZTauJVies8T7fcPyer%2Fgq0BjUd7gDqnxfMATFdYx03aB%2FXXXHm0id1ndyOKD7dnSYK%2FpLrqr2vs2ccBuPe7eJkdFcoSr86R1HSgJuROHl88oPgxpovbzJbU67kt4PdaSAEA%3D&password=wA7rDXWuXXXcXXXJbgOecMA4gsX%2B4bVL0A%2B5hzjSv1LKNE77MXXXkfRfgk71NDvY7YdgjLMJfB7xI1XCWjxjdcwuaW0mb0zpPB02k9c%3D&requestId=e8560ad0372c16ce45XXXfb78f&authTimespan=1560633843525&authTimeZone=GMT-8&authAppkey=eJUWrzRv34qFSaYk&authSign=52c1fd87da7a35XXX4b75e19971 HTTP/1.1" 200 None sucks DEBUG got {'code': '0000', 'msg': '操作成功', 'time': 1560633843773, 'data': {'accessToken': '9f7e7cXXXf0d6e0', 'country': 'de', 'username': 'EAYU3NP2', 'email': '[email protected]', 'uid': '20190613163XXX9653ab2de1fcf0483'}} sucks DEBUG calling main api user/getAuthCode with (('uid', '2019061316380XXXfcf0483'), ('accessToken', '9f7e7c12278d2XXX20f0d6e0')) urllib3.connectionpool DEBUG Starting new HTTPS connection (1): eco-de-api.ecovacs.com:443 urllib3.connectionpool DEBUG https://eco-de-api.ecovacs.com:443 "GET /v1/private/de/en/75c9eeaad11e6XXX64abc6a16/i_eco_e/1.3.5/c_googleplay/1/user/getAuthCode?uid=20190613163804_1b4f3adaacaf3249653ab2de1fcf0483&accessToken=9f7e7c122XXX62beab20f0d6e0&requestId=f4ea8489XXXc03f5a2b&authTimespan=1560633843939&authTimeZone=GMT-8&authAppkey=eJUWrzRv34qFSaYk&authSign=a306XXXa1c6f589870 HTTP/1.1" 200 None sucks DEBUG got {'code': '0000', 'msg': '操作成功', 'time': 1560633844396, 'data': {'authCode': 'de_f99a52dfd68b1d1294d8f23cae46b179', 'ecovacsUid': '20190613103804_131135544a747551353bb411495a543d'}} sucks DEBUG calling portal api users/user.do function loginByItToken with {'realm': 'ecouser.net', 'userId': '20190613XXX49653ab2de1fcf0483', 'resource': '75c9eeaa', 'country': 'DE', 'token': 'de_f99a52dfd6XXX23cae46b179'} urllib3.connectionpool DEBUG Starting new HTTPS connection (1): portal-ww.ecouser.net:443 urllib3.connectionpool DEBUG https://portal-ww.ecouser.net:443 "POST /api/users/user.do HTTP/1.1" 200 70 sucks DEBUG got {'result': 'fail', 'errno': 0, 'error': 'set token error.', 'todo': 'result'} sucks ERROR call to loginByItToken failed with {'result': 'fail', 'errno': 0, 'error': 'set token error.', 'todo': 'result'} Traceback (most recent call last): File "/usr/lib/python3.5/runpy.py", line 193, in _run_module_as_main "main", mod_spec) File "/usr/lib/python3.5/runpy.py", line 85, in _run_code exec(code, run_globals) File "/root/d901/sucks/cli.py", line 240, in cli() File "/root/.local/share/virtualenvs/d901-xTTdRcSQ/lib/python3.5/site-packages/click/core.py", line 764, in call return self.main(*args, **kwargs) File "/root/.local/share/virtualenvs/d901-xTTdRcSQ/lib/python3.5/site-packages/click/core.py", line 717, in main rv = self.invoke(ctx) File "/root/.local/share/virtualenvs/d901-xTTdRcSQ/lib/python3.5/site-packages/click/core.py", line 1163, in invoke rv.append(sub_ctx.command.invoke(sub_ctx)) File "/root/.local/share/virtualenvs/d901-xTTdRcSQ/lib/python3.5/site-packages/click/core.py", line 956, in invoke return ctx.invoke(self.callback, **ctx.params) File "/root/.local/share/virtualenvs/d901-xTTdRcSQ/lib/python3.5/site-packages/click/core.py", line 555, in invoke return callback(*args, **kwargs) File "/root/d901/sucks/cli.py", line 153, in login EcoVacsAPI(device_id, email, password_hash, country_code, continent_code, verify_ssl) File "/root/d901/sucks/init.py", line 185, in init login_response = self.__call_login_by_it_token() File "/root/d901/sucks/init.py", line 273, in __call_login_by_it_token , verify_ssl=self.verify_ssl) File "/root/d901/sucks/init.py", line 264, in __call_portal_api "failure {} ({}) for call {} and parameters {}".format(json['error'], json['errno'], function, params)) RuntimeError: failure set token error. (0) for call loginByItToken and parameters {'realm': 'ecouser.net', 'userId': '201906131638XXX53ab2de1fcf0483', 'token': 'de_f99a52dXXX4d8f23cae46b179', 'resource': '75c9eeaa', 'country': 'DE', 'todo': 'loginByItToken'}

DFC1990 avatar Jun 15 '19 20:06 DFC1990

@scottyphillips can you Tell me how you got. the deebot D600 running?

ScharV avatar Jun 29 '19 14:06 ScharV

Should this also work with the OZMO 630 which is a simpler version of the OZMO 930 (eg lacks geofencing / mapping)?

codeclinic avatar Jul 14 '19 18:07 codeclinic

Should this also work with the OZMO 630 which is a simpler version of the OZMO 930 (eg lacks geofencing / mapping)?

Yes it should. I also have an Ozmo 601 which works fine with this. Until this is merged you can try my fork (https://github.com/bmartin5692/sucks).

bmartin5692 avatar Jul 14 '19 19:07 bmartin5692

I actually meant an OZMO 610 Series but I'm hoping that would also be covered.

Thanks for working on getting this solved. Do you have an indication that this will get merged soonish?

On further inspection it seems this PR has been waiting for a few months. Yikes.

codeclinic avatar Jul 14 '19 19:07 codeclinic

I know you meant a 610, but they are very similar models and it should work fine. I'm not sure when this might be merged, it has been a long time since the PR was submitted for review.

bmartin5692 avatar Jul 14 '19 19:07 bmartin5692

@bmartin5692 I'm using Home-Assistant which uses sucks for its Ecovacs integration. Is there a uniform way that I could just overwrite the existing sucks with your version? I'm not too familiar with pip etc, but not a complete newb. Are there any files specific files that I could just copy from your repo and drop in to the existing library on my system?

codeclinic avatar Jul 14 '19 19:07 codeclinic

I wish I could give you some good options, but I'm not familiar with Home-Assistant and how it is setup. Maybe someone on the sucks mailing list has an idea or could help?

bmartin5692 avatar Jul 14 '19 20:07 bmartin5692

Ok thanks. At least I know that there is a working library available. Thanks for your work on this.

codeclinic avatar Jul 15 '19 10:07 codeclinic

EDIT: Please ignore my comment, I was able to make it work by installing python 3.7. Many thanks!

First of all thank you for your work, I'm really looking forward to integrate my D900 into openHab :) Unfortunately so far I wasn't able to install this from your repo. I'm running openhabianpi on my Raspberry, python3 version 3.5.3

If I do "sudo python3 setup.py install" the installation fails with an error and I have no idea how to fix this. Can anyone help with this?

` [14:03:46] openhabian@openHABianPi:~/sucks$ sudo python3 setup.py install can't find python README; skipping running install running bdist_egg running egg_info writing entry points to sucks.egg-info/entry_points.txt writing top-level names to sucks.egg-info/top_level.txt writing dependency_links to sucks.egg-info/dependency_links.txt writing requirements to sucks.egg-info/requires.txt writing sucks.egg-info/PKG-INFO reading manifest file 'sucks.egg-info/SOURCES.txt' writing manifest file 'sucks.egg-info/SOURCES.txt' installing library code to build/bdist.linux-armv7l/egg running install_lib running build_py creating build/bdist.linux-armv7l/egg creating build/bdist.linux-armv7l/egg/sucks copying build/lib/sucks/cli.py -> build/bdist.linux-armv7l/egg/sucks copying build/lib/sucks/init.py -> build/bdist.linux-armv7l/egg/sucks byte-compiling build/bdist.linux-armv7l/egg/sucks/cli.py to cli.cpython-35.pyc byte-compiling build/bdist.linux-armv7l/egg/sucks/init.py to init.cpython-35.pyc creating build/bdist.linux-armv7l/egg/EGG-INFO copying sucks.egg-info/PKG-INFO -> build/bdist.linux-armv7l/egg/EGG-INFO copying sucks.egg-info/SOURCES.txt -> build/bdist.linux-armv7l/egg/EGG-INFO copying sucks.egg-info/dependency_links.txt -> build/bdist.linux-armv7l/egg/EGG-INFO copying sucks.egg-info/entry_points.txt -> build/bdist.linux-armv7l/egg/EGG-INFO copying sucks.egg-info/requires.txt -> build/bdist.linux-armv7l/egg/EGG-INFO copying sucks.egg-info/top_level.txt -> build/bdist.linux-armv7l/egg/EGG-INFO zip_safe flag not set; analyzing archive contents... creating 'dist/sucks-0.9.3-py3.5.egg' and adding 'build/bdist.linux-armv7l/egg' to it removing 'build/bdist.linux-armv7l/egg' (and everything under it) Processing sucks-0.9.3-py3.5.egg Removing /usr/local/lib/python3.5/dist-packages/sucks-0.9.3-py3.5.egg Copying sucks-0.9.3-py3.5.egg to /usr/local/lib/python3.5/dist-packages sucks 0.9.3 is already the active version in easy-install.pth Installing sucks script to /usr/local/bin

Installed /usr/local/lib/python3.5/dist-packages/sucks-0.9.3-py3.5.egg Processing dependencies for sucks==0.9.3 Searching for importlib-metadata>=0.12 Reading https://pypi.python.org/simple/importlib-metadata/ Downloading https://files.pythonhosted.org/packages/fd/5c/9caf9fe3d92afc3c0296c97b0fd72cacfcaf20e8b2c42306840914e052fa/importlib_metadata-0.18.tar.gz#sha256=cb6ee23b46173539939964df59d3d72c3e0c1b5d54b84f1d8a7e912fe43612db Best match: importlib-metadata 0.18 Processing importlib_metadata-0.18.tar.gz Writing /tmp/easy_install-463d4k27/importlib_metadata-0.18/setup.cfg Running importlib_metadata-0.18/setup.py -q bdist_egg --dist-dir /tmp/easy_install-463d4k27/importlib_metadata-0.18/egg-dist-tmp-6f6qbe8s /usr/lib/python3.5/distutils/dist.py:261: UserWarning: Unknown distribution option: 'use_scm_version' warnings.warn(msg) warning: no previously-included files found matching '.gitignore' no previously-included directories found matching 'build' no previously-included directories found matching '.tox' zip_safe flag not set; analyzing archive contents... Removing /usr/local/lib/python3.5/dist-packages/importlib_metadata-0.0.0-py3.5.egg Moving importlib_metadata-0.0.0-py3.5.egg to /usr/local/lib/python3.5/dist-packages importlib-metadata 0.0.0 is already the active version in easy-install.pth

Installed /usr/local/lib/python3.5/dist-packages/importlib_metadata-0.0.0-py3.5.egg error: The 'importlib-metadata>=0.12' distribution was not found and is required by pytest, pluggy ` Many thanks in advance!

s3to87 avatar Jul 20 '19 12:07 s3to87

I tried this code with my Ecovacs Deebot Ozmo 900 and is working fine, with IT/EU country/continent. Thanks for your fix and I hope this PR will be merged soon. ;)

Ligio avatar Jul 24 '19 07:07 Ligio

@wpietri Is there any schedule for when this will be merged or what needs resolving to get it merged? Thanks.

codeclinic avatar Aug 22 '19 20:08 codeclinic

@wpietri Could you please merge that? Would be awesome especially for home assistant users for pip..

fjfricke avatar Aug 22 '19 22:08 fjfricke

@wpietri I would love to have this one merged. I am using Home Assistant and this code works OK. Right Now I had to build a custom_component ecovacs home asssistant plugin pointing to this branch in order to make it work. It is not a very elegant solution. Thanks all for the hard work.

boutch avatar Aug 23 '19 10:08 boutch

@boutch Could you please share info on how you did that?

P.s. I've emailed @wpietri via his website but its seems like he has gone AWOL from GitHub. His last actvitiy on any GitHub repo was back in April.

codeclinic avatar Aug 23 '19 11:08 codeclinic