[Modul] Roborock / Xiaomi Vacuum Cleaner

eine Frage - ist es auch möglich, durch das rooten Zoned Cleanup durchzuführen?
Wäre cool, wenn man vordefinierte Räume säubern könnte.
„händisch“ könnte ich mir das so vorstellen, dass man in einer Raumvariable die entsprechenden Koordinaten einträgt, die man mit curl ausgelesen hat und diese dann als Befehl an den Roborock sendet. - ist das denkbar?

lg,
Philipp

Hi. Durch das neue Update hat die V1 ja nun auch Zoned Cleanup und GO bekommen. Kann das im Modul eingepflegt werden?

Gruß Kay

Grundsätzlich ist das verfügbar, dazu mach mal ein Modul Update. Ob sich das zumindest sinnvoll einfach nutzten lässt ist was anderes, ob das mit einem V1 funktioniert kann ich selber auch nicht testen, weil ich keinen besitze.

Die Kartendaten können ja zur Zeit nur über Rootrechte eingebunden werden, wenn sich das noch irgendwie verbessern lässt, könnte man das vielleicht in den Kartendaten mit einbauen.

So hat man zur Zeit das Problem das mit Koordinaten gearbeitet wird, diese sind aber nicht auf den ersten Blick für einen Nutzer ersichtlich. Daher hilft es da nur zu experimentieren. Das Ganze funktioniert auch nur wenn man stets davon ausgeht, dass sich der Sauger am gleichen Ausgangspunkt befindet. Also eine optimale Lösung ist das noch nicht. Aber Du kannst ja mal mit herum experimentieren und berichten ob das überhaupt geht mit einem V1.

Dazu hast Du prinzipiell zwei Möglichkeiten, bei beiden werden aber jeweils Koordinaten benötigt.

Von Werk aus hat die Station den Koordinatenpunkt x=25500 y=25500.

Erste Möglichkeit ist das Anfahren eine Position und dann das Starten von SpotCleaning.


$x = 26500; // X-Koordinate
$y = 25500; // Y-Koordinate
Roborock_GotoTarget(12345 /*[Geräte\Roborock Xiaomi\Roborock]*/, $x, $y);
Roborock_CleanSpot(12345 /*[Geräte\Roborock Xiaomi\Roborock]*/);

Zweite Möglichkeit ein Zone Clean


$lower_left_corner_x = 23400; // X-Koordinate der unteren linken Ecke der Zone (Rechteck)
$lower_left_corner_y = 23400; // Y-Koordinate der unteren linken Ecke der Zone (Rechteck)
$upper_right_corner_x = 25600; // X-Koordinate der oberen rechten Ecke der Zone (Rechteck)
$upper_right_corner_y = 25600; // Y-Koordinate der oberen rechten Ecke der Zone (Rechteck)
$number = 1;
Roborock_ZoneClean(12345 /*[Geräte\Roborock Xiaomi\Roborock]*/, $lower_left_corner_x, $lower_left_corner_y, $upper_right_corner_x, $upper_right_corner_y, $number);

Hi,

danke für die Antwort. Das klingt super.

Der Sauger wird immer ab der Basis gestartet. Mein Plan:

Im Webfront möchte ich Buttons für „Küche saugen“, „Wohnzimmer saugen“ usw. haben. Wenn ich diese drücke soll der Sauger dort hinfahren, dann saugen und wieder zurück zur Basis.

Das eigentliche Problem wird sein, die Koordinaten zu bekommen :frowning:

Gruß Kay

Das sollte ja grundsätzlich möglich sein, indem ein Zone Clean angewiesen wird, und nach dem Saugen man die Anweisung gibt zum Laden zur Ladestation zurückzufahren. Das Problem sind wie gesagt die Koordinaten.


Roborock_ZoneClean(12345 /*[Geräte\Roborock Xiaomi\Roborock]*/, $lower_left_corner_x, $lower_left_corner_y, $upper_right_corner_x, $upper_right_corner_y, $number); 

Du kannst Du zumindest experimentieren indem Du langsam Koordination ausprobierst.
Mit Roborock_GotoTarget


$x = 25500;
$y = 35500;
Roborock_GotoTarget(10137 /*[Geräte\Roborock Xiaomi\Roborock]*/, $x, $y);

fährst Du eine Position an. Damit hast Du dann ungefähr ein Gefühl dafür wo Du dich im Raum bewegst. Dann kannst Du die Koordinaten ja immer um wenige 100 oder 1000 Stellen verändern und siehst dann wo den Sauger hinfährt. So bekommst Du theoretisch die Eckkoordinaten raus, die Du für ein Zone Cleaning benötigst. Insofern sich nichts an der Position der Ladestation ändert sollten die Koordinaten dann auch gleich bleiben.
Vielleicht lässt sich das ja in Zukunft auch einfach über die Map in IP-Symcon lösen, wenn mal Zeit da ist, sich das näher anzuschauen.

Welchen Sauger muß man genau haben ? Version 1 / 2 ?

