bmartin5692 / bumper

A standalone and self-hosted implementation of the central server used by Ecovacs vacuum robots.
GNU General Public License v3.0
273 stars 48 forks source link

X1 Support #132

Open haarp opened 2 years ago

haarp commented 2 years ago

Hello!

Considering getting the current flagship, an Deebot X1 Omni. Is that a bad idea? How well would it be supported? I fear that many of the recent features, lke dust/water-emptying base would be unsupported.

I wouldn't mind helping out to implement them, assuming there's any hope at all to get this to work.

Thanks!

edenhaus commented 1 year ago

Little bit late but also the new features should be supported if they run on the vacuum itself. In other words if the command is executed directly on the robot it should work.

Dan87-home commented 1 year ago

@haarp Did you manage to get it to work? I've just finished setting up internal DNS server, and am reading the documents to build this and run it on this same server before getting the X1 Omni out of the box. I'm hoping it'll work fine if I just get the latest app on my phone but not update the robot's firmware. If it never connects to the original servers, and still works, no problem.

haarp commented 1 year ago

@Dan87-home: Unfortunately I can't answer this. I ultimately went with a Roborock S7 + Valetudo instead.

MitchellHayes commented 1 year ago

I have an X1 Omni, and I plan to get this running at my house. I will update as I go.

bartowski1182 commented 1 year ago

I have an X1 Omni, and I plan to get this running at my house. I will update as I go.

Did you ever get it working?

Dan87-home commented 1 year ago

Unfortunately, I did not. I think I sort of got it working but relented due to the extra functionality we needed to do with the mapping. So, I guess some Chinese server now has our house map and sound/video recordings ripe for the Chinese Government to source at their discretion and under their legislation which will be a rubber stamp. I sincerely hope that the economic benefits of trade outweigh the cost and benefits of war. I’m pretty sure it’s blindingly expensive to justify any military action against where I live.


