In diesem Tutorial zeige ich dir, wie du deinen Roborock Saugroboter und Saug-Wisch-Roboter in Home Assistant einrichtest. Dank der Core Integration ist jetzt auch die Map- und Segmentreinigung ohne HACS möglich!
Ich erkläre Schritt für Schritt, wie du deinen Roboter integrierst und gebe dir zusätzlich hilfreiche Tipps zur Automatisierung für verschiedene Reinigungsmodi – egal ob Staubsaugen oder Wischen.
Sehr cooles Video. Vielen dank dafür. Einfach zu verstehen und auch sehr intuitiv.
Mir Selber hilft es nur leider nicht. Da ich einen Deebot habe und dafür keine Anleitung finde ich auch Funktioniert
Hat vielleicht hier einer aus der Community eine idee oder soll ich am besten ein eigenes Thema dazu auf machen? Hier geht es ja eigentlich um Roborock und nicht um Saugroboter im Allgemeinen.
Hallo Tobias,
ich habe die Integration anhand deines Videos für unseren Roborock S7 maxv Ultra umgesetzt. Insbesondere die Lösung, dass einzelne Räume am Wallpanel ausgewählt und gestartet werden können gefällt nicht nur meiner Frau sondern auch unseren Kindern. Es wurden zusätzlich die Modis „nur Saugen“ und nur Wischen" als Auswahl hinterlegt. Als Ergänzung lasse ich mir auf dem Wallpanel noch den Status der Station anzeigen.
Habe es dank deinem Video auch umgesetzt bekommen. Hast du eigentlich weiter an dem fehlerhaften Script getüftelt wo man mehrere Räume gleichzeitig wählen kann?
Gruß
Danke da muss ich jetzt erst mal wieder durch steigen.
Sehe ich das richtig das ich für jeden Raum einen input.boolen brauche?
Bei so was bin ich noch ein ziemlicher Anfänger
Ja, für jeden Raum habe ich einen Input Boolean Helfer angelegt. Dadurch ist dann halt Multiselect möglich. Leider bietet die HA Drop Down Liste ja kein Multiselect… Kann man bestimmt schöner machen, aber so funktioniert es und wird fleißig verwendet
Die sind sehr schnell angelegt, einfach unter Einstellungen Geräte ein paar Schalter / input_boolean für die Räume anlegen und schon kannst du die Button entsprechend benutzen.
Die Raumreinigung ist schon cool und nutze ich bei meinem Dreame L10s ultra auch sehr gerne. Das muss standard werden, dass Räume oder Bereiche angefahren werden können.
Irgendwie habe ich Mist gebaut. Wenn der Robo jetzt losfährt zum saugen sag er kurz nach dem er die Station verlassen hat, Mopp wird gereinigt under fährt zur Station zurück
Edit: Krieg es nicht hin. Wenn er nur saugen soll wäscht er vorher immer erst den Mopp. So sieht mein Script aus. Vielleicht sieht einer den Fehler.
Als Parameter gibt man den Roborock Saugroboter sowie den Sensor für die aktuelle Karte an, als Ergebnis bekommt man in Mapping Name auf Raum-ID zurück. Falls man eine andere Karte als die aktuelle auslesen möchte dann gibt man statt der Entity den Namen der Karte direkt an.
Gibt man noch zusätzlich Komma-Separiert Namen von Räumen an dann verändert sich der Response:
segments:
- 17
- 18
Das wiederum lässt sich dann in einer Automatisierung etc. einbauen um (basierend auf Raumnamen) den Helfer los zu schicken, beispielsweise so:
sequence:
- alias: Check Map Parameter
if:
- alias: If no map param is given
condition: template
value_template: >-
{{current_map_entity is not defined and map_name_param is not
defined}}
then:
- stop: No map name is given
error: true
- variables:
mapname: >-
{% if map_name_param is defined %} {{map_name_param}} {%else%}
{{states(current_map_entity)}} {%endif%}
- action: roborock.get_maps
metadata: {}
data: {}
target:
entity_id: "{{vacRobot}}"
response_variable: action_response
- variables:
roomJson: >-
{% set rooms = action_response[vacRobot]['maps'] | selectattr('name',
'eq', mapname) | map(attribute='rooms') | first %} {# Erstelle ein
Dictionary mit vertauschten Schlüssel-Wert-Paaren direkt in der Schleife
#} { {% for key, value in rooms.items() %}
"{{ value }}": "{{ key }}"{% if not loop.last %}, {% endif %}
{% endfor %} }
- if:
- condition: template
value_template: "{{room_names is defined}}"
alias: IF room_names is defined
then:
- variables:
response: >-
{"segments":[{% set room_names_list = room_names.split(',') %} {%
for room in room_names_list %}
{% if roomJson[room] is not none %}{{roomJson[room]}}{% if not loop.last %}, {% endif %}{% endif %}
{% endfor %}]}
- stop: ""
enabled: true
response_variable: response
alias: If Room_names is defined
- stop: ""
enabled: true
response_variable: roomJson
fields:
vacRobot:
selector:
entity:
filter:
- domain: vacuum
name: vacRobot
description: Which vacuum robot should be used as a data source?
default: vacuum.roborock_s7_maxv
required: true
current_map_entity:
selector:
entity:
filter:
- domain: select
name: Current Map Entity
description: >-
Which entity contains the current map? Use as an alternative to
map_name_param
default: select.roborock_s7_maxv_ausgewahlte_karte
required: false
map_name_param:
selector:
text: null
name: Map Name Param
description: >-
Which floormap should be used? Overides the current selected Map if used
as an alternative to current_map_entity
room_names:
selector:
text:
multiline: false
name: Room Names
default: Flur,Küche
alias: Get Roborock Room IDs
description: ""
Lässt sich natürlich noch zusammen kombinieren in einem Script für „Reinige Raum xy“, hab aktuell nur den Bedarf nicht…
Hallo zusammen,
das Video ist super hilfreich, ich verstehe nur nicht, warum so viele Helfer verwendet werden.
Leider stehe ich aber auf dem Schlauch.
Im nachfolgenden Skript übergebe ich aus der Schaltfläche Raum und Reinigungsvorgaben - dann fallen die Dropdowns weg.
In der Regel hat man ja immer die gleichen Aufgaben.
Damit würde das Skript schön schlank, nur übernimmt das Skript die Feldwerte nicht
Leider kommt als Fehlermeldung, dass der Sauger den Feldnamen nicht verarbeiten kann.
Auch wenn man das Skript über die Entwicklerwerkzeuge aufruft.
Wahrscheinlich habe ich irgendwo einen Denkfehler.
Danke
Ich vermute, dass es daran liegt, dass du in „room“ ja nur die 16,22 übergibst.
Korrekt müsste es sein [16,20] . Wenn du dein „room“ Feld am Anfang mit „[“ und am Ende mit „]“ schließt, sollte es so auch funktionieren. Kannst du ja direkt bei Anwendung des „Felds“ im Script ergänzen.
Und das Segments braucht es dann nicht mehr.
In diesem Beispiel lese ich aus dem Helfer genau diese Infos aus.
D.h. in sensor.raume_eg steht [16,22]
Danke, das hatte ich übersehen.
Meine Problem scheint aber in erster Linie die Übergabe Wischparameter zu sein:
Option {{ clean_mode }} ist für die Entität select.roborock_qrevo_slim_wisch_intensitat nicht gültig, gültige Optionen sind: off, mild, moderate, intense, custom.
Die Übergabe erfolgt wie in der Dokumentation beschrieben - auch der Umweg über die Automation liefert den gleichen Fehler.
Der Sauger wird angesprochen, da ein ping zu hören ist (so wie bei der Übergabe von Plänen in der App).
Als notification kommen die Parameter im Script an.
Dennoch meldet HA, dass „clean_mode“ nicht gültig sei.
Hier noch ein Update:
Es ist (zumindest für mich) möglich wie oben beschrieben Raum und Saugmodus zu übergeben - also die Textfelder im Script.
MopModus und Wischintensität übernimmt er nicht.
Offensichtlich habe ich hier noch eine Syntaxfehler.
Hi,
danke erstmal für das Video @smarthomeandmore
Soweit tut das auch bei mir, allerdings hänge ich noch an der kleine ecke der Repeats.
Vorher hatte ich ja also Parameter:
segment:
RaumIDs
repeat: 2
jetzt habe ich es so wie hier im Beispiel: