Saugroboter ohne Cloud

Originally published at: Saugroboter ohne Cloud

Warum gibt es eigentlich keinen Saugroboter, der komplett ohne Cloud-Zwang funktioniert und dir dennoch den üblichen Komfort bietet? Ein Gerät, das sich nahtlos in Home Assistant integrieren lässt, ohne dass man sich Sorgen machen muss, von Kameras, Mikrofonen und Sensoren ausspioniert zu werden? Ob die Dinger uns nun wirklich ausspionieren oder nicht – ich habe…

Hallo Olli,

du hattest mich ja unter deinem Video gebeten ein paar Einblicke in mein Setup mit Valetudo zu geben, das kann ich sehr gerne machen.

Das wesentliche Problem von Valetudo gegenüber den anderen Staubsauger-Integrationen in HomeAssistant ist ja das Fehlen einer vernünftigen Map, mit dem man den Staubsauger wie in der App der Hersteller steuern kann. Die Valetudo-Weboberfläche bietet diese Funktion zwar, allerdings wird hierfür nichts über MQTT bereit gestellt.

Für viele Saugroboter (insbesondere aus dem ganzen Xiaomi-Konglomerat, in erster Linie aber Dreame) gibt es ja bereits die Xiaomi-Vacuum Map, welche eine interaktive Karte darstellt, mit der der Saugroboter voll-umfänglich gesteuert werden kann: GitHub - PiotrMachowski/lovelace-xiaomi-vacuum-map-card: This card provides a user-friendly way to fully control map-based vacuums in Home Assistant. Supported brands include Xiaomi (Roborock/Viomi/Dreame/Roidmi/Valetudo/Valetudo RE), Neato, Wyze, Roomba, Ecovacs (and probably more). · GitHub

Diese Karte greift auf die Map des Saugroboters zu, welche dieser über seine Integration bereitstellen muss, und ermöglicht damit eine Steuerung des Saugroboters wie in den meisten Hersteller-Apps (Räume selektieren die gesaugt werden sollen, Zonen direkt reinigen, usw). Valetudo selbst stellt diese Map allerdings leider nicht bereit.

Hier hat sich allerdings bereits jemand diesem Problem gestellt und hierfür ebenfalls eine Custom-Integration erstellt, welche aus den von Valetudo übermittelten Daten eine solche Karte erzeugt: GitHub - sca075/mqtt_vacuum_camera: Camera Integration for Home Assistant to export and render all Vacuums connected via MQTT( including Valetudo Hypfer, Congaduto and RE(rand256)) Maps. · GitHub

Nachdem man diese Custom Integration installiert und mit seinem bereits mit HA verbundenem Valetudo-Saugroboter eingerichtet hat (man muss wenn ich mich korrekt erinnere nur die Integration hinzufügen und seinen Saugroboter auswählen) fügt diese dem Saugroboter eine Karte hinzu. Mit dieser kann dann die Xiaomi Vacuum Map benutzt werden. Eine Anleitung wie das genau funktioniert findet sich im folgenden Beitrag, da ich leider nur zwei Links pro Beitrag hinzufügen kann.

Die Einrichtung erfordert das im YAML Code noch das MQTT-Topic an zwei Stellen ergänzt wird, damit die Befehle auch an den Saugroboter geschickt werden können. Am Ende hat man dann eine Dashboard-Karte, die wie die meisten Apps der Saugroboter funktioniert :slight_smile: Ich habe sie bei mir in eine Popup-Bubble Card mit noch ein paar Shortcuts eingebunden, über den man den Saugroboter bequem abseits der Automatisierungen steuern kann.

1 „Gefällt mir“

Hier dann noch der Link zur Anleitung für die Map-Einrichtung (hier aber nicht von den Code-Schnipsel verwirren lassen, die Calibration Points muss man nicht manuell setzen, die setzt die Karte bei der Einrichtung und Auswahl von Valetudo alleine, man muss nur das MQTT-Topic noch manuell hinzufügen):

1 „Gefällt mir“

Felix, vielen lieben Dank!

