[APP][Pro] Roborock Vacuum Cleaners

Roborock Vacuum Cleaners
Intelligent robot vacuum cleaners


Please note:
This app supports the newer models of the Xiaomi Roborock vacuum cleaner robots such as the S5 MAX, S6 and S7 models. This app has not been tested with older models. Scroll down for a full list with supported models an all of their functions.


The latest live version 2.0.0:
This version includes the new Homey SDK3. From now on, the app will work with the new Homey Pro 2023. Please report any problems with this update.


Usage of the app:

  1. Install this app using the Homey app store;
  2. Find your robots Xiaomi token (see below);
  3. Find your robots IP address (see below);
  4. Add a new device using the app;
  5. Choose the device you wish to install;
  6. Fill in the form using the IP address and token you’ve found;
  7. Click ‘Test connection’ to see if you information is right;
  8. When approved, click ‘Add device’ to finish.

Advanced status flow cards
There is a IF/AND/OR card available that checks the status of the robot. This will enable you to make advanced flows based on what the vacuum cleaner is doing. In the view below you’ll find a list of all the tags that the status card understands:

  • charger-offline
    Find out if the vacuum cleaner is unable to find the docking station.

  • cleaning
    The vacuum cleaner is busy cleaning.

  • returning
    The vacuum cleaner is busy returning to the dock.

  • charging
    The vacuum cleaner is charging. When the battery is fully charged, this status will change to docked.

  • charging-error
    The vacuum cleaner is not able to charge.

  • paused
    The vacuum cleaner is paused during work.

  • spot-cleaning
    The vacuum cleaner is busy doing a spot cleaning.

  • error
    The vacuum cleaner has an error, maybe something is jamming the brush.

  • docked
    The vacuums battery is fully charged and it’s at his dock.

  • zone-cleaning
    The vacuum is busy doing a zone cleanup.


Going to target point:
This app supports “Go-To-Target”. This flow card might be a little bit hard to use, but if you take your time you’ll get the hang of it. To help you out, I created the image below.

Soo, the docking station is always 25500,25500. If you wish to let the robot move 1 meter to the right, change the coördinates to 26500,25500. Please note the +/- in the axis, look at the picture for the example. Moving left is minus, moving right is plus. Same goes for up and down.

Take your time
 Move the robot to a pin-point, send it back to the dock and try again. Good luck!


Find room ID’s for room cleanup
The room cleaning card is using a special ID that Xiaomi gives to your room. With the following steps you will be able to find the room you wish to clean:

  1. Create a flow as shown below;
  2. Head back to your Xiaomi app;
  3. Edit your map; divide the rooms into whatever you wish;
  4. Make sure that you give all the rooms a name, else it won’t get a ID;
  5. Save your new edited map;
  6. The flow will detect changes and give a list of all the rooms available.

Please keep in mind your set polling frequency; every XX (frequency) seconds Homey will detect changes > rooms are changed > flowcard is triggered!!

The list you will get is a list with ID’s. It is not possible to give back room names in a easy way. Normally, the sequence of ID’s is the same sequence that you created rooms in. Detecting the right room is still a bit trial and error.

Once you trigger the flow card “Clean a room” with a certain ID and you head back to the Xiaomi app, you’ll see that the map wil gray out and only the room you’ve choosen (room ID) will light up. See image below for exampe.


Use zone cleanup based on coordinates
This app supports zone cleanup based on coordinates. The difference between zone and room is that this function does not need a room setup in the Xiaomi app. Let’s say for example you wish to clean a certain zone inside a room more often because the floor there gets more dirty, but you do not wish to create a new room in the Xiaomi app
 This function is the answer!

Look at the image below for an example on how the zoned cleanup works. You need to find the two coordinates first, check the coordinate function above to find out how to do this. Now, with the coordinates, fill in the flow card form using the two opposite corners of the chosen zone. The robot will create a rectangle using these coordinates by itself.

You can use the last form field in the flow card to tell the robot how many times he needs to clean this zone. This may be a 1-3 numeric value.


Supported languages:
The following languages are supported. English and Dutch is written by myself. Are you up for a translation? Please contact me with a DM and I will send you the translation files.

:denmark: Danish not supported
:de: German (Dirk Göbel)
:uk: English (Justin Harings)
:es: Spanish not supported
:fr: French (SĂ©bastien Martin)
:it: Italian (Alessandro Pagnini)
:netherlands: Dutch (Justin Harings)
:norway: Norwegian (Georg Engstrand)
:sweden: Swedish (John Severinson)


Wish to say thank you?
I’d love a good sigar! Contribute by making a PayPal donation. Thank you in advance! It would also be great if you posted a review in the Homey app store!

image

11 Likes

Changelog

You are able to install the test version using the official Homey link added below. Installing this test version allows you to test and experience the newest version that’s going to be released in the near future. Please notice that this version is not stable! If you wish a stable version, use the one provided in the Homey app store.

