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.

You may also like...

Abonnieren
Benachrichtige mich bei
guest
5 Comments
Älteste
Neuste Meist bewertet
Inline Feedbacks
View all comments
Arnulf
Arnulf
2 Jahre zuvor

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?

Max
Max
2 Jahre zuvor

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

Max
Max
Reply to  Kevin
2 Jahre zuvor

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.

5
0
Hinterlass' doch deine Meinung zu diesem Artikelx