👉 Direkt auf YouTube schauen und abonnieren:
Smart Home & More auf YouTube
Einführung
Seit 2019 setze ich Roborock-Saugroboter zuverlässig in meinem Zuhause ein. Von älteren Modellen bis hin zu aktuellen Geräten arbeiten sie täglich für uns – und sind für unsere Familie nicht mehr wegzudenken. Gerade weil wir in jedem Stockwerk einen Roborock nutzen, ist mir eine effiziente Integration in Home Assistant besonders wichtig.
Bereits vor längerer Zeit hatte ich dazu ein Video sowie ein Skript bereitgestellt. Dieses funktionierte zuverlässig, war jedoch an ein grundlegendes Problem gebunden: Es arbeitete auf Geräte-IDs statt Entitäten. Wenn ein neuer Roboter hinzukam, musste das gesamte Skript manuell angepasst werden. Da bei uns immer wieder ein neues Modell seinen Platz findet, wurde diese Anpassung zunehmend unübersichtlich. Aus diesem Grund habe ich eine modernisierte, flexiblere Lösung entwickelt.
In diesem Beitrag zeige ich Schritt für Schritt, wie du:
- Roborock korrekt in Home Assistant einbindest
- die Roborock Custom Map Integration installierst
- die Vacuum Map Card einrichtest
- Räume sauber konfigurierst
- die Karte vollständig nutzen kannst
Das Ziel ist, Roborock komfortabel und visuell ansprechend zu steuern – ganz ohne komplexe Skriptanpassungen.

