Roborock S7 in openHab integrieren – Raumreinigung

In diesem Artikel erläutere ich alle notwendigen Schritte, um mit dem Xiaomi Roborock S7 eine Raumreinigung durchzuführen. Somit kann dem Saug- und Wischroboter direkt über openHab der Befehl gegeben werden, einen bestimmten Raum zu saugen/wischen und ist nicht mehr auf die Xiaomi Home App angewiesen. Dieser Post ist übrigens nur ein Artikel aus der Reihe der Roborock S7 openHab Integration. Falls du die vorherigen Artikel noch nicht gesehen hast, solltest du vorab hier vorbeischauen.

 

Ersteinrichtung

Räume in der Xiaomi App festlegen

Ganz um die Xiaomi Home App kommt man dann allerdings doch nicht herum. Denn damit openHab überhaupt weiß, welche Räume existieren, müssen diese zuvor in der App zugewiesen werden. Eine hervorragende Anleitung, wie man Räume erstellt und anpasst, sowie Sperrzonen festlegt gibt es übrigens auf folgendem Youtube-Kanal: „ROBOROCK: Maps, NoGo-Zones, Raumeinteilung & mehrere Etagen„. Achtet darauf, dass ihr eure Räume so anlegt, wie ihr sie später gereinigt haben möchtet. Falls der Roborock einen Raum nicht korrekt erkannt hat, solltet ihr ihn manuell anpassen. Nachdem all eure Räume nach euren Wünschen angepasst wurden, dürfte euer Homescreen ungefähr so aussehen (vermutlich nur nicht so verpixelt).

Somit haben wir alle notwendigen Vorkehrungen getroffen und können mit openHab weitermachen.

 

openHab Raumreinigung testen

Jedem Raum wurde in der Xiaomi Home Cloud eine individuelle ID zugewiesen. Im ersten Schritt gilt es herauszufinden, welcher ID welchem Raum zugeordnet worden ist. Das macht man am einfachsten durch Trial and Error. Falls ihr meine Items-Liste aus dem Artikel „Roborock S7 in openHab integrieren – Items und Sitemap“ übernommen habt, könnt ihr beim Item „Roborock01_EG_infoRoomMapping“ alle verfügbaren IDs auslesen. Die Anzahl der dort aufgelisteten IDs sollte auch mit eurer Raumanzahl in der Xiaomi Home App übereinstimmen. Falls das nicht der Fall ist, müsst ihr das vorab überprüfen. Bei mir werden folgende Werte zurück geliefert.

 

Um den Roborock nun in die jeweiligen Räume zu schicken, gibt es wieder verschiedene Ansätze. Ihr könntet beispielsweise eine Regel konfigurieren, den Befehl direkt über die CLI absetzen oder ihr erstellt euch einfach in der main-UI mehrere Widgets. Da die dritte Variante wohl vor allem für Anfänger die einfachste ist, erläutere ich diese etwas ausführlicher.

Dazu wechseln wir in das „Pages“ Menü, legen uns eine neue Testseite an und erstellen eine einzelne Zelle. Anschließend konfigurieren wir die Zelle wie folgt:

Eine kurze Erklärung zu den gesetzten Werten: Der Header dient zur Identifikation der Zelle. Mit der Aktion „Send Command“ legen wir fest, dass beim Aktivieren der Zelle ein Command an das darunter definierte Item geschickt wird. Wenn du meine „Roborock.items“ Liste übernommen hast, wäre das anzusprechende Item „Roborock01_EG_actionRoom“. Falls du deine eigenen Namen verwendest, muss hier entsprechend euer Item-Name gesetzt werden. Und das Command, welches geschickt werden soll ist die jeweilige Raum-ID.

Anschließend könnt ihr die Zelle aktivieren und euer Roborock sollte sich bereits auf den Weg machen. Sobald er am Ziel angekommen ist, wisst ihr, welche ID zu welchem Raum gehört. Meine Zuordnung sieht beispielsweise wie folgt aus:

  • 16=Küche
  • 17=Vorraum
  • 18=Badezimmer
  • 19=WC
  • 20=Büro
  • 21=Schlafzimmer
  • 22=Wohnbereich

 

