Roborock S7 in openHab integrieren – Items und Sitemap
Mit dieser Artikel-Reihe möchte ich euch die Einrichtung des Xiaomi Roborock S7 in openHab erläutern. Im ersten Artikel haben wir bereits die Grundkonfiguration vorgenommen und somit das Binding, sowie das Gerät eingerichtet. Im zweiten Teil möchten wir uns mit den einzelnen Items und der Sitemap beschäftigen. Somit können wir den Saug- und Wischroboter anschließend bereits über openHab steuern.
Falls du den ersten Artikel noch nicht gelesen hat, kannst du dich vorab hier einlesen.
Ersteinrichtung
Items konfigurieren
Um euch die Arbeit zu ersparen, jedes einzelne Item zu konfigurieren, könnt ihr nachgelagert die Config so 1:1 in euer „Roborock.items“ File übernehmen. Natürlich könnt ihr jede beliebige Anpassung vornehmen. Achtet nur darauf, die Roborock ID mit eurem Wert zu ersetzen.
Einige historische Werte sind mit der aktuellen Xiaomi IO Binding (Version 3.1) noch nicht kompatibel. Es gibt aber bereits entsprechende Tickets in Github dafür.
String Roborock01_EG_actionControl "Reinigung" {channel="miio:vacuum:624XXXXXX:actions#control"} String Roborock01_EG_actionRoom "Reinigung Raum" {channel="miio:vacuum:624XXXXXX:actions#segment"} Number Roborock01_EG_actionFan "Modus" {channel="miio:vacuum:624XXXXXX:actions#fan"} Switch Roborock01_EG_actionVacuum "Saugen" {channel="miio:vacuum:624XXXXXX:actions#vacuum"} String Roborock01_EG_CleaningRoom "Raumreinigung" String Roborock01_EG_executeCMD "Run CMD" {channel="miio:vacuum:624XXXXXX:actions#commands"} Number Roborock01_EG_statusBat "Batteriestatus" <battery> {channel="miio:vacuum:624XXXXXX:status#battery"} Number Roborock01_EG_statusArea "Gereinigte Fläche [%1.0fm²]" {channel="miio:vacuum:624XXXXXX:status#clean_area"} Number Roborock01_EG_statusTime "Reinigungszeit [%1.0fmin]" {channel="miio:vacuum:624XXXXXX:status#clean_time"} Number Roborock01_EG_statusSegment "Segment Status" {channel="miio:vacuum:624XXXXXX:status#segment_status"} Switch Roborock01_EG_statusDND "Nicht Stören" {channel="miio:vacuum:624XXXXXX:dnd#dnd_function"} String Roborock01_EG_statusDNDST "Nicht Stören - Startzeit" {channel="miio:vacuum:624XXXXXX:dnd#dnd_start"} String Roborock01_EG_statusDNDET "Nicht Stören - Endzeit" {channel="miio:vacuum:624XXXXXX:dnd#dnd_end"} String Roborock01_EG_statusError "Error [%s]" {channel="miio:vacuum:624XXXXXX:status#error_code"} Number Roborock01_EG_statusErrorId "Error ID" {channel="miio:vacuum:624XXXXXX:status#error_id"} Number Roborock01_EG_statusMap "Kartenstatus" {channel="miio:vacuum:624XXXXXX:status#map_status"} Number Roborock01_EG_statusMapPres "Kartenstatus" {channel="miio:vacuum:624XXXXXX:status#map_present"} Number Roborock01_EG_statusInClean "In Reinigung" {channel="miio:vacuum:624XXXXXX:status#in_cleaning"} Number Roborock01_EG_statusFanPower "Fan power [%1.0f %%]" {channel="miio:vacuum:624XXXXXX:status#fan_power"} Switch Roborock01_EG_statusDNS "Nicht Stoeren" {channel="miio:vacuum:624XXXXXX:status#dnd_enabled"} String Roborock01_EG_status "Status" {channel="miio:vacuum:624XXXXXX:status#state"} Number Roborock01_EG_statusId "Status ID" {channel="miio:vacuum:624XXXXXX:status#state_id"} Switch Roborock01_EG_statusMopForbidden "Mop Verboten" {channel="miio:vacuum:624XXXXXX:status#mop_forbidden_enable"} Switch Roborock01_EG_statusWater "Wassertank Status" {channel="miio:vacuum:624XXXXXX:status#water_box_status"} Switch Roborock01_EG_statusLock "Lock Status" {channel="miio:vacuum:624XXXXXX:status#lock_status"} Switch Roborock01_EG_statusMop "Wischtuch Status" {channel="miio:vacuum:624XXXXXX:status#water_box_carriage_status"} Number Roborock01_EG_statusWaterMode "Wassertank Modus" {channel="miio:vacuum:624XXXXXX:status#water_box_mode"} Switch Roborock01_EG_statusIsLocation "Location" {channel="miio:vacuum:624XXXXXX:status#is_locating"} Number Roborock01_EG_ledStatus "LED Status" {channel="miio:vacuum:624XXXXXX:status#led_status"} Image Roborock01_EG_map "Karte" {channel="miio:vacuum:624XXXXXX:cleaning#map"} String Roborock01_EG_infoMultiMapList "Info Multi Map List" {channel="miio:vacuum:624XXXXXX:info#multi_maps_list"} String Roborock01_EG_infoRoomMapping "Info Raum" {channel="miio:vacuum:624XXXXXX:info#room_mapping"} String Roborock01_EG_infoCleanMode "Info CleanMode" {channel="miio:vacuum:624XXXXXX:info#customize_clean_mode"} Number Roborock01_EG_maintenanceMainBrush "Hauptbürste" {channel="miio:vacuum:624XXXXXX:consumables#main_brush_percent"} Number Roborock01_EG_maintenanceSideBrush "Zweitbürste" {channel="miio:vacuum:624XXXXXX:consumables#side_brush_percent"} Number Roborock01_EG_maintenanceFilter "Filter" {channel="miio:vacuum:624XXXXXX:consumables#filter_percent"} Number Roborock01_EG_maintenanceSensor "Sensoren" {channel="miio:vacuum:624XXXXXX:consumables#sensor_dirt_percent"} String Roborock01_EG_maintenanceVerbrauch "Verbrauch" {channel="miio:vacuum:624XXXXXX:consumables#consumable_reset"} Number:Time Roborock01_EG_maintenanceMainBrushTime "Hauptbürste" {channel="miio:vacuum:624XXXXXX:consumables#main_brush_time"} Number:Time Roborock01_EG_maintenanceSideBrushTime "Zweitbürste" {channel="miio:vacuum:624XXXXXX:consumables#side_brush_time"} Number:Time Roborock01_EG_maintenanceFilterTime "Filter" {channel="miio:vacuum:624XXXXXX:consumables#filter_time"} Number:Time Roborock01_EG_maintenanceSensorTime "Sensoren" {channel="miio:vacuum:624XXXXXX:consumables#sensor_dirt_time"} String Roborock01_EG_networkSSID "SSID" {channel="miio:vacuum:624XXXXXX:network#ssid"} String Roborock01_EG_networkBSSID "BSSID" {channel="miio:vacuum:624XXXXXX:network#bssid"} Number Roborock01_EG_networkRSSI "RSSI" {channel="miio:vacuum:624XXXXXX:network#rssi"} Number Roborock01_EG_networkLife "Life" {channel="miio:vacuum:624XXXXXX:network#life"} DateTime Roborock01_EG_lastCleaningStart "Letzte Reinigung Startzeit" {channel="miio:vacuum:624XXXXXX:cleaning#last_clean_start_time"} DateTime Roborock01_EG_lastCleaningEnd "Letzte Reinung Endzeit" {channel="miio:vacuum:624XXXXXX:cleaning#last_clean_end_time"} Number:Area Roborock01_EG_lastCleaningArea "Letzte Reinigung Fläche" {channel="miio:vacuum:624XXXXXX:cleaning#last_clean_area"} Number:Time Roborock01_EG_lastCleaningTime "Letzte Reinung Zeit" {channel="miio:vacuum:624XXXXXX:cleaning#last_clean_duration"} Number Roborock01_EG_lastCleaningError "Letzte Reinung Error" {channel="miio:vacuum:624XXXXXX:cleaning#last_clean_error"} Number Roborock01_EG_lastCleaningFinished "Letzte Reinigung beendet" {channel="miio:vacuum:624XXXXXX:cleaning#last_clean_finish"} Number:Area Roborock01_EG_historyTotalArea "Gesamte Reinigungsfläche" {channel="miio:vacuum:624XXXXXX:total_clean_area"} Number:Time Roborock01_EG_historyTotalTime "Gesamte Reinigungsdauer" {channel="miio:vacuum:624XXXXXX:history#total_clean_time"} Number Roborock01_EG_historyTotalCleaning "Gesamte Reinigungen" {channel="miio:vacuum:624XXXXXX:history#total_clean_count"}
Die Darstellung der Codebox sieht je nach Browser leider etwas komisch aus. Wenn ihr einfach den Inhalt kopiert und in den Texteditor eurer Wahl (Notepadd++, Visual Studio Code) importiert, sollte es wieder passen.
Die meisten Items dürften dabei relativ selbsterklärend sein. Fürs bessere Verständnis liste ich die wichtigsten einmal auf:
Item Name | Funktion | Mögliche Werte |
---|---|---|
Roborock01_EG_actionControl | Tätigkeit des Roborocks | dock, vacuum, pause |
Roborock01_EG_actionFan | Saugintensität | 101 (Leise), 102 (Balanced), 103 (Turbo), 104 (Max) |
Roborock01_EG_statusWaterMode | Wischintensität | 200 (Aus), 201 (Sanft), 202 (Mittel), 203 (Intensiv) |
Roborock01_EG_CleaningRoom | Wird für die spätere Raumreinigung mittels Sitemap benötigt | Integer je nach Raum (siehe Roborock01_EG_infoRoomMapping) |
Roborock01_EG_actionVacuum | Aktueller Status des Roborocks | Idle, Spot Cleaning, Room Cleaning, Charging, Returning Dock, Cleaning, Unknown, Manuel Mode |
Roborock01_EG_executeCMD | Schickt einen individuellen Befehl an den Roboter | |
Roborock01_EG_infoRoomMapping | Gibt alle verfügbaren Räume aus der Xiaomi Home App zurück |
Sollte euch die Auflistung der Items nicht reichen, könnt ihr auch bei folgender Dokumentation vorbeischauen: miio.vacuum module. Ansonsten hilft es auch, die Items einmal einzurichten und zu schauen, welche Werte ausgegeben werden. Spielt ruhig ein wenig damit rum, bevor ihr zum nächsten Schritt weitergeht.
Sitemap einrichten
Nachdem wir erfolgreich die Roborock Items gesetzt haben, können wir mit der Sitemap fortfahren. Mit dem Code aus dem unterem Codeblock bekommt ihr eine Sitemap mit folgender Darstellung.
Es dürfte relativ schnell auffallen, dass nicht alle Items in die Sitemap aufgenommen wurden. Das hat den einfachen Hintergrund, dass sie meiner Meinung nach für den alltäglichen Gebrauch nicht relevant sind und ich die Sitemap so übersichtlich als möglich halten möchte. Es steht aber jedem frei, diese nach belieben anzupassen.
sitemap roborock label="Roborock" { Frame label="Status" icon="light" { Text item=Roborock01_EG_statusBat Text item=Roborock01_EG_status Text item=Roborock01_EG_statusMop Text item=Roborock01_EG_statusWater } Frame label="Saugen/Wischen" { Selection item=Roborock01_EG_actionFan label="Saugmodus" mappings=[101="Leise", 102="Balanced", 103="Turbo", 104="Max"] Selection item=Roborock01_EG_statusWaterMode label="Wischmodus" mappings=[200="Aus", 201="Sanft", 202="Mittel", 203="Intensiv"] Selection item=Roborock01_EG_actionControl mappings=[dock="Dock", vacuum="Saugen", pause="Pause"] Selection item=Roborock01_EG_CleaningRoom mappings=[16="Küche", 22="Wohnbereich", 17="Vorraum", 20="Büro", 18="Badezimmer", 19="WC", 21="Schlafzimmer"] Switch item=Roborock01_EG_statusDND } Frame label="Wartung"{ Text item=Roborock01_EG_maintenanceMainBrush Text item=Roborock01_EG_maintenanceSideBrush Text item=Roborock01_EG_maintenanceFilter Text item=Roborock01_EG_maintenanceSensor } Frame label="Letzte Reinigung"{ Text item=Roborock01_EG_statusArea Text item=Roborock01_EG_statusTime Image item=Roborock01_EG_map } }
Der Großteil der Funktionen werden bereits so out-of-the-box funktionieren. Das Mapping von „Roborock01_EG_CleaningRoom“ muss allerdings noch an eure Gegebenheiten angepasst werden, dazu im nächsten Artikel mehr.
Hallo Kevin,
Ich habe Deine Konfiguration 1:1 übernommen für den Roborock S7. ICh habe den neuesten Snapshot von OH3 laufen. super. Ich konnte auch die Zimmer sauber zuordnen.
Leider schaffe ich es nicht vom EG ins OG und umgekehrt zu wechseln. Unser Sauger erkennt nicht, dass er dort schon war und beginnt mit einer neuen Karte. Wenn ich aber in der Mi Home App die passende Karte „wiederherstelle“, dann klappt es.
Hast Du eine Idee, was ich falsch mache? Kann man vielleicht mit Roborock01_EG_executeCMD einen Befehl zum Kartenwechsel schicken?
Hi,
laut Github werden MultiMaps grundsätzlich unterstützt: https://github.com/marcelrv/XiaomiRobotVacuumProtocol/blob/master/multimap.md
Ich habe allerdings keinen Befehl gefunden, der es erlaubt, zwischen mehrere Karten zu wechseln. Ich würde dir aber empfehlen, einen Post im openHab Community Forum zu öffnen und dort den Binding Maintainer „marcel_verpaalen“ zu markieren. Vielleicht hat er eine passende Lösung für dein Problem.
Hey, Danke für das super tutorial.
Ich habe nur die installation des Saugers vorgenommen, Läuft auch soweit gut.
Aber wie bekomme ich die Karte in der Sitemap dargestellt?
Muss ich dafür noch etwas installieren?
Gruß Max
Hi,
nein, solange dir der Roborock die Karte liefert (das kannst du bspw. direkt beim „Thing“ überprüfen), kannst du sie in deiner Sitemap mit folgender Syntax einbinden:
Danke für die fixe Reaktion.
Im Thing steht ONLINE drin, im item UNDEF.
Scheint als würde ich die Daten nicht geliefert bekommen.
Schade eigentlich.