Unterstützung des Kanals
Die Erstellung meiner Skripte und Videos ist mit einem erheblichen zeitlichen Aufwand verbunden – von der technischen Vorbereitung und intensiven Recherche bis hin zu Tests, Aufnahmen und Nachbearbeitung. Alle Inhalte stelle ich dir dennoch vollständig kostenlos zur Verfügung.
Aktuell gibt es in den Black Weeks besonders attraktive Angebote. Ich selbst habe mir zu diesen hervorragenden Konditionen einen neuen Roborock-Saugroboter gegönnt – die Preise sind wirklich stark.
Wenn du ebenfalls über den Kauf eines Roborock nachdenkst, kannst du meinen Kanal und meine Arbeit wirkungsvoll unterstützen, indem du den Roboter über meinen Affiliate-Link bestellst. Für dich bleibt der Preis unverändert, aber ein kleiner Anteil des Kaufpreises hilft mir, weiterhin hochwertige Inhalte bereitzustellen. Wenn du vielleicht etwas anderes in den Black Wecks kaufen möchtest, kannst du mich dennoch unterstützen, wenn du meinen allgemeinen amazon Link für deinen Einkauf verwendest.
- [Dual Anti-Tangle-System] Entdecke das revolutionäre doppelte Verhedderungsschutz-System des roborock Qrevo Curv mit Hauptbürste und Seitenbürste, einfach perfekt für den Umgang mit langen Haaren und für haustierfreundliche Wohnungen. Genieße eine Reinigung ohne verhedderte Haare und ähnliches, die Bürste reinigt sich fast von selbst.
- [Extreme Saugkraft von 18.500 Pa] Branchenführende 18.500 Pa HyperForce Saugkraft in Kombination mit den Borsten der DuoDivide Bürste garantieren, dass der roborock Qrevo Curv auch anspruchsvolle Stellen wie Teppiche und Lücken in harten Böden gründlich reinigt und dabei selbst die kleinsten Partikel entfernt.
- [FlexiArm Technologie] Die FlexiArm Arc Seitenbürste und das Kantenwischsystem, die exklusiv von Roborock angeboten werden, ermöglichen eine unvergleichliche Reinigungsabdeckung, da blinde Flecken beseitigt werden und somit kein Schmutz zurückbleibt.
- [AdaptiLift Chassis] Erreiche ein höheres Niveau bei der Reinigung mit dem AdaptiLift Chassis, einer Premiere in der Branche, bei der viele verschiedene Anhebezustände dank drei unabhängig einstellbarer Räder erreicht werden können. So kann das gesamte Chassis um 10 mm angehoben werden oder nur die vordere, hintere, linke oder rechte Hälfte, damit die Anpassung an deine heimische Umgebung problemlos möglich ist.
- [75 °C Heißwasser-Moppwäsche] Beseitige problemlos hartnäckige Flecken und fettige Verschmutzungen mit 75 °C heißem Wasser von deinen Mopps, gleichermaßen perfekt für Küchen und Essbereiche. Das heiße Wasser beseitigt über 99,99 % der Bakterien und gewährleistet optimale Hygiene. Mit drei einstellbaren Temperatureinstellungen bist du auf jedes Reinigungsszenario vorbereitet.
- 7,98cm Ultraflaches Design – Dank des autonomen StarSight Systems 2.0 der nächsten Generation ist der Saros 10R unglaublich smart und beeindruckend flach. Mit seiner hochentwickelten Positionierungs- und Kartierungsfunktiornen navigiert er mühelos unter Sofas und Betten.
- Autonomes StarSight System 2.0 – Mithilfe fortschrittlicher Technologie zur Vermeidung seitlicher Hindernisse gleitet er mühelos um unregelmäßig geformte Möbel und Wände herum und reinigt sogar die Umgebung herumliegender Kabel garantiert gründlich.
- Zero-Tangle-System – Ständige Wartung der Bürste ist für dich kein Thema mehr- dank des revolutionären Anti-Tangle-Systems an Hauptbürste und Seitenbürste. Das System reinigt sich selbst und kommt selbst mit langen Haaren zurecht. Dank HyperForce Saugleistung verschwinden Staub und Schmutz auf verschiedenen Arten von Böden und Teppichen, da auch die kleinsten Partikel spurlos beseitigt werden.
- FlexiArm Riser Seitenbürste und Mopp – Die FlexiArm Technologie ist die Grundlage der doppelten Roboterarme für die Seitenbürste und den Mopp, damit Schmutz aus Ecken, an Kanten und unter Möbeln gekonnt aufgekehrt wird.
- AdaptiLift Chassis als Branchenpremiere – Das gesamte Gehäuse kann abgenommen werden. Dabei sind die drei Räder unabhängig voneinander einstellbar. So erreicht dein Roborock auch schwer erreichbarre Stellen wie ein allrad-betriebener Geländewagen – für optimale Reinigungsabdeckung.
Roborock Core Integration installieren
Ich beginne in Home Assistant mit einer sauberen Testumgebung, sodass jeder Schritt nachvollziehbar ist. Die Core Integration lässt sich über Einstellungen → Geräte & Dienste → Integration hinzufügen installieren. Nach Eingabe der E-Mail-Adresse und des Bestätigungscodes erscheinen alle Roborock-Geräte automatisch in der Übersicht.

Damit steht das Fundament, auf dem die gesamte spätere Kartenfunktionalität aufbaut.
Custom Map Integration über HACS installieren
Die Vacuum Map Card benötigt spezielle Map-Datenstrukturen. Die normale Roborock-Integration stellt diese jedoch nicht vollständig bereit. Genau dafür dient die Roborock Custom Map Integration.

Nach dem Öffnen des Repositorys in HACS sucht man nach Roborock Custom Map Integration und drückt auf herunterladen. Anschließend ist ein Neustart von Home Assistant erforderlich. Roborock
Wichtig: Die bisherige Image-Entität des Roboters sollte deaktiviert werden. Die neue Custom-Image-Entität wird später in der Vacuum Map Card genutzt.

Vacuum Map Card installieren
Die Karte selbst wird ebenfalls über HACS installiert.

Ein Neustart ist hier nicht notwendig. Danach kann ich direkt im Dashboard eine neue Karte hinzufügen und folgende Einstellungen setzen:
- Plattform: Roborock
- Staubsauger: Eure Sauger Entität
- Image: die neue, durch die Custom Map Integration erzeugte Map-Entität

Die Karte zeigt nun die vollständige Umgebung an und bildet die Grundlage für die spätere Raumsteuerung.
Räume korrekt einrichten
Damit die Karte weiß, welche Bereiche ausgewählt werden können, müssen die Räume in der Roborock App korrekt definiert bzw. bereinigt werden.

