[Modul] Roborock / Xiaomi Vacuum Cleaner

Hallo Fonzo!

Das wäre ja der Hammer!

Mein Ziel wäre es nämlich meiner Frau es zu ermöglichen, anhand einer Visu mittels checkboxen oder anderen Buttuns, Bereiche auszuwählen welche gereinigt werden sollen.
Heute z.B Küche, Wohnzimmer, Gang
Morgen nur Wohnzimmer
Übermorgen Bad + WC+ Gang

Je nachdem was sie auswählt soll gereinigt werden. Deshalb ist je einfacher umso besser, da dies für meine PHP Kenntnisse sowieso wieder ettliche Stunden Foren lesen bedeutet.

Vielen, vielen Dank für eure Hilfe.
Das ist in diesem Forum wirklich der Hammer wie sehr sich hier Leute gegesnseitig helfen.

Gruß Dani.

Wie gesagt ich selber habe das bisher nie genutzt. Bleiben denn die Koordinaten zuverlässig konstant? Ansonsten macht es ja auch keinen Sinn das in einer Liste oder einer Variable abzuspeichern? Ich frage nur wie da so die Erfahrungen sind, nicht das man was abspeichert, was aber am Schluss keinen Sinn macht, weil sich die Koordinaten auch mal von Zeit zu Zeit ändern können.

Hallo Fonzo!

Also Ich habe den Roborock seit ca 6 Wochen und seit ca 5 Wochen an IP-Symcon am laufen.
Die Koordinaten sind seitdem Stabil.
Sollten Sie sich doch mal ändern wäre es aber auch viel einfacher diese einmal Global zu ändern anstatt in jedem Skript wo diese vorkommen.

Danke

Gruß Dani

Ich habe mal ein Formular ergänzt, vielleicht ist das ja für Deinen Zweck hilfreich. Nach einem Modul Update sollte im Konfigurationsformular ein Abschnitt Zonen erscheinen.

Hier kann man dann einen Raum mit Koordinaten hinterlegen.

Aufgerufen wird dann der Raum mit der Nummer.


$roomnumber = 1;
$number = 1;
 $result = Roborock_ZoneCleanRoomnumber(18437 /*[Geräte\Roborock Xiaomi\Roborock]*/, $roomnumber, $number);
 var_dump($result);

$roomnumber ist die ID des Raums und $number die Anzahl der Reinigungen.

Man kann auch eine Zone reinigen über den Aufruf des Raumnames, der im Konfigurationsformular hinterlegt worden ist (s.o):


$number = 1;
$roomname = "Wohnzimmer";
$result = Roborock_ZoneCleanRoomname(18437 /*[Geräte\Roborock Xiaomi\Roborock]*/, $roomname, $number);
var_dump($result);

Hallo Fonzo!

Ich habe das eben versucht. Das mit den Räumen im Modul wäre super.
Leider bekomme ich beim Aufruf des Skriptes die Rückmeldung „bool(False)“

Würde dies dann später auch mit Multizone z.B. Roborock_ZoneCleanMultiRoomnumber oder so funktionieren??
Dann wird es nämlich wirklich sehr Interressant.

Versucht habe ich es so wie du beschrieben hast.

<?
$roomnumber = 1;
$number = 1;
 $result = Roborock_ZoneCleanRoomnumber(55874, $roomnumber, $number);
 var_dump($result);
?>

Was steht denn bei Dir im Debug Fenster des Roborock wenn Du den Befehl absetzt?

Habe es soeben mit dem Raumnamen getestet. Das funktioniert!

Das ganze noch mit Multizone und ich geb dir ein Bier aus.

Beim Aufrufen über Raumnummer steht im Debug:

[{„uy“:31910,„ux“:27069,„ly“:29310,„lx“:23769,„roomname“:„kitchen“,„zone“:1}]
could not find roomname

Beim aufruf mit Raumnamen funktioniert es.

Rückmeldung Skript

array(8) {
  ["InstanceID"]=>
  int(55874)
  ["token"]=>
  string(32) "---------------"
  ["ip"]=>
  string(13) "192.168.5.122"
  ["immediate"]=>
  bool(true)
  ["method"]=>
  string(15) "app_zoned_clean"
  ["params"]=>
  array(1) {
    [0]=>
    array(5) {
      [0]=>
      int(23769)
      [1]=>
      int(29310)
      [2]=>
      int(27069)
      [3]=>
      int(31910)
      [4]=>
      int(1)
    }
  }
  ["result"]=>
  array(1) {
    [0]=>
    string(2) "ok"
  }
  ["id"]=>
  int(4050)
}

Danke nochmls!

folgende Rückmeldungen bekomme ich!

