core icon indicating copy to clipboard operation
core copied to clipboard

Ecovacs Integration: Ecovacs deebot x2 Map not available

Open sebcbien37 opened this issue 9 months ago • 10 comments

The problem

Hello, I use the integration for Ecovacs Deebot x2. The integration works fine but the maps doesn't work. I have the error : image

Could you help me ? Thanks.

What version of Home Assistant Core has the issue?

2024.3.0

What was the last working version of Home Assistant Core?

No response

What type of installation are you running?

Home Assistant Container

Integration causing the issue

Ecovacs

Link to integration documentation on our website

No response

Diagnostics information

No response

Example YAML snippet

No response

Anything in the logs that might be useful for us?

No response

Additional information

No response

sebcbien37 avatar May 06 '24 12:05 sebcbien37

Hey there @overloadut, @mib1185, @edenhaus, @augar, 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)

home-assistant[bot] avatar May 06 '24 12:05 home-assistant[bot]

I somehow assumed that 2024.5 would solve this based on #442 on Deebot repo.

I've dumped the specific error here:

Logger: aiohttp.server
Bron: /usr/local/lib/python3.12/site-packages/aiohttp/web_protocol.py:421
Eerst voorgekomen: 5 mei 2024 om 13:11:13 (20 gebeurtenissen)
Laatst gelogd: 11:46:56

Error handling request
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_protocol.py", line 452, in _handle_request
    resp = await request_handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_app.py", line 543, in _handle
    resp = await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_middlewares.py", line 114, in impl
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 92, in security_filter_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 210, in forwarded_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 26, in request_context_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 88, in ban_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/aiohttp_session/__init__.py", line 199, in factory
    response = await handler(request)
               ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 295, in auth_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/headers.py", line 32, in headers_middleware
    response = await handler(request)
               ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/http.py", line 73, in handle
    result = await handler(request, **request.match_info)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/image/__init__.py", line 289, in get
    return await self.handle(request, image_entity)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/image/__init__.py", line 296, in handle
    image = await _async_get_image(image_entity, IMAGE_TIMEOUT)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/image/__init__.py", line 83, in _async_get_image
    if image_bytes := await image_entity.async_image():
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/image/__init__.py", line 238, in async_image
    return await self.hass.async_add_executor_job(self.image)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/ecovacs/image.py", line 60, in image
    if svg := self._device.map.get_svg_map():
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/deebot_client/map.py", line 602, in get_svg_map
    _get_svg_subset(subset, manipulation)
  File "/usr/local/lib/python3.12/site-packages/deebot_client/map.py", line 315, in _get_svg_subset
    subset_coordinates: list[int] = ast.literal_eval(subset.coordinates)
                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/ast.py", line 66, in literal_eval
    node_or_string = parse(node_or_string.lstrip(" \t"), mode='eval')
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/ast.py", line 52, in parse
    return compile(source, filename, mode, flags,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<unknown>", line 1
    3675,-4374;7625,-4374;7625,-2824;3675,-2824;3675,-2924;3725,-2924;3775,-2974;3775,-3774;3725,-3824;3675,-3824
              ^
SyntaxError: invalid syntax

I'm using the Omni X2, I thought they shared the same v2 mapping (https://github.com/DeebotUniverse/client.py/pull/372) but apparently not? At least the integration is running 7.1.0.

DieterKoblenz avatar May 07 '24 09:05 DieterKoblenz

I'm having the same issue for my Omni T20. The map worked just fine the first day or two but now it seems to be broken. Such a shame, i'm considering returning it to buy a Roborock instead since that integration is very polished.

tobiasbrage avatar May 07 '24 21:05 tobiasbrage

Did HA Update today, now its deebot_client at version 7.1.0 (but in this the map generation was still at Version 1) Finally got entry to the installation files and modded missing "version=2"...now its more party in the logs but STILL NO MAP

Since Rooms and Map depend on each other, the whole thing wont work...the data comes in over the server, with correct namings and coordinates but when it comes to download the picture(with every map update event for example) it stucks there with that nuts invalid syntax messages...

seems it isnt primarily an problem of the deebot_client than more an underlying problem with the picture-download(maybe i'm wrong, but in my logs at first i see ERROR (MainThread) [aiohttp.server] Error handling request Traceback (most recent call last): File "/usr/local/lib/python3.12/site-packages/aiohttp/web_protocol.py", line 452, in _handle_request resp = await request_handler(request))

Maybe i could be done an tiny workaround and do set in the integration an "fallback" picture file on which the rooms and coordinates could be written? So we would have working rooms and finally it could be commanded from HA...with white picture, but working

Ulfmerbold2000 avatar May 08 '24 15:05 Ulfmerbold2000

Do anyone have a fix for this issue? It's really annoying as neither rooms or map is working and therefore I can't give the vacuum commands to clean specific rooms from home assistant.

tobiasbrage avatar May 09 '24 00:05 tobiasbrage

Can all of you please activate debug logs and post them here. On debug level each request will be logged, which is required to identify the bug

edenhaus avatar May 09 '24 17:05 edenhaus

I'm having the same issue for my Omni T20. The map worked just fine the first day or two but now it seems to be broken. Such a shame, i'm considering returning it to buy a Roborock instead since that integration is very polished.

Ecovacs is not provinding any information about the protocol and the commands. So the whole libary is a hobby reverse engineering project.

edenhaus avatar May 09 '24 17:05 edenhaus

Hello , same issue. Can try to activate the debug, but how to post the log?

NazzaFBcD avatar May 09 '24 17:05 NazzaFBcD

Hello , same issue. Can try to activate the debug, but how to post the log?

You can enable the debug logging directly on the ecovacs config entry. After executing some commands and verify that the issue happen again. If you are sure that the issue is in the logs, go back to the config entry and disable debug logging. Automatically a Logfile will be downloaded to your device. You only need to upload it here

edenhaus avatar May 09 '24 17:05 edenhaus

home-assistant_ecovacs_2024-05-10.log

Did an new Debuglog today over around half and an hour while an app plan was running Hope this helps a bit

Ulfmerbold2000 avatar May 10 '24 09:05 Ulfmerbold2000