Über Karte bearbeiten → Erstelle Raumkonfiguration wird die Raumkonfiguration ausgelesen und im YAML Code der Karte angelegt. Im Code-Editor kann man dann die Erstellung überprüfen.

Hier zeigt Home Assistant zwar sämtliche Räume an, allerdings meist in mehrfacher Ausführung. Ich lösche alle überflüssigen Einträge und behalte nur diejenigen, die tatsächlich existieren – in meinem Fall Flur, Studio und Büro. Mir ist dabei aufgefallen, wenn man von unten nach oben geht, dann hat man an den letzten Stellen immer die korrekten Räume mit ihren IDs. D.h. ich geht wie im Beispiel Studio, Büro, Flur nach oben und löscht wie im Video gezeigt die überflüssigen Räume
Nach dem Speichern erscheinen die Räume korrekt und lassen sich über die Karte selektieren.

Erweiterte Reinigungsoptionen – ohne Skriptanpassungen
Viele Anwender starten die Reinigung direkt über die Karte und stellen die gewünschten Parameter dort ein. Das funktioniert zuverlässig. Auch Saugleistung, Modi und Wischintensitäten lassen sich dort einstellen.
Da ich selbst häufig erst sauge und anschließend wische, habe ich ein eigenes erweitertes Vorgehen entwickelt. Dieses ermöglicht es mir über ein Skript erst zu saugen und dann zu wischen und gleichzeitig alle relevanten Parameter vorzubelegen.
Die benötigten Entitäten – etwa für Mop-Modus, Wischintensität oder Ventilatorgeschwindigkeit – lassen sich zuvor über die Entwicklerwerkzeuge bestimmen. Wichtig, achtet darauf, dass wir die korrekten Attribute bei der Übergabe an das Skript übernehmt.



