NEWS
[Frage] Xiaomi Vacuum cleaner
-
Hallo,
habe auch gerade meinen Mi-Robot bekommen und folgendes ist mir aufgefallen:
Wird ein "Locate my robot" (bzw. "Find") über die App gesendet erfolgt zuerst irgendein Request oder Ping mit 32 Byte Daten:
21 31 00 20 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
Die Antwort des Robot erfolgt auch mit 32 Byte Daten wovon die 10 Byte nach der Startkennung (21 31 00 20) in allen Kommandos verwendet wird.
Erst nach diesem Request und Response erfolgt das eigentliche "Find" Kommando. `
Noch ein paar Gedanken zur Antwort des Robot auf diesen "Ping":Byte 00-03: 4 Byte Typ Kennung (21 31 00 20)
Byte 04-13: 10 Byte Identifikationsnummer welche dann für alle Kommandos verwendet wird.
Byte 14-15: 2 Byte irgendein Status (evtl. der Akkustand?)
Byte 16-31: 16 Byte, sieht bei mir aus als wären es ASCII Zeichen (evtl. ein Schlüssel?)
-
hier sind 3 Start Kommandos:
21 31 00 50 00 00 00 00 02 f2 0d 8f 58 85 a5 88 1d c5 74 4d ef 24 3b 2c 4f fd 37 62 6d 0c 67 61 14 f1 fa 1c 78 5a 84 86 09 41 83 23 6c 5f 03 26 be 54 8b f6 70 fa 95 5b d6 88 ce b1 7f 76 79 d7 b2 5c dc f9 11 82 52 ad cb f6 c9 34 55 ad 7d df 21 31 00 50 00 00 00 00 02 f2 8b 1f 58 83 cf c1 4c a1 6d de 65 81 12 78 16 86 eb 5d 03 0c 26 d3 af 3e d6 d2 0c e4 9d e1 dd 36 25 52 7d 9d a7 78 4d eb e9 f3 ad a8 11 4e 47 df 43 81 d0 08 c0 fb 68 f0 d4 78 91 76 b5 6c c5 f7 62 a8 5c 31 52 80 21 31 00 50 00 00 00 00 03 4c 78 66 58 94 af 88 f4 a6 68 e7 9b 92 e8 92 bc 0d c7 93 2c d1 12 48 46 77 cb 2f 66 23 6b 44 ee 77 02 4d 28 12 37 54 10 a5 3a 2f e0 9a 81 ad 79 34 8b fc bb 86 9f 35 bf db e4 f4 92 19 09 29 04 40 51 65 f5 99 de f6
ich sehe nichts… Außer 21 31 00 50 00 00 00 00.
IMHO, Da muss unbedingt noch Roboter ID sein. Und man sollte ansehen, was Roboter antwortet.
-
Sehe ich wie Bluefox. Die Daten werden mit der Zeit und irgendeiner Id verrechnet. Habe alle Konstanten Werte mit den Roboter Zuständen verglichen., keine Übereinstimmung.
Solange man die Roboter in nicht hat, wird es schwer da ein Muster zu erkennen. Habe nun schon zahlreiche Stunden davor gesessen…. Keine neuen Erkenntnisse...
Gruß tobi
Gesendet von meinem E5823 mit Tapatalk
-
Mal eine dumme Frage: habt ihr schon mal den Hersteller angeschrieben und gefragt ob es eine Möglichkeit gibt, eine API zu implementieren!?
Oder wenigsten eine Erklärung bekommt wie dieser Roboter angesprochen werden kann!?
Ich habe die Erfahrung gemacht, das manche Firmen kein Geheimnis daraus machen und sehr hilfsbreit sind
Wäre mal auch ein guter Ansatz
Gruß
Adrian
Gesendet von iPhone mit Tapatalk Pro
-
Da gab es schon. Mehrere Versuche, jedoch nicht von mir. Mit dem Ergebnis keine Möglichkeit auf API. Und keine Infos zu dem Datenverkehr.
Gesendet von meinem E5823 mit Tapatalk
-
Da gab es schon. Mehrere Versuche, jedoch nicht von mir. Mit dem Ergebnis keine Möglichkeit auf API. Und keine Infos zu dem Datenverkehr.
Gesendet von meinem E5823 mit Tapatalk `
Ok…. das ist sehr schade [emoji53]
Gesendet von iPhone mit Tapatalk Pro
-
…
ich sehe nichts... Außer 21 31 00 50 00 00 00 00. `
…ok, ich schildere es mal anders...Ich meinte die Antwort auf einen "Ping", also zuerst den 32 Byte Ping in das Netzwerk senden
21 31 00 20 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
als Antwort kommt vom Robot immer 32 Byte mit so etwas wie das hier:
21 31 00 20 00 00 00 00 03 4c 85 ee a4 58 9d f9 34 52 66 47 43 64 47 75 33 45 75 77 38 49 54 47
Byte 00-03: 04 Byte Typ oder Telegramm Kennung (21 31 00 20)
Byte 04-13: 10 Byte Robot Identifikationsnummer (00 00 00 00 03 4c 85 ee a4 58) bei jedem Robot anders!
Byte 14-15: 02 Byte irgendein Status, ist immer etwas anders (9d f9) evtl. der Akkustand?
Byte 16-31: 16 Byte, sieht bei mir aus als wären es ASCII Zeichen (evtl. ein Schlüssel?) aber immer die selben Zeichen.
Der Anfang eines Startkommandos an diesen Robot sieht dann so aus:
21 31 00 50 00 00 00 00 03 4c 85 ee a4 58 8d 02 0a 82 ...
Byte 00-03: 04 Byte Typ oder Telegramm Kennung (21 31 00 50)
Byte 04-13: 10 Byte Robot Identifikationsnummer aus der Ping Antwort (00 00 00 00 03 4c 85 ee a4 58).
Byte 14-15: 02 Byte irgendwas…
Byte 16-xx: xx Byte irgendwas... (evtl. verschlüsselt)?
-
Byte 12-15 ist definitiv ein zähler. Byte 4-11 könnte eine id sein, jedoch glaube ich, dass ich da auch eine Änderung drin hatte. Muss ich nochmal in meinen Aufzeichnungen gucken.
Gesendet von meinem E5823 mit Tapatalk
-
Dass in der ping Antwort ASCII Zeichen sind ist meiner Meinung nach Zufall.
Gesendet von meinem E5823 mit Tapatalk
-
Hallo,
vielleicht kann man es ja von einem anderen Produkt ableiten?
http://allmydroids.blogspot.de/2014/12/ … e.html?m=1
Gruß Marco
-
Also den TimeStamp hab ich gefunden.
http://www.epochconverter.com/hex
GMT: Fri, 03 Feb 2017 16:27:52 GMT
Your time zone: 3.2.2017, 17:27:52
Decimal timestamp/epoch: 1486139272
Kann das sein?
-
Kann mir jemand seine Seriennummer übermitteln und einen HexCode?
-
Also, ich würde die ersten Blöcke so interpretieren:
213100 5000000000 02f20d8f 5885a20f
Modell Modus Seriennr Timestamp(Epoch)
-
Also, ich würde die ersten Blöcke so interpretieren:
213100 5000000000 02f20d8f 5885a20f
Modell Modus Seriennr Timestamp(Epoch) `
5894af88 => new Date(0x5894af88 * 1000) => Fri Feb 03 2017 17:27:52 GMT+0100 (W. Europe Standard Time)Cool
Wenn man aber Modus erkennen kann, dass ist schon was: 2000000000 => Idle, 5000000000 => Running ?
Im Antwort vom Roboter, sollte noch Update für die Karte sein.
-
> 2131 0050 00000000 02f20d8f 5885a20f
2131 ist die Magic Number0050 Anzahl der Daten nach dem Header
00000000 unbekannt
02f20d8f serial number
5885a20f time stamp
-
Guten Abend,
das mit der 50 erscheint logisch.
Ich habe leider keinen solchen Sauger. Sendet der Xiaomi eigentlich auch Daten? Für eine Analyse fehlen mir noch die MAC Adresse, Seriennummer von solchen Teilen. In Handys von Xiaomi sind die Seriennummern z.B. auch Hexadezimal.
Gruß Marco
-
Für eine Analyse fehlen mir noch die MAC Adresse, Seriennummer `
Hab dir ne PN gesendet.Allerdings kann ich die HEX Codes nicht mappen. Vielleicht findest du was
vG Looxer
-
Als Idee. Man kann jetzt den Rest nehmen und versuchen immer ein bit zu ändern, bis das Gerät reagiert/nicht reagiert. So konnte man das Bild für wichtige und unwichtige Bits erstellen.
-
Hallo Bluefox,
leider ist es nicht so einfach. Die Nachrichten sind verschlüsselt. Einfaches ändern von Bits führt nur zu ungültigen Paketen. Hierauf reagiert das Gerät nicht. Wenn ich genau weiß, wie die Verschlüsselung funktioniert melde ich mich. Kämpfe gerade damit, dass der Air Purifier ein Softwareupdate bekommen hat und die Kombination mit Bluesrocks/Wireshark nicht mehr funktioniert.
-
Kurzer Zwischenstand:
Habe das Protokoll inzwischen entziffern können. Wie wir schon vermutet haben gibt es einen Head und verschlüsselte Daten. Die Daten sind mit AES verschlüsselt und mit einer MD5 Checksummp versehen. Nach dem entschlüsseln werden JSON-Daten sichtbar.
Alle MI Home Produkte, die Wifi verwenden, scheinen das Protokoll zu nutzen. Meinen Air Purifier kann ich jetzt ansprechen.
Um dasselbe für den vaccum zu machen (habe keinen) brauche ich folgende Pakete:
HELO + Antwort,
Saugen Starten,
Home und Pause.
Am liebsten wäre mir ein pcapng-File per PM.
Ich baue dann daraus ein Python-Skript. Dann kann sich jemand daran austoben und den Javascript-Adapter anpassen.
Gruß Gerhard 8-)