NEWS
[Frage] Xiaomi Vacuum cleaner
-
Ich habe es jetzt endlich geschafft, die Android-App zu dekompilieren. 64bit-Java mit vergrößertem Heap war notwendig, dass jadx nicht abstürzt.
Wer den Code will, bitte PN, da ich davon ausgehe dass ich den hier nicht posten sollte. Vorhanden sind die Versionen
-
4.2.5
-
4.3.11 `
Wie sieht es mit der Karte aus?
-
-
Wie sieht es mit der Karte aus?
`
Danach hab ich tatsächlich gesucht, aber nix gefunden. Vielleicht hab ich auch an der falschen Stelle gesucht, ich hab nämlich allgemein fast nix zum Staubsauger ("rockrobo") gefunden. -
Hallo zusammen,
ich habe mich extra hier angemeldet nachdem ich den gesamten Thread durchgelesen habe und immer wieder erstaunt bin wieviel Enthusiasmus hier in solche Dinge gelegt wird.
Leider bin ich nicht der Programmierer, würde aber trotzdem gerne von euren Erkenntnissen in meiner Hausautomation profitieren. Daher versuche ich gerade den Sauger in ein einfaches php Script zu integrieren, scheitere allerdings schon ganz am Anfang.
Meinen Token habe ich bereits und diverse Pakete mit Wireshark mitgeschnitten habe ich auch schon, leider reagiert der Sauger nicht auf die einfache Wiederholung der Pakete (also wenn ich sie nochmal sende) <- liegt wahrscheinlich am Timestamp
Daher würde ich sie gerne in php selber zusammen bauen.
Mir ist ehrlich gesagt der Aufbau der Telegramme nicht klar.
Was ich bis jetzt verstanden habe ist folgendes:
Der Vacuum wird per UDP auf port 54321 angesprochen.
1. 21310020ffffffffffffffffffffffffffffffffffffffffffffffffffffffff sendet einen Reset an den Robotor, darauf antwortet er auch immer
2. will man einen Befehl senden, als Beispiel "start" muss das Telegram ja zusammen gebaut werden aus:
2131 -> magic byte immer gleich
0050 -> length immer gleich bei Befehlen
00000000 -> unknown
xxxxxxxx -> Serialnumber
59CCBC17 -> aktueller Timestamp
16 byte -> checksum
? byte -> data
16 byte -> token
16 byte -> key
16 byte -> iv
Die checksum ergibt sich aus md5sum(magicbyte+length+unknown+serial+timestamp+token+data)
Der key ergibt sich aus md5sum(token)
Der iv ergibt sich aus md5sum(key+token)
Allerdings spielt ja auch die Verschlüsselung eine Rolle, ich hatte was von aes-128-cbc gelesen.
Wie gesagt, mir geht es nur um den Zusammenbau der udp Pakete, der Token ist ja bekannt.
Wie komme ich an "data" und sind meine Annahmen oben so richtig?
Danke
-
data müsste die eigentliche Nachricht sein, siehe auch hier: https://github.com/MeisterTR/XiaomiRobo … rotocol.md
Mögliche Kommandos sind hier beschrieben: https://github.com/MeisterTR/XiaomiRobotVacuumProtocol
-
Wie sieht es mit der Karte aus?
Danach hab ich tatsächlich gesucht, aber nix gefunden. Vielleicht hab ich auch an der falschen Stelle gesucht, ich hab nämlich allgemein fast nix zum Staubsauger ("rockrobo") gefunden.
In der App ist auch nichts, die Plugins werden dynamisch nachgeladen.
Die aktuelle Version hast du gerade per PM bekommen, leg sie bitte einfach mit in deinen Dropbox Ordner
-
Na dann kann ich lange suchen
Wird später hinzugefügt!
Edit: Ist drin. Wer den Link noch nicht hat, einfach PN schicken
-
Hallo Zusammen.
Habe gestern noch einige neue Geräte des Herstellers Xiaomi eingelernt (Smart Gateway, Cube, Bewegungssensor und Fensterkontakte). Nun funzt der Staubsauger nicht mehr über ioBroker obwohl die Verbindung steht (grünes Licht). Ich habe nochmal den Token ausgelesen und eingegeben, aber ich sehe keine aktuellen Stati in den Objekten und ich kann den Sauger auch nicht mehr steuern, nur noch über die App.
Weiß jemand woran das liegen kann?
:?:
-
Hi Leute,
mal so nebenbei gefragt… braucht man unbedingt die Logs für Connected/Disconnected? Das passiert einfach zu oft und müllt mein Log zu. :roll:
21-09-_2017_11-49-26.png
Grüße,
ldittmar `
Können die Logs adapter.log.info('Connected') und adapter.log.info('Disconnected') weg? Wäre echt super toll. Danke!
Grüße,
ldittmar
-
Können die Logs adapter.log.info('Connected') und adapter.log.info('Disconnected') weg? Wäre echt super toll. Danke! `
Tadaa: https://github.com/ioBroker/ioBroker.mi … um/pull/25 -
Heute Regnet es den ganzen Tag, Tochter ist bei Oma und Frau näht. Also hatte ich viel zeit mir Milliarden Buchstaben anzuschauen. Alles unter vorbehalt, da ich js erst seit einem halben jahr und Java noch keine Berührungspunkte hatte.
Die Saugkarte wird anscheinen über eine url aufgerufen und scheint ein BMP zu sein meine erste vermutung oder wird generriert aus den daten des links
Serverkommunikation läuft wohl über die "SmarthomeAPI" Dateien in der App würde ich jetzt sagen:
SmartHomeOpenApi, SmartHomeOAuthHttpsApi, SmartHomeAesApi, SmartHomeHttpsApi
soweit meine Vermutungen
-
Die Saugkarte wird anscheinen über eine url aufgerufen und scheint ein BMP zu sein `
Die URL bekommen wir, allerdings kann sie nur aufgerufen werden wenn sie signiert ist.
Es ist eine Pixel Grafik, allerdings passt der Header zu keinem bekannten Format.
-
Hi,
ich habe auch einen Xiaomi Robotersauger und diesen seit 2 Wochen im Einsatz. So weit bin ich ganz zufrieden (er macht das was er soll).
Allerdings stört mich die Kommunikation mit dem Hersteller. Aus diesem Grund hab ich etwas recherchiert und bin auf Python-mirobo (https://github.com/rytilahti/python-miio) gestossen.
Kennt das Jemand zw. gibt es Erfahrungen damit?
Würde dem Staubsauger gerne den I-Netzugriff verweigern und die komplette Steuerung über das Python-mirobo erledigen (Vorteil ich kann es auch in mein Smart-Home einbinden).
Kann mir jemand etwas darüber berichten und gibt es eine Möglichkeit z.B. die Karte aufzurufen und Timereinstellungen auf dem Staubsauger zu ändern?
Danke
-
Wieso nimmst du nicht den Adapter für iobroker den es dafür gibt? Die saugkarte gibt es bis lang nur, wenn der Sauger Internet hat und du die app nutzt.
Gesendet von meinem Handy
-
Ich habe dem Sauger auch in der Fritzbox den Internet-Zugang verweigert und arbeite mit dem ioBroker-Adapter. Geht prima. Die App nutze ich nicht.
-
Ich habe dem Sauger auch in der Fritzbox den Internet-Zugang verweigert und arbeite mit dem ioBroker-Adapter. Geht prima. Die App nutze ich nicht. `
Kann ich die timerfunktion darüber einstelle und sind die Daten für die Kartendarstellung über iobroker auswertbar?
-
Kann ich die timerfunktion darüber einstellen `
Ja, es gibt z.B. im Beitrag von @looxer01 http://forum.iobroker.net/viewtopic.php?p=74510#p74510 eine vis-Visualisierung, die das kann. Steuern, suchen, Zustand ansehen, Verbrauchsmaterial abfragen und rücksetzen und dann gibt es noch einen konfigurierbaren Wochenfahrplan. Man muß halt vis installiert haben und muß noch ein paar widgets runterladen. Wahrscheinlich gibt es in diesem Thread noch weitere Visualisierungen, ber die genannte ist mir eben unter die Finger gekommen und funktioniert.und sind die Daten für die Kartendarstellung über iobroker auswertbar? `
Das leider nicht. Das scheint nur die App zu können.Ist ein nettes Gimmick. Braucht man allerdings nur einmal, um zu sehen wo er überall hinkommt. Wenn man das will, muß man ihm einmal das Internet erlauben und die App mitlaufen lassen. Dann einen Screenshot machen. Den kann man dann auswerten und ggf. für interessierte Zeitgenossen abspeichern.
-
So…
beim dritten Anlauf habe ich es endlich auch hinbekommen gleich zwei Staubsauger einzubinden. Allerdings hat es bei mir nicht auf Anhieb geklappt. Musste ein bißchen tricksen.
Hatte zunächst den Adapter v0.56 drauf. http://technikzeugs.de/xiaomi-mirobot-staubsaugroboter-mit-iobroker-und-echo-bzw-alexa-fernsteuern/ via iPhone Backup lief auch noch halbwegs easy.
Habe aber einen Moment gebraucht bis ich gemerkt habe, dass das Token mit der letzten Firmware 96 statt 32 Stellen hatte. Nach ein wenig Recherche hatte ich dann festgestellt, dass es im Repository mittlerweile die Adapter Version 0.58 gibt die laut Beschreibung die 96 Char-Tokens unterstützen sollte. Also Adapter neu installiert und Token eingefügt. Erst dachte ich das eingabefeld ist einfach zu kurz, aber dann habe ich festgestellt, dass obwohl in der Adapter Ansicht des ioBrokers v0.58 angezeigt wurde der Adapter immernoch nur 32 Stellen verarbeiten konnte. Bei weiteren Recherechen bin ich dann auf folgender Seite auf https://forum.smartapfel.de/forum/thread/370-saugroboter-xiaomi-mi-robot-vacuum-token-auslesen/?pageNo=10 gestoßen. Entsprechend dem dortigen Hinweis habe ich die http://aes.online-domain-tools.com/ zurück gerechnet.
Kleiner Hinweis: Der Schlüssel im Keyfeld besteht aus 32 Nullen…nur falls euch das wie mir nicht direkt aufgefallen ist.
Danach solltet ihr einen 32 stelligen Token erhalten. Einfach die beiden Zeilen von links nach rechts und oben nach unten (Zeile 2 hinter Zeile 1) zusammensetzen, Leerzeichen entfernen...und dann sollte es klappen.
Mit den ermittelten Tokens waren bei mir die Objekteinträge für den Adapter im ioBroker ruckzuck gefüllt und der Sauger fuhr los.
Hoffe das hilft anderen hier auch etwas weiter.
-
Ja das Eingabefeld in der Config ist noch zu Kurz, dennoch sollte der 96 Charakter Lage token verarbeitet werden. Das wurde nun eigentlich mehrfach getestet. Was kam denn für eine Fehlermeldung? Screenshot? Nur mit der Aussage geht nicht… Kann man leider das Problem nicht beheben.
Gesendet von meinem Handy
-
Also als ich noch den 0.56 Adapter drauf hatte kam kein Reply vom Staubsauger, was im Nachgang ja auch logisch erscheint, da das 96er Token nicht verarbeitet werden konnte. Sprich das Log sah so aus wie bei anderen hier auf S.56:
` > mihome-vacuum.0 2017-08-17 19:55:38.553 debug Receive <<< Helo <<< 213100200000000003d941d45995d7a0ffffffffffffffffffffffffffffffff
mihome-vacuum.0 2017-08-17 19:55:18.582 debug Receive <<< Helo <<< 213100200000000003d941d45995d78cffffffffffffffffffffffffffffffff
mihome-vacuum.0 2017-08-17 19:55:00.489 debug sendMsgRaw >>> 213100500000000003d941d45995d7796b01db07545e87e764cca53fba0266e79b2cb1b46fe3a2bb1f2975629a206d6e8408e7a06874e0e1ebb7d8b0b9ffe480b5100b2bfcd973af8be6fd4ac30ce39d
mihome-vacuum.0 2017-08-17 19:55:00.489 debug sendMsg >>> {"id":1003,"method":"get_clean_summary"}
mihome-vacuum.0 2017-08-17 19:55:00.489 debug lastid{"get_status":1001,"get_consumable":1002,"get_clean_summary":1003,"get_clean_record":0,"X_send_command":0,"app_start":1000}
mihome-vacuum.0 2017-08-17 19:54:59.489 debug sendMsgRaw >>> 213100500000000003d941d45995d778d3bd8c9bf454167b0bef2a81b9a6b42bd00103addb77b3b67b0e5a747647bc3f7625805e83bc3afdbf57b9512d4ed8657dceb73175afde0dc68227cc2334437c
mihome-vacuum.0 2017-08-17 19:54:59.489 debug sendMsg >>> {"id":1002,"method":"get_consumable"}
mihome-vacuum.0 2017-08-17 19:54:59.489 debug lastid{"get_status":1001,"get_consumable":1002,"get_clean_summary":0,"get_clean_record":0,"X_send_command":0,"app_start":1000}
mihome-vacuum.0 2017-08-17 19:54:58.512 debug Receive <<< Helo <<< 213100200000000003d941d45995d778ffffffffffffffffffffffffffffffff
mihome-vacuum.0 2017-08-17 19:54:58.488 debug sendMsgRaw >>> 213100500000000003d941d45995d777bf78b415a181ce9daba4a4af41a9495c51761b53365999df7ea4d04c2240914e77fa2dd70a5cf6e680594ea86488045774c532d73c3432f1fc9ce52a8344a564
mihome-vacuum.0 2017-08-17 19:54:58.488 debug sendMsg >>> {"id":1001,"method":"get_status"}
mihome-vacuum.0 2017-08-17 19:54:58.487 debug lastid{"get_status":1001,"get_consumable":0,"get_clean_summary":0,"get_clean_record":0,"X_send_command":0,"app_start":1000}
mihome-vacuum.0 2017-08-17 19:54:58.487 debug request params all: 60 Sec
mihome-vacuum.0 2017-08-17 19:54:38.660 debug Receive <<< Helo <<< 213100200000000003d941d45995d764ffffffffffffffffffffffffffffffff
mihome-vacuum.0 2017-08-17 19:54:25.017 debug inMem message mihome-vacuum.0.* mihome-vacuum.0.control.start val=true, ack=true, ts=1502992465016, q=0, from=system.adapter.mihome-vacuum.0, lc=1502991719866
mihome-vacuum.0 2017-08-17 19:54:25.016 debug sendMsgRaw >>> 213100500000000003d941d45995d756d30c6d6629bacb8b191973528e53ad44fa0713c8297c7a91cfdd6173669368987b20153a61ffed5744ca0ea12cc679404ee56026d80dc34fa2da7949b93c7ba1
mihome-vacuum.0 2017-08-17 19:54:25.015 debug sendMsg >>> {"id":1000,"method":"app_start"}
mihome-vacuum.0 2017-08-17 19:54:25.014 debug lastid{"get_status":0,"get_consumable":0,"get_clean_summary":0,"get_clean_record":0,"X_send_command":0,"app_start":1000}
mihome-vacuum.0 2017-08-17 19:54:25.014 debug stateChange mihome-vacuum.0.control.start {"val":true,"ack":false,"ts":1502992465012,"q":0,"from":"system.adapter.admin.0","lc":1502991719866}
mihome-vacuum.0 2017-08-17 19:54:25.013 debug inMem message mihome-vacuum.0.* mihome-vacuum.0.control.start val=true, ack=false, ts=1502992465012, q=0, from=system.adapter.admin.0, lc=1502991719866
mihome-vacuum.0 2017-08-17 19:54:18.576 debug Receive <<< Helo <<< 213100200000000003d941d45995d750ffffffffffffffffffffffffffffffff
mihome-vacuum.0 2017-08-17 19:53:58.513 debug inMem message mihome-vacuum.0.* mihome-vacuum.0.info.connection val=true, ack=true, ts=1502992438509, q=0, from=system.adapter.mihome-vacuum.0, lc=1502992438509
mihome-vacuum.0 2017-08-17 19:53:58.508 info Connected
mihome-vacuum.0 2017-08-17 19:53:58.508 warn Timedifference between Mihome Vacuum and ioBroker: -250508 Milliseconds
mihome-vacuum.0 2017-08-17 19:53:58.508 debug Receive <<< Helo <<< 213100200000000003d941d45995d73cffffffffffffffffffffffffffffffff
mihome-vacuum.0 2017-08-17 19:53:58.479 debug server started on 0.0.0.0:53421 `
Jetzt mit der der Adapterversion 0.58 wird beim einfügen des 96er Tokens aber quasi auch nichts mehr rausgesendet an den Sauger wenn ich das richtig sehe:
` > mihome-vacuum.0 2017-10-07 22:22:02.817 info Create state clean_home for controlling by cloud adapter
mihome-vacuum.0 2017-10-07 22:22:02.813 info Expert mode disabled, states deleded
mihome-vacuum.0 2017-10-07 22:22:02.798 info starting. Version 0.5.8 in /opt/iobroker/node_modules/iobroker.mihome-vacuum, node: v6.11.1
host.loxberry 2017-10-07 22:22:01.499 info instance system.adapter.mihome-vacuum.0 started with pid 2965
host.loxberry 2017-10-07 22:21:59.092 info instance system.adapter.mihome-vacuum.0 terminated with code 0 (OK)
mihome-vacuum.0 2017-10-07 22:21:59.021 info terminating
host.loxberry 2017-10-07 22:21:58.982 info stopInstance system.adapter.mihome-vacuum.0 killing pid 2931
host.loxberry 2017-10-07 22:21:58.981 info stopInstance system.adapter.mihome-vacuum.0
host.loxberry 2017-10-07 22:21:58.979 info object change system.adapter.mihome-vacuum.0
cloud.0 2017-10-07 22:19:32.217 info Request devices
mihome-vacuum.0 2017-10-07 22:18:47.793 warn Time difference between Mihome Vacuum and ioBroker: -1 sec
mihome-vacuum.0 2017-10-07 22:18:47.697 info Create state clean_home for controlling by cloud adapter
mihome-vacuum.0 2017-10-07 22:18:47.692 info Expert mode disabled, states deleded
mihome-vacuum.0 2017-10-07 22:18:47.677 info starting. Version 0.5.8 in /opt/iobroker/node_modules/iobroker.mihome-vacuum, node: v6.11.1
host.loxberry 2017-10-07 22:18:45.992 info instance system.adapter.mihome-vacuum.0 started with pid 2931
host.loxberry 2017-10-07 22:18:45.967 info object change system.adapter.mihome-vacuum.0 `
Vielleicht hilft der Screenshot hier auch noch
3104_mi_vacuum_adapter.png -
habe gerade ein pull request gesendet, die zeilenlänge war noch auf 32 begrenzt… nun sollte e3s funktionieren