Dynamisches Skript für erst Saugen und dann Wischen ( nur für Roborock Saugroboter)
alias: Sauge und Wische Dynamisch
description: ""
mode: parallel
max: 10
fields:
vacuum_entity:
name: vacuum_entity
description: Vacuum-Entität, z.B. vacuum.roborock_s8_pro_ultra
required: true
selector:
entity:
filter:
domain: vacuum
mop_mode_entity:
name: mop_mode_entity
description: Select-Entität für Mop-Modus (z.B. select.*_mop_modus)
required: true
selector:
entity:
filter:
domain: select
mop_intensity_entity:
name: mop_intensity_entity
description: Select-Entität für Wischintensität (z.B. select.*_wisch_intensitat)
required: true
selector:
entity:
filter:
domain: select
segments:
name: segments
description: Segment-IDs aus der Map Card (z.B. [16,17])
required: true
selector:
object: {}
fan_speed_saugen:
name: fan_speed_saugen
description: Lüfterstufe fürs Saugen (z.B. max, turbo, quiet)
required: false
default: max
selector:
text: {}
fan_speed_wischen:
name: fan_speed_wischen
description: Lüfterstufe fürs Wischen
required: false
default: quiet
selector:
text: {}
mop_mode:
name: mop_mode
description: Mop-Modus (z.B. standard)
required: false
default: standard
selector:
text: {}
mop_intensity_saugen:
name: mop_intensity_saugen
description: Wischintensität während Saugen
required: false
default: mild
selector:
text: {}
mop_intensity_wischen:
name: mop_intensity_wischen
description: Wischintensität während Wischen
required: false
default: moderate
selector:
text: {}
saugen:
name: saugen
description: Soll gesaugt werden?
required: false
default: true
selector:
boolean: {}
wischen:
name: wischen
description: Soll gewischt werden?
required: false
default: true
selector:
boolean: {}
sequence:
- variables:
segs: |-
{% set s = segments %} {% if s is string %}
{% set s = s | from_json %}
{% endif %} {{ s | map('int') | unique | list }}
- if:
- condition: template
value_template: "{{ saugen }}"
alias: Wenn Saugen eingeschaltet ist
then:
- alias: Wisch Intensität (Saug-Durchgang)
action: select.select_option
target:
entity_id: "{{ mop_intensity_entity }}"
data:
option: "{{ mop_intensity_saugen }}"
- delay:
milliseconds: 500
- alias: Mopp-Modus (Saug-Durchgang)
action: select.select_option
target:
entity_id: "{{ mop_mode_entity }}"
data:
option: "{{ mop_mode }}"
- delay:
milliseconds: 500
- alias: Lüfterstufe (Saug-Durchgang)
action: vacuum.set_fan_speed
target:
entity_id: "{{ vacuum_entity }}"
data:
fan_speed: "{{ fan_speed_saugen }}"
- delay:
milliseconds: 500
- alias: Starte Saug-Durchgang (Segmente)
action: vacuum.send_command
target:
entity_id: "{{ vacuum_entity }}"
data:
command: app_segment_clean
params: "{{ segs }}"
- action: persistent_notification.create
data:
message: "Sauge: {{ segs }}"
- alias: Wischen
if:
- condition: template
value_template: "{{ wischen }}"
then:
- alias: Wenn Saugen und Wischen aktiv sind
if:
- condition: template
value_template: "{{ saugen }}"
then:
- alias: Warte bis Roboter nicht mehr 'docked' ist
wait_template: "{{ not is_state(vacuum_entity, 'docked') }}"
timeout: "00:05:00"
continue_on_timeout: true
- alias: Warte bis Roboter 1 Minute am Stück 'docked' ist
wait_template: |-
{{ is_state(vacuum_entity, 'docked')
and (as_timestamp(now())
- as_timestamp(states[vacuum_entity].last_changed)) > 60 }}
timeout: "02:00:00"
continue_on_timeout: true
- alias: Prüfe Dock-Status nach Timeout
if:
- condition: template
value_template: "{{ not is_state(vacuum_entity, 'docked') }}"
then:
- action: persistent_notification.create
data:
title: Saugskript Hinweis
message: >-
{{ vacuum_entity }} war nach 2 Stunden noch nicht stabil
'docked'. Wisch-Durchgang wird trotzdem gestartet.
- alias: Lüfterstufe (Wisch-Durchgang)
action: vacuum.set_fan_speed
target:
entity_id: "{{ vacuum_entity }}"
data:
fan_speed: "{{ fan_speed_wischen }}"
- delay:
milliseconds: 500
- alias: Mopp-Modus (Wisch-Durchgang)
action: select.select_option
target:
entity_id: "{{ mop_mode_entity }}"
data:
option: "{{ mop_mode }}"
- delay:
milliseconds: 500
- alias: Wisch Intensität (Wisch-Durchgang)
action: select.select_option
target:
entity_id: "{{ mop_intensity_entity }}"
data:
option: "{{ mop_intensity_wischen }}"
- delay:
milliseconds: 500
- alias: Starte Wisch-Durchgang (Segmente)
action: vacuum.send_command
target:
entity_id: "{{ vacuum_entity }}"
data:
command: app_segment_clean
params: "{{ segs }}"
- action: persistent_notification.create
data:
message: "Wische: {{ segs }}"
Integration in die Vacuum Map Card
Damit die Reinigung komfortabel über einen einzigen Button in der Karte ausgelöst werden kann, erweitere ich die Kartenkonfiguration. Dadurch entsteht ein zusätzlicher Menüpunkt wie „Saugen und Wischen“. Dieser greift auf die zuvor definierten Parameter zu und löst die Reinigungssequenz aus. Roborock
Default Code Ansicht ohne Räume:

