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

Invalid HTTP method #137

Closed nauman73 closed 10 months ago

nauman73 commented 1 year ago

Describe the bug I am trying to connect Deebot Ozmo 920 to bumper. I downloaded bumper zip from https://github.com/bmartin5692/bumper. Then I followed https://bumper.readthedocs.io/en/latest/ to bring up bumper using Manual/Python method. I have setup my router to point to bumper instead of ecovacs servers. When I start Ozmo 920, I can see in Wireshark that the DNS is working as expected and DNS is pointing to bumper IP (Ozmo IP: 192.168.0.191, bumper IP: 192.168.0.117). But bumper console is showing Invalid HTTP method error.

Error

Wireshark capture for same time is as follows.

Wireshark

To Reproduce Steps to reproduce the behavior:

  1. Download bumper zip from https://github.com/bmartin5692/bumper.
  2. Configure bumper using Manual/Python method.
  3. Configure router DNS to point to bumper IP as explained in https://bumper.readthedocs.io/en/latest/DNS_Setup/.
  4. Start bumper.
  5. Turn on Ozmo 920.

Expected behavior Expect that Ozmo 920 will successfully connect to bumper.

Screenshots Added above

Desktop (please complete the following information):

Smartphone (please complete the following information):

Vacuum (please complete the following information):

Additional context It is my first time using Debbot vacuum, and my first time trying to run it with bumper. I am a software developer so I think I am doing everything by the book, but there may be something I am missing.

nauman73 commented 1 year ago

I looked at other issues to find some clue. Based on comment https://github.com/bmartin5692/bumper/issues/103#issuecomment-812655978, I redirected traffic from Deebot to 8883 instead of 443. This has improved the situation a little bit and now I can see some traffic exchanged between Deebot and bumper. But bumper again shows the Invalid HTTP method after a point and then Deebot starts again from scratch (i.e. from DNS query). I think it is a matter of determining which traffic should go to bumper port 8883, and which should go to bumper port 443?

image

hoangtran355 commented 1 year ago

I looked at other issues to find some clue. Based on comment #103 (comment), I redirected traffic from Deebot to 8883 instead of 443. This has improved the situation a little bit and now I can see some traffic exchanged between Deebot and bumper. But bumper again shows the Invalid HTTP method after a point and then Deebot starts again from scratch (i.e. from DNS query). I think it is a matter of determining which traffic should go to bumper port 8883, and which should go to bumper port 443?

image

