/node-botvac

Primary LanguageJavaScriptMIT LicenseMIT

node-botvac

A node module for Neato Botvac Connected. Based on tomrosenbacks PHP Port and kanggurus work on the undocumented Neato API.

Installation

npm install node-botvac

Usage Example

var botvac = require('node-botvac');

var client = new botvac.Client();
//authorize
client.authorize('email', 'password', false, function (error) {
    if (error) {
        console.log(error);
        return;
    }
    //get your robots
    client.getRobots(function (error, robots) {
        if (error) {
            console.log(error);
            return;
        }
        if (robots.length) {
            //do something        
            robots[0].getState(function (error, result) {
               console.log(result);
            });
        }
    });
});

Client API


client.authorize(email, password, force, callback)

Login at the neato api.

  • email - your neato email
  • password - your neato passwort
  • force - force login if already authorized
  • callback - function(error)
    • error null if no error occurred

client.getRobots(callback)

Returns an array containing your registered robots.

  • callback - function(error, robots)
    • error null if no error occurred
    • robots array - your robots

Robot Properties

  • robot.name - nickname of this robot (cannot be changed)

These properties will be updated every time robot.getState() is called:

  • robot.isBinFull boolean
  • robot.isCharging boolean
  • robot.isDocked boolean
  • robot.isScheduleEnabled boolean
  • robot.dockHasBeenSeen boolean
  • robot.charge number - charge in percent
  • robot.canStart boolean - robot is ready to start cleaning
  • robot.canStop boolean - cleaning can be stopped
  • robot.canPause boolean - cleaning can be paused
  • robot.canResume boolean - cleaning can be resumed
  • robot.canGoToBase boolean - robot can be sent to base
  • robot.eco boolean - set to true to clean in eco mode
  • robot.noGoLines boolean - set to true to enable noGoLines
  • robot.navigationMode number - 1: normal, 2: extra care (new models only)
  • robot.spotWidth number - width for spot cleaning in cm
  • robot.spotHeight number - height for spot cleaning in cm
  • robot.spotRepeat boolean - set to true to clean spot two times

Robot API


robot.getState([callback])

Returns the state object of the robot. Also updates all robot properties.

  • callback - function(error, state)
    • error null if no error occurred
    • state object
      • example:
var state = {
   version: 1,
   reqId: '1',
   result: 'ok',
   error: 'ui_alert_invalid',
   data: {},
   state: 1,
   action: 0,
   cleaning: {category: 2, mode: 1, modifier: 1, spotWidth: 0, spotHeight: 0},
   details: {
       isCharging: false,
       isDocked: true,
       isScheduleEnabled: false,
       dockHasBeenSeen: false,
       charge: 98
   },
   availableCommands: {
       start: true,
       stop: false,
       pause: false,
       resume: false,
       goToBase: false
   },
   availableServices: {
       houseCleaning: 'basic-1',
       spotCleaning: 'basic-1',
       manualCleaning: 'basic-1',
       easyConnect: 'basic-1',
       schedule: 'basic-1'
   },
   meta: {modelName: 'BotVacConnected', firmware: '2.0.0'}};

robot.getSchedule([detailed], [callback])

Returns the scheduling state of the robot.

  • detailed - boolean boolean, to return the full schedule object, not only it status
  • callback - function(error, schedule)
    • error null if no error occurred
    • schedule depend on detailed
      • boolean (when detailed is undefined or false) true if scheduling is enabled
      • object (when detailed is true) full schedule description object
        • example:
var schedule = {
   type:1,
   enabled:true,
   events:[
       {
           day:1,
           startTime:"08:30"
       },
       {
           day:2,
           startTime:"08:30"
       },
       {
           day:3,
           startTime:"08:30"
       },
       {
           day:4,
           startTime:"08:30"
       },
       {
           day:5,
           startTime:"08:30"
       },
       {
           day:6,
           startTime:"11:30"
       },
       {
           day:0,
           startTime:"11:30"
       }
   ]
}