Darf ich noch fragen, wie du die Restzeiten in HA überwachst? Oder sowas wie “leerer Wassertank”? Greifst du diese Meldungen “händisch” ab, oder gibt es dafür ggf. auch was “fertiges”?

VG Olli

Die überwache ich aktuell ehrlich gesagt gar nicht so wirklich. Ich habe ja noch einen alten Dreame D9, der hat noch keinen fest installierten Wassertank und auch noch keine Absaugstation. Ich habe nur einen Zähler, der die gesaugten Räume zählt und dann etwa alle 20 “Räume” den Sauger per “Move to Point” zum Mülleimer schickt :smiley: (sofern jemand zuhause ist, sondern bekommt man eine Push-Nachricht dass der Sauger geleert werden muss).

1 „Gefällt mir“

Hi zusammen, ich habe mich extra registriert, um dir ein riesiges Dankeschön zu sagen! Ich bin erst kürzlich ins „Smart Home Rabbit Hole" gefallen und habe deinen Blog sowie deine Mastodon-Seite entdeckt.

Besonders dein Video zu Valetudo hat mir gefallen: Die Idee, einen Saugroboter komplett ohne Cloud zu betreiben, ist ein langes Traumthema. Ich verfolge Valetudo schon lange, traute mich aber nie ran. Deine ehrlichen Berichte – trotz der bekannten Risiken – haben mich endgültig motiviert, es mit der Mikro-USB-Lösung auszuprobieren. Mein größter Antrieb ist, dass meine Freundin sich endlich einen Roboter wünscht und wir so Sauberkeit mit „Datenschutz" vereinen können.

An dich als Saugroboter Veteran, habe ich noch drei kurze Fragen:

  1. Warum genau dieses Modell? War es die einfache Valetudo-Installation per Kabel (hast du im Video erwähnt) und / oder die Kombination mit dem aktuellen Preis?

  2. Wie zufrieden bist du wirklich mit Saugleistung und Objekterkennung? Die Kritik in deinen verlinkten Tests/Kritik ist ja bekannt, va hinsichtlich Objekterkennung und Reinigung in den Ecken? Mit firmware updates soll es besser werden laut Kommentaren.

  3. Hast du Firmware-Updates vor dem Flashen installiert? Funktioniert das mit den aktuellen Versionen (Stand März 2026) noch problemlos?

Danke für deine Inspiration und die tolle Arbeit!

p.s. sehe gerade du hast dich auch mit Music Assistant beschäftigt, das habe ich mir für heute vorgenommen :slight_smile:

Hi!

Der Eureka bietet für mich die beste Kombination aus gegebenen Features, Preis und der Möglichkeit über USB recht simpel Valetudo an den Start bringen zu können.

Im Vergleich zu unserem langjährigen Saugrobter, dem Dreame L10s Ultra ist der Eureka tendenziell als besser zu bewerten, wobei ich keinen direkten Vergleich gemacht habe. Generell hängt sowas aber immer sehr stark von den Gegebenheiten ab. Bei uns sind die Räume bspw. recht “simpel” geschnitten und es liegt auch selten etwas auf dem Boden rum, während der Saugroboter aktiv ist. Was mir aber sehr gut im Vergleich auffällt ist, dass der Eureka deutlich weniger gegen etwas bumpt, als es der Dreame zuvor getan hat.

Da wir mittlerweile zwei Eurekas haben, kann ich per Anfang März sagen, dass Valetudo ohne Eureka-Update aus der Cloud und mit Eureka-Update aus der Cloud wie in der Doku beschrieben genutzt werden kann (ich habe nämlich beide Wege beschritten). Das Vorgehen unterscheidet sich dann leicht, aber wer lesen und verstehen kann, bekommt das mit der Doku hin :wink:

Zu Music Assistant kommt kommende Woche vermutlich ein spannendes Video :slight_smile:

VG Olli

Cool, vielen Dank für deine schnelle Antwort!
Das klingt doch super, ich freue mich darauf das Ding in Empfang zu nehmen :slight_smile: und damit rum zu basteln!