YAML Code Ansicht der Vacuum Card, mit den Räumen
type: custom:xiaomi-vacuum-map-card
map_source:
camera: image.s8_ug_untergeschoss_custom
calibration_source:
camera: true
entity: vacuum.roborock_s8_pro_ultra
vacuum_platform: Roborock
map_modes:
- template: vacuum_clean_zone
- template: vacuum_goto
- template: vacuum_clean_segment
predefined_selections:
- id: "16"
icon:
name: mdi:broom
x: 22850
"y": 22675
label:
text: Flur
x: 22850
"y": 22675
offset_y: 35
outline:
- - 19700
- 20200
- - 26000
- 20200
- - 26000
- 25150
- - 19700
- 25150
- id: "17"
icon:
name: mdi:broom
x: 22925
"y": 26825
label:
text: Büro
x: 22925
"y": 26825
offset_y: 35
outline:
- - 19450
- 25150
- - 26400
- 25150
- - 26400
- 28500
- - 19450
- 28500
- id: "18"
icon:
name: mdi:broom
x: 28075
"y": 26850
label:
text: Studio
x: 28075
"y": 26850
offset_y: 35
outline:
- - 26250
- 25200
- - 29900
- 25200
- - 29900
- 28500
- - 26250
- 28500
Um jetzt ein zusätzliches Skript aufzurufen, müssen wir ein paar Parameter im YAML Code ergänzen. Diese fügen wird direkt unterhalb der vorherigen Eintragungen ( bei euch demnach nach euren Räumen mit den Koordinaten ) ein.
Die Parameter fan_speed_saugen, fan_speed_wischen, mop_intensity_saugen. mop_intensity_wischen, sind nach den zuvor ausgelesenen Attributen aus den Entwicklerwerkzeugen einzusetzen. Bitte nicht einfach kopieren, denn jeder Roborock Roboter hat hier unter Umständen andere Namen in den Attributen!
- name: UG Saugen & Wischen
icon: mdi:layers-triple
selection_type: ROOM
max_selections: 10
run_immediately: false
variables:
fan_speed_saugen: max
fan_speed_wischen: "off"
mop_mode: standard
mop_intensity_saugen: "off"
mop_intensity_wischen: moderate
service_call_schema:
service: script.sauge_und_wische_dynamisch
service_data:
vacuum_entity: "[[entity_id]]"
segments: "[[selection]]"
saugen: true
wischen: true
mop_mode_entity: select.roborock_s8_pro_ultra_mop_modus
mop_intensity_entity: select.roborock_s8_pro_ultra_wisch_intensitat
fan_speed_saugen: "[[fan_speed_saugen]]"
fan_speed_wischen: "[[fan_speed_wischen]]"
mop_mode: "[[mop_mode]]"
mop_intensity_saugen: "[[mop_intensity_saugen]]"
mop_intensity_wischen: "[[mop_intensity_wischen]]"
predefined_selections:
Jetzt fehlen und bei de predefined_selections: nur noch die Räume. Hier gibt es jetzt zwei Möglichkeiten. Entweder man kopiert sich die „predefined_selections“ aus dem vorherigen Code Abschnitt, oder aber man nutzt einen YAML-Anker. Ich nutze einen YAML-Anker, um Raumdefinitionen nicht doppelt pflegen zu müssen. Das reduziert die Fehleranfälligkeit und erleichtert spätere Anpassungen.
Dazu geht an die erste Stelle mit“ predefined_selections“ im Code.

und fügt dort folgendes nach dem Doppelpunkt ein:
&seg

Dann geht zum letzten Eintrag mit „predefined_selections“, also der Blog, den ihr zuvor eingefügt hattet.

Dort fügt nun nach dem Doppelpunkt ein :
*seg
ein.

Jetzt nur noch auf „Speichern“ drücken. Und der Abschnitt nach eurem letzten „predefined_selections“ wird automatisch mit den Eintragungen aus dem oberen Abschnitt gefüllt. Das Verfahren verringert aus meiner Sicht die Fehleranfälligkeit beim Kopieren und Einfügen.

