This is a correct sequence of actions.
Yes, they have to match IDs assigned to rooms by the vacuum. You can check them in attributes of vacuum entity
This is a correct sequence of actions.
Yes, they have to match IDs assigned to rooms by the vacuum. You can check them in attributes of vacuum entity
Have you removed debug
from config? Commands are not sent it this flag is set
Perfect, thanks!
It looks that it is working. I am not sure if it was the complete reinstall, because now it does not matter if id is int or not.
But thanks for help!
thank you for the information.
Now I have set the correct IDs and now it works.
@3_14 Hi, I have been trying to configure your amazing card with native Roborock Home Assistant integration (Roborock Q Revo) for several days, unfortunately still without any success. I havenāt been able to find any helpful information anywhere . I would appreciate any helpful advice. (Greetings from Poland )
I probably forgot the most important information:
I use the roborock app and the home assistant integration with roborock core, which does not have a camera entity and i constantly has a calibration error.
Hi Piotr! @3_14
First of all, I love the integration and the work youāve put into creating this, itās a pure work of art to have such control with a map in Home Assistant
Iāve been working on a 3D Floorplan of my home with Home Assistant and I would like to be able to have a floorplan with zones for my Roborock Q Revo where I can press 1, 2 or all 3 zones, hit āGoā and have it clean the selected zones. I know this should be possible with Input Booleans and then sending the zone data for these, but I have no idea on how to get started on this. Iām pretty sure someone else named PaQ has asked this same question to you a while ago but I was unable to find your comms with them in this forum post.
I am already able to send my Roborock to a specific zone with the 4 array data per zone, but not in the way I described above.
service: xiaomi_miio.vacuum_clean_zone
target:
entity_id:
- vacuum.roborock_q_revo
device_id: []
area_id: []
data:
zone:
- - 16754
- 26836
- 21975
- 30618
repeats: 1
Can you help me out here?
Ps I use the Xiaomi Miio integration in combination with yours which works perfectly. Iāve been able to get your integration working with what I mentioned above, but I want to get it working on my own 3D Floorplan in HASS.
Unfortunately official Roborock integration is not supported yet.
Related feature request:
Check out this template:
{% set all_rooms = {
"input_boolean.kantoor_room1": [16754, 26836, 21975, 30618],
"input_boolean.kantoor_room2": [16754, 26836, 21975, 30618],
"input_boolean.kantoor_room3": [16754, 26836, 21975, 30618],
} %}
{% set selected_rooms = all_rooms.keys() | list | expand | selectattr("state", "==", "on") | map(attribute="entity_id") | sort| list %}
{% set ns = namespace(to_clean=[]) %}
{% for r in selected_rooms -%}
{% set ns.to_clean = ns.to_clean + [all_rooms[r]] %}
{%- endfor %}
{{ ns.to_clean }}
Because of reflections in mirror and open/closed doors, the map never has the same size. My vacuum also re-draws the map everytime I launch a new cleaning, and the map is sometimes vertical, sometimes horizontal.
The height of the box where the map is displayed changes dynamically to accomodate any size. However, I would like to fix the height of the card and let the map scale properly to use the defined space, so that my dashboard layout does not change all the time.
Is that possible ? The trimming options do not work for me.
Unfortunately itās not possible at this moment
I just got the map card all configured with my dashboard. I have a Samsung Galaxy Tab A7 flush mounted on my kitchen wall in landscape orientation (wider than it is taller).
The map of my vacuum shown in the card is rotated 180 degrees from that shown on my phone using the official Roborock app. This makes it a little awkward to view on the tablet.
But more importantly, the orientation is more of a portrait mode on my tablet, which doesnāt look good. I have to scroll downward to see the entire card. If it were rotated 90 degrees and in portrait mode, it would look perfect on my table.
I searched throughout this forum and saw you said that rotation was not possible in August of 2022. How about today/! Is there any way for me to rotate the mapā¦even if I have to do things more manuall?
Thanks!
I rotate the Map in the Dreamhome-App and 1 sec later it was rotated in my Home Assistant.
Hi @3_14, I got the card working, I also have been able to make the Path work, but I dont know if itās working correctly, when I select points for the vacuum to path to, it goes to each point (start going to the target point), reaches it (reached the target point), then it fully stops (including the vacuumās motors), then after several seconds, it starts again by going to the next path point, and so on, is that how itās supposed to work? I thought it should smoothly go from each point to another and finish at the last point.
I hope you can help me, thanks in advance
Yes, this is how it works. āPathā feature is just a bunch of āgoing to pointā service calls connected. To make it smooth it would have to be implemented by the vacuum itself, not āhacked aroundā in HA
I see, thanks,
then another problem I have is that room cleaning doesnt seem to work for me, it doesnāt give any errors, I think Iāve also configured it correctly, but when I click on a room then to start cleaning, it gives off a message that it started, but the vacuum does absolutely nothing
I suspect that you have provided invalid room ids
The IDs were autogenerated/taken from the xiaomi cloud, I just went with the already existing IDs
Ok, can you show your config, vacuum model and integration that you use to control it?
Seems I may miss something really stupid, but Iām stuck.
I have a Roborock S5 Max. I installed Roborock App (humbertogontijo) via HACS and Xiaomi Vacuum Map Card via HACS. I connected the account and I can see the map.
If I click on āGenerate Rooms Configā nothing happens. Rooms are working without issues in the app. Is there anything more I have to do? Thanks for help in advance.
type: custom:xiaomi-vacuum-map-card
map_source:
camera: camera.roborock_s5_max_map
calibration_source:
camera: true
entity: vacuum.roborock_s5_max
vacuum_platform: send_command
map_modes:
- template: vacuum_clean_zone
- template: vacuum_goto
- template: vacuum_clean_segment
predefined_selections: []
map_locked: true
The card config:
type: custom:xiaomi-vacuum-map-card
map_source:
camera: camera.xiaomi_cloud_map_extractor
entity: vacuum.robot_vacuum
vacuum_platform: default
title: Vacuum Map Control
calibration_source:
camera: true
map_locked: true
two_finger_pan: true
map_modes:
- name: Path
template: vacuum_follow_path
- name: Zone cleanup
icon: mdi:select-drag
run_immediately: false
coordinates_rounding: true
coordinates_to_meters_divider: 1000
selection_type: MANUAL_RECTANGLE
max_selections: 5
repeats_type: EXTERNAL
max_repeats: 3
service_call_schema:
service: xiaomi_miio.vacuum_clean_zone
service_data:
zone: '[[selection]]'
repeats: '[[repeats]]'
entity_id: '[[entity_id]]'
predefined_selections: []
variables: {}
- name: Pin & Go
icon: mdi:map-marker-plus
run_immediately: false
coordinates_rounding: true
coordinates_to_meters_divider: 1000
selection_type: MANUAL_POINT
max_selections: 999
repeats_type: NONE
max_repeats: 1
service_call_schema:
service: xiaomi_miio.vacuum_goto
service_data:
x_coord: '[[point_x]]'
y_coord: '[[point_y]]'
entity_id: '[[entity_id]]'
predefined_selections: []
variables: {}
- name: Rooms
icon: mdi:floor-plan
run_immediately: false
coordinates_rounding: true
coordinates_to_meters_divider: 1000
selection_type: ROOM
id_type: number
max_selections: 999
repeats_type: EXTERNAL
max_repeats: 3
service_call_schema:
service: vacuum.send_command
service_data:
command: app_segment_clean
entity_id: '[[entity_id]]'
params:
- segments: '[[selection]]'
repeat: '[[repeats]]'
predefined_selections:
- id: '1'
icon:
name: mdi:bed-king
x: 23125
'y': 25425
label:
text: Bedroom
x: 23125
'y': 25425
offset_y: 35
outline:
- - 22037
- 23743
- - 24246
- 23743
- - 24246
- 26832
- - 22037
- 26832
- id: '2'
icon:
name: mdi:television
x: 26575
'y': 25400
label:
text: Living Room
x: 26575
'y': 25400
offset_y: 35
outline:
- - 24377
- 23399
- - 28877
- 23399
- - 28877
- 27389
- - 24377
- 27389
- id: '17'
icon:
name: mdi:shower-head
x: 27950
'y': 28625
label:
text: Bathroom
x: 27950
'y': 28625
offset_y: 35
outline:
- - 27032
- 28096
- - 28887
- 28096
- - 28887
- 29247
- - 27032
- 29247
- id: '18'
icon:
name: mdi:silverware-fork-knife
x: 25400
'y': 32350
label:
text: Kitchen
x: 25400
'y': 32350
offset_y: 35
outline:
- - 24902
- 29944
- - 25996
- 29944
- - 25996
- 34655
- - 24902
- 34655
- id: '19'
icon:
name: mdi:desktop-tower
x: 27325
'y': 32525
label:
text: Small Room
x: 27325
'y': 32525
offset_y: 35
outline:
- - 26017
- 30993
- - 28649
- 30993
- - 28649
- 34662
- - 26017
- 34662
- id: '20'
icon:
name: mdi:floor-plan
x: 25775
'y': 29250
label:
text: Hall
x: 25775
'y': 29250
offset_y: 35
outline:
- - 24346
- 27488
- - 26994
- 27487
- - 26994
- 29995
- - 27203
- 29995
- - 27203
- 30981
- - 26019
- 30981
- - 26019
- 29403
- - 24347
- 29403
variables: {}
icons:
- icon: mdi:play
conditions:
- entity: vacuum.robot_vacuum
value_not: cleaning
- entity: vacuum.robot_vacuum
value_not: error
- entity: vacuum.robot_vacuum
value_not: returning
tooltip: Start
tap_action:
action: call-service
service: vacuum.start
service_data:
entity_id: vacuum.robot_vacuum
- icon: mdi:pause
conditions:
- entity: vacuum.robot_vacuum
value_not: docked
- entity: vacuum.robot_vacuum
value_not: idle
- entity: vacuum.robot_vacuum
value_not: error
- entity: vacuum.robot_vacuum
value_not: paused
tooltip: Pause
tap_action:
action: call-service
service: vacuum.pause
service_data:
entity_id: vacuum.robot_vacuum
- icon: mdi:stop
conditions:
- entity: vacuum.robot_vacuum
value_not: docked
- entity: vacuum.robot_vacuum
value_not: idle
- entity: vacuum.robot_vacuum
value_not: error
- entity: vacuum.robot_vacuum
value_not: paused
tooltip: Stop
tap_action:
action: call-service
service: vacuum.stop
service_data:
entity_id: vacuum.robot_vacuum
- icon: mdi:home-map-marker
conditions:
- entity: vacuum.robot_vacuum
value_not: docked
- entity: vacuum.robot_vacuum
value_not: returning
tooltip: Return to base
tap_action:
action: call-service
service: vacuum.return_to_base
service_data:
entity_id: vacuum.robot_vacuum
- icon: mdi:target-variant
conditions:
- entity: vacuum.robot_vacuum
value_not: docked
- entity: vacuum.robot_vacuum
value_not: error
- entity: vacuum.robot_vacuum
value_not: cleaning
- entity: vacuum.robot_vacuum
value_not: returning
tooltip: Clean spot
tap_action:
action: call-service
service: vacuum.clean_spot
service_data:
entity_id: vacuum.robot_vacuum
- icon: mdi:map-marker
tooltip: Locate
tap_action:
action: call-service
service: vacuum.locate
service_data:
entity_id: vacuum.robot_vacuum
- menu_id: fan_speed
icon: mdi:fan-remove
label: Silent
conditions:
- entity: vacuum.robot_vacuum
attribute: fan_speed
value: Silent
tooltip: Change fan speed
tap_action:
action: call-service
service: vacuum.set_fan_speed
service_data:
entity_id: vacuum.robot_vacuum
fan_speed: Silent
- menu_id: fan_speed
icon: mdi:fan-speed-1
label: Standard
conditions:
- entity: vacuum.robot_vacuum
attribute: fan_speed
value: Standard
tooltip: Change fan speed
tap_action:
action: call-service
service: vacuum.set_fan_speed
service_data:
entity_id: vacuum.robot_vacuum
fan_speed: Standard
- menu_id: fan_speed
icon: mdi:fan-speed-2
label: Medium
conditions:
- entity: vacuum.robot_vacuum
attribute: fan_speed
value: Medium
tooltip: Change fan speed
tap_action:
action: call-service
service: vacuum.set_fan_speed
service_data:
entity_id: vacuum.robot_vacuum
fan_speed: Medium
- menu_id: fan_speed
icon: mdi:fan-speed-3
label: Turbo
conditions:
- entity: vacuum.robot_vacuum
attribute: fan_speed
value: Turbo
tooltip: Change fan speed
tap_action:
action: call-service
service: vacuum.set_fan_speed
service_data:
entity_id: vacuum.robot_vacuum
fan_speed: Turbo
- menu_id: fan_speed
icon: mdi:waves
label: Gentle
conditions:
- entity: vacuum.robot_vacuum
attribute: fan_speed
value: Gentle
tooltip: Change fan speed
tap_action:
action: call-service
service: vacuum.set_fan_speed
service_data:
entity_id: vacuum.robot_vacuum
fan_speed: Gentle
- menu_id: fan_speed
icon: mdi:fan-auto
label: Auto
conditions:
- entity: vacuum.robot_vacuum
attribute: fan_speed
value: Auto
tooltip: Change fan speed
tap_action:
action: call-service
service: vacuum.set_fan_speed
service_data:
entity_id: vacuum.robot_vacuum
fan_speed: Auto
- icon: mdi:fan-alert
conditions:
- entity: vacuum.robot_vacuum
attribute: fan_speed
value_not: Silent
- entity: vacuum.robot_vacuum
attribute: fan_speed
value_not: Standard
- entity: vacuum.robot_vacuum
attribute: fan_speed
value_not: Medium
- entity: vacuum.robot_vacuum
attribute: fan_speed
value_not: Turbo
- entity: vacuum.robot_vacuum
attribute: fan_speed
value_not: Gentle
- entity: vacuum.robot_vacuum
attribute: fan_speed
value_not: Auto
tooltip: Change fan speed
tap_action:
action: call-service
service: vacuum.set_fan_speed
service_data:
entity_id: vacuum.robot_vacuum
fan_speed: Silent
tiles:
- tile_id: status
entity: vacuum.robot_vacuum
label: Status
attribute: status
icon: mdi:robot-vacuum
translations:
starting: Starting
charger disconnected: Charger disconnected
idle: Idle
remote control active: Remote control active
cleaning: Cleaning
returning home: Returning home
manual mode: Manual mode
charging: Charging
charging problem: Charging problem
paused: Paused
spot cleaning: Spot cleaning
error: Error
shutting down: Shutting down
updating: Updating
docking: Docking
going to target: Going to target
zoned cleaning: Zoned cleaning
segment cleaning: Segment cleaning
emptying the bin: Emptying the bin
charging complete: Charging complete
device offline: Device offline
- tile_id: battery_level
entity: vacuum.robot_vacuum
label: Battery
attribute: battery_level
icon_source: vacuum.robot_vacuum.attributes.battery_icon
unit: '%'
- tile_id: fan_speed
entity: vacuum.robot_vacuum
label: Fan speed
attribute: fan_speed
icon: mdi:fan
translations:
silent: Silent
standard: Standard
medium: Medium
turbo: Turbo
auto: Auto
gentle: Gentle
- tile_id: sensor_dirty_left
label: Sensors left
unit: h
multiplier: 0.0002777777777777778
hold_action:
action: call-service
service: vacuum.send_command
confirmation: {}
service_data:
command: reset_consumable
params: sensor_dirty_time
entity_id: vacuum.robot_vacuum
entity: sensor.robot_vacuum_sensor_dirty_left
icon: mdi:eye-outline
precision: 0
translations: {}
- tile_id: filter_left
label: Filter left
unit: h
multiplier: 0.0002777777777777778
hold_action:
action: call-service
service: vacuum.send_command
confirmation: {}
service_data:
command: reset_consumable
params: filter_work_time
entity_id: vacuum.robot_vacuum
entity: sensor.robot_vacuum_filter_left
icon: mdi:air-filter
precision: 0
translations: {}
- tile_id: main_brush_left
label: Main brush left
unit: h
multiplier: 0.0002777777777777778
hold_action:
action: call-service
service: vacuum.send_command
confirmation: {}
service_data:
command: reset_consumable
params: main_brush_work_time
entity_id: vacuum.robot_vacuum
entity: sensor.robot_vacuum_main_brush_left
icon: mdi:brush
precision: 0
translations: {}
- tile_id: side_brush_left
label: Side brush left
unit: h
multiplier: 0.0002777777777777778
hold_action:
action: call-service
service: vacuum.send_command
confirmation: {}
service_data:
command: reset_consumable
params: side_brush_work_time
entity_id: vacuum.robot_vacuum
entity: sensor.robot_vacuum_side_brush_left
icon: mdi:brush
precision: 0
translations: {}
- tile_id: cleaning_count
label: Cleaning count
entity: sensor.robot_vacuum_total_clean_count
icon: mdi:counter
precision: 0
translations: {}
additional_presets: []
configuration.yaml:
camera:
- platform: xiaomi_cloud_map_extractor
host: !secret xiaomi_vacuum_host
token: !secret xiaomi_vacuum_token
username: !secret xiaomi_cloud_username
password: !secret xiaomi_cloud_password
country: "cn"
draw: ["all"]
attributes:
- calibration_points
map_transformation:
trim:
top: 25
bottom: 5
left: 25
right: 23
scan_interval:
seconds: 10
The model of the vacuum: roborock.vacuum.m1s
Also, when I was just checking the configs i noticed that the map stopped working just nowā¦ sooā¦
Im sure this config is was held by glue and duct tape, so any help would be appreciated, Iām extremely new to all of this, so sorry for that