Die ersten 2 Zeilen mit Raumnummer
Die Zeilen 3 + 4 mit Raumname

Zur Info:
Wenn ich beim Modul mehrere Räume eingebe dann erhöht sich die Zonennummer ab Zone 2 nicht mehr. Siehe Bild

Der Aufruf über den Raumnamen funktioniert aber tadellos.

Das mit dem Raumnummer muss ich mal anschauen.

Zu dem Multizone Aufruf:


$Küche = [25500,25500,27000,27000];
$Wohnzimmer = [30000,30000,31000,31000];
$number = 1;
$multizone = [[$Küche, $number],[$Wohnzimmer, $number]]; 
$multizone = json_encode($multizone); 

Roborock_ZoneCleanMultiName(12345, $multizone);

Ist das Verhalten in der Webkonsole das Gleiche? Ich kann das bei mir mit der Webkonsole nicht nachstellen.

Das liegt definitiv daran das man nach jedem Hinzufügen erst die Wert mit „Übernehmen“ bestätigen muss. Bin mir noch nicht sicher das irgendwie anders zu lösen.

In der Webkonsole funktioniert es.
Muss wohl ein Problem an der Console sein

Bezüglich Multizone
Gäbe es die Möglichkeit anstatt die Koordinaten nochmal im Skript vergeben zu müssen diese aus dem Modul „Zonen“ mit Raumnamen zu bekommen? Wenn das überhaupt möglich ist.

z.B. in etwa so?

$number = 1;
$multizone = [["Küche", $number],["Wohnzimmer", $number]]; 
$multizone = json_encode($multizone); 

Roborock_ZoneCleanMultiName(12345, $multizone);

Somit müsste man die Koordinaten nicht doppelt und dreifach eingeben und falls sich diese mal ändern sollten müssen diese nur im Modul geändert werden.

Danke Gruß Dani


 $livingroom = Roborock_GetZoneCoordinatesByName(18437 /*[Geräte\Roborock Xiaomi\Roborock]*/, "Wohnzimmer"); 
 var_dump($livingroom);


 $livingroom = Roborock_GetZoneCoordinatesByName(18437 /*[Geräte\Roborock Xiaomi\Roborock]*/, "Wohnzimmer");
 $kitchen = Roborock_GetZoneCoordinatesByName(18437 /*[Geräte\Roborock Xiaomi\Roborock]*/, "Küche");
$number = 1; 
$multizone = [[$kitchen, $number],[$livingroom, $number]];  
$multizone = json_encode($multizone);  

Roborock_ZoneCleanMultiName(12345, $multizone);

Perfekt!
Das auslesen funktioniert Super soweit!

Danke nochmal! Ich steh tief in deiner Schuld

Hallo Fonzo,
ich habe den S50 seid Anfang November '18 und leider heute morgen hat er sich wieder festgefahren über eine schwarze Matte die da noch lag (Absturzsensoren). Dabei wusste er nicht mehr wo er war und musste per Hand zur Dogging.
Das war der dritte Karten Neuaufbau mit jedesmal veränderten Koordinaten…

Danach hatte er sich die Karte gekillt, nichts half mehr.

Alle Räume wieder abgefahren und die neu erstellte Karte hat für die Räume völlig neue Koordinaten.

Daher habe ich alle Räume in einzelnen Variablen und auch am Handy.
Dann brauche ich nur FloleVac und die Zonendaten in den Zwischenspeicher und in die Variable kopieren und einkürzen.

Im Ergebnis steht in meinen Variablen nur: > 26020,19134,27570,24034 <

Den Rest baue ich in den Scripten entsprechend zusammen, da ich auch die Anzahl der Reinigungen schon mal ändere.

Der Umbau heute morgen auf Multizonen für die per Google Assistent aufzurufenden einzel und Kombizonen hat keine 30 Minuten gedauert, da der Zusammenbau in einem „Include“ Script abläuft.
Der Multizonebefehl läuft auch wunderbar wenn nur eine Zone enthalten ist, daher brauch man den ursprünglichen Befehl Roborock_ZoneClean nicht mehr.

Danke für deine Arbeit, ich schaue mir mal den neuen Umbau zu Thema den du gemacht gast auch mal an.

Gruß Achim

Hallo zusammen,
auch ich versuche gerade bei mir die Zonenreinigung einzurichten.
Ich bekomme aber anscheinend nicht die korrekten Koordinaten ausgelesen.
Bei den Beispielen und Screens stehen immer sehr große Zahlen. Ich bekomme jedoch etwas mit 6.111 und -94.02 angezeigt.

Im Debug steht bei coordinates_callback…

Hat jemand eine Idee, warum bei token „false“ angezeigt wird?

Alles andere funktioniert.

Beste Grüße
Kai