The previously used vacuum.send_command has been retired as of Valetudo v2021.04 and zoned cleanup must be performed via mqtt.publish now.

This post was written for the Roborock S5 line of robovacs.

Valetudo configuration

Requires MQTT to be configured correctly in the first place with Valetudo and discovery enabled in Home Assistant. You can verify this using MQTT explorer.

Ensure that the segments are named by clicking on the triangle in "Zones -> Edit Segments" and then clicking the cursor icon to rename a segment.

Full documentation can be found on the Valetudo site at https://valetudo.cloud/pages/integrations/home-assistant-integration.html.

Calling segment cleanup from Home Assistant

A single segment can be called like this:

service: mqtt.publish
data:
    topic: valetudo/robovacDown/MapSegmentationCapability/clean/set
    payload: '20'

Multiple segment cleaning requires a JSON array to be passed like this:

service: mqtt.publish
data:
  topic: valetudo/robovacDown/MapSegmentationCapability/clean/set
  payload: '["17", "20"]'

Segment IDs can be obtained from the MQTT topic valetudo/robot/MapData/segments and should look like this:

{
  "16": "DownFrontDining",
  "17": "DownFrontOffice",
  "18": "DownRearHallway",
  "19": "DownKitchen",
  "20": "DownFrontHall",
  "21": "DownLounge",
  "22": "DownLoungeHall"
}