Just wondering if anyone had started developing a Neato BotVac Connected robot vacuum binding?
Folks at https://www.mysensors.org/ reverse engineered the cloud and local protocols to control it, then Neato chimed in and made at least the cloud API official.
We got ourself a Neato BotVac this holiday and there were some traces of other projects on the internet, integrating with the Neato API’s. So - I have started to build a binding for the Neato and wanted to know if there were any interest in such a binding from other people? It has been developed as a OH2-binding solely.
Right now - basic stuff works, like getting statuses and sending commands to the vacuum cleaner. As of right now, I have not built the discovery part of the binding, so a things-configuration containing secret and serial number has to be given to the binding.
Very much interested. I am looking into buying a robot vacuum the next months when i can afford, and this is just what ive been looking for. Also had my eye alot on the botvac connected but a proper binding makes it so much easier
I have not left the building - only got interrupted with travels and other family stuff
I have implemented a function in the binding so the username and password towards Neato Web cloud replaces the need for getting the vacuum cleaner’s serial and secret strings. So - basicly, the binding should be added, the username/pwd should be entered and then the vacuum will appear in the openhab inbox. Have some debug regarding timing issues left, and then I would be really glad to give you the jar file for further testing/input.
Still have some things that should be fixed, unfortunatly - time is running too fast here But - if you would like, here is the jar file for the binding as of today. One thing that remains to be fixed is that the binding starts the scan just before it has gotten the configured values (under binding configuration in PaperUI). The result of this is that the vacuums does not automatically gets discovered and added to the inbox. However, they will be if a manual scan from the inbox is started - so I guess it’s not a big problem.
So:
Add the binding
Configure the binding in the PaperUI - add your login and password to neato
Go to inbox and scan for items with the Neato binding.
Frame label="Neato BotVac Connected" {
Switch item=FannDammCommand mappings=[clean="Clean",stop="Stop",pause="Pause",resume="Resume", dock="Send to dock"]
Text item=FannDammBattery label="Battery level"
Text item=FannDammState
Text item=FannDammError label="Error Message" icon="siren"
Text item=FannDammAction label="Activity"
Text item=FannDammIsDocked label="In dock"
Group label="Mer information" item=GNeato
}
Example of neato.things file (if you don’t discover the item via discovery routine):
Although, in order to get the secret to use if you manually define the things file - you will have to use external python (or other) libraries. Link: https://github.com/stianaske/pybotvac
Hey Patrik,
great you are making progress. You could already think about opening a Pull Request. That will help you get some feedback and you can already start the review process, speeding things up a little
Very cool, I think I am going to pick up 2 for my house, does the binding support more then one vac and do you plan on being able to pull coverage maps?
Getting robot coverage maps
To retrieve the list of robot cleaning coverage maps:
robot.maps().done(function (data) {
if(data["maps"] && data["maps"].length > 0) {
// since map image urls expire, you need to use the map id
// to retrieve a fresh map url
var mapId = data["maps"][0]["id"];
robot.mapDetails(mapId).done(function (data) {
// show the map image
window.open(data["url"]);
}).fail(function (data) {
// something went wrong getting map details...
});
}else {
// No maps available yet. Complete at least one house cleaning to view maps.
}
}).fail(function (data) {
// something went wrong getting robots map...
});
The code above retrieves the list of all the available maps and, if exists, shows the first one.