home-assistant / core

:house_with_garden: Open source home automation that puts local control and privacy first.
https://www.home-assistant.io
Apache License 2.0
69.98k stars 29.06k forks source link

ecovacs deebot x2 won't start #110177

Open bce626 opened 5 months ago

bce626 commented 5 months ago

The problem

Ecovacs Deebot X2 won't start when you give the command to clean via home assistant.

Next in the log " Logger: deebot_client.commands.json.common Source: components/ecovacs/vacuum.py:319 First occurred: 12:23:22 (2 occurrences) Last logged: 12:23:25

Command "clean" was not successfully. body={'code': 20003, 'msg': 'rcp not support'} " home-assistant_ecovacs_2024-02-10T11-24-41.525Z.log

What version of Home Assistant Core has the issue?

2024.2.1

What was the last working version of Home Assistant Core?

No response

What type of installation are you running?

Home Assistant OS

Integration causing the issue

ecovacs

Link to integration documentation on our website

https://www.home-assistant.io/integrations/ecovacs/

Diagnostics information

home-assistant_ecovacs_2024-02-10T11-24-41.525Z.log

Example YAML snippet

No response

Anything in the logs that might be useful for us?

Logger: deebot_client.commands.json.common
Source: components/ecovacs/vacuum.py:319
First occurred: 12:23:22 (2 occurrences)
Last logged: 12:23:25

Command "clean" was not successfully. body={'code': 20003, 'msg': 'rcp not support'}

Additional information

No response

home-assistant[bot] commented 5 months ago

Hey there @overloadut, @mib1185, @edenhaus, mind taking a look at this issue as it has been labeled with an integration (ecovacs) you are listed as a code owner for? Thanks!

Code owner commands Code owners of `ecovacs` can trigger bot actions by commenting: - `@home-assistant close` Closes the issue. - `@home-assistant rename Awesome new title` Renames the issue. - `@home-assistant reopen` Reopen the issue. - `@home-assistant unassign ecovacs` Removes the current integration label and assignees on the issue, add the integration domain after the command. - `@home-assistant add-label needs-more-information` Add a label (needs-more-information, problem in dependency, problem in custom component) to the issue. - `@home-assistant remove-label needs-more-information` Remove a label (needs-more-information, problem in dependency, problem in custom component) on the issue.

(message by CodeOwnersMention)


ecovacs documentation ecovacs source (message by IssueLinks)

edenhaus commented 5 months ago

Please add the config entry diagnostic information. Without I cannot help you. Thanks

bce626 commented 5 months ago

where can i find the config entry diagnostic information.


Van: Robert Resch @.> Verzonden: maandag 12 februari 2024 09:30 Aan: home-assistant/core @.> CC: bce626 @.>; Author @.> Onderwerp: Re: [home-assistant/core] ecovacs deebot x2 won't start (Issue #110177)

Please add the config entry diagnostic information. Without I cannot help you. Thanks

— Reply to this email directly, view it on GitHubhttps://github.com/home-assistant/core/issues/110177#issuecomment-1938228232, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AFNGURCMAFIGDWNF2R3J4XTYTHHJLAVCNFSM6AAAAABDCU7IS2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMZYGIZDQMRTGI. You are receiving this because you authored the thread.

mib1185 commented 5 months ago

here you can find the diagnostics data

bce626 commented 5 months ago

config_entry-ecovacs-5ea284f370fa007eb56b16630176d1a4.json

thank you

edenhaus commented 5 months ago

You have still installed the custom component Deebot 4 Home Assistant. Please uninstall it and restart HA, this is required as you currently overwrite the dependency of the core integration

bce626 commented 5 months ago

I took Ecovacs out of devices and services and then a reboot. Then took it out of HACS and rebooted again. After the restart, I looked up the application in devices and services and installed it on new, but the problem remains. config_entry-ecovacs-e21baaf5502e44c766a4927588f77ce8 (1).json

Logger: deebot_client.message Source: /usr/local/lib/python3.12/site-packages/deebot_client/message.py:69 First occurred: 12:24:41 (1 occurrences) Last logged: 12:24:41

Could not parse getCleanInfo: {'code': 20003, 'msg': 'rcp not support'} Traceback (most recent call last): File "/usr/local/lib/python3.12/site-packages/deebot_client/message.py", line 62, in wrapper if response.state == HandlingState.ANALYSE: ^^^^^^^^^^^^^^ AttributeError: 'NoneType' object has no attribute 'state'

edenhaus commented 5 months ago

It looks like Ecovacs introduced a new cleaning command, which is currently unsupported by deebot-client. Feel free to add support for it directly to the library

chrfin commented 4 months ago

@bce626 Does the Map work with your X2? I get all the status information, but the map only returns HTTP 500, but I did not investigate any further until now...

bce626 commented 4 months ago

@chrfin No, the Map does not work. I get a broken logo sign. I just don't know if it's a 500 code, or if the file doesn't exist.

kerashin commented 3 months ago