auf dein Music Assistant Video freue ich mich, bin gespannt was du berichtest. Ich würde ja gerne meine bestehenden Boxen weiterhin nutzen, daher versuche ich mich an einem setup mit 2 raspis zero w. Vielleicht hast du dir Lust so ein Szenario auch mal anzuschauen, die meisten Blogger sprechen va von der Einbindung der bestehenden google/amazon/apple Speaker.

Hallo zusammen, ich habe meine beiden J15 Pro Ultra erfolgreich geflasht - war gar nicht so schwer.

Inzwischen habe ich sie auch in HA zugefügt und die Valetudo-Map funktioniert auch.

Allerdings würde ich gerne die Xiaomi-Vacuum-Map-Card benutzen, da ich diese ansprechender empfinde.

MQTT-Vacuum-Camera habe ich ebenfalls installiert und bekomme die Karten auch angezeigt, aber ich kann diese Karte nicht nutzen, weil mein yaml-Code scheinbar hoffnungslos falsch ist.

Wäre jemand von euch so nett, seinen funktionieren Code bereitzustellen, so dass ich den mit meinen Gerätenamen adaptieren kann?

Danke und Gruß

Gast

Hi Gast :wink:

Teil mal deinen YAML-Code, dann schauen wir dabei!

Ich muss aber sagen, dass ich das über den von dir beschriebenen Weg noch nicht eingebunden habe - aber ich probiere es sehr gerne mit dir aus!

Tatsächlich nutzen meine Frau und ich ausschließlich die Valetudo-App zur Steuerung der Saugroboter, da ich bislang keinen Mehrwert in der vollen Integration in und Steuerung über Home Assistant gesehen habe. Aber vielleicht ändert sich das ja noch :wink:

VG Olli

Hier ist meine Yaml - ich habe allerdings noch überhaupt keine Räume/Segmente erzeugt.

Das schlägt selbst in Valetudo fehl - oder ich habe noch nicht herausgefunden, wie es geht.

type: custom:xiaomi-vacuum-map-card
entity: vacuum.valetudo_dustvader
map_source:
  camera: camera.dust_vader_camera
calibration_source:
  camera: true
title: Dustvader # oder evtl. Raum- Etagenbezeichnung
vacuum_platform: Hypfer/Valetudo
map_locked: false
two_finger_pan: true
controls:
  vacuum:
    start: true
    pause: true
    stop: true
    return_home: true
    locate: true
    fan_speed: true
tiles:
 - label: Status
   entity: vacuum.valetudo_dustvader
 - label: Batterie
   entity: sensor.valetudo_dustvader_battery_level
   unit: „%“
 - label: Reinigungs-Mode
   entity: select.valetudo_dustvader_mode
map_modes:
 - template: vacuum_clean_zone
 - template: vacuum_goto

Segmente in der nativen Valetudo-Webseite bekomme ich nun hin.

Allerdings konnte ich den “ängstlichen” Sauger noch nicht dazu überreden, unter den Sofas herzufahren und auch dort zu reinigen.

Ja, es ist zwar knapp, aber er passt ohne Widerstand/Reibung darunter durch.

Hat jemand dazu einen Tipp?

Gast

Was mir hier zum Beispiel auffällt ist, dass unter den beiden Map Modes jeweils das MQTT-Topic fehlt. Das hatte ich oben ja noch erwähnt, dass man dies manuell hinzufügen muss. Das sieht dann z.B. so aus:

  - template: vacuum_clean_zone
    variables:
      topic: valetudo/your_robot
  - template: vacuum_clean_segment
    variables:
      topic: valetudo/your_robot

Was genau meinst du damit, dass du noch keine Räume/Segmente generiert bekommen hast?

Ich danke euch erstmal für die Hilfestellung, damit bin ich schon mal ein guten Stückchen weitergekommen.

Nun würden tatsächlich in der Xiaomi-Vacuum-Map-Card Räume erzeugt, wenn ich den Schriftzug im Editor-Fenster anklicke (wahrscheinlich eine Wildcard-Konfiguration).

Da würde ich mich im nächsten Schritt drum kümmern.

Problematik mit den Sofas konnte ich lösen –> Unterbespannung hing deutlich durch, festgetackert und damit behoben.

