Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. rovo89

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    R
    • Profile
    • Following 0
    • Followers 1
    • Topics 1
    • Posts 4
    • Best 1
    • Groups 1

    rovo89

    @rovo89

    Starter

    14
    Reputation
    38
    Profile views
    4
    Posts
    1
    Followers
    0
    Following
    Joined Last Online

    rovo89 Follow
    Starter

    Best posts made by rovo89

    • [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/dff47ed19fca0dfdda77503e66c2b7c7

      Mit 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 in userdata.json zwischengespeichert. 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.js ausfü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!

      posted in JavaScript
      R
      rovo89

    Latest posts made by rovo89

    • RE: [Tester gesucht] Roborock-API

      Ich habe ehrlich gesagt noch gar nicht weitergemacht, aber @meistertr hatte oben einen Screenshot von einem Adapter gezeigt. Wie weiter da der Stand ist weiß ich allerdings nicht.

      posted in JavaScript
      R
      rovo89
    • RE: [Tester gesucht] Roborock-API

      @meistertr sagte in [Tester gesucht] Roborock-API:

      ich bin unfassbar beeindruckt, ich habe Tage (wenn nicht sogar Wochen) davor gesessen und bin einfach nicht weiter gekommen. Meinen größten Respekt dafür!!! Das ist das wo ich schon seit 2 Jahren drauf warte.

      Hehe danke. Ich habe recht viel Erfahrung mit sowas, aber trotzdem hat es eine ganze Weile gedauert. Ich hatte schon befürchtet dass das Ergebnis keinen außer mich interessiert, weil erstmal keine Reaktion kam.

      Würde es aber nicht in die Mihome app integrieren da Roborock und "Xiaomi" mittlerweile zu weit auseinander driften und ein Roborock Adapter eine bessere Wiedererkennung bietet.

      OK, ich denke auch dass es nur wenig Überlappung gibt.

      wenn du möchtest kann ich gerne einen Basisadapter fertigmachen oder umgekehrt und ich untertütze wo ich kann,. An dem Projekt liegt mir sehr viel...

      Danke! Ich mache gerade verschiedene Sachen gleichzeitig, Priorität hat gerade dass ich meine selbstgebaute Bewässerung einbinde. Dafür habe ich schon mit dem Wizard die Struktur erstellt und schaue mir an dem Beispiel an wie die wichtigsten Sachen funktionieren. Danach würde ich dann damit anfangen, dass ich anhand der API die Objekte/States anlege. Wenn ich Fragen habe melde ich mich, insbesondere wie man den Login realisiert und die Daten sicher speichert wird bestimmt knifflig.

      posted in JavaScript
      R
      rovo89
    • RE: Bräuchte Roborock Adapter nicht MI Home

      @meistertr sagte in Bräuchte Roborock Adapter nicht MI Home:

      Aber wenn sich jemand findet der den login entschlüsselt und Nachbaut sind pullrequests gerne gesehen..

      Entschlüsselt und nachgebaut habe ich die Kommunikation: https://forum.iobroker.net/topic/56098/tester-gesucht-roborock-api
      Aktuell bräuchte ich erstmal jemanden, der meine Skripte testet. Anschließend ist dann die Frage, ob es sinnvoll ist die Roborock-API (verschlüsseltes JSON über MQTT) in den bestehenden Adapter zu integrieren oder ob das so konzeptionell anders ist und daher so viel if-then-else braucht dass ein eigenständiger Adapter besser wäre.

      posted in ioBroker Allgemein
      R
      rovo89
    • [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/dff47ed19fca0dfdda77503e66c2b7c7

      Mit 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 in userdata.json zwischengespeichert. 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.js ausfü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!

      posted in JavaScript
      R
      rovo89
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo