Neato BotVac Connected binding?

Tags: #<Tag:0x00007f1826d301e0> #<Tag:0x00007f1826d300a0> #<Tag:0x00007f1826d2ff10>

(E. Gerland) #102

I need a little help.
I installed the pybotvac python stuff, but I am not familiar with python.
how to run the pybot to return the secret? (the serial I can see in my iphone app).

Do I need to configure any of the files with my neato account information / login?
Sorry for this possibly stupid question.

(Nathan Stratton) #103

I had the problem, but it was fixed when I upgraded my neato software. I have 12 Ubiquity access points and no more issues.

(Nathan Stratton) #104
git clone
cd pybotvac
>>> from pybotvac import Account
>>> for robot in Account('email', 'password').robots:

(E. Gerland) #105

Thanks, Nathan.
I solved it another way without running the pythoin script.
The general problem was that the binding was not recognized by OH2.
I donwloaded it again and made sure to do so in raw format.
That’s it.
Thanks again anyway. I will keep this hint for future python issues :wink:

(E. Gerland) #106

I don’t se any changes in some of the channels of the Neato binding (e.g Turbo / Eco) even if I change from turbo to eco in the official neato app.
The same applies to spot / house or normal / double.

Never mind. Works now uninstalling the binding and re-installing helped.
(Maybe it’s related to the reboot afterwards as well!?)

(SierraNL) #107

Sadly I’m already at the latest version of the Neato firmware. I even tried making a seperate SSID that is hosted on one AP on a fixed channel. But within a day the robot is offline again.

(E. Gerland) #108

I see that you have the D5 which did noch get the update 2.2, right?

Does this mean your wifi connection issue is not related to the binding but to the neato itself?
Means, even with the original app you don’t get the connection?

I had similar problems with my neato connected (not D5).
I did not get a connection because the neato used my 5GHz wifi and my phone uses the regular AND 5GHz.
Whenever the phone was on the regular network, it used to work fine.

(rud) #109

Hi, I’m also interested in getting my vr200 connected to oh2.
Would you please tell me where I can download the file or could you send me the file?

Many Thanks!

(E. Gerland) #110

Would be highly interested as well.

(SierraNL) #111

Yeah it’s just the Neato itself. The app says its offline after about a day.

I thought the phone always connects to the Neato “Cloud”, not directly with the robot?

(Bernd Weltrowski) #112

I sent you a mail …

(Bernd Weltrowski) #113

I sent you a mail

(E. Gerland) #114

Sorry, @fatman42285.
I meant the post about the map for neato (see quote above)
Anyway, thanks for your quick response :slight_smile:

(E. Gerland) #115


I am struggling with the transformation of the NeatoAction.
My item is:
String NeatoAction "Aktion [MAP(]" (G_jdbc) {channel="neato:vacuumcleaner:neato:action"}

and my looks like this:

// Current action of the vacuum cleaner
SPOT CLEANING=Spot-Reinigung
MANUAL CLEANING=Manuelle Reinigung
DOCKING=zum Trockendock
USER MENU ACTIVE=Nutzer Menu aktiv
COPYING LOGS=Speichert Logs
IEC TEST=Iechn. Test

This works for all states (even “”= inaktiv), but it’s complaining about “HOUSE CLEANING”:

Could not transform 'HOUSE CLEANING' with the file '' : Target value not found in map for 'HOUSE CLEANING'

even if I copy the phrase out of the log it’s not recognized.

No idea why…

The space was the root cause.
So never mind.
Found this one:

(rud) #116

Hi Bernd,

thanks a lot for sending me the jar-file,
I installed the binding successfully and can now control my Vorwerk Kobolt VR200. (Start, Pause, Dock)
Great job!:clap:

I have configured the items in a item-file, which took me a little bit of time.
I’m thinking about to post a little step-by-step-tutorial including my item-file, so other beginners (like me) can benefit and don’t have to do the same work again. (I would have been happy about such a tutorial.)

What do you think about it?

(E. Gerland) #117

Tutorials are always a good idea.
I have a neato botvac connected, but I would like to see your approach.
I guess the differences between both robots in terms of dock, clean, pause and such should be minor differences only.

(Bernd Weltrowski) #118

Hi anfaenger (funny name!)

that is a good idea.
I build the binding from and I’m using a python library to get the last cleaning map.

(E. Gerland) #119

wow, that’s included in the last jar you’ve sent?
I thought your file was about the VR200 integration.
Thanks a lot - I will give it a try.

(E. Gerland) #120


could you please provide more information about how to get the map and display it?

So you run a python script to store the map-file locally (which format?)
(-> could you please share the script).
After that I guess you display it in a frame / webview?

Thanks in advance.

(Bernd Weltrowski) #121


here a short description …


1.install pybotvac python library from
2. register your neato with a mobile app, remember mail and password
3. get serial from your neato

Create/modify openhab2 config files

items: demo.items

Switch neatoSwitchGetLastMap			"Letzte Reinigungskarte ..."																	
String neatoGetLastMapRunning			"Download ... [%s]"

sitemaps: demo.sitemap (extract)

    Frame {
        Text item=neatoGetLastMapRunning  visibility=[neatoGetLastMapRunning != "-"] 			
        Switch item=neatoSwitchGetLastMap mappings=[ON="Laden"] visibility=[neatoGetLastMapRunning == "-"]
 //   	Webview url="/static/neato-botvac/botvac-last-map.html" 
        Image url="http://localhost:8080/static/neato-botvac/botvac-last-map.png" refresh=2000

rules: neato-botvac.rules

val String filename = "neato-botvac.rules"

rule "system start: initialize Switch neatoSwitchGetLastMap"
        System started
    createTimer(now.plusSeconds(60)) [|

        if (neatoSwitchGetLastMap.state == NULL) neatoSwitchGetLastMap.postUpdate(OFF)

        if (neatoGetLastMapRunning.state == NULL) neatoGetLastMapRunning.postUpdate("-")

rule "Getting last map for neato botvac connected"
       Item neatoSwitchGetLastMap received command ON
        neatoGetLastMapRunning.postUpdate("Download ...")


from pybotvac import Account
from os       import system

email    = 'your mail'
password = 'your password'
serial   = 'your neato serial'
path_tmp = '/etc/openhab2/html/tmp/'
path_dst = '/etc/openhab2/html/neato-botvac/'
map_file = 'botvac-last-map.png'

account  = Account(email, password)
link     = account.maps[serial]['maps'][0]['url']

account.get_map_image(link, path_tmp)

system('mv ' + path_tmp + '*-user-map.png ' + path_dst + map_file)

system: create some folder (as openhab user or member of openhab group)

mkdir /etc/openhab2/html/neato-botvac
mkdir /etc/openhab2/html/tmp

html page: botvac-last-map.html in /etc/openhab2/html/neato-botvac/

<!DOCTYPE html>
    <title>Neato Botvac Connected - last map</title>
    <style type="text/css" media="screen">
        img {
            background: white;
            border: 1px solid black;
            width: 500px;
            height: 500px;

    <script type="text/javascript" src="/extensions/Selfhtml/js/jquery/jquery-1.11.1.min.js"></script>
    <script type="text/javascript">
        <img src="botvac-last-map.png" alt="Uups! Bitte letzte Reinigungskarte laden...">