Root-Zugriff auf Xiaomi Mi Vacuum Robot & Roborock S5

  • Nochmal eine kurze Nachfrage zum Ablauf und Verständnis:
    1. ich roote den Roboter mit der obigen Anleitung
    2. Ich setze z.B. auf einem Raspberry die Dustcloud auf
    3. Ich lenke den Roboter auf die Dustcloud um
    4. Ich kann den Roboter nun bedenkenlos in mein Home-WLAN einbinden ohne dass in Angst haben muss dass er Daten nach China schickt
    5. Ich kann die Flole-App auf einem Android Phone installieren und dem Roboter damit konfigurieren und steuern


    ist das so korrekt?


  • Ich wollte mal eine aktuelle Firmware aufspielen, ich kann auch den Status abrufen der Sauger ist also erreichbar. Ich scheitere aber beim Hochladen. Wenn ich den Update Befehl absetzte, erhalte ich auch ein ['ok'] als Ausgabe, es erfolgt aber keine Ansage durch der Sauger. Auch sehe ich leider im anderen Shell Fenster keine Aktivität beim HTTP Server. Hat jemand eine Idee was der Fehler sein könnte bzw. was ich noch probieren könnte um die aktuelle Firmware auf den Sauger zu laden?


  • Kann mir niemand eine Aussage zu meinen Ausführungen geben?

  • Also ich habe es am Wochenende quasi so vollzogen bis auf die Flole App, da hier, wenn ich es richtig verstanden hatte, erst eine China Connection mit der Original App hergestellt werden muss, was ich eben nicht wollte. Ich habe den Roborock auch in FHEM einbinden können. Am zweiten Arbeitstag kam nichts mehr sichtbar in der Dustcloud an, daher hab ich die (Dank Docker Image) einfach Mal abgedreht. Die FHEM Anbindung klappt trotzdem noch einwandfrei und das war das einzige auf das ich scharf war.
    Sprich ich hatte nie eine Verbindung nach China, Roborock ist in der Fritzbox gesperrt, Dustcloud ist offline und FHEM funktioniert einwandfrei. Einzig würde mich interessieren, ob ich von dem gerooteten Roborock irgendwie die Map(s) runter bekomme um eine "Offline"-Zonenreinigung zu realisieren. An sich wäre ich auch experimentierfreudig, wie an anderer Stelle zu lesen einfach mit Koordinaten zu arbeiten, aber da Spiel er gefühlt verrückt, sprich setze ich in FHEM einen "goto" Befehl kommt er meist nicht weit und sagt dann, dass er den Punkt nicht findet. Gehe ich bei den Koordinaten +/-1000 fährt er zuerst wild im freien Wohnzimmer Kreuz und quer um auch dann zu sagen (ohne irgendwo angeeckt zu sein), dass er den Punkt nicht trifft.
    Wer da noch nen Tip hat, wäre echt super, dann hätte ich alles was ich habe, meine Zonen könnte ich mir dann wohl durch probieren "ermessen", das würde mir vollkommen reichen, eine Visualisierung bräuchte ich nicht.


    Gesendet von meinem ONEPLUS A5000 mit Tapatalk

  • Ich habe die Zone Funktion auch mal mit Fhem ausprobiert, aber so wirklich war ich damit nicht zufrieden.
    Das Problem daran ist, angenommen man hat die korrekten Zone Koordinaten, muss man ab dann immer mit der Zonereinigung arbeiten.


    Startet man eine komplette Reinigung, stimmen danach die Zone Koordinaten nicht mehr!


    Ansonsten bzgl. Maps gibt es für Fhem meines Wissens wohl leider noch nichts. Nur was für die Dustcloud: https://forum.fhem.de/index.ph….msg790911.html#msg790911


    Die Zonekoordinaten lassen sich hiermit leicht auslesen, aber das geht auch nur mit der Handy APP (einmalig):
    https://forum.fhem.de/index.ph….msg792092.html#msg792092

  • Hallo florie,
    danke für deine Antwort! Ich meinte eigentlich gelesen zu haben, dass der Roboter ohne Verbindung zum Server/dustcloud nicht funktioniert?


    Vielleicht kann Flole mal etwas dazu sagen, wieso man für seine App einmal mit der originalapp verbunden gewesen sein soll und wie man dies aus datenschutzsicht am besten hinbekommt ohne etwas nach China zu senden.

  • Hallo florie,
    danke für deine Antwort! Ich meinte eigentlich gelesen zu haben, dass der Roboter ohne Verbindung zum Server/dustcloud nicht funktioniert?


    Vielleicht kann Flole mal etwas dazu sagen, wieso man für seine App einmal mit der originalapp verbunden gewesen sein soll und wie man dies aus datenschutzsicht am besten hinbekommt ohne etwas nach China zu senden.

    Ja das dachte ich auch, daher hatte ich ja die Dustcloud in einem Docker Container aufgesetzt. Dort wurde der Roborock auch direkt angezeigt mit seinen Daten. Aber nachdem dann irgendwann "letztes Signal vor 2 Tagen" stand, dachte ich mir, kann wohl so schlimm nicht sein. Und wie gesagt, in FHEM geht's einwandfrei. Nutze dort aktuell aber hauptsächlich die Befehle "start" "Stop" "charge" "carpet mode on/Off" und "Cleaning Mode". Und nutze es zum ermitteln der gesäuberten Fläche, auslesen von Fehlern und aktuellen Status.


    Gesendet von meinem ONEPLUS A5000 mit Tapatalk

  • Einzig würde mich interessieren, ob ich von dem gerooteten Roborock irgendwie die Map(s) runter bekomme um eine "Offline"-Zonenreinigung zu realisieren. An sich wäre ich auch experimentierfreudig, wie an anderer Stelle zu lesen einfach mit Koordinaten zu arbeiten, aber da Spiel er gefühlt verrückt, sprich setze ich in FHEM einen "goto" Befehl kommt er meist nicht weit und sagt dann, dass er den Punkt nicht findet. Gehe ich bei den Koordinaten +/-1000 fährt er zuerst wild im freien Wohnzimmer Kreuz und quer um auch dann zu sagen (ohne irgendwo angeeckt zu sein), dass er den Punkt nicht trifft.


    Du kannst sobald das Gerät gerootet ist auf dem Sauger ein Cronjob einrichten und schickst Dir die Map und Positionsdaten an einen Webhook. Dann kannst Du diese auswerten bzw. Du siehst wo der Sauger zur Zeit rumfährt. So habe ich das mit IP-Symcon und IPSymconRoborock gelöst, da werden die Kartendaten aus einem gerooteten Gerät ausgelesen und an IP-Symcon übertragen. Wie man das ohne root machen soll ist mir noch nicht schlüssig. Das gleiche oder ähnliches Vorgehen müsstest Du FHEM adaptieren, wenn Du FHEM nutzten willst.

  • Florie : Ich weiß nicht, wie FHEM die koordinaten berechnet. Wenn man die Move Kommandos für den Robo verwendet, liegen die Koordinaten zwischen 0,0 und 51000,51000. Bei mir liegt der die Ladestation in der Kartenmitte und das ist die Koordinate 25500,25500. 0,0 liegt links unten auf der Map und so kann man sich dann mit den Koordinaten nach vorne arbeiten. Ich denke, dass Du Koordinaten außerhalb des Zimmers gesendet hast. Dann versucht der Robo die anzufahren und iiirgendwo eine Lücke zu finden, die es nicht gibt ;-) Für Dich sieht es wirr aus und für den Robo ist es ein verzweifelter Versuch, irgendwie Deinem Kommando nachzukommen.


    und schickst Dir die Map und Positionsdaten an einen Webhook.


    Beim Webhook steigt der nicht-Programmierer aus. Ich habe verstanden, was Du machst, aber nicht wie ;-)

  • Wenn man die Move Kommandos für den Robo verwendet, liegen die Koordinaten zwischen 0,0 und 51000,51000.


    Wenn der Bereich fest vorgegeben ist, heißt das dann ja aber im Umkehrschluss auch, das die Entfernung, die zwei Koordination beschrieben wird, von der Raumgröße abhängt. Die Entfernung müsste dann also in einem normalen Zimmer zwischen zwei Koordinaten eine andere sein als z.B. in einem Saal.

    Beim Webhook steigt der nicht-Programmierer aus. Ich habe verstanden, was Du machst, aber nicht wie ;-)


    Nun dazu muss man kein Programmierer sein, aber man sollte sich mit dem System was man selber nutzt, den Konfigurationsmöglichkeiten des Systems und der Sprache die das System nutzt auskennen. Im Fall von FHEM ist das halt PERL. Wie ein Webhook einzurichten ist, ist ja von Hausautomationssystem zu System unterschiedlich und auch unterschiedlich einfach einzurichten. Bei FHEM ist dies im WIKI z.B. bei Geofancy beschrieben, das ist also auch kein Geheimnis.


    Grundsätzlich erstellt der Sauger ja eine Karte und kennt auch die Positionsdaten und diese liegen auf dem Sauger selber. Wenn man also auf das Gerät Root-Zugriff hat, geht es nur darum wie kommt man an diese Daten ran. Eine Möglichkeit ist es eine Hausautomationssoftware wie z.B. FHEM selber auf dem Sauger zu installieren, auch das ist im Internet beschrieben. Das hat den Vorteil, dass man nichts vom Sauger verschicken muss, denn man kann ja lokal auf das Dateisystem zugreifen. Für mich persönlich wäre das dennoch keine Option, weil ich nicht auf die Idee käme auf ein batteriebetriebenes Gerät eine Hausautomationssoftware zu installieren. Sobald der Sauger einmal, aus welchen Gründen auch immer, nicht zur Ladestation zurückkehrt und der Akku alle ist, ist dann auch Schluss mit der Hausautomation. Das wäre mir selber nicht ausfallsicher genug für eine Hausautomation und eher imho eine Spielerei.


    Die zweite Möglichkeit besteht eben darin die Daten vom Sauger zyklisch an eine externe Instanz zu schicken, in der man gerne die Positionsdaten und Kartendaten hätte. Wie man das jetzt genau macht, steht ja auch jedem frei ob jetzt so was wie ein Webhook oder Serversocket nutzt, ist jedem selbst überlassen. Im Fall von IP-Symcon und IPSymconRoborock wird eben ein Webhook genutzt. Das kann ich auch nicht allgemein beschreiben, das variiert ja von System zu System und der Sprache die benutzt wird. Wer wissen will wie das geht kann ja gerne in den Quellcode schauen, der liegt offen. Wie man das mit anderen Systemen adaptiert habe ich keine Ahnung, weil ich mich mit anderen Systemen im dem Detail und mit anderen Sprachen, wie im Fall von FHEM PERL, nicht auskenne. Wer also unbedingt Kartendaten extern nutzten will kann ja gerne IPSymconRoborock nutzten, da muss man auch kein Programmierer sein, man installiert einfach das Modul logt sich einmal auf dem gerooten Sauger per SSH ein und fertig ist die Konfiguration. Wer das mit einem anderen System realisieren will, muss sich zumindest mit der Sprache, die das System nutzt, auskennen, ob jetzt Programmierer oder eben nur Nutzer ist in dem Fall dann egal.

    Edited 2 times, last by Fonzo ().

  • Also ich habe die Dustcloud wieder am laufen, hatte da einen falschen Port drinnen. Habe aufm Roborock nun Cronjobs, die alle 5 Sekunden upload_map.sh ausführen und um 03:30 Uhr per iptables wieder von der TU Darmstadt IP auf meine Dustcloud umlenken. Die Livemap ist nett anzusehen, aber an sich brauche ich sie nicht wirklich. Was mir viel wichtiger wäre, da ich in FHEM Zonen eingerichtet habe, dass er die Karte von meinem Erdgeschoss behält, denn wenn er losfährt und das nicht komplett saugt, dann ist auch nur die halbe Karte in der Dustcloud. Kann man die "richtige" Karte irgendwie schreibgeschützt machen, dass die dauerhaft als Grundlage dient? Sonst muss erst immer das komplette Erdgeschoss abgefahren werden, damit das mit den Zonen aus FHEM wieder klappt.


    Gesendet von meinem ONEPLUS A5000 mit Tapatalk

  • Kannst du, laienhaft gedacht, nicht die Map, die du dir ja abspeicherst, nach jedem sauggang wieder auf den Roborock laden und die dort vorhandene überschreiben? So bräuchtest du den Roboter nur einmal alles vollständig saugen lassen, um einmal die komplette Map zu haben.

  • Ja, laienhaft hatte ich an soetwas auch gedacht, bzw. auch daran, dass die Dustcloud ja die Livemap zeichnet, sprich man doch irgendwie aus der Dustcloud Karte und auch Koordinaten für die Zonenreinigung bekommen müsste. Auf dem Roborock gibts auch soetwas wie 2last_map", aber wenn ich soetwas wegspeichere und später wieder an den Ursrpungsort zurückbügel kommt irgendwie nicht das gewünschte Ergebnis.

  • Wenn der Bereich fest vorgegeben ist, heißt das dann ja aber im Umkehrschluss auch, das die Entfernung, die zwei Koordination beschrieben wird, von der Raumgröße abhängt. Die Entfernung müsste dann also in einem normalen Zimmer zwischen zwei Koordinaten eine andere sein als z.B. in einem Saal.


    Nein, die Map ist eine Scheibe ;-) Ein Zimmer füllt nicht die ganze Map von 0,0 bis 51000x51000, sondern die Map hat eine Menge Platz für eine seehr große Wohnung. Die Entfernung eines Map Punktes, müsste immer die gleiche Entfernung in mm oder cm haben. Umgerechnet habe ich es noch nicht.

  • Also die Lösung der Map ist eigentlich in dustcloud enthalten. Es gibt Code der die Map vom Sauger holt und die Route aus dem Log ins Bild zeichnet.
    Ich habe mir eine App gebaut mit der ich Zonen auf die Map zeichnen kann. Aber das ganze ist noch nicht veröffentlichungswürdig. Wenn sich immer mal wieder die Map dreht, bringen die Zonen nichts.


    Florie : Der Sauger erstellt immer wieder eine neue Map. Dem Sauger eine Map unterschieben geht nicht. Während der Sauger läuft, stehen alle abgefahrenen Koordinaten relativ zur Bildmitte im SLAM_fprintf.log. Das Bild hat 1024px. Dustcloud nimmt hier einen Faktor von 20 an. Also ist der Wert aus dem Log => 512 + Koordinate *20. Dann hast Du die Koordinate auf dem Bild der Map mit 1024x1024px. Und wenn Du ein Move Command des Robos aufrufen willst, dann hast du nicht 1024 Pixel, sondern 51000 Rasterpunkte. Die Koordinaten lassen sich mit einem Dreisatz hoch rechnen. Und in der Bildmitte steht zumindest bei mir immer der Dock.

    Edited once, last by bravehurts ().

  • Quote

    iptables -t nat -A OUTPUT -p tcp --dport 80 -d 130.83.47.181 -j DNAT --to-destination 192.168.1.122:82
    iptables -t nat -A OUTPUT -p udp --dport 8053 -d 130.83.47.181 -j DNAT --to-destination 192.168.1.122:8053


    Firmware ist v2 / 1408


    Edit: falscher Befehl...


    Richtig wäre sudo iptables -t nat -L


    Chain OUTPUT (policy ACCEPT)
    target prot opt source destination
    DNAT tcp -- anywhere awsbj0-files.fds.api.xiaomi.com tcp dpt:http to:192.168.1.122:82
    DNAT udp -- anywhere awsbj0-files.fds.api.xiaomi.com udp dpt:8053 to:192.168.1.122:8053


    Warum wird dann trotzdem der Traffic nicht auf die Dustcloud genated? server.py tcp server läuft auf Port 82

    Edited 2 times, last by mYrObo ().

  • Könnte es sein, dass durch die neue DSGVO und das Firmware-Update die Server von Xiamoi nicht mehr passen, bzw. auf Europa angepasst wurden?


    Trotz host-Anpassung und iptables Routing kann ich weiterhin per App auf den Sauger zugreifen und auch die Daten werden nicht an die Dustcloud geroutet?


    Die neue 4012 liegt nun auch nicht mehr bei Xiaomi direkt, sondern hier:


    https://ec2-52-59-3-213.eu-cen…bys/updpkg/v11_001412.pkg

    Edited once, last by mYrObo ().

  • Bin mit reiner Dustcloud, also ohne Xiaomi-Server, noch auf gerooted Firmware 1228. Kann mir aber nicht vorstellen, dass das Ubuntu auf dem Roborock extrig so umgebogen wurde, dass solch Linux-Hausmittel á la host-Datei oder iptaples nicht mehr greifen ...


    Gesendet von meinem ONEPLUS A6003 mit Tapatalk

  • Also mein link für die 4012 unter Europa server war immernoch eine chinesische Adresse. Bin aber noch nciht zum rooten gekommen..


    Gesendet von meinem Handy

  • Firmware ist v2 / 1408


    Edit: falscher Befehl...


    Richtig wäre sudo iptables -t nat -L


    bei einem gerooteten Sauger loggst Du Dich als root auf dem Robo ein. Damit ist das sudo überflüssig.


    Führe mal netstat -tunp auf dem Robo aus, um zu sehen welche Verbindungen bestehen.