Mit dem V2 sollte das auf alle Fälle gehen, mit dem V1 mit der neusten Firmware wohl auch. Das sieht man einfach daran beim V1 ob diese Funktion nach einem Firmware Update auch in der Mi Home App verfügbar ist. Wenn das der Fall sein sollte, müsste das theoretisch auch beim V1 funktionieren.

Die V2 ist die mit drei Tasten auf dem Gehäuse ?

Das ist die mit drei waagrecht angeordneten Tasten und der zusätzlichen Wischfunktion.

Für diejenigen die das Gerät sowieso gerootet haben um die Kartendaten in IP-Symcon verwenden zu können, wäre es wohl auch möglich die Koordinaten des momentanen Standorts in eines zusätzliche Variable Position abzulegen. Wenn mal Zeit ist kann man das sicher ergänzen, das macht es zumindest für diejenigen, die Karte so oder so in IP-Symcon nutzten, einfacher an die Positionskoordinaten zu kommen.

Hallo Leute,

bei mir entsprechen 1000 Einheiten der Koordinaten ungefähr 1 Meter.

Gruß

Axel

Gesendet von meinem SM-G950F mit Tapatalk

Danke Fonzo und alle anderen die das Modul begleitet haben und etwickelt haben.

So macht IPS Spaß :slight_smile:

Einfach mal Danke :slight_smile:

Bitte, keine Ursache, ich nutze es ja selber. Mein Dank gilt hier aber insbesondere CodeKing, ohne ihn hätte alles deutlich länger gebraucht und er hat wesentliche Probleme gelöst, ohne die das Modul so nicht laufen würde. In sofern ist es immer erfreulich, wenn alle, die so ein Gerät nutzten, auch Ihre Ideen einbringen bzw. gemeinsam so ein Modul auf die Beine stellen.

Mein S50 ist auf dem Weg vom China Mann zu Deutsch Mann.
Dann werde ich das Modul auch nutzen. :slight_smile:

Meiner läuft jetzt hier auch.

Kann man dem Roborock eine feste IP Adresse geben ? oder wie ? in der MI-Home geht das nicht oder ?

Ich bekomme über das Module keine aktuellen Koordinaten des Roborock ausgegeben, geht das noch nicht ?

Das Gerät bezieht die Adresse über DHCP. Du hast also die Möglichkeit im DHCP Server bzw. Router mit DHCP dem Gerät immer die gleiche Adresse zuzuweisen, dann bekommt der Sauger auch immer die gleiche IP-Adresse.

Aktuelle Koordinaten als auch die Karte werden aktiv vom Sauger zu IP-Symcon gepusht, dies funktioniert aber nur wenn der Sauger gerootet wurde und entsprechend der Anleitung mit SSH auf dem Sauger eingeloggt wurde und wie in der Anleitung beschrieben auf dem Sauger selber noch Dinge installiert worden sind.
Sobald der Sauger das erste mal Daten sendet wird auch automatisch eine Variable dazu angelegt. Wie gesagt, da das Gerät dazu gerootet werden muss, ist das leider nicht ganz banal aber eine andere Möglichkeit habe ich bisher nicht gefunden.

Danke für die Antwort.

Ok, dann mal rooten, dann bekommt man die Koordinaten der einzelnen Räume genau, und kann dann davon ausgehen das Raum reinigen programmieren.

Ja kannst Du wie hier beschrieben machen, nur wichtig darauf achten die richtige Firmware zu benutzten, für S50 ist diese hier zu finden.

Hallo, zum reinigen der einzelnen Räume habe ich mir jetzt die Koordinaten über die Punktanfahrung raus gesucht, das ging ganz gut.

Nun wollte ich das „Zone Clean“ nutzen. Habe die Koordinaten hin und her getauscht für das Rechteck. Der S50 fährt aus die Ladestation raus ca 30cm, dann sagt er mir das er das Zone Clean abgeschlossen hat und fährt sofort wieder in die Ladestation. Was kann das sein ?

Wie wird das Rechteck angegeben wo ist die die Untere linke Ecke zu sehen ?

Ich habe mir das mal in der Mi-Home App im Reinigungsverlauf angeschaut, da wird auch kein Rechteck in der Karte angezeigt.
Wenn ich den S50 über die App starten ist ein Rechteck in der Karten drin.
Kann es sein das die Koordinaten nicht richtig übertragen werden ?

Wenn Du Dir vorstellst wie in der App ein Rechteck auf zu ziehen, sollten das an sich die Koordinaten der linken Ecke unten sein und der rechten Ecke oben.

Probiere doch mal folgendes, lasse den Sauger mit der Mi App mit GO zu einem Punkt Deiner Wahl fahren. Dann notiere Dir die Position mit den Positionsdaten aus IP-Symcon. Anschließend fährst Du den Sauger in die Ladestation zurück. Nun probierst Du mit


Roborock_GotoTarget($instanceid, $x, $y);

exakt die Position, die Du notiert hattest wieder anzufahren. Solltest Du da auf der gleichen Position raus kommen ist alles ok, falls nicht dann müsste man dem mal nachgehen.