NEWS
[Frage] Xiaomi Vacuum cleaner
-
ich habe den Token erneut ausgelesen und einfach aus dem Tokenfenster kopiert. Damit sollte eigentlich ein Formatierungsfehler ausgeschlossen sein. Nach dem Neustart hat mit das log file folgendes angezeigt:
! ````
mihome-vacuum.0 2017-08-20 20:57:45.547 info Connected
mihome-vacuum.0 2017-08-20 20:57:45.545 warn Timedifference between Mihome Vacuum and ioBroker: -2 Sec
mihome-vacuum.0 2017-08-20 20:57:45.401 info Crate state clean_home for controlling by cloud Adapter
mihome-vacuum.0 2017-08-20 20:57:45.397 info Expretmode disabled, states deleded
mihome-vacuum.0 2017-08-20 20:57:45.378 info starting. Version 0.5.7 in /opt/iobroker/node_modules/iobroker.mihome-vacuum, node: v6.11.2
host.pi-iobroker 2017-08-20 20:57:43.676 info instance system.adapter.mihome-vacuum.0 started with pid 9027
host.pi-iobroker 2017-08-20 20:57:41.204 info instance system.adapter.mihome-vacuum.0 terminated with code 0 (OK)
mihome-vacuum.0 2017-08-20 20:57:41.164 info terminating
host.pi-iobroker 2017-08-20 20:57:41.118 info stopInstance system.adapter.mihome-vacuum.0 killing pid 5733
host.pi-iobroker 2017-08-20 20:57:41.116 info stopInstance system.adapter.mihome-vacuum.0
host.pi-iobroker 2017-08-20 20:57:41.100 info object change system.adapter.mihome-vacuum.0Hier steht etwas von 2 sec. Zeitdifferenz.
-
Ja das wird aber durch den Adapter angefangen er berechnet dynamisch die zeitdifferenz und passt sie an. Daran kann es nicht mehr liegen.
Gesendet von meinem Handy
-
Ich will mich hier mal kurz einklinken:
Ich habe den Adapter installiert und bin bisher sehr zufrieden. Fehler konnte ich bisher nicht feststellen. Aber irgendwie bin ich zu doof, um folgendes einzustellen:
mihome-vacuum.0.info.state zeigt den aktuellen Status an… aber leider nur als Zahl und nicht als beschreibender Text. Genauso bei dem Error status. Unter Reiter objekte steht aber bei dem Status zb gerade Charging(8). Im ViS bekomme ich aber leider nur die 8 angezeigt. wie bekomme ich das hin bzw mit welchem Widget ?
-
Ich will mich hier mal kurz einklinken:
Ich habe den Adapter installiert und bin bisher sehr zufrieden. Fehler konnte ich bisher nicht feststellen. Aber irgendwie bin ich zu doof, um folgendes einzustellen:
mihome-vacuum.0.info.state zeigt den aktuellen Status an… aber leider nur als Zahl und nicht als beschreibender Text. Genauso bei dem Error status. Unter Reiter objekte steht aber bei dem Status zb gerade Charging(8). Im ViS bekomme ich aber leider nur die 8 angezeigt. wie bekomme ich das hin bzw mit welchem Widget ? ` Ich habe es über valuelist gemacht und dort die Texte den Nummern zugeteilt.
Gesendet von meinem Handy
-
wie bekomme ich das hin bzw mit welchem Widget ? ` Hilft das http://forum.iobroker.net/viewtopic.php?p=74510#p74510 ?
-
Ich habe hier nicht alles gelesen, aber dachte mir, dass es ja eigentlich möglich sein muss automatisch an das Token zu kommen… die App tut es ja auch.
Ist den Entwicklern dieser Link bekannt? https://github.com/OpenMiHome/mihome-bi ... ROTOCOL.md
Sollte es damit nicht möglich sein, vor der Einbindung in die App (sprich bei nicht initialisiertem Roboter) das Token abzugreifen?
-
Ich habe hier nicht alles gelesen, aber … `
Nein. Wir veranstalten diesen Zirkus schließlich nicht zum Spaß.Wenn du lesen möchtest, siehe Firmware Änderungen ca. Version 3071
-
@markus-:Wir veranstalten diesen Zirkus schließlich nicht zum Spaß.
Wenn du lesen möchtest, siehe Firmware Änderungen ca. Version 3071 `
Glaube ich sofort, wo finde ich diese Änderungen zum Nachlesen?Ich habe nur die Anmerkung auf der von mir verlinkten Seite gesehen. Daher die Idee vor der Einrichtung über die App selbst das Token abzugreifen. Oder habe ich hier einen Denkfehler?
Was ist mit der Alternative, die App komplett durch den Adapter zu ersetzen? Also die Einrichtung und Befehle selbst zu übernehmen? Kommt das eventuell in Frage?
-
@markus-:Wir veranstalten diesen Zirkus schließlich nicht zum Spaß.
Wenn du lesen möchtest, siehe Firmware Änderungen ca. Version 3071 `
Glaube ich sofort, wo finde ich diese Änderungen zum Nachlesen?Ich habe nur die Anmerkung auf der von mir verlinkten Seite gesehen. Daher die Idee vor der Einrichtung über die App selbst das Token abzugreifen. Oder habe ich hier einen Denkfehler?
Was ist mit der Alternative, die App komplett durch den Adapter zu ersetzen? Also die Einrichtung und Befehle selbst zu übernehmen? Kommt das eventuell in Frage? ` Leider nein. Zur Einrichtung verbindet sich der Roboter mit der cloud. Serverseitig wird dann ein token Tausch angestoßen und dem Server mitgeteilt, dieser wird dann von der app abgeholt. Ohne cloud kein einrichten und ohne einrichten keine Steuerung. So schließt sich der Kreis in den wir leider nicht reinschauen können. So als die Kommunikation mit der cloud geknackt ist. Wird die Einrichtung auch einfacher aber bis dahin gibt es leider keine Möglichkeit…
Gesendet von meinem Handy
-
Zur Einrichtung verbindet sich der Roboter mit der cloud. Serverseitig wird dann ein token Tausch angestoßen und dem Server mitgeteilt, dieser wird dann von der app abgeholt. `
Ok, das macht Sinn, danke für die Erklärung! -
So als die Kommunikation mit der cloud geknackt ist. Wird die Einrichtung auch einfacher aber bis dahin gibt es leider keine Möglichkeit… `
Was ziemlich genau nie passieren wird, da meinen Recherchen nach niemand mit dem nötigen Know-how daran arbeitet.
Kann hier zufällig jemand Chinesisch und mal danach suchen?
-
@markus-:So als die Kommunikation mit der cloud geknackt ist. Wird die Einrichtung auch einfacher aber bis dahin gibt es leider keine Möglichkeit… `
Was ziemlich genau nie passieren wird, da meinen Recherchen nach niemand mit dem nötigen Know-how daran arbeitet.
Kann hier zufällig jemand Chinesisch und mal danach suchen? `
Ja das musste ich auch schon feststellen, schaue eigentlich einmal in der woche nach ob sich was getan hat… aber leider nix, verstehe ich garnicht, bei mienem landroid hat es keine 3 Monate gedauert -
Ich hatte am Wochenende mal versucht, die APK zu dekompilieren. Mein Decompiler-Service des Vertrauens liefert leider nur einen Fehler. Lokal hängt sich jadx auf.
-
Ich hatte am Wochenende mal versucht, die APK zu dekompilieren. Mein Decompiler-Service des Vertrauens liefert leider nur einen Fehler. Lokal hängt sich jadx auf. `
Welchen hast du probiert? Hat bei mir schon mal geklappt, glaube hier: http://www.javadecompilers.com/apkIch hab dann aber prompt die Keywords zur Verschlüsselung nicht gefunden.
Die verschlüsselte Kommunikation kannst du dir zb mit sslkillswitch (iOS + Jailbreak) und einem lokalen Proxy (Charles) ansehen.
Wird aber nicht viel helfen. Beim Login sind bereits diverse Binary Parameter mit im Call, alles ist komplett signiert und ab dem Punkt ist sämtliche Kommunikation ein- und ausgehend nochmal intern verschlüsselt.
Ich bezweifle deshalb sogar, dass man den Login hinbekommt, selbst wenn man den Call gültig signieren könnte.
Und dann würde immer noch folgendes fehlen:
-
welcher der zurückkommenden Keys wird in welcher Form benutzt
-
wie wird technisch genau verschlüsselt
-
wie wird der Call signiert
Das alles sollte man theoretisch aus dem Code sehen können.
Ich müsste aber viel zu viel Zeit reinstecken ohne zu wissen ob es am Ende überhaupt klappt.
Ist hier niemand der sich mit sowas auskennt und zu viel Zeit hat?
-
-
@markus-:Welchen hast du probiert? Hat bei mir schon mal geklappt, glaube hier: http://www.javadecompilers.com/apk `
Genau der! Hat iregendeine dex-Datei nicht gefunden.Bei Tradfri und G-Homa hats geklappt, die App lief in Bluestacks aufm PC, Traffic konnte ich per Wireshark loggen und den Code nebenher nachvollziehen.
-
@markus-:Welchen hast du probiert? Hat bei mir schon mal geklappt, glaube hier: http://www.javadecompilers.com/apk
Genau der! Hat iregendeine dex-Datei nicht gefunden.
Probier doch mal eine ältere Version vom Mi-Home apk
-
Werde ich die Tage mal ausprobieren.
-
Bezüglich der Kommunikation hatte ich damals den Eindruck, dass es sich um eine OAuth2 Kommunikation handelt. Wenn man den Key fürOAuth2 hat, sollte es helfen. Durch den Key kann der Hersteller bestimmte Clients zulassen. Genau, dass soll auch das Ziel bei MiHome sein. Jeder Gerätehersteller hat einen eigenen Key. Damit kann der Gerätehersteller nicht auf die Daten der anderen Hersteller zugreifen. Das erklärt auch gut die stark abweichende Firmware der Geräte
-
Bezüglich der Kommunikation hatte ich damals den Eindruck, dass es sich um eine OAuth2 Kommunikation handelt. `
Nein, das hat damit nichts zu tun.
Zumindest nicht bei App zu Cloud, Gerät zu App werden wir nie belauschen können.
Das Problem ist die proprietäre Verschlüsselung sämtlicher Kommunikation der App zusätzlich zu SSL.
-
@markus-:Gerät zu App werden wir nie belauschen können.
Das Problem ist die proprietäre Verschlüsselung sämtlicher Kommunikation der App zusätzlich zu SSL. `
Sofern die Methode irgendwann bekannt ist, könnte das mit einem speziellen Wireshark-Plugin funktionieren. Dazu muss die Android-App im Emulator auf dem PC laufen. Aber ja, gelinde gesagt recht aufwändig…