Xiaomi Robot Vacuum Binding

I just implemented a rule set for this, hence sharing for others:

  • I do use one item per room (I got 4 rooms) to identify which room needs to be cleaned
  • I then have another item (also a switch) that I activate to execute the cleaning

Above enables me to combine rooms for cleaning.

The rule looks like this:
//Set item variables

var room_kitchen = itemRegistry.getItem("utilities_roborock_room_16").getState ();
var room_bedroom_master = itemRegistry.getItem("utilities_roborock_room_17").getState ();
var room_livingroom = itemRegistry.getItem("utilities_roborock_room_18").getState ();
var room_bedroom_children = itemRegistry.getItem("utilities_roborock_room_19").getState ();
var room_execute = itemRegistry.getItem("utilities_roborock_room_execute").getState ();

//Actions

//Set variables if switch is turned ON

if (room_kitchen == "ON"){
  var room_kitchen_number = "16, ";
} else {
  var room_kitchen_number = "";
}

if (room_bedroom_master == "ON"){
  var room_bedroom_master_number = "17, ";
} else {
  var room_bedroom_master_number = "";
}

if (room_livingroom == "ON"){
  var room_livingroom_number = "18, ";
} else {
  var room_livingroom_number = "";
}

if (room_bedroom_children == "ON"){
  var room_bedroom_children_number = "19, ";
} else {
  var room_bedroom_children_number = "";
}

//Combine room variables into control string

var room_con = "app_segment_clean [" + room_kitchen_number + room_bedroom_master_number + room_livingroom_number + room_bedroom_children_number +"]";

//Send command

events.sendCommand("utilities_roborock_executecommand", room_con);
Log.logInfo("TEST", "RULE - Utilities - Roborock Room Cleaning started for rooms:" + " " + room_con);
telegramAction.sendTelegram("RULE - Utilities - Roborock Room Cleaning started for rooms:" + " " + room_con);

//Clear all variable states

var room_con = 0;
events.sendCommand("utilities_roborock_room_execute", "OFF");
events.sendCommand("utilities_roborock_room_16", "OFF");
events.sendCommand("utilities_roborock_room_17", "OFF");
events.sendCommand("utilities_roborock_room_18", "OFF");
events.sendCommand("utilities_roborock_room_19", "OFF");

the control string can take any combination of rooms and it works.

The rule fires when the execute switch is turned ON and then takes the different room switches that were turned ON into the variables.
After execution of the command, all switches are reset to OFF.

I am sure it can be optimized and cut in half, but it works for now.
Hope it helps!

EDIT: For got to answer your 2nd question: I think there is no need to set the vacuum back to “pause” or “dock” as it will automatically return to the dock after cleaning anyways.

1 Like