Neato/Vorwerk Vacuum Robot
This plugin connects your Neato (https://www.neatorobotics.com/) or Vorwerk Robot with SmarthomeNG.
Command start, stop, pause, resume cleaning and trigger sendToBase and FindMe mode.
Read status of your robot
Configuration
1) /smarthome/etc/plugin.yaml
Enable the plugin in plugin.yaml , type in your Neato or Vorwerk credentials and define whether you are using a Neato or Vorwerk robot.
2) Authentication
Two different authentication techniques are supported by the plugin:
a) Authentication via „account email“ and account password (applicable for Neato and old Vorwerk API)
Neato:
plugin_name: neato
account_email: 'your_neato_account_email'
account_pass: 'your_neato_account_password!'
robot_vendor: 'neato or vorwerk'
b) Oauth2 authentication via „account email“ and token (applicable for Vorwerk only, supports the new MyKobold APP interface)
Neato:
plugin_name: neato
account_email: 'your_neato_account_email'
token: 'HEX_ASCII_TOKEN'
robot_vendor: 'vorwerk'
In order to obtain a token, use the plugin’s webinterface on the Vorwerk OAuth2 tab.
If you cannot operate the webinterface, do the following steps manually:
a) Enable Neato plugin and configure Vorwerk account email address
b) Enable logging at INFO level for neato plugin in logger.yaml
c) Execute plugin function request_oauth2_code. This will request a code from neato to be sent by email to the above address.
d) After reception of the code, execute the plugin function request_oauth2_token(code) with the received code as argument
e) Read the generated ASCII hex token from the logging file
f) Insert the token to the neato plugin section of the plugin.yaml configuration file
2) /smarthome/items/robot.yaml
Create an item based on the template below:
Neato:
Name:
type: str
neato_attribute: 'name'
visu_acl: ro
State:
type: str
value: 'offline'
neato_attribute: 'state'
visu_acl: ro
StateAction:
type: str
neato_attribute: 'state_action'
visu_acl: ro
Command:
type: num
neato_attribute: 'command'
visu_acl: rw
IsDocked:
value: False
type: bool
neato_attribute: 'is_docked'
visu_acl: ro
IsScheduleEnabled:
value: False
type: bool
neato_attribute: 'is_schedule_enabled'
visu_acl: rw
IsCharging:
value: False
type: bool
neato_attribute: 'is_charging'
visu_acl: ro
ChargePercentage:
type: num
neato_attribute: 'charge_percentage'
visu_acl: ro
GoToBaseAvailable:
type: bool
value: False
neato_attribute: 'command_goToBaseAvailable'
visu_acl: ro
Alert:
type: str
neato_attribute: 'alert'
visu_acl: ro
Examples
Thats it! Now you can start using the plugin within SmartVisu, for example:
Get status from robot:
<p>Name: {{ basic.value('RobotName', 'Neato.Robot.Name') }}</p>
/** Get the robots name (str)*/
<p>Cleaning status: {{ basic.value('RobotState', 'Neato.Robot.State') }}</p>
/** Get the robots cleaning status (str) */
<p>Cleaning status action: {{ basic.value('RobotStateAction', 'Neato.Robot.StateAction') }}</p>
/** Get the robots cleaning status action (str). Only when it's busy */
<p>Docking status: {{ basic.value('RobotDockingStatus', 'Neato.Robot.IsDocked') }}</p>
/** Get the robots docking status (bool) */
<p>Battery status: {{ basic.value('RobotBatteryState', 'Neato.Robot.ChargePercentage') }}</p>
/** Get the robots battery charge status (num) */
The following cleaning states are currently available:
Neato.Robot.State |
---|
invalid |
idle |
busy |
paused |
error |
If Neato.Robot.State == ‚busy‘ than you can find the current cleaning activity in Neato.Robot.StateAction.
The following action states are currently available:
Neato.Robot.StateAction |
---|
0 Invalid |
1 House Cleaning |
2 Spot Cleaning |
3 Manual Cleaning |
4 Docking |
5 User Menu Active |
6 Suspended Cleaning |
7 Updating |
8 Copying Logs |
9 Recovering Location |
10 IEC Test |
11 Map cleaning |
12 Exploring map (creating a persistent map) |
13 Acquiring Persistent Map IDs |
14 Creating & Uploading Map |
15 Suspended Exploration |
Send commands to the robot:
<p> {{ basic.button('RobotButton_Start', 'Neato.Robot.Command', 'Start', '', '61', 'midi') }} </p>
<p> {{ basic.button('RobotButton_Stop', 'Neato.Robot.Command', 'Stop', '', '62', 'midi') }} </p>
<p> {{ basic.button('RobotButton_Pause', 'Neato.Robot.Command', 'Pause', '', '63', 'midi') }} </p>
<p> {{ basic.button('RobotButton_Resume', 'Neato.Robot.Command', 'Resume', '', '64', 'midi') }} </p>
<p> {{ basic.button('RobotButton_Find', 'Neato.Robot.Command', 'Find', '', '65', 'midi') }}</p>
Following commands are currently available:
Command (num) |
Action |
---|---|
61 |
Start cleaning |
62 |
Stop cleaning |
63 |
Pause cleaning |
64 |
Resume cleaning |
65 |
Find the robot |
66 |
Send to base |
67 |
Enable schedule |
68 |
Disable schedule |