bmartin5692 / bumper

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

Multi-floor Maps and cleaning areas #71

Open freggala opened 4 years ago

freggala commented 4 years ago

The original Ecovacs service provides multi-floor map and area management through the Ecovacs HOME app for certain robot types (such as the OZMO 950), once "Advanced Mode" is enabled. Using bumper I found out, that I can't save maps, edit areas (part, merge, rename, etc.) and consequently can't send the bot to clean a particular set of predefined areas.

Describe the solution you'd like It would be great to have that feature just like with the original service.

bmartin5692 commented 4 years ago

@freggala -

The advanced mode commands haven't been examined yet for these newer bots. Could you please provide debug logs from the confserver and mqttserver to review after running these commands? This will help us determine if we can build it out, or if we'll need to do additional monitoring with wireshark etc to reverse the protocols.

freggala commented 4 years ago

@freggala -

The advanced mode commands haven't been examined yet for these newer bots. Could you please provide debug logs from the confserver and mqttserver to review after running these commands? This will help us determine if we can build it out, or if we'll need to do additional monitoring with wireshark etc to reverse the protocols.

Yes, of course. confserver.log mqttserver.log

freggala commented 4 years ago

According to the app, a new map can only be saved, after the robot has successfully returned to the docking station from a cleaning job. Thus, I suppose there's little useful information in that log. Using bumper, the app didn't offer me any opportunity to save a map. Since I don't have any map saved to this point, I also can't do the room editing stuff, which would also be very interesting I guess.

So, from my understanding, it's necessary to do some eavesdropping while the bot and the app are connected to the Ecovacs server.

Is there any way I could use sucks to "sniff" the relevant MQTT-traffic?

bmartin5692 commented 4 years ago

This is true, even of my 901 which supports a single map. Until the first map is created those options aren't available. As a test you could block off the bot for the first cleaning so it cleans a small area/room around the charger and then let it return to charger to save the map. At this point a map should be available.

freggala commented 4 years ago

Ok, you're right. I do indeed get back a map, where I can edit the rooms, at least in most cases. To narrow down the issue I've set up a test environment. image Sometimes it doesn't let me edit the rooms, for whatever reason.

I think my problem in the real world environment was that the robot didn't find it's way back to the charging station, so I had to relocate it manually and trigger the return to docking station a couple of times. I suppose it considers the mapping job as failed then.

Anyways I've captured and attached two logs for the process in the testing environment. Where, first I reset the old map, let the bot do its job and return to the docking station. Then, after a few seconds I get that red dot on the maping button, where I can edit the room polygons. (In the log example I split the area in two parts (first attempt failed because one part would have turned out too small) and saved the map. confserver.log mqttserver.log

That's when the map disappears in the multi-floor view (unless I turn the Multi-floor Map toggle button off). As I don't see behind the curtain very much, I can just guess, the map retrieval or floor switching command would have an additional identifier or index number to indicate which floor to deliver to the app.

image image (There's no Map3 or Map0 in this view)

I hope we can get this issue sorted together.