Neato robotstofzuiger

Vorig jaar in december heb ik de Neato Botvac D4 Connected gekocht: een robotstofzuiger die behoorlijk goed uit verschillende testen kwam. Stofzuigen is nou niet echt mijn hobby, dus dat zou de aanschaf van zo’n robot makkelijk maken, maar dat is dan ook weer niet echt zo. Ten eerste zijn ze best nogal prijzig en ten tweede, nog belangrijker; ze doen vaak niet goed wat ze eigenlijk uitstekend zouden moeten doen. Deze machine kwam zo’n beetje als beste uit de test van de consumentenbond.

Op de webisite van Neato kan je precies lezen wat het ding allemaal kan, dus dat ga ik hier niet herhalen. Waar ik het hier wel over wil hebben is de aansturing. Standaard wordt ie aangestuurd vanuit een app-je: starten met schoonmaken, pauzeren, stoppen, dat soort dingen. Je kunt ‘m ook naar het laadstation sturen.
Het blijkt dat aansturing vanuit Domoticz ook zou moeten kunnen! Kijk en daar wordt het natuurlijk interessant!

Via het Domoticz-forum kwam ik op de GitHub pagina van stianaske terecht. Hij heeft een Pythonmodule, pybotvac, geschreven waarmee je de Neato Botvac Connected stofzuigers vanuit Domoticz kunt benaderen. Dat lijkt dan weer simpel, maar dat blijkt het dan weer niet helemaal te zijn. Hieronder mijn bevindingen.

Ik heb Domoticz op een Raspberry Pi draaien, dus daar moest pybotvac module op geïnstalleerd worden. Dit kan je doen via PIP = PyPi, een packet manager onder Python.

Install using pip

pip install pybotvac

Het blijkt dat pybotvac (bij mij) niet onder Python 2.x werkt en dat was nou net mijn standaard Python versie. Python 3.x was wel geïnstalleerd op de Raspberry Pi, maar wanneer je Python aanriep werd Python 2.x standaard gestart. Dus moest de standaard aangepast worden.

Zoekend op internet kwam ik het volgende tegen.

To change a python version on per user basis you simply create an alias within user’s home directory. Open ~/.bashrc file and add new alias to change your default python executable:

alias python='/usr/bin/python3'

Once you make the above change, re-login or source your .bashrc file:

$ . ~/.bashrc 

Check your default python version:

$ python --version
Python 3.5.2

Vanaf nu, wanneer je een Python aanroept, wordt standaard versie 3 gebruikt.

Via pip was pybotvac geïnstalleerd binnen Python 2, dus … nu moest het ook nog via pip3 (!) onder Python 3 gedaan worden.

pip3 install pybotvac

Volgens de beschrijving van stianaske zijn dan de volgende methodes in de Robot class beschikbaar:

  • get_robot_state()
  • start_cleaning()
  • start_spot_cleaning()
  • pause_cleaning()
  • stop_cleaning()
  • send_to_base()
  • enable_schedule()
  • disable_schedule()
  • get_schedule()

Eerst moet echter het ‘serieële’ nummer en het ‘secret’ nummer van jouw eigen robot achterhaald worden. Hiervoor gebruik je de gegevens (jouw_emailadres, jouw_wachtwoord) die je gebruikt hebt om jouw eigen Neato te registreren. Het secretnummer bevat echter geen 32 karakters meer, maar tegenwoordig 256 hexadecimale karakters!

>>> from pybotvac import Account
>>> # List all robots associated with account
>>> for robot in Account('jouw_emailadres', 'jouw_wachtwoord').robots:
    print(robot)

Name: my_robot_name, Serial: OPS01234-0123456789AB, Secret: 0123456789ABCDEF0123456789ABCDEF, Traits: ['maps']

Met deze twee nummers en de naam van de robot zijn de methodes op de volgende manier aan te roepen. Vanaf de Python prompt:

>>> from pybotvac import Robot
>>> robot = Robot('seriële_nummer', 'secret_nummer', 'robot_name')
>>> print(robot)
Name: sample_robot, Serial: OPS01234-0123456789AB, Secret: 0123456789ABCDEF0123456789ABCDEF

Om een schoonmaakbeurt te starten:

robot.start_cleaning()

Dat werkte! Nu hetzelfde voor elkaar krijgen vanuit Domoticz. Hiervoor worden de regels samengevoegd in een script. Om de Neato te laten starten met een schoonmaakbeurt heb ik het volgende script neato_start_cleaning.py gemaakt.

#!/usr/bin/python
from pybotvac import Robot
robot = Robot('seriële_nummer', 'secret_nummer', 'robot_name')

robot.start_cleaning()

De scripts moeten vervolgens ‘executable’ gemaakt worden. Dat doe je door elk script te bewerken met:

chmod +x neato_start_cleaning.py

Dan kan je een een virtuele schakelaar aanmaken in Domoticz.

Onder “Aan actie” bepaal je welk script (in dit geval neato_start_cleaning.py) uitgevoerd moet worden. Dit start met “Script://”, vervolgens het hele pad naar waar het script staat. Hier dus: “/home/pi/domoticz/scripts/”. Hetzelfde bepaal je voor “Uit actie”.
Jammer genoeg werkte dit niet. Ben een tijd bezig geweest met die slashes: /, //, of ///. Met of zonder spaties. Het mocht allemaal niet baten. Uiteindelijk bleek de eerste regel van de scripts (shebang, of hashbang line) veranderd te moeten worden van:

#!/usr/bin/env python

…. in ….

#!/usr/bin/python3

En ja hoor, toen werkte het eindelijk!
Nog een paar scripts gemaakt om Neato te pauzeren, te stoppen en om ‘m terug te sturen naar zijn oplaadplaats.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Deze website gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.