Hi @nauman73, did you try the docker approach? I'm not a dev so I tried docker-compose which seems to be easier. I'm able to get the robot connected to the bumper but cannot make the iOS app work. Maybe you can try the docker method and check the web version of bumper (http://192.168.0.117:8007/) to see if the bot is connected.

ktd1008 commented 1 year ago

I looked at other issues to find some clue. Based on comment #103 (comment), I redirected traffic from Deebot to 8883 instead of 443. This has improved the situation a little bit and now I can see some traffic exchanged between Deebot and bumper. But bumper again shows the Invalid HTTP method after a point and then Deebot starts again from scratch (i.e. from DNS query). I think it is a matter of determining which traffic should go to bumper port 8883, and which should go to bumper port 443? image

Hi @nauman73, did you try the docker approach? I'm not a dev so I tried docker-compose which seems to be easier. I'm able to get the robot connected to the bumper but cannot make the iOS app work. Maybe you can try the docker method and check the web version of bumper (http://192.168.0.117:8007/) to see if the bot is connected.

Bác ơi, bác cho em xin thông tin liên lạc với bác. Em đang mò mẫm cái bumper này mà mãi ko đc

nauman73 commented 1 year ago

I looked at other issues to find some clue. Based on comment #103 (comment), I redirected traffic from Deebot to 8883 instead of 443. This has improved the situation a little bit and now I can see some traffic exchanged between Deebot and bumper. But bumper again shows the Invalid HTTP method after a point and then Deebot starts again from scratch (i.e. from DNS query). I think it is a matter of determining which traffic should go to bumper port 8883, and which should go to bumper port 443? image

Hi @nauman73, did you try the docker approach? I'm not a dev so I tried docker-compose which seems to be easier. I'm able to get the robot connected to the bumper but cannot make the iOS app work. Maybe you can try the docker method and check the web version of bumper (http://192.168.0.117:8007/) to see if the bot is connected.

hi @hoangtran355, I have tried the docker image. I have limited knowledge of docker. When I start the image, I see an IP address that is not on my network (see image). Is this expected or I need to do something to see an IP address that is on my network?

image

hoangtran355 commented 11 months ago

I looked at other issues to find some clue. Based on comment #103 (comment), I redirected traffic from Deebot to 8883 instead of 443. This has improved the situation a little bit and now I can see some traffic exchanged between Deebot and bumper. But bumper again shows the Invalid HTTP method after a point and then Deebot starts again from scratch (i.e. from DNS query). I think it is a matter of determining which traffic should go to bumper port 8883, and which should go to bumper port 443? image

Hi @nauman73, did you try the docker approach? I'm not a dev so I tried docker-compose which seems to be easier. I'm able to get the robot connected to the bumper but cannot make the iOS app work. Maybe you can try the docker method and check the web version of bumper (http://192.168.0.117:8007/) to see if the bot is connected.

hi @hoangtran355, I have tried the docker image. I have limited knowledge of docker. When I start the image, I see an IP address that is not on my network (see image). Is this expected or I need to do something to see an IP address that is on my network?

image

hello, sorry I missed the message. This shall be the IP of the docker container, so it's normal I suppose. Are you able to make it work @nauman73 ?

nauman73 commented 11 months ago

I looked at other issues to find some clue. Based on comment #103 (comment), I redirected traffic from Deebot to 8883 instead of 443. This has improved the situation a little bit and now I can see some traffic exchanged between Deebot and bumper. But bumper again shows the Invalid HTTP method after a point and then Deebot starts again from scratch (i.e. from DNS query). I think it is a matter of determining which traffic should go to bumper port 8883, and which should go to bumper port 443? image

Hi @nauman73, did you try the docker approach? I'm not a dev so I tried docker-compose which seems to be easier. I'm able to get the robot connected to the bumper but cannot make the iOS app work. Maybe you can try the docker method and check the web version of bumper (http://192.168.0.117:8007/) to see if the bot is connected.

hi @hoangtran355, I have tried the docker image. I have limited knowledge of docker. When I start the image, I see an IP address that is not on my network (see image). Is this expected or I need to do something to see an IP address that is on my network? image

hello, sorry I missed the message. This shall be the IP of the docker container, so it's normal I suppose. Are you able to make it work @nauman73 ?

@hoangtran355 : Thanks for checking this. I was able to make the robot connect with bumper using docker-compose based image. I can see the robot connected when I open the bumper web UI at port 8007. However, still unable to make the Android version of Ecovacs Home app connect to bumper. Looks like the app is not re-directed to bumper even when I do the DNS setup as explained in bumper documentation. Any pointers towards making the app work will be great.

hoangtran355 commented 11 months ago

@nauman73 hi, I'm stuck in the same place as you. It looks like the new version of the app is using a more complicated connection and the cert provided with the bumper is not able to cover all the connections.

As you're using Android, it could be helpful to try with an old version of the app, say v1.4.6 if I'm not mistaken. If you are capable to do reverse engineering, you may try to dig deeper into the connection of the app.

I'm using iOS, so I'm kind of stuck here. I have a Chinese model robot and Ecovacs has blocked the app usage outside of China. I used an application named HTTPcatcher to capture the packet from the iOS app, then rewrite the response packet from "blacklist" to "", this method worked for a while until Ecovacs try block the app via location.

Maybe you can try to capture the packet and see if you can adapt the cert to make the app work. Let me know if I can assist you with anything.

nauman73 commented 10 months ago

@nauman73 hi, I'm stuck in the same place as you. It looks like the new version of the app is using a more complicated connection and the cert provided with the bumper is not able to cover all the connections.

As you're using Android, it could be helpful to try with an old version of the app, say v1.4.6 if I'm not mistaken. If you are capable to do reverse engineering, you may try to dig deeper into the connection of the app.

I'm using iOS, so I'm kind of stuck here. I have a Chinese model robot and Ecovacs has blocked the app usage outside of China. I used an application named HTTPcatcher to capture the packet from the iOS app, then rewrite the response packet from "blacklist" to "", this method worked for a while until Ecovacs try block the app via location.

Maybe you can try to capture the packet and see if you can adapt the cert to make the app work. Let me know if I can assist you with anything.

@hoangtran355 : I tried older versions of Android app but it did not help. In the end, I added Home Assistant container on Docker and added "Deebot 4 Home Assistant (https://deebot.readthedocs.io/integrations/home-assistant/)" integration. This integration supports bumper so I can now see and control my Deebot using Home Assistant. I have yet to figure out how I can ask Deebot from Home Assistant to clean specific rooms/areas or a custom area.

One issue that I faced with "Deebot 4 Home Assistant" was that it was not showing me option to connect to bumper. Later I found that I have to enable Advanced mode in my Home Assistant to see this option.

nauman73 commented 10 months ago

@nauman73 hi, I'm stuck in the same place as you. It looks like the new version of the app is using a more complicated connection and the cert provided with the bumper is not able to cover all the connections. As you're using Android, it could be helpful to try with an old version of the app, say v1.4.6 if I'm not mistaken. If you are capable to do reverse engineering, you may try to dig deeper into the connection of the app. I'm using iOS, so I'm kind of stuck here. I have a Chinese model robot and Ecovacs has blocked the app usage outside of China. I used an application named HTTPcatcher to capture the packet from the iOS app, then rewrite the response packet from "blacklist" to "", this method worked for a while until Ecovacs try block the app via location. Maybe you can try to capture the packet and see if you can adapt the cert to make the app work. Let me know if I can assist you with anything.

@hoangtran355 : I tried older versions of Android app but it did not help. In the end, I added Home Assistant container on Docker and added "Deebot 4 Home Assistant (https://deebot.readthedocs.io/integrations/home-assistant/)" integration. This integration supports bumper so I can now see and control my Deebot using Home Assistant. I have yet to figure out how I can ask Deebot from Home Assistant to clean specific rooms/areas or a custom area.

One issue that I faced with "Deebot 4 Home Assistant" was that it was not showing me option to connect to bumper. Later I found that I have to enable Advanced mode in my Home Assistant to see this option.

@hoangtran355 : Following Deebot 4 Home Assistant documents I have created following interface for my Deebot. I can now ask Deebot to clean selected rooms.

Screenshot_20230817_002458_Home Assistant

nauman73 commented 10 months ago

Closing this issue because I can now use my Deebot with bumper.