[RELEASE] Neato (Connect) V1.2.6c (Botvac Connected Series)

@Alyc100 , actually I was not referring to a dynamic tile populating.
I am asking if you could share the code so that we can add statically for ourselves.
could you ?

Btw, if you want to do it dynamically, you can put empty tiles (up to 5-6 maybe) , and then populate them according to the response of the API.
But please share the required call so that we can at least temporarily do it static on our device handler.

is it a problem for you to share this API information ?

No it’s online. https://developers.neatorobotics.com/

I see it is here:

I have to add “boundaryId” which will be received from “getMapBoundaries”

for that , we have to get map id from beehive


but how can I put it in your device handler ?

I am not able to get map id.
It should be returned to this command (beehive) :

but , there is no “id” as in the example
why ?

“getMapBoundaries” is only available in robot remote protocol which requires direct comm to robot.
But in your device handler , everything works through beehive or nucleo
so I can’T find an example for robot remote protocol.
How can I call “getMapBoundaries” ?

I created a child device (momentary button) and added a new button on the robot device to create children using following code.
It works and now I can ask Alexa to turn on one of these buttons when I need to clean a specific room.
This fits my needs.
if anyone else would like to use, I can send whole code…

def checkChild(devID) {
	def s = false
	def children = getChildDevices()
	children.each { child -> if (child.deviceNetworkId == devID) {s = true} }
	return s

def createButtons() {
	log.debug "Creating Clean Buttons"
                def resp2 = parent.beehiveGET("/users/me/robots/${device.deviceNetworkId.tokenize("|")[0]}/persistent_maps")
                def mapIDx = resp2.data[0].id
                def resp5= nucleoPOST("/messages", '{"reqId": "77", "cmd": "getMapBoundaries", "params": {"mapId": "' + mapIDx + '"}}')
                def i = 0
                while (resp5.data.data.boundaries[i].name != "") {
                	log.debug("boundariesX: ${resp5.data.data.boundaries[i].name}")
                    def roomName = "Clean Button " + resp5.data.data.boundaries[i].name
                    def roomID = resp5.data.data.boundaries[i].id
                    def roomDevID = "NCB-" + roomID
                            if (!checkChild(roomDevID)) {
                                log.info("Adding Neato Botvac Clean Button ${roomDevID}: ${roomName}")

                                def data = [
                                    name: roomName,
                                    label: roomName,
                                    completedSetup: true
                                def childButton = addChildDevice(parent.app.namespace, "Neato Botvac Clean Button", roomDevID, null, data)

                                log.debug "Created ${roomName} with id: ${roomDevID}"
                            } else {
                                log.debug "found ${roomName} with id ${roomDevID} already exists"
1 Like

So you can now say to Alexa to clean the living room and it’ll only clean the living room as per your map within Neato? If so that’s cool.

yes. that was the idea and it really works.
I really don’T understand why Neato did not do it yet.
And why so few people are interested here…

I’m very interested but how easy is it to set up?

if you already have @Alyc100’s smart app , you just have to modify the device handler and add my “child” device handler. That’s all.
You will have momentary buttons for each room defined on your Neato map.
Then you can create Alexa routines for each room.
“alexa, clean kitchen” -> turn on “clean kitchen button”

1 Like

Where in the device handler do you paste the code? Also is the code posted above the full code needed to enable this feature? Interested in trying this, would be great to set up a routine to clean some rooms more frequently than others automatically.

I tried to use the code you pasted here to create the child DTH and got this error message:

Java.lang.IllegalArgumentException: Metadata definition not found

Also, what and where do we put the code in the parent DTH?

Installed and all seems to be working except the Bin indicator – it always shows empty. Using a D6, anyone else have this issue?

I did not want to publish this code without permission of @Alyc100
In fact, I prefer that he makes adds the change and adds the code to his own repository. But as a temporary solution, I have published my modded (and added) files on this repository:

If @Alyc100 request me to remove them I can remove. But in any case, I did not publish the connect smart app in my repo. So my repo is useless without the original code.

1 Like

Will this app work in the new app yet? I just saw they are finally starting to ask people to switch and will be terminating the old app eventually. Thanks.

1 Like

I am curious about this working with the new app also. I can see my vacuum in the new app and turn it off and on, however I am unable to do some of the other functions like pers map, eco mode, docked status, etc. I’m not sure how I will be able to have it work with WebCore after the change. I really need the pers map function, so that it follows no go lines.

No. Currently the app has basic functionality in the new app. I’m reading that they’re still finalising the UI meta data stuff but it’s not been released.

I’m really keen to keep all this functionality myself so as soon as I figure out how to port the app across I will be updating the app.


*raises hand to beta test.

Thanks for the hard work Alex. Do you have a donation link?

There’s a link at the top of this page.

1 Like

No hard work yet as nothing published :slight_smile:

Completely optional donation link is in the first post.

1 Like