Neato BotVac Connected binding?

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.

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

git clone https://github.com/stianaske/pybotvac
cd pybotvac
python 
>>> from pybotvac import Account
>>> for robot in Account('email', 'password').robots:
    print(robot)

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:

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!?)

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.

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.

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!

Would be highly interested as well.

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?

I sent you a mail ā€¦

I sent you a mail

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

All,

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

and my neato.map looks like this:

// Current action of the vacuum cleaner
HOUSE CLEANING=Haus-Reinigung
SPOT CLEANING=Spot-Reinigung
MANUAL CLEANING=Manuelle Reinigung
DOCKING=zum Trockendock
USER MENU ACTIVE=Nutzer Menu aktiv
SUSPENDED CLEANING=Pausiert
UPDATING=Updating
COPYING LOGS=Speichert Logs
RECOVERING LOCATION=Orientierung
IEC TEST=Iechn. Test
=inaktiv

This works for all states (even ā€œā€= inaktiv), but itā€™s complaining about ā€œHOUSE CLEANINGā€:

Could not transform 'HOUSE CLEANING' with the file 'neato.map' : 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ā€¦
Anyone?

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

2 Likes

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?

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.

Hi anfaenger (funny name!)

that is a good idea.
I build the binding from https://github.com/scurb/NeatoBinding and Iā€™m using a python library to get the last cleaning map.

3 Likes

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.

Hi,

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.

Hi NCO,

here a short description ā€¦

Requirement/preparation

1.install pybotvac python library from https://github.com/stianaske/pybotvac
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"
    when
        System started
    then
    createTimer(now.plusSeconds(60)) [|

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

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

rule "Getting last map for neato botvac connected"
    when
       Item neatoSwitchGetLastMap received command ON
    then
        neatoGetLastMapRunning.postUpdate("Download ...")
        executeCommandLine("/etc/openhab2/scripts/neato-botvac-getlastmap.py")
        neatoGetLastMapRunning.postUpdate("-")
        neatoSwitchGetLastMap.postUpdate(OFF)
    end

scripts: neato-botvac-getlastmap.py

#!/usr/bin/python
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>
<html>
<head>
    <title>Neato Botvac Connected - last map</title>
    <style type="text/css" media="screen">
        img {
            background: white;
            border: 1px solid black;
            width: 500px;
            height: 500px;
        }

    </style>
    <script type="text/javascript" src="/extensions/Selfhtml/js/jquery/jquery-1.11.1.min.js"></script>
    <script type="text/javascript">
		//<![CDATA[
		//]]>
    </script>
</head>
<body>
    <main>
        <img src="botvac-last-map.png" alt="Uups! Bitte letzte Reinigungskarte laden..."> 
    </main>
</body>
</html>
2 Likes