# Roborock
[Integration's documentation](https://www.home-assistant.io/integrations/roborock/)
> [!WARNING]
> You MUST use HA 2025.4 or later for this to work.
This platform can be used to control vacuums connected to Home Assistant using the [core Roborock integration](https://www.home-assistant.io/integrations/roborock/)
This works by using the core integration to send any needed commands, and a custom integration for passing information to the card.
If you need to setup this card using the custom component, you should use The "humbertogontijo/homeassistant-roborock" platform instead
## Installation
1. Install the [Roborock Core Integration](https://my.home-assistant.io/redirect/config_flow_start?domain=roborock) and set it up
2. It is recommended that you first disable the Image entities within the core integration. Open each image entity, hit the gear icon, then trigger the toggle by enabled.
3. Install the [Roborock Custom Map Integration](https://github.com/Lash-L/RoborockCustomMap#roborock-custom-map)
4. This integration works by piggybacking off of the Core integration, so the Core integration will do all the data updating to help prevent rate-limits. But that means that the core integration must be setup and loaded first. If you run into any issues, make sure the Roborock integration is loaded first, and then reload this one.
5. Setup this card like normal! You should select a image with the suffix _custom. An example configuration would look like
```yaml
type: custom:xiaomi-vacuum-map-card
vacuum_platform: Roborock
entity: vacuum.s7
map_source:
camera: image.s7_downstairs_full_custom
calibration_source:
camera: true
```
6. You can hit Generate Room Configs to allow for cleaning of rooms. It might generate extra keys, so check the yaml and make sure there are no extra 'predefined_sections'
7. There might be problems with instance that you have multiple maps. Calibration points may be missing for non-selected maps. Once you change to that map being the one selected, it should fix the calibration problems.
## Optional (Remove the custom integration)
If you would like, you can hit generate static config. Then, you can set the map_source to the core roborock image instead. Note: If your map changes significantly or if your rooms change, it will not updated, so this really shouldn't be needed.
## Available templates
* ### Room cleaning (`vacuum_clean_segment`)
Uses IDs to clean specific rooms. Requires `predefined_selections` to be provided.
[Configuration generator](https://github.com/PiotrMachowski/lovelace-xiaomi-vacuum-map-card/discussions/317)
[Getting coordinates](/docs/templates/setup.md#getting-coordinates)
Used service: `vacuum.send_command`
Example configuration
```yaml
map_modes:
- template: vacuum_clean_segment
predefined_selections:
- id: 14
outline: [[ 21458, 32131 ], [ 24235, 32152 ], [ 24194, 27409 ], [ 23181, 27409 ]]
label:
text: "Bedroom"
x: 22932
y: 30339
offset_y: 35
icon:
name: "mdi:bed"
x: 22932
y: 30339
- id: 19
outline: [[ 21478, 27237 ], [ 23048, 27250 ], [ 23061, 25655 ], [ 21478, 25680 ]]
label:
text: "Bathroom"
x: 22282
y: 26496
offset_y: 35
icon:
name: "mdi:shower"
x: 22282
y: 26496
```
Example video
https://user-images.githubusercontent.com/6118709/141666925-34b01cde-82ff-447b-aecc-e9ced402b1ed.mp4
* ### Zone cleaning (`vacuum_clean_zone`)
Uses 4 coordinates to clean rectangular zones.
Used service: `vacuum.send_command`
Example configuration
```yaml
map_modes:
- template: vacuum_clean_zone
```
Example video
https://user-images.githubusercontent.com/6118709/141666913-d95f082d-f5bf-4ab5-a478-ba44effe6f34.mp4
* ### Predefined zone cleaning (`vacuum_clean_zone_predefined`)
Uses 4 coordinates to clean rectangular zones that have been defined in the configuration. Requires `predefined_selections` to be provided.
[Getting coordinates](/docs/templates/setup.md#getting-coordinates)
Used service: `roborock.send_command`
Example configuration
```yaml
map_modes:
- template: vacuum_clean_zone_predefined
predefined_selections:
- zones: [[ 21485, 28767, 24236, 32131 ], [ 23217, 27379, 24216, 28737 ]]
label:
text: "Bedroom"
x: 22932
y: 30339
offset_y: 35
icon:
name: "mdi:bed"
x: 22932
y: 30339
- zones: [[ 27782, 27563, 29678, 29369 ]]
label:
text: "Kitchen"
x: 28760
y: 28403
offset_y: 35
icon:
name: "mdi:pot-mix"
x: 28760
y: 28403
```
Example video
https://user-images.githubusercontent.com/6118709/141666920-492a000c-9a78-4c20-b4f5-9343928140c7.mp4
* ### Going to a specified point (`vacuum_goto`)
Uses a pair of coordinates for vacuum to get to a user-specified point.
Used service: `roborock.roborock.set_vacuum_goto_position`
Example configuration
```yaml
map_modes:
- template: vacuum_goto
```
Example video
https://user-images.githubusercontent.com/6118709/141666921-2f3d66da-6ffc-492a-8439-625da97651bd.mp4
* ### Going to a predefined point (`vacuum_goto_predefined`)
Uses a pair of coordinates for vacuum to go to a point that has been defined in the configuration. Requires `predefined_selections` to be provided.
[Getting coordinates](/docs/templates/setup.md#getting-coordinates)
Used service: `roborock.set_vacuum_goto_position`
Example configuration
```yaml
map_modes:
- template: vacuum_goto_predefined
predefined_selections:
- position: [ 28006, 28036 ]
label:
text: "Emptying"
x: 28006
y: 28036
offset_y: 35
icon:
name: "mdi:broom"
x: 28006
y: 28036
- position: [ 32143, 26284 ]
label:
text: "Sofa"
x: 32143
y: 26284
offset_y: 35
icon:
name: "mdi:sofa"
x: 32143
y: 26284
```
Example video
https://user-images.githubusercontent.com/6118709/141666923-965679e9-25fb-44cd-be08-fc63e5c85ce0.mp4
* ### Following a specified path (`vacuum_follow_path`)
Uses a list of points to make a vacuum follow a user-defined path. Requires [`follow_path`](/docs/follow_path.yaml) script to be installed.
Used service: `script.vacuum_follow_path`
Example configuration
```yaml
map_modes:
- template: vacuum_follow_path
```
Example video
https://user-images.githubusercontent.com/6118709/141666931-48d1717f-96d0-461d-84f4-788c071f3a78.mp4