Issue title: Sucks not able to ping/command (recipient-unavailable)
 Issue body: **Describe the bug**
I'm able to control my M80 Pro using the Ecovacs Home app but not using sucks (0.9.4). I tried with multiple sucks version, verified DNS redirect, etc. As everything is working from the Android app, I'm expecting sucks to be able to control it too

P.S.: I also tried with your fork of sucks with the same result

P.P.S.: There's no output from bumper when receiving the commands. When commands are sent from the Ecovacs Android App, this message appear (but command is executed by the deebot)
[2020-01-01 08:44:24,447] 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5 ERROR 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5 boterror 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5 Received Error from (116.69.203.115:11426 | samanthamiller@example.net/atom) - <root><iq samanthamiller@example.net/GLBe563fc4d' type='set' id='348'><query xmlns='com:ctl'><ctl id='05682664' ret='ok' errs='100'/></query></iq></root>

Thanks for your precious time


**To Reproduce**
1. sucks login
2. sucks clean 10 (or any command)

sucks output
`sleekxmppfs.basexmpp WARNING  fulljid property deprecated. Use boundjid.resource
performing clean command
Traceback (most recent call last):
  File "/usr/local/bin/sucks", line 8, in <module>
    sys.exit(cli())
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 1164, in invoke
    return _process_result(rv)
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 1102, in _process_result
    **ctx.params)
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/sucks/cli.py", line 219, in run
    vacbot.run(action.vac_command)
  File "/usr/local/lib/python3.6/site-packages/sucks/__init__.py", line 416, in run
    self.send_command(action.to_xml())
  File "/usr/local/lib/python3.6/site-packages/sucks/__init__.py", line 413, in send_command
    self.xmpp.send_command(xml, self._vacuum_address())
  File "/usr/local/lib/python3.6/site-packages/sucks/__init__.py", line 482, in send_command
    c.send()
  File "/usr/local/lib/python3.6/site-packages/sleekxmppfs/stanza/iq.py", line 235, in send
    raise IqError(result)
sleekxmppfs.exceptions.IqError: <iq type="error" to="samanthamiller@example.net/8e8e3189bdcd1e0e0c2a22dba210945b" from="samanthamiller@example.net/atom" id="b6ca5a49-1b5d-4308-9514-c470fe379d4d-3"><error type="wait" code="404"><recipient-unavailable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" /></error></iq>
`


**Expected behavior**
Deebot should execute the command

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Desktop (please complete the following information):**
 - OS: Linux

**Smartphone (please complete the following information):**
 - Device: Android

**Vacuum (please complete the following information):**
 - Model: Deebot M80 Pro

