I have not looked into all of what you ask, but I already do cleaning subset of rooms and I would think using the Map sensor you can get:
vacuum_position:
x: 25610
'y': 25162
a: -88
Which is an attribute hanging off the map.
For instance this is my GUI:
I can select one or more rooms and start clean of only those. I don;t do per room mop/don’t mop as I prefer to do either mopping or none (as in I remove the mop and water tank for vacuum only operations and then put them in for mopping)… I have other things set up like holding down the “Water Level” sensor will cause the vacuum to go to the kitchen sink for refill.
I am sure there are better ways but when I set this up, you could not really get room names and their ID. I thik that exists now and how I did it could be replaced. But as for now, I have a simple JSON read via REST that looks like this:
{
"rooms": [
{
"name": "kitchen",
"boolean": "input_boolean.vac_kitchen",
"id": "17"
},
{
"name": "dining_room",
"boolean": "input_boolean.vac_dining_room",
"id": "16"
},
{
"name": "foyer",
"boolean": "input_boolean.vac_foyer",
"id": "18"
},
{
"name": "laundry",
"boolean": "input_boolean.vac_laundry",
"id": "20"
},
{
"name": "living_room",
"boolean": "input_boolean.vac_living_room",
"id": "19"
},
{
"name": "master_bedroom",
"boolean": "input_boolean.vac_master_bedroom",
"id": "21"
},
{
"name": "master_bathroom",
"boolean": "input_boolean.vac_master_bathroom",
"id": "22"
},
{
"name": "guest_bathroom",
"boolean": "input_boolean.vac_guest_bathroom",
"id": "23"
}
],
"points": [
{
"name": "sink",
"x": 17989,
"y": 25491
}
]
}
SO the input booleans in the GUI across the top are clicked and script is like this:
run_vacuum:
alias: Run Vacuum
sequence:
- service: roborock.vacuum_clean_segment
data_template:
segments: "{% set vacrooms = namespace(roomid=[]) %}\n{% for rooms in state_attr('sensor.roborock_rooms','rooms')
-%}\n {% if is_state(rooms.boolean,'on') %}\n {% set room = rooms.id %}\n
\ {% set vacrooms.roomid = vacrooms.roomid + [room] %}\n {% endif %}\n{%-
endfor %}\n{{ vacrooms.roomid }}\n"
target:
entity_id: vacuum.roborock_s7
mode: single
icon: mdi:robot-vacuum
So for each input_boolean that is “on” (aka Kitchen and Dining in the screen shot), it will clean them.