Gerooteten und entcloudeten Xiaomi Roborock S50 in HomeKit/Homebridge einbinden

  • Hi zusammen,


    ich bin noch recht neu im Thema Smart Home unterwegs, wenn euch also was auffällt, ich irgendwo unnötig kompliziert vorgegangen bin, lasst es mich wissen. Aber ich würde das Ergebnis stundenlangen Googlens und Ausprobierens an dieser Stelle gern teilen, weil vielleicht der ein oder die andere an etwas ähnlichem interessiert sind:


    Ich möchte meinem Saugroboter von Xiaomi aus Gründen des Datenschutzes keinen Zugang zum Internet gewähren, ihn aber dennoch über HomeKit zumindest rudimentär steuern können (ihn starten und zurück in die Station fahren lassen). Zum Rooten und Entclouden habe ich mich an diese Anleitung gehalten, das Auslesen des Tokens hat bei mir nur über den iBackup Viewer geklappt.


    Gern hätte ich anschließend das Plugin homebridge-xiaomi-roborock-vacuum genutzt, um den Saugroboter via Homebridge in mein HomeKit einzubinden. Aber wie ich vor ein paar Monaten hier im Forum schon mal geschildert habe, hat das nicht funktioniert: Wenn alles frisch eingerichtet ist, funktioniert das Plugin mit dem gerooteten Roborock für ein paar Minuten, danach nicht mehr. Ich vermute, die deaktivierte Internetverbindung ist schuld.


    Ich habe nun eine Alternative gefunden, denn der gerootete Saugroboter lässt sich durchaus per Kommandozeile steuern. Die entsprechenden Befehle kommen mit der Python-Bibliothek python-miio. Dafür installiert ihr zuerst, falls noch nicht geschehen, Python und dessen Package-Installer:


    sudo apt install -y python3 python3-pip

    pip3 install --upgrade pip


    Dann sind die Bibliothek und ihre Voraussetzungen dran:


    sudo pip3 install python-miio

    sudo pip3 install -U setuptools

    sudo apt-get install libffi-dev libssl-de


    Jetzt ist es möglich, den Saugroboter aus der Kommandozeile zu steuern und bspw. seinen Status auszulesen: mirobo --ip=192.168.XXX.XX --token=xxxxxxxxxxxxxxxxxxxxxxx status. Am Ende könnt ihr status durch die verschiedenen möglichen Befehle ersetzen (etwa start, home oder find).


    Anschließend habe ich das Plugin homebridge-cmdswitch2 installiert und zwei An/Aus-Schalter definiert. Werden sie betätigt, führt das Plugin die entsprechenden Kommandozeilen-Befehle aus, die den Saugroboter starten bzw. in die Station zurückfahren lassen (erster Schalter) und die ihn orten (zweiter Schalter):



    Für beide Schalter wird regelmäßig der Status ermittelt. Der An/Aus-Schalter gilt als „an“, wenn der Saugroboter den Status „Cleaning“ zurück gibt. In jedem anderen Zustand gilt er als „aus“. Der Schalter zum Orten springt automatisch immer wieder auf „aus“.


    Ich hoffe, es finden sich ein paar Leute, die mit dieser Anleitung was anfangen können. :)


    Schönen Gruß