Wenn ich in der nativen Valetudo-Karte (im Valetudo-Web-Gui) ein Segment markiere, wird das erzeugt, vom Roboter angefahren und die gewünschte Aktion ausgeführt.

Diese Segment wird auch gleichzeitig in der Xiaomi-Karte angezeigt.

Wenn ich aber ein Segment in der Xiaomi-Karte erzeuge und die Aktion starten will, wird mir “Erfolg” beim Druck auf die Auslöse-Schaltfläche angezeigt. Es passiert aber nichts - der Roboter fährt nicht los - gleiches Verhalten beim Druck auf “Pin & Go”.

Hier die sich entwickelnde Yaml - vielleicht können wir im weiteren Verlauf eine Beispiel-Yaml für dieses Modell anderen Usern zur Verfügung stellen.

type: custom:xiaomi-vacuum-map-card
entity: vacuum.valetudo_dustvader
map_source:
  camera: camera.dust_vader_camera
calibration_source:
  camera: true
title: Erdgeschoss
vacuum_platform: Hypfer/Valetudo
map_locked: true
two_finger_pan: false
controls:
  vacuum:
    start: true
    pause: true
    stop: true
    return_home: true
    locate: true
    fan_speed: true
    water_flow: true
tiles:
  - label: Status
    entity: vacuum.valetudo_dustvader
  - label: Batterie
    entity: sensor.valetudo_dustvader_battery_level
    unit: "%"
  - label: Reinigungs-Mode
    entity: select.valetudo_dustvader_mode
  - label: Saug-Stärke
    entity: select.valetudo_dustvader_fan
  - label: Wassermenge
    entity: select.valetudo_dustvader_water
map_modes:
  - template: vacuum_clean_zone
    variables:
      topic: valetudo/dustvader
  - template: vacuum_clean_segment
    variables:
      topic: valetudo/dustvader
  - template: vacuum_goto
    topic: valetudo/dustvader

Es benötigen alle Map Modes das MQTT-Topic, das fehlt in deinem Beispiel schon mal bei dem “goto”-Mode. Deswegen funktioniert Pin&Go vermutlich nicht.

Bei dem “clean_segments” Mode sind die Segments an sich noch nicht definiert. Da fehlen die “predefined_selections”. Wenn du den Roboter schon mal in eine Zone schicken kannst, funktioniert die Map auf jeden Fall schon mal. Hast du mal in der Konfigurationsübersicht unten auf “Erstelle Raumkonfiguration” gedrückt?

Das hatte ich mit der “Wildcard”-Konfiguration gemeint.

Der Einfachheithalber habe ich nun 2 rechteckige Räume erstellt, um die Funktionalität zu prüfen.

In der Karte werden die Räume da angezeigt, wo sie sein sollen.

Ich kann sie auch auswählen, wenn ich aber auf den entsprechenden Play-Button (neben dem x1) drücke, wird mir zwar “Erfolg !” angezeigt, der Saugroboter bleibt aber in der Dockingstation.

Hier nun die Yaml dazu:

type: custom:xiaomi-vacuum-map-card
entity: vacuum.valetudo_dustvader
map_source:
  camera: camera.dust_vader_camera
calibration_source:
  camera: true
title: Erdgeschoss
vacuum_platform: Hypfer/Valetudo
map_locked: true
two_finger_pan: false
controls:
  vacuum:
    start: true
    pause: true
    stop: true
    return_home: true
    locate: true
    fan_speed: true
    water_flow: true
tiles:
  - label: Status
    entity: vacuum.valetudo_dustvader
  - label: Batterie
    entity: sensor.valetudo_dustvader_battery_level
    unit: "%"
  - label: Reinigungs-Mode
    entity: select.valetudo_dustvader_mode
  - label: Saug-Kraft
    entity: select.valetudo_dustvader_fan
  - label: Wassermenge
    entity: select.valetudo_dustvader_water