From: noneabove1182 @.> Sent: Wednesday, April 26, 2023 11:41:20 AM To: bmartin5692/bumper @.> Cc: Dan87 @.>; Mention @.> Subject: Re: [bmartin5692/bumper] X1 Support (Issue #132)

I have an X1 Omni, and I plan to get this running at my house. I will update as I go.

Did you ever get it working?

— Reply to this email directly, view it on GitHubhttps://github.com/bmartin5692/bumper/issues/132#issuecomment-1522639991, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AWOLEDBTMA3LFQ5THIWS2UTXDB4MBANCNFSM5WVTZFDQ. You are receiving this because you were mentioned.Message ID: @.***>

Technerd-SG commented 6 months ago

Hi I also have a Deebot X1 Omni and would be very interested to get this working on it. Has there been any progress made? Thanks!

willliamchan commented 4 months ago

Hi I also have a Deebot X1 Omni and would be very interested to get this working on it. Has there been any progress made? Thanks!

I got one Deebot U2 Pro and two X1 Omni here with me, I have no problem onboarding U2 Pro to Bumper but nothing works for X1 Omni. I hope I have the skill to implement it tho.

Update - Just found this fork MWladislav/bumper do support T10 and I tried it and it can operate X1 Omni too, however with this fork my U2 Pro stopped working with bumper. I hope this is not much to ask but is there any chance we can combine both into one? Or any suggestion how I can run two bumpers in one network?

willliamchan commented 4 months ago

Hi I also have a Deebot X1 Omni and would be very interested to get this working on it. Has there been any progress made? Thanks!

I got one Deebot U2 Pro and two X1 Omni here with me, I have no problem onboarding U2 Pro to Bumper but nothing works for X1 Omni. I hope I have the skill to implement it tho.

Update - Just found this fork MWladislav/bumper do support T10 and I tried it and it can operate X1 Omni too, however with this fork my U2 Pro stopped working with bumper. I hope this is not much to ask but is there any chance we can combine both into one? Or any suggestion how I can run two bumpers in one network?

Figured out to have two adguards configured for DNS and two separate bumpers one for U2 Pro and one for X1 Omni.

U2 Pro - bmartin5692/bumper X1 Omni - mvladislav/bumper:sha-8f8cccf (somehow the latest devlop build from mvladislav stopped working with X1 Omni)

Technerd-SG commented 4 months ago

That is so awsome thank you! I will try it myself

Hi I also have a Deebot X1 Omni and would be very interested to get this working on it. Has there been any progress made? Thanks!

I got one Deebot U2 Pro and two X1 Omni here with me, I have no problem onboarding U2 Pro to Bumper but nothing works for X1 Omni. I hope I have the skill to implement it tho. Update - Just found this fork MWladislav/bumper do support T10 and I tried it and it can operate X1 Omni too, however with this fork my U2 Pro stopped working with bumper. I hope this is not much to ask but is there any chance we can combine both into one? Or any suggestion how I can run two bumpers in one network?

Figured out to have two adguards configured for DNS and two separate bumpers one for U2 Pro and one for X1 Omni.

U2 Pro - bmartin5692/bumper X1 Omni - mvladislav/bumper:sha-8f8cccf (somehow the latest devlop build from mvladislav stopped working with X1 Omni)

Thank you that is so awsome! I will also try it.

Technerd-SG commented 4 months ago

So I tryed it but it seem to doesn't work. Here is what I did. (Using debian 11 vm on Proxmox 7.4.3)

Install docker via apt (https://docs.docker.com/engine/install/debian/)

then: (start directory is /root) docker pull ghcr.io/mvladislav/bumper:sha-8f8cccf

nano .env

BUMPER_LISTEN=0.0.0.0
TZ=Europe/Vienna
NETWORK_MODE=overlay
BUMPER_ANNOUNCE_IP=10.0.0.111

mkdir /bumper/data mkdir /bumper/certs/

cd /bumper/certs/ wget https://raw.githubusercontent.com/MVladislav/bumper/dev/scripts/create_cert.sh chmod +x ./create_cert.sh ./create_cert.sh

(That gets me the certs the docker container needs) ls bumper.crt bumper.key ca.crt ca.key create_cert.sh

cd /root

And at the end: docker run --name bumper --env-file ./.env -p 443:443 -p 8007:8007 -p 8883:8883 -p 5223:5223 -v /home/user/bumper/data:/bumper/data -v /bumper/certs:/bumper/certs ghcr.io/mvladislav/bumper:sha-8f8cccf

The docker container starts and thats its log:

root@Bumper-Server-Docker:~# docker run --name bumper --env-file ./.env -p 443:443 -p 8007:8007 -p 8883:8883 -p 5223:5223 -v /home/user/bumper/data:/bumper/data -v /bumper/certs:/bumper/certs
  ghcr.io/mvladislav/bumper:sha-8f8cccf
[2024-02-19 13:55:15] - Starting Bumpers...
[2024-02-19 13:55:16] - Starting MQTT Server at 0.0.0.0:8883
[2024-02-19 13:55:16] - Finished processing state new exit callbacks.
[2024-02-19 13:55:16] - Finished processing state starting enter callbacks.
[2024-02-19 13:55:16] - Starting XMPP Server at 0.0.0.0:5223
[2024-02-19 13:55:16] - Finished processing state starting exit callbacks.
[2024-02-19 13:55:16] - Finished processing state started enter callbacks.
[2024-02-19 13:55:16] - Staring Helper Bot...
[2024-02-19 13:55:16] - [CONNECTION MADE]
[2024-02-19 13:55:16] - Bumper Authentication Success :: Helperbot :: helperbot@bumper/helperbot
[2024-02-19 13:55:16] - Finished processing state new exit callbacks.
[2024-02-19 13:55:16] - Finished processing state connected enter callbacks.
[2024-02-19 13:55:16] - [SEND SUB] 1 [b'iot/p2p/+/+/+/+/helperbot/bumper/helperbot/+/+/+', b'iot/atr/+/+/+/+/+']
[2024-02-19 13:55:16] - Bumper started successfully
[2024-02-19 13:55:16] - Starting WebServer
[2024-02-19 13:55:16] - Starting WebServer Server at 0.0.0.0:443
[2024-02-19 13:55:16] - Starting WebServer Server at 0.0.0.0:8007
[2024-02-19 13:55:16] - [SUBACK] 1 (0, 0)

Looks good to me. Now the problem. When I start the X1 omni (it is already configured to connect to my wifi) I get this error:


[2024-02-19 13:56:13] - Error handling request
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/aiohttp/web_protocol.py", line 332, in data_received
    messages, upgraded, tail = self._request_parser.feed_data(data)
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "aiohttp/_http_parser.pyx", line 557, in aiohttp._http_parser.HttpParser.feed_data
aiohttp.http_exceptions.BadStatusLine: 400, message:
  Invalid method encountered:

    b'\x10\\'
      ^

And this error repeats every say 5 to 10 seconds if the robot is turned on. Am I doing something wrong? Thanks for the awsome work done here and thanks for your time reading this!

willliamchan commented 4 months ago

So I tryed it but it seem to doesn't work. Here is what I did. (Using debian 11 vm on Proxmox 7.4.3)

Install docker via apt (https://docs.docker.com/engine/install/debian/)

then: (start directory is /root) docker pull ghcr.io/mvladislav/bumper:sha-8f8cccf

nano .env

BUMPER_LISTEN=0.0.0.0
TZ=Europe/Vienna
NETWORK_MODE=overlay
BUMPER_ANNOUNCE_IP=10.0.0.111

mkdir /bumper/data mkdir /bumper/certs/

cd /bumper/certs/ wget https://raw.githubusercontent.com/MVladislav/bumper/dev/scripts/create_cert.sh chmod +x ./create_cert.sh ./create_cert.sh

(That gets me the certs the docker container needs) ls bumper.crt bumper.key ca.crt ca.key create_cert.sh

cd /root

And at the end: docker run --name bumper --env-file ./.env -p 443:443 -p 8007:8007 -p 8883:8883 -p 5223:5223 -v /home/user/bumper/data:/bumper/data -v /bumper/certs:/bumper/certs ghcr.io/mvladislav/bumper:sha-8f8cccf

The docker container starts and thats its log:

root@Bumper-Server-Docker:~# docker run --name bumper --env-file ./.env -p 443:443 -p 8007:8007 -p 8883:8883 -p 5223:5223 -v /home/user/bumper/data:/bumper/data -v /bumper/certs:/bumper/certs
  ghcr.io/mvladislav/bumper:sha-8f8cccf
[2024-02-19 13:55:15] - Starting Bumpers...
[2024-02-19 13:55:16] - Starting MQTT Server at 0.0.0.0:8883
[2024-02-19 13:55:16] - Finished processing state new exit callbacks.
[2024-02-19 13:55:16] - Finished processing state starting enter callbacks.
[2024-02-19 13:55:16] - Starting XMPP Server at 0.0.0.0:5223
[2024-02-19 13:55:16] - Finished processing state starting exit callbacks.
[2024-02-19 13:55:16] - Finished processing state started enter callbacks.
[2024-02-19 13:55:16] - Staring Helper Bot...
[2024-02-19 13:55:16] - [CONNECTION MADE]
[2024-02-19 13:55:16] - Bumper Authentication Success :: Helperbot :: helperbot@bumper/helperbot
[2024-02-19 13:55:16] - Finished processing state new exit callbacks.
[2024-02-19 13:55:16] - Finished processing state connected enter callbacks.
[2024-02-19 13:55:16] - [SEND SUB] 1 [b'iot/p2p/+/+/+/+/helperbot/bumper/helperbot/+/+/+', b'iot/atr/+/+/+/+/+']
[2024-02-19 13:55:16] - Bumper started successfully
[2024-02-19 13:55:16] - Starting WebServer
[2024-02-19 13:55:16] - Starting WebServer Server at 0.0.0.0:443
[2024-02-19 13:55:16] - Starting WebServer Server at 0.0.0.0:8007
[2024-02-19 13:55:16] - [SUBACK] 1 (0, 0)

Looks good to me. Now the problem. When I start the X1 omni (it is already configured to connect to my wifi) I get this error:


[2024-02-19 13:56:13] - Error handling request
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/aiohttp/web_protocol.py", line 332, in data_received
    messages, upgraded, tail = self._request_parser.feed_data(data)
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "aiohttp/_http_parser.pyx", line 557, in aiohttp._http_parser.HttpParser.feed_data
aiohttp.http_exceptions.BadStatusLine: 400, message:
  Invalid method encountered:

    b'\x10\\'
      ^

And this error repeats every say 5 to 10 seconds if the robot is turned on. Am I doing something wrong? Thanks for the awsome work done here and thanks for your time reading this!

I am no expert when it comes to any of these but I can share with you my docker-compose file, and I also make sure:-

  1. adguard dns which got all required domain names redirected to bumper IP.
  2. copy certs to certs folder.
  3. copy nginx.conf to nginx folder which I downloaded from https://github.com/MVladislav/bumper/tree/dev/configs/nginx
  4. restart X1.

P.S. By the way develop build is working with X1 too.


version: "3.6"

networks: bumper: internal: true

services: nginx: depends_on:

Technerd-SG commented 4 months ago

You are a hero. It works as you send it. I only used chat gpt to format the docker-compose.yaml. Here is it formated:

version: "3.6"

networks:
  bumper:
    internal: true

services:
  nginx:
    depends_on:
      - bumper
    image: nginx:alpine
    networks:
      default:
      bumper:
    ports:
      - 443:443
      - 5223:5223
      - 8007:8007
      - 8883:8883
    restart: unless-stopped
    volumes:
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
      - ./nginx/:/etc/nginx:ro # See config file below

  bumper:
    image: ghcr.io/mvladislav/bumper:develop
    restart: unless-stopped
    networks:
      bumper:
    environment:
      PUID: 1000
      PGID: 1000
      TZ: Europe/London
      BUMPER_ANNOUNCE_IP: X.X.X.X # Insert your IP
      BUMPER_LISTEN: 0.0.0.0
      BUMPER_DEBUG: "true"
      LOG_TO_STDOUT: "true"
    volumes:
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
      - ./config:/bumper/data
      - ./certs:/bumper/certs

Thank you so much!

Now I'll ty to add it to Homeassistant

Technerd-SG commented 4 months ago

I added it to Homeassistant via the Official Ecovacs integration. Everything works fine but the map is only updated after the robot finished cleaning. Is that normal? Would there be a way to change that (to look were the robot is). Its not very Important but I think it would be cool. Best regards and thanks for the help! You guys (and girls) are awsome!