Sitemap anpassen

Nachdem wir nun festgelegt haben, welcher Raum mit welcher ID korreliert, können wir im nächsten Schritt die Sitemap anpassen. Grundsätzlich reicht es aus, folgende Änderung vorzunehmen:

Selection   item=Roborock01_EG_CleaningRoom   mappings=[16="Küche", 22="Wohnbereich", 17="Vorraum", 20="Büro", 18="Badezimmer", 19="WC", 21="Schlafzimmer"]

Das Item „Roborock01_EG_CleaningRoom“ dient hierbei nur als Übergangsvariabel, welche anschließend die Rule triggern soll. Sollte dir das noch nicht ganz einleuchten, schau einfach vorab hier vorbei.

 

Rule erstellen

Abschließend brauchen wir noch eine Regel, die die Raumreinigung initiiert. Diese soll meiner Meinung nach nicht getriggert werden können, wenn der Roboter nicht im Raumreinigungs-Modus ist. Bei allen anderen Modi soll die Anfrage ausgeführt werden. Hierbei hätte man beispielsweise auch die Möglichkeit, einen Sprachassistenten wie Alexa über den aktuellen Status zu informieren. Den Möglichkeiten sind kaum Grenzen gesetzt. Sobald die Raumreinigung abgeschlossen wurde und sich der Roborock in der Ladestation befindet, soll die Übergangsvariabel wieder zurückgesetzt werden.

rule "ROBOROCK - Start cleaning Room"

when
    Item Roborock01_EG_CleaningRoom changed
then
    if(Roborock01_EG_status.state.toString != "Room Clean" && Roborock01_EG_CleaningRoom.state.toString != ""){
        logInfo("ROBOROCK - Start cleaning Room","Start cleaning Room: " + Roborock01_EG_CleaningRoom.state);
        Roborock01_EG_actionRoom.sendCommand(Roborock01_EG_CleaningRoom.state.toString);
    }else{
        logInfo("ROBOROCK - Start cleaning Room","Roborock is cleaning, cannot start another cleaning Job");
        Roborock01_EG_CleaningRoom.postUpdate("");
    }
end


rule "ROBOROCK - Mode Charging"

when
    Item Roborock01_EG_status changed
then
        if(Roborock01_EG_status.state.toString == "Charging"){
            logInfo("ROBOROCK - Mode Charging","Roborock is now charging!")
            Roborock01_EG_CleaningRoom.postUpdate("");
        }
end

Wie bereits erwähnt, stellt die oben angeführte Konfiguration nur ein Minimum dessen dar, was möglich ist. Auf weitere Varianten gehe ich in den zukünftigen Blogposts zu diesem Thema ein. Ein wichtiger Punkt wäre unter anderem auch noch die Realisierung von automatischen Putzplänen in openHab. Eine weitere Spielerei, welche sich eher für technisch affine Personen richtet, wäre der „Wischtag“. Aber dazu mehr in diesem Beitrag.

You may also like...

Abonnieren
Benachrichtige mich bei
guest
2 Comments
Älteste
Neuste Meist bewertet
Inline Feedbacks
View all comments
Sehroriginell
Sehroriginell
1 Jahr zuvor

Ich habe ein wenig experimentiert, weil ich in der Regel nicht nur einen Raum reinigen möchte, sondern mehrere. Man kann die Raumnummern einfach kommasepariert senden:

XiaomiRobotVacuum_VacuumRoomroom.sendCommand(„16,17“)

Sauger
Sauger
Reply to  Sehroriginell
9 Monate zuvor

Ich mache auch die Komma separierte Methode. Ich schaffe es aber nicht, auch das „repeat“ einzubauen, damit er die Räume öfter saugt. Wer einen Tipp? Danke

Last edited 9 Monate zuvor by Sauger
2
0
Hinterlass' doch deine Meinung zu diesem Artikelx