@chrfin No, the Map does not work. I get a broken logo sign. I just don't know if it's a 500 code, or if the file doesn't exist.

I have the same issue, the map was working before the migration. Now it's a broken logo sign. Is there an issue logged for this or do I need to log one?

Elle4u commented 3 months ago

Same to me. Map not working.

ytorres commented 3 months ago

Same to me. Map not working. 500 code

edenhaus commented 3 months ago

It will not help to comment "Same to me". Please use reactions on the issue descriptions.

I don't own an X2 and therefore I cannot implement support for it. Someone with an X2 needs to add the missing commands to the client.

GK-hassio commented 3 months ago

Dear @edenhaus, I have a Omni X2 available for testing. If you could give some guidance how to experiment with the coding? I have some experience. DeebotOmniX2DebugLog.txt

Ulfmerbold2000 commented 2 months ago

I have an x2 Omni too. Integration fails at these points: Map fails, Rooms missing fully, all Stationfunctions(for example when bot is washing the pads, drying)

If the X1 working fully now, how to get at the config data in python 3.12(have searched, cant find the whole dir ^^)

As i have seen, the classfile and the reference is missing (must be "class": "lf3bn4"), but without to come into the deebot-client directory in python... Functions in ecovacs-deebot.js are implemented now and same as with X1 and come from T20.

But as i sayed, without access to deebot-client directory i cant give it a try to make some files.

