Hi There, This xmas we got ourselves our first robot! A Roborock Qrevo C Pro to be exact. We have a 2 story house, with the majority of the living area on the upper floor. We have an automation for the upper floor which triggers when we are both away, and thats nice and easy. However I thought I would share my current (maybe final? are they ever?) automation for cleaning downstairs, as its a bit more complex with moving the robot etc, which might help others get ideas. Also happy for any input to make this better!
The steps, when the automation is triggered from a button on our kitchen dashboard (upstairs). Note our vacuums name is “Suki”:
- Set the map to Upstairs (just to be sure it’s not set to Downstairs for some reason).
- Clean the Mop. I do this as when you trigger a routine with mopping included, the vacuum cleans the mop first. Because our downstairs routine includes mopping and Suki is not at the dock, the mops won’t be cleaned before starting mopping downstairs. This way the mops are nice and clean and wet when it starts downstairs.
- Send Suki to a pre-defined spot, which happens to be at the top of the stairs and wait.
- Change the map to Downstairs (note if no-one moves Suki within 10 mins, it changes to the upstairs map and returns it to the dock).
- Someone moves Suki downstairs and presses the power/start button. Note: This will trigger a “whole floor clean”, which I actually don’t want. I want to use a specific routine I have setup in the app for downstairs.
- Stop the “whole floor clean”, and trigger a clean using the correct routine. After which Suki will return to the starting spot. Note: Also updates some helpers.
- Pickup Suki and put it back in the dock.
- Set the map to Upstairs
- Clean the Mop
- Dry the Mop for 30mins
- All done.
Here is the YAML:
alias: Roborock - Clean Downstairs
description: >-
Suki washes mops, drives to stairs, and waits for a physical button press to
trigger the specific Downstairs Routine.
triggers: []
conditions: []
actions:
- alias: Set Map to Upstairs
action: select.select_option
data:
option: Upstairs
target:
entity_id: select.roborock_qrevo_c_pro_selected_map
- alias: Wash Mop before travel
action: vacuum.send_command
target:
device_id: 9308eea756d9e9a24d31af4d0f7985e0
data:
command: app_start_wash
- alias: Wait for Mop Wash to finish
wait_for_trigger:
- trigger: state
entity_id:
- sensor.roborock_qrevo_c_pro_status
from:
- washing_the_mop
to:
- charging
for:
hours: 0
minutes: 0
seconds: 10
continue_on_timeout: false
- action: roborock.set_vacuum_goto_position
target:
device_id: 9308eea756d9e9a24d31af4d0f7985e0
data:
x: 22820
"y": 20505
alias: Drive to top of stairs
- alias: Wait for arrival at stairs
wait_for_trigger:
- trigger: state
entity_id:
- sensor.roborock_qrevo_c_pro_status
to:
- idle
from:
- going_to_target
continue_on_timeout: false
- alias: Set Map to Downstairs (Fixed Name)
action: select.select_option
data:
option: Downstairs
target:
entity_id: select.roborock_qrevo_c_pro_selected_map
- alias: Wait for someone to press the Power button
wait_for_trigger:
- trigger: state
entity_id: binary_sensor.roborock_qrevo_c_pro_cleaning
to: "on"
timeout: "00:10:00"
continue_on_timeout: true
- if:
- condition: template
value_template: "{{ wait.trigger is none }}"
then:
- action: select.select_option
data:
option: Upstairs
target:
entity_id: select.roborock_qrevo_c_pro_selected_map
- delay: "00:00:02"
- action: vacuum.return_to_base
target:
entity_id: vacuum.roborock_qrevo_c_pro
- stop: Manual start timeout reached.
else:
- alias: Stop Generic Clean and Start Custom Routine
action: vacuum.stop
target:
entity_id: vacuum.roborock_qrevo_c_pro
data: {}
- delay: "00:00:02"
- action: button.press
target:
entity_id: button.roborock_qrevo_c_pro_vac_mop_downstairs
data: {}
- alias: Wait until the downstairs cycle is finished
wait_for_trigger:
- trigger: state
entity_id: binary_sensor.roborock_qrevo_c_pro_cleaning
from: "on"
to: "off"
timeout: "03:00:00"
- action: counter.increment
target:
entity_id: counter.roborock_downstairs_clean_daily_count
- action: input_boolean.turn_on
target:
entity_id: input_boolean.roborock_has_mopped_today
- alias: Wait until Suki is physically back on Dock
wait_for_trigger:
- trigger: state
entity_id: sensor.roborock_qrevo_c_pro_status
to: charging
for:
seconds: 10
continue_on_timeout: false
- alias: Set Map to Upstairs
action: select.select_option
data:
option: Upstairs
target:
entity_id: select.roborock_qrevo_c_pro_selected_map
- alias: Empty and Wash
action: vacuum.send_command
target:
device_id: 9308eea756d9e9a24d31af4d0f7985e0
data:
command: app_start_collect_dust
- delay: "00:01:00"
- action: vacuum.send_command
target:
device_id: 9308eea756d9e9a24d31af4d0f7985e0
data:
command: app_start_wash
- alias: Wait for final Wash to end
wait_for_trigger:
- trigger: state
entity_id: sensor.roborock_qrevo_c_pro_status
from: washing_the_mop
to: charging
for:
minutes: 1
- action: vacuum.send_command
target:
entity_id: vacuum.roborock_qrevo_c_pro
data:
command: app_set_dryer_status
params:
status: 1
alias: Start Drying Mop
- delay: "00:30:00"
- action: vacuum.send_command
target:
entity_id: vacuum.roborock_qrevo_c_pro
data:
command: app_set_dryer_status
params:
- 0
alias: Stop Drying Mop
mode: single