map_modes:
  - template: vacuum_clean_zone
    variables:
      topic: valetudo/dustvader
  - template: vacuum_clean_segment
    variables:
      topic: valetudo/dustvader
    service: mqtt.publish
    predefined_selections:
      - id: "11"
        outline:
          - - 10
            - 720
          - - 229
            - 720
          - - 229
            - 1073
          - - 10
            - 1073
        label:
          text: Küche
          x: 111
          "y": 851
          offset_y: 15
        icon:
          name: mdi:pizza
          x: 111
          "y": 929
      - id: "12"
        outline:
          - - 270
            - 1154
          - - 422
            - 1154
          - - 422
            - 600
          - - 270
            - 600
        label:
          text: Flur
          x: 336
          "y": 881
          offset_y: 15
        icon:
          name: mdi:logout
          x: 336
          "y": 952
  - template: vacuum_goto
    variables:
      topic: valetudo/dustvader

Das “Goto” und “Segment” aufgrund mangelder Daten noch nicht funktionieren, ist mir bewußt.

Die id’s kann man setzen, wie man möchte, oder muss man dabei irgendwas beachten?

Die ID‘s setzt der Saugroboter, die legt er selbst an wenn er eine Map erstellt. Wenn die in der Karte nicht mit den IDs der Räume übereinstimmen, werden dem ja auch nicht die passenden Räume übergeben die er saugen soll. Bei mir hatte er die ganze Raumkonfiguration automatisch angelegt.

Ich habe heute für die andere Etage eine neue Raumkarte erstellen lassen - die hat er tatsächlich auch gleich selbst aufgeteilt.
Leider hab ich danach die Räume in der Valetudo-App schon umbenannt.

Ich versuche es morgen mal komplett von vorne…

Tut mir leid, dass es so schleppend voran geht.

Ich habe inzwischen alles bis auf die Grundkonfiguratuin, so dass Informationen vorliegen, um welches Gerät es sich handelt, rausgeschmissen und konnte nun auch die “erstelle Raumkonfiguration”-Funktion nutzen.

Komischerweise übernimmt er die Räume des anderen Saugrobotors, zeigt aber seine eigene Raum-Karte an. Natürlich stimmen die Raumgrenzen nicht überein, aber auch die “Überschneidungen” kann ich nicht ansteuern.

Ich hab sogar den anderen Robotor extra ausgeschaltet und Home-Assistant komplett neu gestartet, so dass er alles neu einlesen muss.

Ergebnis ist gleich: richtige Karte, falsche Raumzuordnung.

Und ich kann keinen der beiden Robotor in einen Raum oder Zone schicken - er bleibt im Dock stehen.

Die yaml sieht nun so aus:

type: custom:xiaomi-vacuum-map-card
entity: vacuum.valetudo_dustvader
map_source:
  camera: camera.dust_vader_camera
calibration_source:
  camera: true
title: Erdgeschoss
vacuum_platform: Hypfer/Valetudo
internal_variables:
  topic: valetudo/rockrobo