robot.enableSchedule([callback])

Enables scheduling.

  • callback - function(error, result)
    • error null if no error occurred
    • result string - 'ok' if scheduling got enabled

robot.disableSchedule([callback])

Disables scheduling.

  • callback - function(error, result)
    • error null if no error occurred
    • result string - 'ok' if scheduling got disabled

robot.startCleaning([eco], [navigationMode], [noGoLines], [callback])

Start cleaning.

  • eco boolean - clean in eco mode
  • navigationMode number - 1: normal, 2: extra care (new models only)
  • eco boolean - clean with enabled nogo lines
  • callback - function(error, result)
    • error null if no error occurred
    • result string - 'ok' if cleaning could be started

robot.startSpotCleaning([eco], [width], [height], [repeat], [navigationMode], [callback])

Start spot cleaning.

  • eco boolean - clean in eco mode
  • width number - spot width in cm (min 100cm)
  • height number - spot height in cm (min 100cm)
  • repeat boolean - clean spot two times
  • navigationMode number - 1: normal, 2: extra care (new models only)
  • callback - function(error, result)
    • error null if no error occurred
    • result string - 'ok' if spot cleaning could be started

robot.stopCleaning([callback])

Stop cleaning.

  • callback - function(error, result)
    • error null if no error occurred
    • result string - 'ok' if cleaning could be stopped

robot.pauseCleaning([callback])

Pause cleaning.

  • callback - function(error, result)
    • error null if no error occurred
    • result string - 'ok' if cleaning could be paused

robot.resumeCleaning([callback])

Resume cleaning.

  • callback - function(error, result)
    • error null if no error occurred
    • result string - 'ok' if cleaning could be resumed

robot.getPersistentMaps([callback])

Returns the persistent maps of the robot

  • callback - function(error, schedule)
    • error null if no error occurred
    • maps Maps[] - array of maps

robot.getMapBoundaries(mapId, [callback])

Returns the boundaries of a map

  • mapId string - a Map id for which to get the boundaries
  • callback - function(error, schedule)
    • error null if no error occurred
    • boundaries Boundary[] - array of boundaries

robot.setMapBoundaries(mapId, [callback])

Sets boundaries for a map

  • mapId string - a Map id for which to get the boundaries
  • boundaries Boundary[] - array of boundaries
  • callback - function(error, schedule)
    • error null if no error occurred
    • boundaries Boundary[] - array of boundaries

robot.startCleaningBoundary([eco], [extraCare], [boundaryId], [callback])

Start cleaning with boundaries

  • eco boolean - clean in eco mode
  • extraCare boolean - clean in extra care (new models only)
  • boundaryId string - a boundary id (zone) to clean
  • callback - function(error, result)
    • error null if no error occurred
    • result string - 'ok' if cleaning could be started

robot.sendToBase([callback])

Send robot to base.

  • callback - function(error, result)
    • error null if no error occurred
    • result string - 'ok' if robot could be sent to base

robot.findMe([callback])

Locate the robot by emitting a sound and light

  • callback - function(error, result)
    • error null if no error occurred
    • result string - 'ok' if robot could be located

Changelog

0.4.3

  • (Pmant) update dependencies

0.4.2

  • (PeterVoronov) add optional detailed parameter to robot.getSchedule
  • (naofireblade) add isBinFull property
  • (naofireblade) prevent request from catching exceptions in callback

0.4.1

  • (jbtibor) update dependencies

0.4.0

  • (naofireblade) add findMe

0.3.0

  • (az0uz) add persistent maps and boundaries

0.2.0

  • (koush) http transport changes and updates

0.1.5

  • (naofireblade) add support for new parameter navigationMode (newer models)

0.1.6

  • (naofireblade) add support for new parameter noGoLines (newer models)
  • (naofireblade) changed to keep cleaning parameters in sync with neato app