[Modul] Roborock / Xiaomi Vacuum Cleaner

Es gibt ja schon zwei Variablen auf die Du ein Ereignis legen kannst auf Status und auf Fehlercode. Wenn Du aber unbedingt noch eine dritte Variable anlegen willst, kannst Du das ja machen, und diese nimmt dann abhängig von den beiden anderen Variablen einen Wert über ein Ereignis an. Das jetzt noch eine dritte Variable ergänze, sehe ich momentan zumindest keinen Sinn drinnen, aber vielleicht kannst Du mir ja auch noch mal sagen wozu das genau gut sein soll?

Wenn Du ein Update machst solltest Du jetzt auch die eine Variable abwählen können, die Du nicht benötigst, und es sollten trotzdem die anderen Variablen aktualisiert werden.

Ich habe noch folgendes festgestellt.

Wenn ich das ZoneClean starten, bleibt die Information in der Variable „Befehl“ auf den Wert „Docke an“ und die Variable „Befehl“ auf dem Wert „Stop“ stehen.

Ein Problem gibt es mit dem ZoneClean noch.

Die Karte im S50 dreht sich schon mal um 90° von längs auf quer Ansicht (Warum auch immer) ?.
Dann liegen die ermittelten Koordinaten außerhalb der Karte und der S50 bricht die Reinigung mit Fehler „Konnte einige Punkte nicht erreichen“ ab

Kann man ohne rooten vom S50 die lager der Karte längst oder quer Richtung oder zuminderten den Fehler Abbruch „Konnte einige Punkte nicht erreichen“ auslesen. Dann könnt man die Koordinaten automatisch korrigieren.!

Hallo zusammen,

meine übergeordnete Roborock Instanz geht immer wieder auf Fehler (noch unklar warum)

2018-05-18 09_09_56-IP-Symcon Management Console [Home].png

Hat das noch einer? Was kann man dagegen tun?

Grüße
Andi

Nein nicht das ich wüste kann man die Lage der Karte auslesen. Gibt es denn nach Deinem Ermessen eine Möglichkeit die Koordinaten umzurechen wenn die Karte in anderer Orientierung vorliegt? Dann könnte man zumindest so was basteln wie wenn ein Fehler auftaucht, soll er versuchen umzurechen und dann nach mal mit neuen Koordinaten anfahren. Wäre aber auch nur ein Workaround.

Bin ich schon mit dran. Gib mir eben noch Zeit.

Gibt es denn eine eindeutige Fehlermeldung wenn er Punkte nicht erreichen kann ?
Sonnst müssen wir das mit der Reinigungszeit (Fläche) machen, wenn Zeit < 20sec dann neu starten mit anderen Werte.

Danke für das Update! Nach Update und Neuanlagen der Instanz läuft das ZoneClean auch!

Nur gleiches Problem wie der Rest: manchmal dreht sich die Karte um 90 Grad. Und obwohl er immer wieder von der gleichen Position losfährt, auch Richtung - fährt er dann in die falsche Richtung.

Meines Achtens müsste man quasi den Cache von der Map leeren - dass wenn er losfährt, wirklich bei 0 anfängt und den Raum neu ausmisst. Dann sollte auch die übermittelte Position fürs ZoneClean immer funktionieren.

Kennt jemand eine Möglichkeit? Über die App gibt es ja die Möglichkeit den Cache zu leeren.
Oder wo liegt das Kartenmaterial auf dem Roborock? Habe ihn wg. dem Kartenbild auch nun gerootet :slight_smile:

Viele Grüße und vielen Dank für das Update! - tolles Modul!
Dominik

Bei der Kartendrehung ändert sich auch das Koordinatensystem. Was vorher in Richtung Y war ist dann in Richtung X. Auch das Rechtecke ist dann nochmal andersherum. (Ich bekomme das aber noch nicht genau berechnet)

Mein erster Ansatz sieht so aus. (Momentan ist meine Karte aber wieder Richtig).


//Karte hoch
$x1 = $Array_Daten['x1'];
$y1 = $Array_Daten['y1'];
$x2 = $Array_Daten['x2'];
$y2 = $Array_Daten['y2'];

//Karte quer
$x_Korrektur_Karte_quer = +200;
$y_Korrektur_Karte_quer = +200;

$x1 = 25500-($Array_Daten['y2']-25500) + $x_Korrektur_Karte_quer;
$y1 = 25500-($Array_Daten['x2']-25500) + $y_Korrektur_Karte_quer;
$x2 = 25500-($Array_Daten['y1']-25500) + $x_Korrektur_Karte_quer;
$y2 = 25500-($Array_Daten['x1']-25500) + $y_Korrektur_Karte_quer;

Nimmt man den S50 kurz hoch und setzt ihn wieder ab baut er die Karte wieder richtig in Längsrichtung auf.

…genau - ich denke helfen würde es, dem Roborock sein Karten-Speicher zu löschen… - weiß jemand, wo er die Daten ablegt?

Hallo Zusammen,