map_locked: true
two_finger_pan: false
service: mqtt.publish
map_modes:
  - template: vacuum_clean_zone
  - template: vacuum_goto
  - template: vacuum_clean_segment
    predefined_selections:
      - id: "1"
        icon:
          name: mdi:broom
          x: 427
          "y": 205
        label:
          text: Ankleidezimmer
          x: 427
          "y": 205
          offset_y: 35
        outline:
          - - 300
            - 295
          - - 340
            - 60
          - - 500
            - 15
          - - 550
            - 15
          - - 555
            - 255
          - - 555
            - 370
          - - 525
            - 385
          - - 375
            - 395
          - - 320
            - 395
          - - 300
            - 305
          - - 300
            - 295
      - id: "2"
        icon:
          name: mdi:broom
          x: 347
          "y": 507
        label:
          text: oberer_Flur
          x: 347
          "y": 507
          offset_y: 35
        outline:
          - - 560
            - 410
          - - 560
            - 580
          - - 370
            - 605
          - - 205
            - 615
          - - 155
            - 615
          - - 135
            - 585
          - - 135
            - 450
          - - 150
            - 425
          - - 315
            - 400
          - - 440
            - 400
          - - 560
            - 410
      - id: "3"
        icon:
          name: mdi:broom
          x: 407
          "y": 795
        label:
          text: Schlafzimmer
          x: 407
          "y": 795
          offset_y: 35
        outline:
          - - 255
            - 980
          - - 255
            - 770
          - - 315
            - 610
          - - 375
            - 610
          - - 410
            - 615
          - - 550
            - 675
          - - 560
            - 745
          - - 560
            - 970
          - - 335
            - 980
          - - 255
            - 980
      - id: "4"
        icon:
          name: mdi:broom
          x: 120
          "y": 800
        label:
          text: Badezimmer
          x: 120
          "y": 800
          offset_y: 35
        outline:
          - - 15
            - 625
          - - 100
            - 620
          - - 205
            - 620
          - - 225
            - 915
          - - 225
            - 980
          - - 205
            - 980
          - - 145
            - 955
          - - 30
            - 850
          - - 15
            - 725
          - - 15
            - 625
      - id: "5"
        icon:
          name: mdi:broom
          x: 172
          "y": 237
        label:
          text: Büro
          x: 172
          "y": 237
          offset_y: 35
        outline:
          - - 80
            - 240
          - - 195
            - 55
          - - 215
            - 55
          - - 265
            - 175
          - - 265
            - 335
          - - 205
            - 420
          - - 150
            - 420
          - - 130
            - 415
          - - 80
            - 255
          - - 80
            - 240
  - template: vacuum_clean_segment
    predefined_selections:
      - id: "1"
        icon:
          name: mdi:broom
          x: 292
          "y": 360
        label:
          text: Wohnzimmer
          x: 292
          "y": 360
          offset_y: 35
        outline:
          - - 530
            - 85
          - - 570
            - 385
          - - 570
            - 405
          - - 370
            - 565
          - - 240
            - 655
          - - 165
            - 655
          - - 15
            - 640
          - - 15
            - 65
          - - 105
            - 65
          - - 510
            - 75
          - - 530
            - 85
      - id: "3"
        icon:
          name: mdi:broom
          x: 482
          "y": 995
        label:
          text: Gäste-WC
          x: 482
          "y": 995
          offset_y: 35
        outline:
          - - 555
            - 945
          - - 555
            - 1030
          - - 535
            - 1045
          - - 425
            - 1045
          - - 410
            - 1015
          - - 410
            - 975
          - - 425
            - 945
          - - 555
            - 945
      - id: "4"
        icon:
          name: mdi:broom
          x: 490
          "y": 802
        label:
          text: HWR
          x: 490
          "y": 802
          offset_y: 35
        outline:
          - - 410
            - 855
          - - 410
            - 805
          - - 465
            - 750
          - - 570
            - 750
          - - 570
            - 835
          - - 470
            - 855
          - - 410
            - 855
      - id: "5"
        icon:
          name: mdi:broom
          x: 157
          "y": 825
        label:
          text: Küche
          x: 157
          "y": 825
          offset_y: 35
        outline:
          - - 75
            - 990
          - - 75
            - 680
          - - 160
            - 660
          - - 240
            - 660
          - - 240
            - 910
          - - 235
            - 970
          - - 155
            - 990
          - - 75
            - 990
      - id: "6"
        icon:
          name: mdi:broom
          x: 340
          "y": 817
        label:
          text: unterer_Flur
          x: 340
          "y": 817
          offset_y: 35
        outline:
          - - 255
            - 905
          - - 290
            - 610
          - - 300
            - 570
          - - 390
            - 570
          - - 425
            - 710
          - - 425
            - 720
          - - 385
            - 1065
          - - 285
            - 1065
          - - 275
            - 1045
          - - 255
            - 970
          - - 255
            - 905
  - template: vacuum_clean_segment
    predefined_selections:
      - id: "1"
        icon:
          name: mdi:broom
          x: 292
          "y": 360
        label:
          text: Wohnzimmer
          x: 292
          "y": 360
          offset_y: 35
        outline:
          - - 530
            - 85
          - - 570
            - 385
          - - 570
            - 405
          - - 370
            - 565
          - - 240
            - 655
          - - 165
            - 655
          - - 15
            - 640
          - - 15
            - 65
          - - 105
            - 65
          - - 510
            - 75
          - - 530
            - 85
      - id: "3"
        icon:
          name: mdi:broom
          x: 482
          "y": 995
        label:
          text: Gäste-WC
          x: 482
          "y": 995
          offset_y: 35
        outline:
          - - 555
            - 945
          - - 555
            - 1030
          - - 535
            - 1045
          - - 425
            - 1045
          - - 410
            - 1015
          - - 410
            - 975
          - - 425
            - 945
          - - 555
            - 945
      - id: "4"
        icon:
          name: mdi:broom
          x: 490
          "y": 802
        label:
          text: HWR
          x: 490
          "y": 802
          offset_y: 35
        outline:
          - - 410
            - 855
          - - 410
            - 805
          - - 465
            - 750
          - - 570
            - 750
          - - 570
            - 835
          - - 470
            - 855
          - - 410
            - 855
      - id: "5"
        icon:
          name: mdi:broom
          x: 157
          "y": 825
        label:
          text: Küche
          x: 157
          "y": 825
          offset_y: 35
        outline:
          - - 75
            - 990
          - - 75
            - 680
          - - 160
            - 660
          - - 240
            - 660
          - - 240
            - 910
          - - 235
            - 970
          - - 155
            - 990
          - - 75
            - 990
      - id: "6"
        icon:
          name: mdi:broom
          x: 340
          "y": 817
        label:
          text: unterer_Flur
          x: 340
          "y": 817
          offset_y: 35
        outline:
          - - 255
            - 905
          - - 290
            - 610
          - - 300
            - 570
          - - 390
            - 570
          - - 425
            - 710
          - - 425
            - 720
          - - 385
            - 1065
          - - 285
            - 1065
          - - 275
            - 1045
          - - 255
            - 970
          - - 255
            - 905
  - template: vacuum_clean_segment
    predefined_selections:
      - id: "1"
        icon:
          name: mdi:broom
          x: 292
          "y": 360
        label:
          text: Wohnzimmer
          x: 292
          "y": 360
          offset_y: 35
        outline:
          - - 530
            - 85
          - - 570
            - 385
          - - 570
            - 405
          - - 370
            - 565
          - - 240
            - 655
          - - 165
            - 655
          - - 15
            - 640
          - - 15
            - 65
          - - 105
            - 65
          - - 510
            - 75
          - - 530
            - 85
      - id: "3"
        icon:
          name: mdi:broom
          x: 482
          "y": 995
        label:
          text: Gäste-WC
          x: 482
          "y": 995
          offset_y: 35
        outline:
          - - 555
            - 945
          - - 555
            - 1030
          - - 535
            - 1045
          - - 425
            - 1045
          - - 410
            - 1015
          - - 410
            - 975
          - - 425
            - 945
          - - 555
            - 945
      - id: "4"
        icon:
          name: mdi:broom
          x: 490
          "y": 802
        label:
          text: HWR
          x: 490
          "y": 802
          offset_y: 35
        outline:
          - - 410
            - 855
          - - 410
            - 805
          - - 465
            - 750
          - - 570
            - 750
          - - 570
            - 835
          - - 470
            - 855
          - - 410
            - 855
      - id: "5"
        icon:
          name: mdi:broom
          x: 157
          "y": 825
        label:
          text: Küche
          x: 157
          "y": 825
          offset_y: 35
        outline:
          - - 75
            - 990
          - - 75
            - 680
          - - 160
            - 660
          - - 240
            - 660
          - - 240
            - 910
          - - 235
            - 970
          - - 155
            - 990
          - - 75
            - 990
      - id: "6"
        icon:
          name: mdi:broom
          x: 340
          "y": 817
        label:
          text: unterer_Flur
          x: 340
          "y": 817
          offset_y: 35
        outline:
          - - 255
            - 905
          - - 290
            - 610
          - - 300
            - 570
          - - 390
            - 570
          - - 425
            - 710
          - - 425
            - 720
          - - 385
            - 1065
          - - 285
            - 1065
          - - 275
            - 1045
          - - 255
            - 970
          - - 255
            - 905