Roborock Vacuum Card und Skript um Raum zu saugen

Ich versuche für meinen Roborck S5Max eine Vacuum Card und “dahinter” ein Skript zu integrieren um dann die Räume zu saugen.
Im Skript habe ich das Feld “raume” definiert dieses Feld kann entweder einen einzelnen Raum oder mehrere Räume enthalten (zumindest das die Idee). Der Raum wird als Zahl übergeben. Im Skript will ich dann prüfen ob ich einen Raum oder mehrere übergeben habe. Aber daran scheitere ich schon, ich bekomme die folgende Fehlermeldung: “Fehler: UndefinedError: ‘int object’ has no attribute ‘split’” Ich bekomme es also nicht hin die Zahl des Raums als Area von Strings zu parsen und dann die Länge zu prüfen. Kann mir hier jemand helfen? Ach ja ich habe versucht ChatGPT zum erstellen des Skripts zu verwenden aber das klappt nur bedingt wie man sieht.

Skript:

alias: Sauge und Wische Erdgeschoss Räume
fields:
  raume:
    selector:
      text:
        multiple: true
    name: Räume
    description: Die Räume die gesaugt werden sollen
    required: true
sequence:
  - variables:
      raume_liste: "{{ raume | string() }}"
      raume_anzahl: "{{ raume_liste.split(',') | length }}"
  - action: vacuum.set_fan_speed
    metadata: {}
    data:
      fan_speed: balanced
    target:
      device_id: e2a67c09d8cd944dd57dcfe8cb616fe0
  - choose:
      - conditions:
          - condition: template
            value_template: "{{ raume_anzahl == 1 }}"
        sequence:
          - action: vacuum.send_command
            metadata: {}
            data:
              command: app_segment_clean
              params: "{{ raume }}"
            target:
              device_id: e2a67c09d8cd944dd57dcfe8cb616fe0
      - conditions:
          - condition: template
            value_template: "{{ raume_anzahl > 1 }}"
        sequence:
          - action: vacuum.send_command
            metadata: {}
            data:
              command: app_segment_clean
              params:
                segments: |
                  {% for raum in raume_liste.split(',') %}
                  - {{ raum.strip() }}
                  {% endfor %}
            target:
              device_id: e2a67c09d8cd944dd57dcfe8cb616fe0
description: Sauge die einzelnen Räume im Erdgeschoss
icon: phu:roborock

In der Vacuum Card bin ich auch nicht sicher wie ich die mehreren Räume richtig übergeben bekomme (service_data: raume: (“16”, “18”))?
Vacuum Card:

type: custom:vacuum-card
entity: vacuum.roborock_s5_max
map: image.roborock_s5_max_eg
map_refresh: 5

shortcuts:
  - name: Sauge Wohnzimmer
    service: script.sauge_und_wische_erdgeschoss_raume
    service_data:
      raume: "17"
    icon: mdi:sofa
  - name: Sauge Küche und Esszimmer
    service: script.sauge_und_wische_erdgeschoss_raume
    service_data:
      raume: ("16", "18")
    sub_titel: Küche
    icon: mdi:silverware-fork-knife

Mittlerweile ist nur noch die offizielle Integration von Roborock unterstützt.

Dort gibt es ganz unten dann auch die Anleitung für How can I clean a specific room?

Ich habe es schon hinbekommen für einzelne Räume in dem Skript den Sauauftrag abzuschicken. Ich wollte nur alles in einem Skript machen. Einzel Räume aber auch mehrere Räume zu saugen.
Ich werde jetzt 2 Skripte machen eines für die einzelnen Räume und eines in dem ich das Saugen von der Küche und dem Esszimmer triggere. Das sollte viel einfacher sein als das ganze in einem Skript zu lösen.

Hallo @Sargon ,
gerade habe ich von der “HACS Roborock Integration” gewechselt und musste ein paar Kleinigkeiten bei mir anpassen…

Ich interessiere mich sehr für “gute Lösungen” bzgl. “neue Darstellungen (Maps …”. Gibt es hier Empfehlungen ?

Ev. können folgende Ausschnitte aus meinen Scripts dir helfen ?
→ Bei mir funktioniert “params / segments” :wink:

anbei Bsp. zu:

  • einzelner Raum
  • mehrere Räume
...
  - if:
      - condition: state
        entity_id: input_select.schrubbie_raume
        state: ZimmerXY
    then:
      - data:
          command: app_segment_clean
          params:
            - segments:
                - 23
            - repeat: 1
        target:
          entity_id: vacuum.schrubbie
        action: vacuum.send_command
    alias: 23 ZimmerXY


  - if:
      - condition: state
        entity_id: input_select.schrubbie_raume
        state: vieleZimmer
    then:
      - data:
          command: app_segment_clean
          params:
            - segments:
                - 17
                - 18
                - 19
                - 16
                - 20
            - repeat: 1
        target:
          entity_id: vacuum.schrubbie
        action: vacuum.send_command
    alias: vieleZimmer
...

https://www.smarthomeundmore.de/🤖-roborock-in-home-assistant-neu-🗺️-map-segmentreinigung-in-der-core-integration/
Ich suche auch gerade danach - gerade gefunden

Hallo zusammen,

ich versuche derzeit (mit nur eingeschränktem technischen Wissen), Skripte für den Roborock über das Dashboard zu starten. Allerdings scheitere ich bereits daran, dass bei mir anscheinend die Räume pro Stockwerk mit gleichen IDs zugeordnet werden. Kennt jemand dieses Problem? Unten ein Screenshot von meiner Abfrage der Raum-IDs.

grafik