If there is currently no test version available, this link will automatically change into the normal Homey app store URL. View the list below to see if there is a test version.

Current test version 2.0.0
This version includes the new Homey SDK3. From now on, the app will work with the new Homey Pro 2023. Please report any problems with this update.

Current test version 1.6.1
Fixed a small bug that made the app crash when calling a room cleanup on the S6 and S6 Pure.

Current test version 1.6.0
This version contains bugfixes that solve all the issues about the S6 Pure device and the issue that you was not able to clean multiple rooms at once. Also the S50 (V2) device is added to the official support list. Last but not least, i’ve added all the correct images to the devices soo they show up correctly in the Homey shop.

Current live version 1.5.4
Fixed the issue were the robot is always named S7, regarding which model you’ve chose in setup.

Version 1.5.3
Roborock goes international on Homey! This small update contains big language packs! We now support French (@sebyldino), German (@DirkG), Norwegian (@sjefsgorgen) and Italian (@dandooze)!! Thank you all for helping out! :pray:

Version 1.5.2
Removed the flow card that detects a map trigger since this is not working in the current API possibilities. Also removed the summary card for devices other than the S7. Furthermore added the room cleanup status to the “cleaning” status that homey offers. Last but not least, updated a bug that did not change the vacuum power on some devices.

Version 1.5.0
This is a big one! The new versions brings zone cleanup based on coordinates (view how-to in the official thread), watertank flowcards for the S5 Max and the S6 MaxV that sets the water intensity, a trigger flow that enables you to receive a large summary with statistics, a trigger flow that tells you when the map that the robot is on changes (maps set in the Xiaomi app) and last but not least the possibility to start a cleanup round by simply pressing the tile in your device view.

Version 1.4.2
This release brings room cleanup to Homey! You are able to set a new flow that triggers when the room layout in the Xiaomi app changes, this trigger can then tell you what the new room ID’s are. Please visit the official thread for a how-to on this. Furthermore you are able to start a room cleanup using an official Xiaomi room ID.

Version 1.4.1
I’ve added the room cleanup part. This card is using a room ID (numeric). To get the rooms, there is a trigger card build in that will give a list of rooms once the map is edited in the Xiaomi app.

Version 1.3.3
This version contains the bugfix that should solve the ‘status has changed’ card not working on other devices then the S7.

Version 1.3.2
Go to target is here! This release supports the go to target based on coordinates for all supported models. There is also a flow card released that enables you to set the scrub intensity on the S7 models. Furthermore there is a Swedish languages added and the bug that some models did not have all flow cards is solved.

Version 1.3.2
Solved a bug that disabled WHEN cards for other models than the S7.

Version 1.3.1
Solved a bug that disabled the FLOW cards for go-to-target on other models than the S7.

Version 1.3.0
This release contains the go-to-target cards and a FLOW card to set the scrub intensity for the S7 models, as well as a few bugfixes and a Swedish language pack.

Version 1.2.0
The device list is splitted into the Roborock versions this app supports. This will make it easier for users to find out if the app is usefull for them. Furthermore I am able to add mop functions to the right models instead of adding these to all. Some smaller bugfixes took place and the app settings menu is removed, since there are no general settings.

Version 1.1.3
Changed some text in the official readme file that Athoms wants to be corrected. Also added a new slogan since the old one was not valid according to Athom.

Retrieving the Xiaomi token

The fastest way to retreive Xiaomi tokens today is to use the applications built by jghaanstra (Jelger Haanstra) · GitHub 
 Download his software, login using your Xiaomi login credentials and you’ll get a list of all your Xiaomi deviced including the TOKEN.


Full repository here:


Download page for the software here:

2 Likes

Retrieving the Xiaomi IP address
Once you have found the token, retrieving the IP address is very easy.

  1. Open the official Xiaomi app;
  2. Press your robots tile;
  3. Press the tree dots in the upper right corner;
  4. Press ‘Extra settings’;
  5. Press ‘Network settings’;
  6. You’ll find the IP address there.

Official supported devices
The list below will display all official supported Roborock devices. There is still a good option that a device that is not displayed will work properly, but they have not yet been tested.

Do you have a Roborock which is not displayed in the list below? You could help others by showing us if your device will work! Please test all the flows, all the IF/THEN cards and post your found options below in a new reply. If everything works well, I will add this device to the official tested list. Thank you for your support!


This app offers full support for the Roborock S7 model. All of the functions:

  • Start cleaning
  • Stop cleaning
  • Start spot cleaning
  • Return to charger
  • Let the robot speak (Hi i’m over here!)
  • Set vacuum power
  • Set scrub intensity
  • Move to coordinate based target
  • Clean a room
  • Clean a coordinate based zone
  • Trigger a flow when the cleaning summary changes
  • Trigger a flow when the rooms in the Xiaomi app changes

