NEWS
[Tester gesucht] Roborock-API
-
Hallo zusammen, ich fange gerade mit ioBroker an und habe festgestellt dass ich meinen neuen Roborock S7 nicht so wirklich gut einbinden kann. Alles was ich bisher gefunden habe setzt die Mi Home-App und ein schwierig zu beschaffendes Token voraus. Ich würde aber gerne bei der spezialisierten Roborock-App bleiben und habe mir die deswegen mal genauer angeschaut. Mit viel Detektivarbeit konnte ich die Aufrufe weitestgehend entschlüsseln.
Herausgekommen sind dabei bisher zwei Skripte, die sich erstmal nur an technisch Versierte richten:
https://gist.github.com/rovo89/dff47ed19fca0dfdda77503e66c2b7c7Mit
node login.js 'user@example.org' 'password'meldet man sich zunächst bei euiot.roborock.com an und erhält ein JSON mit seinen Benutzerdaten. Die werden inuserdata.jsonzwischengespeichert. Diese Daten enthalten u.a. URL und Anmeldedaten für eine zweite API (bei mir immer api-eu.roborock.com), von der hauptsächlich die Liste der Geräte abgerufen wird. Diese Infos enthalten u.a. die Device-ID und einen "localKey" - keine Ahnung ob das das Token wäre das man für andere Adapter braucht?!?Jedenfalls kann man anschließend
node test.jsausführen, was anhand dieser Daten eine MQTT-Verbindung zu den Roborock-Servern herstellt. Es gibt pro Gerät ein "Input"-Topic zum Senden von Requests und ein "Output"-Topic zum Empfangen der Antworten. Letztendlich sind die Requests JSONs in der Art{"t":1657015047,"dps":{"101":"{\"id\":1,\"method\":\"get_prop\",\"params\":[\"get_status\"]}"}}, was wohl auch bei anderen Implementierungen der Fall ist. Das Ganze wird dann noch verschlüsselt, mit Headern versehen etc. und bei den Antworten genau umgekehrt. Karten (get_map_v1) sind nochmal zusätzlich verschlüsselt, am Ende kommen binäre Daten beginnend mit "rr" dabei heraus die auch im Mapviewer angezeigt werden können.Als Beispiel wird in dem Skript das erste Geräte nach dem Status und seiner Karte gefragt und die Daten angezeigt. Es ist also ein Proof of Concept, das später entweder ein eigenständiger Adapter oder Teil eines bestehenden werden soll. Wenn jemand dabei helfen möchte: sehr gerne!
Mag jemand die Skripte mal testen? Voraussetzung sind nur ein Roborock, der in die Roborock-App (nicht Mi Home!) eingebunden ist, NodeJS (bei mir Version 16) und etwas technisches Verständnis. Skripte einfach herunterladen (oben rechts ist ein "Download ZIP"-Button) und wie beschrieben. Danke für euer Feedback!
@rovo89 - Vielen Dank hierfür, Wahnsinn :sunglasses: :+1: :+1:
Läuft super. Ich habe es gar nicht erst in node.js selbst getestet, sondern gleich deine Scripts in einen noch zu entwickelnden Adapter eingebaut (TypeScript). Erst mal nur zum Testen.
Ich werde daraus noch entsprechend einen Adapter-Vorschlag bauen.
Viel ist noch nicht da, zunächst lasse ich nur mal States erzeugen aus den verfügbaren Daten.


Ich melde mich hier wieder, sobald ich weiter bin.
-
@rovo89 - Vielen Dank hierfür, Wahnsinn :sunglasses: :+1: :+1:
Läuft super. Ich habe es gar nicht erst in node.js selbst getestet, sondern gleich deine Scripts in einen noch zu entwickelnden Adapter eingebaut (TypeScript). Erst mal nur zum Testen.
Ich werde daraus noch entsprechend einen Adapter-Vorschlag bauen.
Viel ist noch nicht da, zunächst lasse ich nur mal States erzeugen aus den verfügbaren Daten.