Any hint how to come into the magic parts would be great(i'm not an programmer nor did i anything with homeassistant scripting, but be an sysadmin)

edenhaus commented 2 months ago

Should be fixed with #116025

pranktap commented 2 months ago

I am on 2024.5.0 and map is still not working for x2.

Ulfmerbold2000 commented 2 months ago

X2 got the device file in 7.0.0 deebot_client(this is the main component for functionality)

But it is referenced to the Deebot T20, 7.0.1 gives the X2 his own featureset but with the map settings from T20(still) I've an pull request open to change this into V2 of Map generation(hopefully this will do the trick)

I would love to test it in my own HA installation first, but i can't find a way to go into the needed container at file level. So changes comes slowly over the HA updates

there are some things that will be better with deebot_client 7.0.1, more sensors(round mop, voice etc), but the map and the rooms are obvious bound together and need some try and error with the v2 map generation(my hope that this will do the trick then later)

generally my x2 send the rooms in debuglog, but at the end they are not in the vaccum entity at the moment

DieterKoblenz commented 2 months ago

While the map is fixed, this specific issue is not in deebotclient 7.2.0

2024-05-15 10:30:34.683 DEBUG (MainThread) [homeassistant.components.ecovacs.vacuum] async_send_command spot_area with {'rooms': '0,1,2', 'cleanings': 2}
2024-05-15 10:30:34.683 DEBUG (MainThread) [deebot_client.authentication] Calling api(1/3): url=https://portal-eu.ecouser.net/api/iot/devmanager.do, params={'mid': 'lf3bn4', 'did': '84bd0abe-a201-4c00-af5a-47a5b8a5f4fc', 'td': 'q', 'u': 'fcirumq0e0f6f242', 'cv': '1.67.3', 't': 'a', 'av': '1.3.1'}, json={'cmdName': 'clean', 'payload': {'header': {'pri': '1', 'ts': 1715761834.683294, 'tzm': 480, 'ver': '0.0.50'}, 'body': {'data': {'act': 'start', 'type': 'spotArea', 'content': '0,1,2', 'count': 2}}}, 'payloadType': 'j', 'td': 'q', 'toId': '84bd0abe-a201-4c00-af5a-47a5b8a5f4fc', 'toRes': 'yQnl', 'toType': 'lf3bn4'}
2024-05-15 10:30:34.723 DEBUG (MainThread) [deebot_client.mqtt_client.client] Received PUBLISH (d0, q0, r0, m0), 'iot/p2p/clean/HelperMQClientId-awseu-sts-ngiot-mqsjmq-1/ecosys/1234/84bd0abe-a201-4c00-af5a-47a5b8a5f4fc/lf3bn4/yQnl/q/2a4l/j', ...  (148 bytes)
2024-05-15 10:30:34.723 DEBUG (MainThread) [deebot_client.mqtt_client] Got message: topic=iot/p2p/clean/HelperMQClientId-awseu-sts-ngiot-mqsjmq-1/ecosys/1234/84bd0abe-a201-4c00-af5a-47a5b8a5f4fc/lf3bn4/yQnl/q/2a4l/j, payload=b'{"header":{"pri":"1","ts":1715761834.683294,"tzm":480,"ver":"0.0.50"},"body":{"data":{"act":"start","type":"spotArea","content":"0,1,2","count":2}}}'
2024-05-15 10:30:34.723 DEBUG (MainThread) [deebot_client.mqtt_client] Command clean does not support p2p handling (yet)
2024-05-15 10:30:34.837 DEBUG (MainThread) [deebot_client.authentication] Success calling api url=https://portal-eu.ecouser.net/api/iot/devmanager.do, params={'mid': 'lf3bn4', 'did': '84bd0abe-a201-4c00-af5a-47a5b8a5f4fc', 'td': 'q', 'u': 'fcirumq0e0f6f242', 'cv': '1.67.3', 't': 'a', 'av': '1.3.1'}, json={'cmdName': 'clean', 'payload': {'header': {'pri': '1', 'ts': 1715761834.683294, 'tzm': 480, 'ver': '0.0.50'}, 'body': {'data': {'act': 'start', 'type': 'spotArea', 'content': '0,1,2', 'count': 2}}}, 'payloadType': 'j', 'td': 'q', 'toId': '84bd0abe-a201-4c00-af5a-47a5b8a5f4fc', 'toRes': 'yQnl', 'toType': 'lf3bn4'}, response={'ret': 'ok', 'resp': {'header': {'pri': 1, 'tzm': 60, 'ts': '1715761834672', 'ver': '0.0.1', 'fwVer': '1.75.0', 'hwVer': '0.1.1', 'wkVer': '0.1.54'}, 'body': {'code': 20003, 'msg': 'rcp not support'}}, 'id': '2a4l', 'payloadType': 'j'}
2024-05-15 10:30:34.837 WARNING (MainThread) [deebot_client.commands.json.common] Command "clean" was not successfully. body={'code': 20003, 'msg': 'rcp not support'}

@edenhaus I know this is not something you can fix, but could you re-open the issue?

jota1906 commented 1 month ago

I have an Ecovacs Deebot X2. When I try to start it, it won't work. In the logs, I see the error message: 'Command "clean" was not successful. Body={'code': 20003, 'msg': 'rcp not support'}.' config_entry-ecovacs-7b27019369b4809b4fc4f87802e4d13d (1).json

any help, please.

sebcbien37 commented 1 month ago

Hi, I have the same problem. Start, stop and pause don't work! :(

edenhaus commented 1 month ago

I cannot analyze and debug the problem as I don't have the model. The only one who can solve it is you all by analyzing the traffic of the app and checking what is different

sebcbien37 commented 1 month ago

Hi, how can I analyse the traffic of the app ? What application do you use to analyze the frames ?

sebcbien37 commented 1 month ago

Hi @edenhaus, you can find attached my wireshark data of my iphone. I have done start, stop, pause and every commands of my ecovacs x2

Thanks

ecovacs.pcapng.zip

edenhaus commented 1 month ago

@sebcbien37 Did you use a proxy in between otherwise we cannot inspect the traffic as it is encrypted. I use always man in the middle proxy for my analysis

sebcbien37 commented 1 month ago

Hi, I recorded a lot of messages. I don't know what I'm allowed to post on the internet, I wouldn't want to post private things. This could help?

{"body":{"data":{"act":"go"}},"header":{"channel":"iOS","reqid":"XXXXXX","ts":"XXXXXX","ver":"0.0.50","m":"request","pri":1,"tzm":120}}

{"body":{"data":{"act":"stop"}},"header":{"channel":"iOS","reqid":"XXXXXX","ts":"XXXXXX","ver":"0.0.50","m":"request","pri":1,"tzm":120}}

{"body":{"data":{"act":"pause"}},"header":{"channel":"iOS","reqid":"XXXXXX","ts":"XXXXXX","ver":"0.0.50","m":"request","pri":1,"tzm":120}}

{ "app": { "id": "ecovacs" }, "auth": { "realm": "ecouser.net", "resource": "IOS581F4F7G8", "token": "XXXXX, "userid": "XXXXX", "with": "users" }, "cmdName": "GetWKVer", "payload": {}, "payloadType": "j", "td": "q", "toId": "XXXXX", "toRes": "2TWb", "toType": "lf3bn4" }

edenhaus commented 4 weeks ago

The important part is probably "cmdName": "GetWKVer",, but there must be different commands for cleaning. Until now I now the following cleaning commands clean and clean_V2

DieterKoblenz commented 4 weeks ago

I've finally had some time to enter the game using mitmproxy.

The ecovacs deebot x2 also uses clean_v2: This is where I clean three rooms:

POST https://api-ngiot.dc-eu.ww.ecouser.net/api/iot/endpoint/control?<redacted>&apn=clean_V2&fmt=j HTTP/2.0

{"body":{"data":{"act":"start","content":{"type":"freeClean","value":"1,0;1,1;1,2"}}},"header":{"channel":"Android","m":"request","pri":2,"reqid":"B5tzsN","ts":"1718695345068","tzm":120,"ver":"0.0.22"}}

And this is the stop command:

POST https://api-ngiot.dc-eu.ww.ecouser.net/api/iot/endpoint/control<redacted>l&apn=clean_V2&fmt=j HTTP/2.0

{"body":{"data":{"act":"stop"}},"header":{"channel":"Android","m":"request","pri":2,"reqid":"AcsiQj","ts":"1718695488122","tzm":120,"ver":"0.0.22"}}