Ecovacs Deebot, Bumper and HA

My mother in law bought us an Ecovacs Deebot N8. I’ve installed the Deebot 4 Home Assistant integration from HACS (the @DeebotUniverse one) and can see the same details as in the Ecovacs app (including the maps which is nice). However I prefer not to use cloud services if I can avoid them, so was interested in Bumper.

Has anyone here managed to get Bumper working as an add-on for HA? I think I would like to go that route, as I don’t have additional resources to run Docker 24/7.

Any other thoughts from anyone using Bumper today?

Hi @dunxd. Did you have any issues installing via HACS? I added but get no option to Configure nd therefore never get the entity to appear. I did have the earlier fork so wondering if it’s an “HA hangover”!

I had no issue installing from HACS and can add the entity fine.

Have you tried a full reboot of your HA box? I seem to recall doing that around the time of installing D4A but can’t be certain I did so for this purpose.

hhmmm. Not tried that. It’s running as a Docker container and due some upgrades so I’ll roll that in and check it. Thanks for coming back to me

Hi @dunxd, I am in a similar situation and wanted to ask if you were successful getting the bumper working?

I never got round to it. I don’t use the robot vacuum that often. It loses its map too frequently to do any kind of automation. I don’t think that would be any different with bumper. Maybe I’ll get interested enough to give it a go.

Are you still looking for information? I found it on YouTube, but I haven’t been able to install it myself. But it looks promising…

1 Like

I got it to work, my problem was that I did the DNS forwarding in AdGuard Home wrong.
I tried using the addresses from the DNSMasq config, but I should have used the addresses from the manual override.
I only realized this after I redirected all the requested DNS addresses from the robot to Bumper.

Now I “only” have the problem that the robot spams my network and tries to communicate with “iot-auth-global.aliyuncs.com” (Alibaba) every 2 seconds on average…
I did not find the request in the documentation, so I blocked it.

Hello!

I have an ancient Deebot 901, trying to get bumper to work with HA.

I believe I have successfully got bumper running and the vacuum connected to bumper, but HA just refuses to connect.

So far I’ve done this

  1. Installed bumper using portainer. Ports are open, 8007 rest/status working
  2. DNS rewritten with adguard

Seen this:

  1. Little vacuum shows right up in Bumper as expected (MQTT connected)
  2. port scan shows all bumper ports open on the docker container

Problem:

  1. Ecovacs integration will not connect with following settings:
  • username : valid email but gibberish
  • pass : 6 digit random number
  • country: correct
  • rest url: http:// [ bumper ip ] : 8007
  • mqtt:// [bumper ip ] :8333
  • verify ssl is OFF
  • I tried mqtts://[bumper ip]:8333 (SAME RESULT)

Bumper log shows NO ATTEMPT to login by HA

Home assistant log as follows:

Unexpected exception during login
Traceback (most recent call last):
  File "/usr/local/lib/python3.13/site-packages/aiohttp/client.py", line 703, in _request
    conn = await self._connector.connect(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        req, traces=traces, timeout=real_timeout
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/local/lib/python3.13/site-packages/aiohttp/connector.py", line 548, in connect
    proto = await self._create_connection(req, traces, timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/aiohttp/connector.py", line 1056, in _create_connection
    _, proto = await self._create_direct_connection(req, traces, timeout)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/aiohttp/connector.py", line 1369, in _create_direct_connection
    transp, proto = await self._wrap_create_connection(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<7 lines>...
    )
    ^
  File "/usr/local/lib/python3.13/site-packages/aiohttp/connector.py", line 1115, in _wrap_create_connection
    sock = await aiohappyeyeballs.start_connection(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<5 lines>...
    )
    ^
  File "/usr/local/lib/python3.13/site-packages/aiohappyeyeballs/impl.py", line 73, in start_connection
    sock = await _connect_sock(
           ^^^^^^^^^^^^^^^^^^^^
    ...<6 lines>...
    )
    ^
  File "/usr/local/lib/python3.13/site-packages/aiohappyeyeballs/impl.py", line 208, in _connect_sock
    await loop.sock_connect(sock, address)
  File "/usr/local/lib/python3.13/asyncio/selector_events.py", line 641, in sock_connect
    return await fut
           ^^^^^^^^^
asyncio.exceptions.CancelledError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/ecovacs/config_flow.py", line 87, in _validate_input
    await authenticator.authenticate()
  File "/usr/local/lib/python3.13/site-packages/deebot_client/authentication.py", line 372, in authenticate
    self._credentials = await self._auth_client.login()
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/deebot_client/authentication.py", line 115, in login
    login_password_resp = await self.__call_login_api(
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        self._account_id, self._password_hash
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/local/lib/python3.13/site-packages/deebot_client/authentication.py", line 186, in __call_login_api
    return await self.__do_auth_response(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        url, self.__sign(params, self._meta, _CLIENT_KEY, _CLIENT_SECRET)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/local/lib/python3.13/site-packages/deebot_client/authentication.py", line 147, in __do_auth_response
    async with self._config.session.get(
               ~~~~~~~~~~~~~~~~~~~~~~~~^
        url, params=params, timeout=_TIMEOUT
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ) as res:
    ^
  File "/usr/local/lib/python3.13/site-packages/aiohttp/client.py", line 1425, in __aenter__
    self._resp: _RetType = await self._coro
                           ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/aiohttp/client.py", line 607, in _request
    with timer:
         ^^^^^
  File "/usr/local/lib/python3.13/site-packages/aiohttp/helpers.py", line 685, in __exit__
    raise asyncio.TimeoutError from exc_val
TimeoutError