kann mir hier keiner helfen. Wenn ich den Roborock neuanlege, geht das 1-2 Tage danach geht er wieder auf Fehler.

Ich hatte das auch mal gehabt, nach einem neu anlegen der Modul Repository hatte sich das dann bei mir erledigt und läuft seither ohne Probleme.

Die Daten müssten in der Datei /mnt/data/rockrobo/robot.db liegen, dort sind einige Daten als SQLite Datenbank gespeichert (Anzahl der Reinigungen, Koordinaten, Kartendaten, etc).

Ansonsten gibt es noch jede Menge Daten in Dateiform in den Ordnern /run/shm/ (live) bzw. in /mnt/data/rockrobo/rrlog/ (archiviert).

Ich denke aber das die App auf die Daten in der robot.db zugreift.

Sieht besser aus.
Danke schön

dürfte ich fragen, warum du hier +200 bei der Kartendrehung dazu gibst?
Reicht es nicht aus, einfach x und y zu tauschen?

Bin erst beim einmessen und würde das aber gerne gleich einbauen, da mir auch aufgefallen ist, dass die Karte manchmal dreht.

Es war eine Differenz in den Koordinaten darum die +200.

Es geht aber trotzdem immer noch nicht da er auch das Rechteck andersherum aufbaut, und die 0 Line auch noch verschiebt.
Bei einen Koordinaten Rechteck der Zone am 0 Punkt geht es hier mit:


// Zone Kordinaten (Karte Hochkant)
$Zone_Kordinaten['Küche'] 	= array('x1' => 25000, 'y1' => 30500, 'x2' => 26400, 'y2' => 32700);

//Karte quer
$x_Korrektur_Karte_quer = +200;
$y_Korrektur_Karte_quer = +200;
$x1 = 25500-($Array_Daten['y2']-25500) + $x_Korrektur_Karte_quer;
$y1 = 25500-($Array_Daten['x2']-25500) + $y_Korrektur_Karte_quer;
$x2 = 25500-($Array_Daten['y1']-25500) + $x_Korrektur_Karte_quer;
$y2 = 25500-($Array_Daten['x1']-25500) + $y_Korrektur_Karte_quer;

Nicht an der 0 Line, da liegt die Zone dann momentan noch Außerhalb vom Raum

Momentan kann ich nicht weiter machen, da meine Karte wieder richtig ist.
Mann müste mal bei Punkte (Längs / Hoch Karte) vergleichen.

eine Frage zum ZoneClean:
Ich würde gerne mehrere Zonen hintereinander abarbeiten - in der App funktioniert es (wie ihr sicher wisst) mit mehreren Rechtecken und dann der Roborock auf die Reise schickenn.
Ich habe schon probiert, mehrere ZoneClean Befehle gleich hintereinander abzusetzen, leider nimmt der Roborock erst wieder einen Befehl an, wenn er wieder im Dock steht (nicht schon, wenn er mit dem vorigen ZoneClean fertig ist).
D.h. im Moment fahre ich eine Zone an, warte bis der Rocky wieder im Dock ist und starte dann die nächste Zone.
Hat das schon wer anders hinbekommen?

Danke,
Philipp

Mann könnte automatisch abfragen ob er wieder im Dock ist, oder auf dem Weg zum Dock, und startet dann die nächste Zone aus einer gespeicherten Liste.

Mach mach ein Modul Update und probiere mal die Methode
Roborock_ZoneCleanMulti aus ob die den gewünschten Effekt bringt und die Zonen nacheinander angefahren werden ohne das der Sauger zum Dock zurückkehrt.

Die mehreren Zonen sind als String zu übergeben in der Form:


$number = 1;
// first zone
$lower_left_corner_x = 26000;
$lower_left_corner_y = 26000;
$upper_right_corner_x = 28000;
$upper_right_corner_y = 28000;

// second zone
$lower_left_corner_x1 = 27000;
$lower_left_corner_y1 = 27000;
$upper_right_corner_x1 = 29000;
$upper_right_corner_y1 = 29000;

$multizone = '['.$lower_left_corner_x.','. $lower_left_corner_y.','. $upper_right_corner_x.','. $upper_right_corner_y.','. $number.'],['. $lower_left_corner_x1.','. $lower_left_corner_y1.','.	$upper_right_corner_x1.','. $upper_right_corner_y1.','. $number.']';

Roborock_ZoneCleanMulti(18437 /*[Geräte\Roborock Xiaomi\Roborock]*/, $multizone, $number); // Object ID anpassen

danke für das rasche adaptieren des Moduls. - leider funkt. das ganze bei mir noch nicht.
Der Befehl geht zwar an den Rocky (Starting Zone Cleanup), er fährt aber nur aus dem Dock raus und wieder rein.
Wenn ich dann den „normalen“ Zone-Cleanup starte, funktioniert es einwandfrei.

Wenn du irgendwelche Logs brauchst, gib einfach Bescheid … ich werd versuchen, dieses Mal schneller zu sein :wink: