Roborock 2025.4: Maps, Routines, update intervals, and more!

Note: this all works for HA 2025.4+

Hi everyone, I figured I’d make a post as HA 2025.4 contains a lot of functionality that people have been asking for since day one of the Roborock core integration. There was a lot going on behind the scenes to make everything work reliably and follow the best standards for core. I got ahead in my Master’s classes, so I was able to spend a bit more time getting some cool features into the integration.

While 2025.4 won’t be officially until Wednesday, I’m hoping to get some beta testers to try it out and see if there are any major unexpected bugs.

Important Note!!! (If you don’t have an automation for reloading the integration, you can skip this)

To start off, It is very important that if you have any automations that reload the Roborock integration automatically, that you disable them! If you don’t - feel free to skip this section. I have run into a few users who have set up automations that reload the Roborock integration whenever it goes unavailable. This is very problematic! And they have since been ip banned by Roborock. The integration should recover in 99% of circumstances and automatically regain connection when it is able to. When you reload the integration, you are needlessly hitting the Roborock cloud server. Imagine a situation when your vacuum gets stuck while cleaning in the middle of the night, and it shuts itself down. Now, you are constantly attempting to reload the integration, and you do this over and over again until you get the vacuum back online. If for some reason your vacuum goes offline and does not recover, please make an issue on github. We can find the source of the problem and fix it.

If this has happened to you, you will need to reach out to Roborock to get unbanned.

If you MUST do this automation please make sure you have built in limits to how often it can reload.

Lovelace card

This is the thing people have been asking for the most. The Roborock core integration can now work with the Xiaomi Vacuum Map Card

You can find instructions on how to make it work here

It involves installing a custom integration that will do no additional polling and instead just piggyback off of the core integration. Big thanks to Piotr who has been super helpful getting this working.

If you have issues with this feature, you should open an issue on the Xiaomi Vacuum Map Card page NOT the home assistant core page. Please tag me @Lash-L.

Update Intervals

There are now dynamic update intervals, so while in cleaning, we will update the device more frequently than when we aren’t in cleaning and if we are using the local api, we can be more aggressive than if we are using the cloud api. People have asked for faster polling for a while. There should also be (working) automatic state updates in the future. We are going through a refactor of the base library.

Routines

Big thanks to regevbr, who added buttons that will start Roborock Routines! If your device supports routines, and if you have routines, they will automatically be set up. You can simply hit the button, and start whatever routine you would like!

Current Room Entity

This one was a real challenge to add and took a pretty big refactor, but you can now see what room your vacuum is in! If you have multiple maps, it will tell you what room your vacuum is currently in in the selected map.

Map improvements

  • The resolution of the map has been greatly increased
  • Maps are the only command that we have to send to the cloud, so we are very hesitant to overdo it. That being said, the maps updates have been improved, the map will now update in any of the given circumstances
    • The vacuum’s state changes (i.e. cleaning → docked)
    • It is your currently selected map and it has not been updated since you restarted HA.
    • Every 30 seconds of when you are actively cleaning

Device separation

Not a big one, but now there are two devices for every vaucum - A dock device and a vacuum device. This helps better organize the entities. There is also a new dock entity for controling the drying mode in devices that support it.

Misc

  • Devices that you remove from your account will now automatically be removed from Roborock
  • Roborock is now at ‘silver quality scale’ with only a few tasks to get it to Platinum
  • Big thanks to Allen who reviewed most of the PRs + had multiple of his own and made this featureset possible!

What’s next?

  • I plan to finish getting Roborock to Platinum quality for the integration quality scale.
  • I’ve been setting aside some money to get a new Roborock that has some more features - and to be honest, my older vacuum has been broken for about a year, so it will be nice to have a robot vacuum that can actually vacuum! But once I get that, I plan to add all the entities for that device including a live view of the camera(I believe it should be possible) and entities for all of the dock controls.
  • the plan is that we will try to do some big stability improvements next month and some big refactors of the base library.
  • I’ve been keeping this close to my chest… But I’ve found a way to inject a custom url for the Roborock web api that the vacuum hits. It has yet to be seen if i can inject a custom url for the mqtt client as well, but if i am able to do that, there is nothing stopping us from making a completely mocked Roborock server that you can run 100% locally - including map support without rooting. It is not a guarantee by any stretch of the imagination, and if it is possible, it will likely still take me a good bit of time. But this would be the best case scenario! If anyone is experienced with firmware Reverse engineering and wants to help- please feel free to reach out! There are some tricky bits I have to recreate from the vacuum’s internal logic.
10 Likes

That would be great. I have two roborocks and they are using mqtt. I’m so glad that this started to get going somewhere. Thank you for all efforts and work you put into this.

Edit:
Your link

You can find instructions on how to make it work here

is not working. Please check it.

Please post a link where we can send money to you. There are currently almost 21K users of this integration - if every user had to donate 0.10 in their own currency, you’d have enough to buy the latest and greatest of whatever is currently available.

Thanks for the callout - link has been fixed!

I always feel weird directly sharing it as I don’t want to distract from my post by putting in a plug for me- but if you or anyone else wants to - my supporter pages links are here: Lash-L (Luke Lashley) · GitHub

Done. Bloody conversion fees ate up about 20 users’ worth of donations, but you deserve it for finally convincing me to integrate the S7Max-V into HA.
I’ll be updating and installing the integration right after 2025.4 hits, thanks.

nice work, thanks for all, maybe you can add a feature to rotate every single map in the RoborockCustomMap Integration

I just installed 2025.4 and this integration looks very promising. It is basically the same as before in terms of vacuum card.

I don’t understand few things.

I have two roborocks vacuums with a dock. In core integration I have four devices because dock is separate device than a vacuum.

I installed roborock custom map and got two devices with the same sensors as in roborock integration.

They share a device to keep everything tidy. The images made by this custom component have _custom in the name.

Excuse my ignorance but can routines only be used through the Lovelace card? Or can I call them through automations now?

Thank you for the work. This is amazing progress.

I don’t know what do you mean by routines, but generally speaking you can make automations for it. This didn’t change much in terms of automations

My understanding is that roborock routines were server side and you could not trigger them with automations.

I thought this update made routines accessible from within home assistant.

If you think about app then you are probably right about it.
I don’t use app. I have automations in ha and this is how I use them.
I mean you don’t need app for triggering robot. Everything you can set in app you can do it in ha, even more.

I see routines are added as buttons now. So I can use them that way. Thank you!

Hi! I see you got it figured out, but for anyone in the future landing to this:

A button entity is added automatically to the integration for each routine that you have on a device. You can hit that button manually, or you can use a HA Action to hit the button via a automation.

As well - if you add “debug: true” to the lovelace card, any action you take in the card will give you a popup that gives you the Action that was called to make it happen. So that is a great way to easily figure out what actions you want to call in automations and exactly how they should look.

Thank you so much ! I had just switched back to Xiaomi Miio to test if map integration was better, but i rolled back to Roborock integration thanks to this post, i missed this integration update.