**Additional context**
Add any other context about the problem here.

 Comments: 
 Comment 0: We may move this issue to [my fork of sucks](https://github.com/bmartin5692/sucks), but can you try the following with my fork:
`sucks --debug charge`
 Comment 1: The "issues" feature is disabled on your fork of sucks, so I don't know if we can move it there?
Using debug, I figured out that Hassio (Home Assistant) which manages the Docker container as an addon, was not using the network DNS, but google's DNS so my custom redirect was not used.

Once that was fixed, I was able to use your fork of sucks (the original code returning an SSL error, which I believe is normal), but the only command the robot respond to is "charge" (But the command never finish once the robot is charging)

When I try to run "clean 10", the script seems to work, waiting for 10min for the robot to finish cleaning, but the robot does nothing.

Bumper output when receiving commands (clean 10, charge, etc) from your fork of sucks:
```
[2020-01-01 23:08:22,813] 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5 INFO 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5 confserver 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5 client with devid 1703b245b1523e6a00dbaa3d60874a56 attempting login
[2020-01-01 23:08:25,349] 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5 INFO 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5 xmppserver 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5 client authenticated fuid_tmpuser
```

Bumper output when receiving commands (auto, charge, etc) from the official app:
```
2020-01-01 23:21:28,644] 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5 INFO 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5 xmppserver 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5 client authenticated dg1rs5f944e6f28e
[2020-01-01 23:21:33,988] 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5 ERROR 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5 boterror 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5 Received Error from (116.69.203.115:11426 | samanthamiller@example.net/atom) - <root><iq samanthamiller@example.net/GLBe563fc4d' type='set' id='971'><query xmlns='com:ctl'><ctl id='40702592' ret='ok' errs='100'/></query></iq></root>
[2020-01-01 23:21:33,996] 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5 ERROR 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5 boterror 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5 Received Error from (116.69.203.115:11426 | samanthamiller@example.net/atom) - <root><iq samanthamiller@example.net/GLBe563fc4d' type='set' id='972'><query xmlns='com:ctl'><ctl id='63841692' ret='ok' errs='100'/></query></iq></root>
[2020-01-01 23:21:34,006] 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5 ERROR 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5 boterror 38d1:d2b4:3d06:83e8:96a5:8c2:893d:aba5 Received Error from (116.69.203.115:11426 | samanthamiller@example.net/atom) - <root><iq samanthamiller@example.net/GLBe563fc4d' type='set' id='973'><query xmlns='com:ctl'><ctl id='59108773' ret='ok' errs='100'/></query></iq></root>
```

Debug output of your fork of sucks for "clean 10"
```
__main__   DEBUG    will run [<__main__.CliAction object at 0xffff921ed240>, <__main__.CliAction object at 0xffff921ed2e8>]
sucks      DEBUG    Setting up EcoVacsAPI
sucks      DEBUG    calling main api user/login with (('account', 'op9CRXHVxsYeDUdvQ6lssWLChySWZbu3xTTEWIJys7o6OSXDQo1KKC/vlhn/RIBknWGcneS9H9WqUYQaXhuppVilGqKO52+DcX1h+5190uQyelZenBRcSEAuUgHIwAewenjKLO6g4MsOUlh322IymIBN+KRlTV58v8imjBThOx8='), ('password', 'Nrx6kGctWbbY4vp6kPSEut2Es7fAeOFIsmm9P6crd2uM72z/q0B6spw9aiApIF+GUj9Xm/a271X49qHu10B0bbjWUZZzDuydzvjBSs+RCuNUdc+I/9W0vJ52kj62vgZrpubxs2sTfTfNiqryfQOyxs9CDSswvhPLkblE8oyAGhE='))
urllib3.connectionpool DEBUG    Starting new HTTPS connection (1): eco-ca-api.ecovacs.com:443
/usr/local/lib/python3.6/site-packages/urllib3/connectionpool.py:1004: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning,
urllib3.connectionpool DEBUG    https://eco-ca-api.ecovacs.com:443 "GET /v1/private/ca/en/1703b245b1523e6a00dbaa3d60874a56/i_eco_e/1.3.5/c_googleplay/1/user/login?account=op9CRXHVxsYeDUdvQ6lssWLChySWZbu3xTTEWIJys7o6OSXDQo1KKC%2Fvlhn%2FRIBknWGcneS9H9WqUYQaXhuppVilGqKO52%2BDcX1h%2B5190uQyelZenBRcSEAuUgHIwAewenjKLO6g4MsOUlh322IymIBN%2BKRlTV58v8imjBThOx8%3D&password=Nrx6kGctWbbY4vp6kPSEut2Es7fAeOFIsmm9P6crd2uM72z%2Fq0B6spw9aiApIF%2BGUj9Xm%2Fa271X49qHu10B0bbjWUZZzDuydzvjBSs%2BRCuNUdc%2BI%2F9W0vJ52kj62vgZrpubxs2sTfTfNiqryfQOyxs9CDSswvhPLkblE8oyAGhE%3D&requestId=e54996034bd5b85b2901165fadfa6920&authTimespan=1577920401675&authTimeZone=GMT-8&authAppkey=eJUWrzRv34qFSaYk&authSign=1c9b43c15ba8239fc61d381024c2099a HTTP/1.1" 200 234
sucks      DEBUG    got {'code': '0000', 'data': {'accessToken': '02fe98212f894918bbcf536b060d55d3', 'uid': 'fuid_tmpuser', 'username': 'fusername_tmpuser', 'country': 'ca', 'email': 'samanthamiller@example.net'}, 'msg': '操作成功', 'time': 1577920401862}
sucks      DEBUG    calling main api user/getAuthCode with (('uid', 'fuid_tmpuser'), ('accessToken', '02fe98212f894918bbcf536b060d55d3'))
urllib3.connectionpool DEBUG    Starting new HTTPS connection (1): eco-ca-api.ecovacs.com:443
/usr/local/lib/python3.6/site-packages/urllib3/connectionpool.py:1004: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning,
urllib3.connectionpool DEBUG    https://eco-ca-api.ecovacs.com:443 "GET /v1/private/ca/en/1703b245b1523e6a00dbaa3d60874a56/i_eco_e/1.3.5/c_googleplay/1/user/getAuthCode?uid=fuid_tmpuser&accessToken=02fe98212f894918bbcf536b060d55d3&requestId=6997ff90251c35e73c13d780dea69a56&authTimespan=1577920401878&authTimeZone=GMT-8&authAppkey=eJUWrzRv34qFSaYk&authSign=7e4066d6cf44f678580ff065481e3b61 HTTP/1.1" 200 165
sucks      DEBUG    got {'code': '0000', 'data': {'authCode': 'ca_5fd578dc9ff0496da799d090835a8d81', 'ecovacsUid': 'fuid_tmpuser'}, 'msg': '操作成功', 'time': 1577920401988}
sucks      DEBUG    calling portal api users/user.do function loginByItToken with {'todo': 'loginByItToken', 'country': 'CA', 'resource': '1703b245', 'realm': 'ecouser.net', 'userId': 'fuid_tmpuser', 'token': 'ca_5fd578dc9ff0496da799d090835a8d81'}
urllib3.connectionpool DEBUG    Starting new HTTPS connection (1): portal-na.ecouser.net:443
/usr/local/lib/python3.6/site-packages/urllib3/connectionpool.py:1004: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning,
urllib3.connectionpool DEBUG    https://portal-na.ecouser.net:443 "POST /api/users/user.do HTTP/1.1" 200 132
sucks      DEBUG    got {'resource': '1703b245', 'result': 'ok', 'todo': 'result', 'token': 'ca_5fd578dc9ff0496da799d090835a8d81', 'userId': 'fuid_tmpuser'}
root       DEBUG    EcoVacsAPI connection complete
sucks      DEBUG    calling portal api users/user.do function GetDeviceList with {'todo': 'GetDeviceList', 'userid': 'fuid_tmpuser', 'auth': {'with': 'users', 'userid': 'fuid_tmpuser', 'realm': 'ecouser.net', 'token': 'ca_5fd578dc9ff0496da799d090835a8d81', 'resource': '1703b245'}}
urllib3.connectionpool DEBUG    Starting new HTTPS connection (1): portal-na.ecouser.net:443
/usr/local/lib/python3.6/site-packages/urllib3/connectionpool.py:1004: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning,
urllib3.connectionpool DEBUG    https://portal-na.ecouser.net:443 "POST /api/users/user.do HTTP/1.1" 200 236
sucks      DEBUG    got {'devices': [{'class': '125', 'company': 'eco-legacy', 'did': 'E0000691418601590748', 'name': 'E0000691418601590748', 'nick': '', 'resource': 'atom', 'mqtt_connection': False, 'xmpp_connection': True}], 'result': 'ok', 'todo': 'result'}
sleekxmppfs.plugins.base DEBUG    Loaded Plugin: RFC 6120: Stream Feature: STARTTLS
sleekxmppfs.plugins.base DEBUG    Loaded Plugin: RFC 6120: Stream Feature: Resource Binding
sleekxmppfs.plugins.base DEBUG    Loaded Plugin: RFC 3920: Stream Feature: Start Session
sleekxmppfs.plugins.base DEBUG    Loaded Plugin: RFC 6121: Stream Feature: Roster Versioning
sleekxmppfs.plugins.base DEBUG    Loaded Plugin: RFC 6121: Stream Feature: Subscription Pre-Approval
sleekxmppfs.plugins.base DEBUG    Loaded Plugin: RFC 6120: Stream Feature: SASL
sleekxmppfs.basexmpp WARNING  fulljid property deprecated. Use boundjid.resource
sleekxmppfs.xmlstream.xmlstream DEBUG    Waiting 2.262017250448273 seconds before connecting.
sleekxmppfs.xmlstream.resolver DEBUG    DNS: Querying msg-na.ecouser.net for AAAA records.
sleekxmppfs.xmlstream.resolver DEBUG    DNS: No AAAA records for msg-na.ecouser.net
sleekxmppfs.xmlstream.resolver DEBUG    DNS: Querying msg-na.ecouser.net for A records.
sleekxmppfs.xmlstream.xmlstream DEBUG    Connecting to 116.69.203.115:5223
sleekxmppfs.xmlstream.xmlstream DEBUG    Event triggered: connected
sleekxmppfs.thirdparty.statemachine DEBUG     ==== TRANSITION disconnected -> connected
sleekxmppfs.xmlstream.xmlstream DEBUG    Starting HANDLER THREAD
sleekxmppfs.xmlstream.xmlstream DEBUG    Loading event runner
sleekxmppfs.xmlstream.xmlstream DEBUG    SEND (IMMED): <stream:stream to='ecouser.net' xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:client' xml:lang='en' version='1.0'>
sleekxmppfs.xmlstream.xmlstream DEBUG    RECV: <stream:stream version="1.0" id="1" from="ecouser.net">
sleekxmppfs.xmlstream.xmlstream DEBUG    RECV: <stream:features xmlns="http://etherx.jabber.org/streams"><starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"><required /></starttls><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>PLAIN</mechanism></mechanisms></stream:features>
sleekxmppfs.xmlstream.xmlstream DEBUG    SEND (IMMED): <starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"><required /></starttls>
sleekxmppfs.xmlstream.xmlstream DEBUG    RECV: <proceed xmlns="urn:ietf:params:xml:ns:xmpp-tls" />
sleekxmppfs.features.feature_starttls.starttls DEBUG    Starting TLS
sleekxmppfs.xmlstream.xmlstream INFO     Negotiating TLS
sleekxmppfs.xmlstream.xmlstream INFO     Using SSL version: TLSv1
sleekxmppfs.xmlstream.xmlstream DEBUG    CERT: -----BEGIN CERTIFICATE-----
MIID6zCCAtOgAwIBAgICBnowDQYJKoZIhvcNAQELBQAwJTEPMA0GA1UEChMGQnVt
cGVyMRIwEAYDVQQDEwlCdW1wZXIgQ0EwHhcNMjAwMTAxMDgxMjQzWhcNMjIwMTAx
MDgxMjQzWjApMQ8wDQYDVQQKEwZCdW1wZXIxFjAUBgNVBAMTDUJ1bXBlciBTZXJ2
ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCwVePwVwlEDBiHbQFS
YZ/oDUJzF3+htGL0Ufj7FvuAArjYmukmPR1AFV1abh6cDKFtVU1PN71jxQio7v6l
E38kNkJp8DvvPECT506L/p5QxnnXmEyvYM7WruRwvSTt30nXP3actjDdf1UjIJgz
4Tlcz1yPMnHRuIA1JwSy78GXTnX+RRbhg/qwl+AFikaWlIH+3DcxEum+7NuDt197
Kr758QdQzOWxBH285hyLVsW4qHGEQFUawNJTNFg8xCReCYta+Xs1c5Hb8AATYEU4
/5L2fk6TQXVqThj/tMEmFv7WUqKH9QrX9zk7P2th/FwLSGgIhkiqRlYKBV/lNTpd
/sXpAgMBAAGjggEfMIIBGzAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB
BQUHAwIGCCsGAQUFBwMBMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFPyIU6wXPITo
wso34b9ohnQ6xTPMMB8GA1UdIwQYMBaAFMJSmSc+gl5/RRghkuO8r70L5eoaMIGb
BgNVHREEgZMwgZCCHWxvY2FsLWJ1bXBlci11Yi5sb2NhbC5oYXNzLmlvgglsb2Nh
bGhvc3SCC2Vjb3ZhY3MuY29tgg0qLmVjb3ZhY3MuY29tggtlY291c2VyLm5ldIIN
Ki5lY291c2VyLm5ldIILZWNvdmFjcy5uZXSCDSouZWNvdmFjcy5uZXSHBH8AAAGH
BKweIQaHBH8AAAEwDQYJKoZIhvcNAQELBQADggEBAJYP5D4mqMzyRFCWjuvsIqcJ
vEHnQdEkUIUkj3Yx6grWsVQBMWjWChpx5w6ony++Q2jhHJFsfiFQaC/P05jOLjZz
JJ+xE76IgCTHFxTZ/zIkYFM2xoQuJi+45+vbLkagaNSFW5RfnOHxqW+GjfctOFT5
9Z1LF5p4+0kPU82lmaW4udMwLYR8blszgScjL3q3xYv0+kIlOGeNe7b9unGx9tcn
YIH430/GOfMYwlAn68NygYZxJ0qJDJSohOUA9gBVuQNQjAFLylS3Ks85liUDvQJo
XaK053Ijr8LzVi6f8lwkoFuEg+XHaC5nCIf6Pl2jkVOfYufL9shDjZBQBmHBHr0=
-----END CERTIFICATE-----

sleekxmppfs.xmlstream.xmlstream DEBUG    Event triggered: ssl_cert
sleekxmppfs.xmlstream.xmlstream DEBUG    SEND (IMMED): <stream:stream to='ecouser.net' xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:client' xml:lang='en' version='1.0'>
sleekxmppfs.xmlstream.xmlstream DEBUG    RECV: <stream:stream version="1.0" id="1" from="ecouser.net">
sleekxmppfs.xmlstream.xmlstream DEBUG    RECV: <stream:features xmlns="http://etherx.jabber.org/streams"><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>PLAIN</mechanism></mechanisms></stream:features>
sleekxmppfs.xmlstream.xmlstream DEBUG    SEND (IMMED): <auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="PLAIN">ZnVpZF90bXB1c2VyAGZ1aWRfdG1wdXNlcgAwLzE3MDNiMjQ1L2NhXzVmZDU3OGRjOWZmMDQ5NmRhNzk5ZDA5MDgzNWE4ZDgx</auth>
sleekxmppfs.xmlstream.xmlstream DEBUG    RECV: <success xmlns="urn:ietf:params:xml:ns:xmpp-sasl" />
sleekxmppfs.xmlstream.xmlstream DEBUG    Event triggered: auth_success
sleekxmppfs.xmlstream.xmlstream DEBUG    SEND (IMMED): <stream:stream to='ecouser.net' xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:client' xml:lang='en' version='1.0'>
sleekxmppfs.xmlstream.xmlstream DEBUG    RECV: <stream:stream version="1.0" id="1" from="ecouser.net">
sleekxmppfs.xmlstream.xmlstream DEBUG    RECV: <stream:features xmlns="http://etherx.jabber.org/streams"><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind" /><session xmlns="urn:ietf:params:xml:ns:xmpp-session" /></stream:features>
sleekxmppfs.features.feature_bind.bind DEBUG    Requesting resource: 1703b245
sleekxmppfs.xmlstream.xmlstream DEBUG    SEND (IMMED): <iq id="8d0966b8-4246-4697-b253-e72ae4b9380a-1" type="set"><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"><resource>1703b245</resource></bind></iq>
sleekxmppfs.xmlstream.xmlstream DEBUG    RECV: <iq type="result" id="8d0966b8-4246-4697-b253-e72ae4b9380a-1"><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"><jid>samanthamiller@example.net/1703b245</jid></bind></iq>
sleekxmppfs.xmlstream.xmlstream DEBUG    Event triggered: session_bind
sleekxmppfs.features.feature_bind.bind INFO     JID set to: samanthamiller@example.net/1703b245
sleekxmppfs.xmlstream.xmlstream DEBUG    SEND (IMMED): <iq id="8d0966b8-4246-4697-b253-e72ae4b9380a-2" type="set"><session xmlns="urn:ietf:params:xml:ns:xmpp-session" /></iq>
sleekxmppfs.xmlstream.xmlstream DEBUG    RECV: <iq type="result" id="8d0966b8-4246-4697-b253-e72ae4b9380a-2" />
sleekxmppfs.features.feature_session.session DEBUG    Established Session
sleekxmppfs.xmlstream.xmlstream DEBUG    RECV: <iq from="ecouser.net" to="samanthamiller@example.net/1703b245" id="s2c1" type="get"><ping xmlns="urn:xmpp:ping" /></iq>
sleekxmppfs.xmlstream.xmlstream DEBUG    Event triggered: session_start
sleekxmppfs.xmlstream.xmlstream DEBUG    SEND: <iq to="ecouser.net" id="s2c1" type="error"><error type="cancel"><feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" /><text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">No handlers registered for this request.</text></error></iq>
sleekxmppfs.clientxmpp DEBUG    Finished processing stream features.
sleekxmppfs.xmlstream.xmlstream DEBUG    Event triggered: stream_negotiated
sucks      DEBUG    ----------------- starting session ----------------
sucks      DEBUG    event = {}
performing clean command
sucks      DEBUG    Sending command <iq id="8d0966b8-4246-4697-b253-e72ae4b9380a-3" to="samanthamiller@example.net/atom" from="samanthamiller@example.net/1703b245" type="set"><query xmlns="com:ctl"><ctl td="Clean" id="808-393-1135"><clean type="auto" speed="standard" act="s" /></ctl></query></iq>
sleekxmppfs.xmlstream.xmlstream DEBUG    SEND: <iq id="8d0966b8-4246-4697-b253-e72ae4b9380a-3" to="samanthamiller@example.net/atom" from="samanthamiller@example.net/1703b245" type="set"><query xmlns="com:ctl"><ctl td="Clean" id="808-393-1135"><clean type="auto" speed="standard" act="s" /></ctl></query></iq>
sleekxmppfs.xmlstream.xmlstream DEBUG    RECV: <iq from="samanthamiller@example.net/atom" id="8d0966b8-4246-4697-b253-e72ae4b9380a-3" to="samanthamiller@example.net/1703b245" type="result" />
sleekxmppfs.xmlstream.xmlstream DEBUG    RECV: <iq from="samanthamiller@example.net/atom" id="953" to="samanthamiller@example.net/1703b245" type="set"><query xmlns="com:ctl"><ctl admin="samanthamiller@example.net" errno="103" id="808-393-1135" ret="fail" /></query></iq>
waiting for 600.0s

```

Debug output of your fork of sucks for "charge" (which is executed, but the script wait even after the robot is on charge):
```
__main__   DEBUG    will run [<__main__.CliAction object at 0xffff916fc1d0>]
sucks      DEBUG    Setting up EcoVacsAPI
sucks      DEBUG    calling main api user/login with (('account', 'kgoWgY29l1jwE4jM3L2gHBhxdpbLOlgPBCqVNK2zsWepbRFEQ5xa5YaLdDxYC18VwYvn9VA0zetwj7rSCLC9jqYWpbWlwof7bQ64n1B8RpqfDxZbsS0FwwZm4OP3cdaTd/RoqsEUHMyxDHiV82le/rtKJfdN4yVZrdDfQ9mwgc8='), ('password', 's/o4/0NF0NXChu0TWXWNcHa5vCT0Iw68jb5qmTPpG7Px+pFMwTR3gWLGYBQ1x4ypXn5RTx8EdC4aFoR7mKIMN7ogbNibBcC9a4hVFY4S2UDkQWv3pEfSFudWVn1hjQUWACnbDulVYWlbDjYb1aLU3lnH1Yx/L4Or5NeJkRbGAqA='))
urllib3.connectionpool DEBUG    Starting new HTTPS connection (1): eco-ca-api.ecovacs.com:443
/usr/local/lib/python3.6/site-packages/urllib3/connectionpool.py:1004: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning,
urllib3.connectionpool DEBUG    https://eco-ca-api.ecovacs.com:443 "GET /v1/private/ca/en/1703b245b1523e6a00dbaa3d60874a56/i_eco_e/1.3.5/c_googleplay/1/user/login?account=kgoWgY29l1jwE4jM3L2gHBhxdpbLOlgPBCqVNK2zsWepbRFEQ5xa5YaLdDxYC18VwYvn9VA0zetwj7rSCLC9jqYWpbWlwof7bQ64n1B8RpqfDxZbsS0FwwZm4OP3cdaTd%2FRoqsEUHMyxDHiV82le%2FrtKJfdN4yVZrdDfQ9mwgc8%3D&password=s%2Fo4%2F0NF0NXChu0TWXWNcHa5vCT0Iw68jb5qmTPpG7Px%2BpFMwTR3gWLGYBQ1x4ypXn5RTx8EdC4aFoR7mKIMN7ogbNibBcC9a4hVFY4S2UDkQWv3pEfSFudWVn1hjQUWACnbDulVYWlbDjYb1aLU3lnH1Yx%2FL4Or5NeJkRbGAqA%3D&requestId=acb77f35452627a20060dfd14545fb23&authTimespan=1577920601904&authTimeZone=GMT-8&authAppkey=eJUWrzRv34qFSaYk&authSign=2a41de0557e8ab814a8ded51a89d71a6 HTTP/1.1" 200 234
sucks      DEBUG    got {'code': '0000', 'data': {'accessToken': '34cf687933664e0aaca507a92d5aac47', 'uid': 'fuid_tmpuser', 'username': 'fusername_tmpuser', 'country': 'ca', 'email': 'samanthamiller@example.net'}, 'msg': '操作成功', 'time': 1577920602088}
sucks      DEBUG    calling main api user/getAuthCode with (('uid', 'fuid_tmpuser'), ('accessToken', '34cf687933664e0aaca507a92d5aac47'))
urllib3.connectionpool DEBUG    Starting new HTTPS connection (1): eco-ca-api.ecovacs.com:443
/usr/local/lib/python3.6/site-packages/urllib3/connectionpool.py:1004: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning,
urllib3.connectionpool DEBUG    https://eco-ca-api.ecovacs.com:443 "GET /v1/private/ca/en/1703b245b1523e6a00dbaa3d60874a56/i_eco_e/1.3.5/c_googleplay/1/user/getAuthCode?uid=fuid_tmpuser&accessToken=34cf687933664e0aaca507a92d5aac47&requestId=e91a0523f7a572d631687a9c7cb882d8&authTimespan=1577920602105&authTimeZone=GMT-8&authAppkey=eJUWrzRv34qFSaYk&authSign=61c865e85085dbec4e991d002eba2460 HTTP/1.1" 200 165
sucks      DEBUG    got {'code': '0000', 'data': {'authCode': 'ca_93ffcda8db65474ea84473b64c4a8717', 'ecovacsUid': 'fuid_tmpuser'}, 'msg': '操作成功', 'time': 1577920602217}
sucks      DEBUG    calling portal api users/user.do function loginByItToken with {'todo': 'loginByItToken', 'country': 'CA', 'resource': '1703b245', 'realm': 'ecouser.net', 'userId': 'fuid_tmpuser', 'token': 'ca_93ffcda8db65474ea84473b64c4a8717'}
urllib3.connectionpool DEBUG    Starting new HTTPS connection (1): portal-na.ecouser.net:443
/usr/local/lib/python3.6/site-packages/urllib3/connectionpool.py:1004: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning,
urllib3.connectionpool DEBUG    https://portal-na.ecouser.net:443 "POST /api/users/user.do HTTP/1.1" 200 132
sucks      DEBUG    got {'resource': '1703b245', 'result': 'ok', 'todo': 'result', 'token': 'ca_93ffcda8db65474ea84473b64c4a8717', 'userId': 'fuid_tmpuser'}
root       DEBUG    EcoVacsAPI connection complete
sucks      DEBUG    calling portal api users/user.do function GetDeviceList with {'todo': 'GetDeviceList', 'userid': 'fuid_tmpuser', 'auth': {'with': 'users', 'userid': 'fuid_tmpuser', 'realm': 'ecouser.net', 'token': 'ca_93ffcda8db65474ea84473b64c4a8717', 'resource': '1703b245'}}
urllib3.connectionpool DEBUG    Starting new HTTPS connection (1): portal-na.ecouser.net:443
/usr/local/lib/python3.6/site-packages/urllib3/connectionpool.py:1004: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning,
urllib3.connectionpool DEBUG    https://portal-na.ecouser.net:443 "POST /api/users/user.do HTTP/1.1" 200 236
sucks      DEBUG    got {'devices': [{'class': '125', 'company': 'eco-legacy', 'did': 'E0000691418601590748', 'name': 'E0000691418601590748', 'nick': '', 'resource': 'atom', 'mqtt_connection': False, 'xmpp_connection': True}], 'result': 'ok', 'todo': 'result'}
sleekxmppfs.plugins.base DEBUG    Loaded Plugin: RFC 6120: Stream Feature: STARTTLS
sleekxmppfs.plugins.base DEBUG    Loaded Plugin: RFC 6120: Stream Feature: Resource Binding
sleekxmppfs.plugins.base DEBUG    Loaded Plugin: RFC 3920: Stream Feature: Start Session
sleekxmppfs.plugins.base DEBUG    Loaded Plugin: RFC 6121: Stream Feature: Roster Versioning
sleekxmppfs.plugins.base DEBUG    Loaded Plugin: RFC 6121: Stream Feature: Subscription Pre-Approval
sleekxmppfs.plugins.base DEBUG    Loaded Plugin: RFC 6120: Stream Feature: SASL
sleekxmppfs.basexmpp WARNING  fulljid property deprecated. Use boundjid.resource
sleekxmppfs.xmlstream.xmlstream DEBUG    Waiting 2.099893605723135 seconds before connecting.
sleekxmppfs.xmlstream.resolver DEBUG    DNS: Querying msg-na.ecouser.net for AAAA records.
sleekxmppfs.xmlstream.resolver DEBUG    DNS: No AAAA records for msg-na.ecouser.net
sleekxmppfs.xmlstream.resolver DEBUG    DNS: Querying msg-na.ecouser.net for A records.
sleekxmppfs.xmlstream.xmlstream DEBUG    Connecting to 116.69.203.115:5223
sleekxmppfs.xmlstream.xmlstream DEBUG    Event triggered: connected
sleekxmppfs.thirdparty.statemachine DEBUG     ==== TRANSITION disconnected -> connected
sleekxmppfs.xmlstream.xmlstream DEBUG    Starting HANDLER THREAD
sleekxmppfs.xmlstream.xmlstream DEBUG    Loading event runner
sleekxmppfs.xmlstream.xmlstream DEBUG    SEND (IMMED): <stream:stream to='ecouser.net' xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:client' xml:lang='en' version='1.0'>
sleekxmppfs.xmlstream.xmlstream DEBUG    RECV: <stream:stream version="1.0" id="1" from="ecouser.net">
sleekxmppfs.xmlstream.xmlstream DEBUG    RECV: <stream:features xmlns="http://etherx.jabber.org/streams"><starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"><required /></starttls><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>PLAIN</mechanism></mechanisms></stream:features>
sleekxmppfs.xmlstream.xmlstream DEBUG    SEND (IMMED): <starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"><required /></starttls>
sleekxmppfs.xmlstream.xmlstream DEBUG    RECV: <proceed xmlns="urn:ietf:params:xml:ns:xmpp-tls" />
sleekxmppfs.features.feature_starttls.starttls DEBUG    Starting TLS
sleekxmppfs.xmlstream.xmlstream INFO     Negotiating TLS
sleekxmppfs.xmlstream.xmlstream INFO     Using SSL version: TLSv1
sleekxmppfs.xmlstream.xmlstream DEBUG    CERT: -----BEGIN CERTIFICATE-----
MIID6zCCAtOgAwIBAgICBnowDQYJKoZIhvcNAQELBQAwJTEPMA0GA1UEChMGQnVt
cGVyMRIwEAYDVQQDEwlCdW1wZXIgQ0EwHhcNMjAwMTAxMDgxMjQzWhcNMjIwMTAx
MDgxMjQzWjApMQ8wDQYDVQQKEwZCdW1wZXIxFjAUBgNVBAMTDUJ1bXBlciBTZXJ2
ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCwVePwVwlEDBiHbQFS
YZ/oDUJzF3+htGL0Ufj7FvuAArjYmukmPR1AFV1abh6cDKFtVU1PN71jxQio7v6l
E38kNkJp8DvvPECT506L/p5QxnnXmEyvYM7WruRwvSTt30nXP3actjDdf1UjIJgz
4Tlcz1yPMnHRuIA1JwSy78GXTnX+RRbhg/qwl+AFikaWlIH+3DcxEum+7NuDt197
Kr758QdQzOWxBH285hyLVsW4qHGEQFUawNJTNFg8xCReCYta+Xs1c5Hb8AATYEU4
/5L2fk6TQXVqThj/tMEmFv7WUqKH9QrX9zk7P2th/FwLSGgIhkiqRlYKBV/lNTpd
/sXpAgMBAAGjggEfMIIBGzAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB
BQUHAwIGCCsGAQUFBwMBMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFPyIU6wXPITo
wso34b9ohnQ6xTPMMB8GA1UdIwQYMBaAFMJSmSc+gl5/RRghkuO8r70L5eoaMIGb
BgNVHREEgZMwgZCCHWxvY2FsLWJ1bXBlci11Yi5sb2NhbC5oYXNzLmlvgglsb2Nh
bGhvc3SCC2Vjb3ZhY3MuY29tgg0qLmVjb3ZhY3MuY29tggtlY291c2VyLm5ldIIN
Ki5lY291c2VyLm5ldIILZWNvdmFjcy5uZXSCDSouZWNvdmFjcy5uZXSHBH8AAAGH
BKweIQaHBH8AAAEwDQYJKoZIhvcNAQELBQADggEBAJYP5D4mqMzyRFCWjuvsIqcJ
vEHnQdEkUIUkj3Yx6grWsVQBMWjWChpx5w6ony++Q2jhHJFsfiFQaC/P05jOLjZz
JJ+xE76IgCTHFxTZ/zIkYFM2xoQuJi+45+vbLkagaNSFW5RfnOHxqW+GjfctOFT5
9Z1LF5p4+0kPU82lmaW4udMwLYR8blszgScjL3q3xYv0+kIlOGeNe7b9unGx9tcn
YIH430/GOfMYwlAn68NygYZxJ0qJDJSohOUA9gBVuQNQjAFLylS3Ks85liUDvQJo
XaK053Ijr8LzVi6f8lwkoFuEg+XHaC5nCIf6Pl2jkVOfYufL9shDjZBQBmHBHr0=
-----END CERTIFICATE-----

sleekxmppfs.xmlstream.xmlstream DEBUG    Event triggered: ssl_cert
sleekxmppfs.xmlstream.xmlstream DEBUG    SEND (IMMED): <stream:stream to='ecouser.net' xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:client' xml:lang='en' version='1.0'>
sleekxmppfs.xmlstream.xmlstream DEBUG    RECV: <stream:stream version="1.0" id="1" from="ecouser.net">
sleekxmppfs.xmlstream.xmlstream DEBUG    RECV: <stream:features xmlns="http://etherx.jabber.org/streams"><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>PLAIN</mechanism></mechanisms></stream:features>
sleekxmppfs.xmlstream.xmlstream DEBUG    SEND (IMMED): <auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="PLAIN">ZnVpZF90bXB1c2VyAGZ1aWRfdG1wdXNlcgAwLzE3MDNiMjQ1L2NhXzkzZmZjZGE4ZGI2NTQ3NGVhODQ0NzNiNjRjNGE4NzE3</auth>
sleekxmppfs.xmlstream.xmlstream DEBUG    RECV: <success xmlns="urn:ietf:params:xml:ns:xmpp-sasl" />
sleekxmppfs.xmlstream.xmlstream DEBUG    Event triggered: auth_success
sleekxmppfs.xmlstream.xmlstream DEBUG    SEND (IMMED): <stream:stream to='ecouser.net' xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:client' xml:lang='en' version='1.0'>
sleekxmppfs.xmlstream.xmlstream DEBUG    RECV: <stream:stream version="1.0" id="1" from="ecouser.net">
sleekxmppfs.xmlstream.xmlstream DEBUG    RECV: <stream:features xmlns="http://etherx.jabber.org/streams"><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind" /><session xmlns="urn:ietf:params:xml:ns:xmpp-session" /></stream:features>
sleekxmppfs.features.feature_bind.bind DEBUG    Requesting resource: 1703b245
sleekxmppfs.xmlstream.xmlstream DEBUG    SEND (IMMED): <iq id="8221be1e-847b-45ad-a70a-cdd7a9af1245-1" type="set"><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"><resource>1703b245</resource></bind></iq>
sleekxmppfs.xmlstream.xmlstream DEBUG    RECV: <iq type="result" id="8221be1e-847b-45ad-a70a-cdd7a9af1245-1"><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"><jid>samanthamiller@example.net/1703b245</jid></bind></iq>
sleekxmppfs.xmlstream.xmlstream DEBUG    Event triggered: session_bind
sleekxmppfs.features.feature_bind.bind INFO     JID set to: samanthamiller@example.net/1703b245
sleekxmppfs.xmlstream.xmlstream DEBUG    SEND (IMMED): <iq id="8221be1e-847b-45ad-a70a-cdd7a9af1245-2" type="set"><session xmlns="urn:ietf:params:xml:ns:xmpp-session" /></iq>
sleekxmppfs.xmlstream.xmlstream DEBUG    RECV: <iq type="result" id="8221be1e-847b-45ad-a70a-cdd7a9af1245-2" />
sleekxmppfs.features.feature_session.session DEBUG    Established Session
sleekxmppfs.xmlstream.xmlstream DEBUG    RECV: <iq from="ecouser.net" to="samanthamiller@example.net/1703b245" id="s2c1" type="get"><ping xmlns="urn:xmpp:ping" /></iq>
sleekxmppfs.xmlstream.xmlstream DEBUG    Event triggered: session_start
sleekxmppfs.xmlstream.xmlstream DEBUG    SEND: <iq to="ecouser.net" id="s2c1" type="error"><error type="cancel"><feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" /><text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">No handlers registered for this request.</text></error></iq>
sleekxmppfs.clientxmpp DEBUG    Finished processing stream features.
sleekxmppfs.xmlstream.xmlstream DEBUG    Event triggered: stream_negotiated
sucks      DEBUG    ----------------- starting session ----------------
sucks      DEBUG    event = {}
performing charge command
sucks      DEBUG    Sending command <iq id="8221be1e-847b-45ad-a70a-cdd7a9af1245-3" to="samanthamiller@example.net/atom" from="samanthamiller@example.net/1703b245" type="set"><query xmlns="com:ctl"><ctl td="Charge" id="320149927"><charge type="go" /></ctl></query></iq>
sleekxmppfs.xmlstream.xmlstream DEBUG    SEND: <iq id="8221be1e-847b-45ad-a70a-cdd7a9af1245-3" to="samanthamiller@example.net/atom" from="samanthamiller@example.net/1703b245" type="set"><query xmlns="com:ctl"><ctl td="Charge" id="320149927"><charge type="go" /></ctl></query></iq>
sleekxmppfs.xmlstream.xmlstream DEBUG    RECV: <iq from="samanthamiller@example.net/atom" id="8221be1e-847b-45ad-a70a-cdd7a9af1245-3" to="samanthamiller@example.net/1703b245" type="result" />
__main__   DEBUG    waiting on charge_status for value charging
```
 Comment 2: @joe540 -
I have a guess that your bot may be complaining of permission issues, but the fuid_ user provided by Bumper wasn't being added properly.  Funny enough I just ran into this on my Ozmo601 (#85), which uses XMPP and in theory should be similar to your M80.

I just fixed this with PR #86 - Can you pull the latest Bumper and try again?  
 Comment 3: Hi,

    it works now! I still see errors from the robot in bumper's log but all commands works from both sucks (your fork) and the android app! (Also, the charge command exit correctly at the right time)

Thanks again for your fast and effective support and for your nice work!
{'source': 'GithubIssues', 'repo_name_with_owner': 'bmartin5692/bumper', 'issue_id': 544331611, 'repo_stars': 192.0}