Um euch die Möglichkeit zu geben eure YAML Konfiguration der Vacuum Map Card abzugleichen, habt ihr hier nochmal den kompletten YAML Code meiner eigenen Konfiguration. Bitte beachtet, dass ihr eure eigene Raumkonfiguration erstellen müsst, da diese in meinem Setup auf unsere Raumkonfiguration in der Roborock App abgestimmt ist!
type: custom:xiaomi-vacuum-map-card
map_source:
camera: image.s8_ug_untergeschoss_custom
calibration_source:
camera: true
entity: vacuum.roborock_s8_pro_ultra
vacuum_platform: Roborock
map_modes:
- template: vacuum_clean_zone
- template: vacuum_goto
- template: vacuum_clean_segment
predefined_selections:
- id: "16"
icon:
name: mdi:broom
x: 22850
"y": 22675
label:
text: Flur
x: 22850
"y": 22675
offset_y: 35
outline:
- - 19700
- 20200
- - 26000
- 20200
- - 26000
- 25150
- - 19700
- 25150
- id: "17"
icon:
name: mdi:broom
x: 22925
"y": 26825
label:
text: Büro
x: 22925
"y": 26825
offset_y: 35
outline:
- - 19450
- 25150
- - 26400
- 25150
- - 26400
- 28500
- - 19450
- 28500
- id: "18"
icon:
name: mdi:broom
x: 28075
"y": 26850
label:
text: Studio
x: 28075
"y": 26850
offset_y: 35
outline:
- - 26250
- 25200
- - 29900
- 25200
- - 29900
- 28500
- - 26250
- 28500
- name: UG Saugen & Wischen
icon: mdi:layers-triple
selection_type: ROOM
max_selections: 10
run_immediately: false
variables:
fan_speed_saugen: max
fan_speed_wischen: "off"
mop_mode: standard
mop_intensity_saugen: "off"
mop_intensity_wischen: moderate
service_call_schema:
service: script.sauge_und_wische_dynamisch
service_data:
vacuum_entity: "[[entity_id]]"
segments: "[[selection]]"
saugen: true
wischen: true
mop_mode_entity: select.roborock_s8_pro_ultra_mop_modus
mop_intensity_entity: select.roborock_s8_pro_ultra_wisch_intensitat
fan_speed_saugen: "[[fan_speed_saugen]]"
fan_speed_wischen: "[[fan_speed_wischen]]"
mop_mode: "[[mop_mode]]"
mop_intensity_saugen: "[[mop_intensity_saugen]]"
mop_intensity_wischen: "[[mop_intensity_wischen]]"
predefined_selections:
- id: "16"
icon:
name: mdi:broom
x: 22850
"y": 22675
label:
text: Flur
x: 22850
"y": 22675
offset_y: 35
outline:
- - 19700
- 20200
- - 26000
- 20200
- - 26000
- 25150
- - 19700
- 25150
- id: "17"
icon:
name: mdi:broom
x: 22925
"y": 26825
label:
text: Büro
x: 22925
"y": 26825
offset_y: 35
outline:
- - 19450
- 25150
- - 26400
- 25150
- - 26400
- 28500
- - 19450
- 28500
- id: "18"
icon:
name: mdi:broom
x: 28075
"y": 26850
label:
text: Studio
x: 28075
"y": 26850
offset_y: 35
outline:
- - 26250
- 25200
- - 29900
- 25200
- - 29900
- 28500
- - 26250
- 28500
Praxisbeispiel
Nach der vollständigen Einrichtung lassen sich Räume über die Vacuum Map Card einfach auswählen. Wenn ich einzelne Bereiche oder mehrere Räume zu einer kombinierten Reinigung zusammenfasse, genügt ein Klick auf den jeweiligen Button. Der Roboter fährt die Bereiche nacheinander ab und führt, je nach Einstellung, Saugen und Wischen exakt in dieser Reihenfolge aus. Roborock
Diese Lösung funktioniert zuverlässig mit allen Roborock-Modellen, die von der Core-Integration unterstützt werden.
Fazit
Durch die Kombination aus Roborock Core Integration, Roborock Custom Map Integration und Vacuum Map Card wird Home Assistant deutlich leistungsfähiger. Die Kartenansicht erleichtert die Steuerung im Alltag erheblich und bietet eine sehr klare Übersicht über alle Räume.
Während bei uns zu Hause meine Frau die puristische Ansicht bevorzugt, nutze ich gerne die Vacuum Map Card mit den erweiterten Funktionen. Beide Varianten haben ihre Vorteile – entscheidend ist, was im Alltag besser funktioniert. Den Blogbeitrag zu meiner alten Lösung findet ihr hier:
Blogbeitrag: Roborock in Home Assistant, Core Integration

Wenn du eigene Ideen oder Optimierungen hast, freue ich mich über Rückmeldungen. Ergänzende Dateien und Konfigurationen findest du wie gewohnt auf meiner Blogseite.