This app offers full support for the Roborock S6 MaxV model. All of the functions:

  • Start cleaning
  • Stop cleaning
  • Start spot cleaning
  • Return to charger
  • Let the robot speak (Hi i’m over here!)
  • Set vacuum power
  • Set watertank intensity
  • Move to coordinate based target
  • Clean a room
  • Clean a coordinate based zone
  • Trigger a flow when the rooms in the Xiaomi app changes

This app offers full support for the Roborock S6 model. All of the functions:

  • Start cleaning
  • Stop cleaning
  • Start spot cleaning
  • Return to charger
  • Let the robot speak (Hi i’m over here!)
  • Set vacuum power
  • Move to coordinate based target
  • Clean a room
  • Clean a coordinate based zone
  • Trigger a flow when the rooms in the Xiaomi app changes

This app offers full support for the Roborock S6 Pure model. All of the functions:

  • Start cleaning
  • Stop cleaning
  • Start spot cleaning
  • Return to charger
  • Let the robot speak (Hi i’m over here!)
  • Set vacuum power
  • Move to coordinate based target
  • Clean a room
  • Clean a coordinate based zone
  • Trigger a flow when the rooms in the Xiaomi app changes

This app offers full support for the Roborock S6 Pure model. All of the functions:

  • Start cleaning
  • Stop cleaning
  • Start spot cleaning
  • Return to charger
  • Let the robot speak (Hi i’m over here!)
  • Set vacuum power
  • Set watertank intensity
  • Move to coordinate based target
  • Clean a room
  • Clean a coordinate based zone
  • Trigger a flow when the rooms in the Xiaomi app changes

Hi Justin, for windows user GitHub - PiotrMachowski/Xiaomi-cloud-tokens-extractor: This tool/script retrieves tokens for all devices connected to Xiaomi cloud and encryption keys for BLE devices. is the easiest way to extract the tokens. Follow these steps:

2 Likes

Thank you Joka! I will update my thread.

The app is officially released. Please scroll up to the first post for the official store URL!

1 Like

I had a sideloaded Roborock app before, working with my S6maxV. In that app there was an AND-card: “Vaccum is on”. I used that to detect if Roborock was working. So my question is how the Status-card works.
If Roborock is Spot cleaning, is Cleaning also true?
If Roborock is Charging, is Stopped and Docked also true?

Polling in seconds is suggested to 60 seconds. Does that mean that a change i status can be acknowledged in 1 to 60 seconds?
How low can polling be set without being banned of the server?

Polling interval is accepting 60 and up. It should validate the settings and not accept anything lower than 60, if i’m correct?

I will write a better ‘status’ description when i’m back home!

I think I can answer the question about Status functionality myself.
Status seems to be separate and when Roborock is charging it is not “Docked”, meaning when charging stops it will trigger status Docked.
In some cases it seems like the On-functionality could be useful:
Status Cleaning = On
Status Spot cleaning = On
Status Docked = Off
Status Charging = Off
Status Stopped = Off
The sideloaded app I used before had this functionality. See attached When and And-cards.


Sounds like a usefull function indeed, I will try and implement this in the future.

You’re right about the docked/charging status. As a workaround you might use a AND + OR card using “charging” and “docked” to find out if the roborock is currently “off”.

Or even better, use one card and check if the status is “cleaning”. Ofcourse this will not work when you’re using spot cleaning, but I guess most people don’t use this? If you do, then fallback to the AND/OR as mentioned above.

I will add your ON/OFF to my to-do list.

1 Like

By the way, I do not own a S6 MaxV soo I was not able to test this device. According to other developers on Github and some threads I found the S6 MaxV should use the same protocols soo it should work 100%, but if you bump into any failures or crashes please let me know!

1 Like

Final mention about the status
 When “docked” is triggered you can be sure the battery is fully charged again.

In other words, if you’re trying to build a flow that’s triggering the vacuum once it’s fully charged again, try using this trigger
 It’s less load for Homey checking with “status has changed” and new status is “docked” then using a battery trigger which will hit your flow much more often :slight_smile:

1 Like

There are many more features that Roborock accepts. Please see the updated first post in this thread about all the vacuum status options.

@Morgan , could you please post a picture of the vacuum power settings and water settings from you Roborock or Xiaomi app?

Move to target is a success! I will test this in the upcoming days in order to make sure it works just fine, then i’ll release it.

1 Like

Thanks for the app @Justin. Great work.

I can confirm that the S5Max is working with this app. I’m close to ditching the nodered workaround for the S5max.

My humble suggestions for app improvement are following:

  1. Room cleaning to select which rooms will be cleaned each time. In node red every room is marked with specific number that is used in the command to clean.
    a. I use this to block the vacuum from entering certain rooms when they are not organized so that they can be cleaned.
    b. I also use this to clean certain rooms only when needed.
  2. Go to target coordinates
    a. I use this to get the vacuum close to the trashbin when it’s full or has cleaned certain amount of area.
  3. Zone cleaning
  4. The cleaned area information.
    a. I use this to detect how large area vacuum has cleaned and based on that send it to the trashbin and notify me to empty the bin.