core
core copied to clipboard
Ecovacs Integration: Ecovacs deebot x2 Map not available
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 :
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
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)
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.
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.
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
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.
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
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.
Hello , same issue. Can try to activate the debug, but how to post the log?
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
home-assistant_ecovacs_2024-05-09T17-31-10.988Z.log here... thanks
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