Ich melde mich hier wieder, sobald ich weiter bin.
@acgua
Habe einen S7 +, der mit der Roborock-App eingerichtet wurde.
Da Umrüsten auf Xiaomi-App von der Regierung garantiert abgeblockt wird, wäre auch ich hier sehr an dem Adapter interessiert.
Wenn also etwas zu testen ist ... bin dabei ;-) -
@acgua
Habe einen S7 +, der mit der Roborock-App eingerichtet wurde.
Da Umrüsten auf Xiaomi-App von der Regierung garantiert abgeblockt wird, wäre auch ich hier sehr an dem Adapter interessiert.
Wenn also etwas zu testen ist ... bin dabei ;-) -
Am Freitag kommt mein neuer S7 pro Ultra.
Dann kann ich auch testen.Aktuell läuft schon ein Skript zur Spracherkennung (Alexa Adapter) und Multiraumreinigung bei meinem Ecovacs.
Würde das dann gerne für den Roborock Adapter anpassen und noch paar Saug und Wischeinstellungen hinzufügen.
-
Hallo zusammen,
wie kann ich denn den Cleaning Complete Status abfragen, also wenn der Roboter das Reinigungsprogramm selbständig beendet hat. Wo versteckt sich diese Information.
Bei device.status springt er nach cleaning sofort auf returning.
Im Endeffekt geht es darum, dass ich die Reinigung bei Abwesenheit der Bewohner starte und einen abgeschlossenen Reinigungszyklus erkenn will und dann eine Variable auf true setzten, damit der Sauger nicht nochmal ein zweites mal los fährt.VG
-
Da ich unbedingt bei der Roborock App bleiben möchte und es noch keinen Adapter gibt, verwende ich nun Google Assistant.
Bin positiv überrascht. Multiraumreinigung mit selber gewählten Raumnamen funktioniert einwandfrei.
Einfach sagen "Sauge Küche, Esszimmer und Hauswirtschaftsraum"
Wer ein Android Smartphone hat kann zum ausprobieren einfach den Google Assistant dort verwenden.
BTW
Habe den S7 pro ultra -
Da ich unbedingt bei der Roborock App bleiben möchte und es noch keinen Adapter gibt, verwende ich nun Google Assistant.
Bin positiv überrascht. Multiraumreinigung mit selber gewählten Raumnamen funktioniert einwandfrei.
Einfach sagen "Sauge Küche, Esszimmer und Hauswirtschaftsraum"
Wer ein Android Smartphone hat kann zum ausprobieren einfach den Google Assistant dort verwenden.
BTW
Habe den S7 pro ultra -
Hallo zusammen,
gibt es für einen etwaigen Adapter ein Repo, so das man sich bei der Entwicklung beteiligen kann?
VG
@mattb
Ich stelle demnächst einen Link hier ein (Github), also TypeScript-Adapter. Vorher möchte ich noch ein paar erste Fehler abfangen und besseres Debug Log einbauen.
Bitte sehr gerne beteiligen an der Entwicklung, das wäre cool. MQTT ist für mich Neuland, aber @rovo89 hat halt mega gute Vorarbeit geleistet mit seinem Proof of Concept und der Entschlüsselung. -
@acgua Bin gespannt und werde mich so gut es geht beteiligen 👍
-
Ich hätte auch einen Roborock S7 MaxV-Serie. Man könnte theoretisch gut mit der Xiaomi-Variante leben, wenn denn die Remote-Camera dort funktionieren würde. Also ist in meinen Augen solch ein Adapter wie hier essentiell!
Wäre also auch als Tester dabei. ;)
-
@mattb
Ich stelle demnächst einen Link hier ein (Github), also TypeScript-Adapter. Vorher möchte ich noch ein paar erste Fehler abfangen und besseres Debug Log einbauen.
Bitte sehr gerne beteiligen an der Entwicklung, das wäre cool. MQTT ist für mich Neuland, aber @rovo89 hat halt mega gute Vorarbeit geleistet mit seinem Proof of Concept und der Entschlüsselung. -
@mattb
Ich stelle demnächst einen Link hier ein (Github), also TypeScript-Adapter. Vorher möchte ich noch ein paar erste Fehler abfangen und besseres Debug Log einbauen.
Bitte sehr gerne beteiligen an der Entwicklung, das wäre cool. MQTT ist für mich Neuland, aber @rovo89 hat halt mega gute Vorarbeit geleistet mit seinem Proof of Concept und der Entschlüsselung. -
Bin jetzt gerade etwas verwirrt.
Die Skripte kommen von rovo89
Dann hat Meistertr einen Adapter daraus gebaut oder unabhängig.Acgua baust du nun den Adapter von Meistertr weiter oder nen eigenen??
-
Ich würde mich auch gerne als Tester anbieten. Ich habe einen Roborock S7 und ioBroker als Container am laufen. Etwas Erfahrung in Netzwerkanalyse und Entwicklung bringe ich auch mit.
-
Da @Acgua am 11.11. das letzte Mal hier online war, bin ich mir aktuell nicht sicher, ob an einen Roborock Adapter überhaupt noch gearbeitet wird.
Hi. Ich bin derzeit unerwartet mit einer Renovierung und Innenausbau beschäftigt, daher derzeit nicht wirklich Zeit für den Adapter.
Ich war auch schon etwas weiter, nur hatte ich fälschlicherweise zwischendurch in einem Temp-Verzeichnis ohne Backup entwickelt, alles weg.Aber ich hatte noch eine Version vom November, und diese jetzt hochgeladen auf Github und Dependencies aktualisiert etc.
Link: https://github.com/Acgua/ioBroker.roborock
Installation
Manuell, über "Installieren aus eigener URL", "Benutzerdefiniert". Dort den Link eingeben. Danach eine Instanz installieren.
Einrichtung
In den Admin-Optionen Benutzernamen (bzw. Email) und Passwort von Roborock eingeben, also die Account-Daten von der App.

Die Instanz wird danach ein gelbes Dreieck zeigen.

Es werden einige Objekte unter
roborock.0angelegt, aber alle unter<id>.infosind derzeit noch leer.Die Objekte
roborock.0.homedataundroborock.0.userdatasollten aber Werte haben.
Hier könnten Tester mal prüfen, ob Werte ankommen.
Im Fall auch das Debug-Log aktivieren und ins Log schauen.Weiter geht diese Version des Adapters noch nicht.
Ich werde nächstes Jahr wieder weiter entwickeln, aber gerne kann jeder dies als Basis für eine Weiterentwicklung nehmen, forken, was auch immer. :sunglasses: Nur bitte dann hier kurz reinschreiben im Thread, wenn wer von euch weiter oder neu entwickelt.