NEWS
[Frage] Xiaomi Vacuum cleaner
-
Danke, jetzt sollte der komplette Auszug von Start des Adapters sein:
! ````
mihome-vacuum.0 2017-08-20 17:17:06.186 debug sendMsgRaw >>> 2131005000000000034c7b675999a7f24b1364bed98a37a627db945b1fe39c6b11eb7ba5a35afa791ab686570193dcabbbcce0da41a0bb2723ec62a3d43545a8b9a2cda11773a775d16659f31312ce98
mihome-vacuum.0 2017-08-20 17:17:06.186 debug sendMsg >>> {"id":1005,"method":"get_clean_summary"}
mihome-vacuum.0 2017-08-20 17:17:06.184 debug lastid{"get_status":1003,"get_consumable":1004,"get_clean_summary":1005,"get_clean_record":0,"X_send_command":0}
mihome-vacuum.0 2017-08-20 17:17:05.185 debug sendMsgRaw >>> 2131005000000000034c7b675999a7f1796c4a325ea9fe379ac046c2ea901c872746950fe9c9db082fe141afd134508e829e37ec6dcff29314f4038b6157e523f370133043b0e00f57572b2e533525ad
mihome-vacuum.0 2017-08-20 17:17:05.185 debug sendMsg >>> {"id":1004,"method":"get_consumable"}
mihome-vacuum.0 2017-08-20 17:17:05.183 debug lastid{"get_status":1003,"get_consumable":1004,"get_clean_summary":1002,"get_clean_record":0,"X_send_command":0}
mihome-vacuum.0 2017-08-20 17:17:04.213 debug Receive <<< Helo <<< 2131002000000000034c7b675999a7f0ffffffffffffffffffffffffffffffff
mihome-vacuum.0 2017-08-20 17:17:04.183 debug sendMsgRaw >>> 2131005000000000034c7b675999a7f02036f98fcd8a6dad3bbf96736169bad1fc1650e518718539c05f2476e2d26ae53b4e6729e45262942a0dee132e721b8585a78631b155fadf48d567482f8232dd
mihome-vacuum.0 2017-08-20 17:17:04.182 debug sendMsg >>> {"id":1003,"method":"get_status"}
mihome-vacuum.0 2017-08-20 17:17:04.182 debug lastid{"get_status":1003,"get_consumable":1001,"get_clean_summary":1002,"get_clean_record":0,"X_send_command":0}
mihome-vacuum.0 2017-08-20 17:17:04.181 debug request params all: 60 Sec
mihome-vacuum.0 2017-08-20 17:16:44.247 debug Receive <<< Helo <<< 2131002000000000034c7b675999a7dcffffffffffffffffffffffffffffffff
mihome-vacuum.0 2017-08-20 17:16:24.273 debug Receive <<< Helo <<< 2131002000000000034c7b675999a7c8ffffffffffffffffffffffffffffffff
mihome-vacuum.0 2017-08-20 17:16:06.160 debug sendMsgRaw >>> 2131005000000000034c7b675999a7b688b01622da848c8bbb757ba77e072823aaa021e9485ea2147922700c96721f033bcac905f3435292ace1e76802cb791a3a3f0b6ecf80f0d022a3fca861d4675f
mihome-vacuum.0 2017-08-20 17:16:06.160 debug sendMsg >>> {"id":1002,"method":"get_clean_summary"}
mihome-vacuum.0 2017-08-20 17:16:06.158 debug lastid{"get_status":1000,"get_consumable":1001,"get_clean_summary":1002,"get_clean_record":0,"X_send_command":0}
mihome-vacuum.0 2017-08-20 17:16:05.160 debug sendMsgRaw >>> 2131005000000000034c7b675999a7b52606684cfcaa4adf465f91e319ae16286b46910167181cbe6152a72786a653f76535b040d9975332ee9f3f339e75015b554426d9a7294088fd690818d79b4d92
mihome-vacuum.0 2017-08-20 17:16:05.159 debug sendMsg >>> {"id":1001,"method":"get_consumable"}
mihome-vacuum.0 2017-08-20 17:16:05.154 debug lastid{"get_status":1000,"get_consumable":1001,"get_clean_summary":0,"get_clean_record":0,"X_send_command":0}
mihome-vacuum.0 2017-08-20 17:16:04.203 debug Receive <<< Helo <<< 2131002000000000034c7b675999a7b4ffffffffffffffffffffffffffffffff
mihome-vacuum.0 2017-08-20 17:16:04.152 debug sendMsgRaw >>> 2131005000000000034c7b675999a7b4ccad5ab5aed36596870ddc542f14757f5296d8137adfc7b6e82a2cb3a5085cb6233e21e41d941ff73332ab81666e5b8acf3648e493a8ca2a4f4d6cdbab00d395
mihome-vacuum.0 2017-08-20 17:16:04.151 debug sendMsg >>> {"id":1000,"method":"get_status"}
mihome-vacuum.0 2017-08-20 17:16:04.142 debug lastid{"get_status":1000,"get_consumable":0,"get_clean_summary":0,"get_clean_record":0,"X_send_command":0}
mihome-vacuum.0 2017-08-20 17:16:04.140 debug request params all: 60 Sec
mihome-vacuum.0 2017-08-20 17:15:44.236 debug Receive <<< Helo <<< 2131002000000000034c7b675999a7a0ffffffffffffffffffffffffffffffff
mihome-vacuum.0 2017-08-20 17:15:24.165 debug Receive <<< Helo <<< 2131002000000000034c7b675999a78cffffffffffffffffffffffffffffffff
mihome-vacuum.0 2017-08-20 17:15:04.311 debug inMem message mihome-vacuum.0.* mihome-vacuum.0.info.connection val=true, ack=true, ts=1503242104305, q=0, from=system.adapter.mihome-vacuum.0, lc=1503242104305
mihome-vacuum.0 2017-08-20 17:15:04.303 info Connected
mihome-vacuum.0 2017-08-20 17:15:04.301 debug Receive <<< Helo <<< 2131002000000000034c7b675999a778ffffffffffffffffffffffffffffffff
mihome-vacuum.0 2017-08-20 17:15:04.141 debug server started on 0.0.0.0:53421
mihome-vacuum.0 2017-08-20 17:15:04.113 info Crate state clean_home for controlling by cloud Adapter
mihome-vacuum.0 2017-08-20 17:15:04.110 info Expretmode disabled, states deleded
mihome-vacuum.0 2017-08-20 17:15:04.099 info starting. Version 0.5.7 in /opt/iobroker/node_modules/iobroker.mihome-vacuum, node: v6.11.2
mihome-vacuum.0 2017-08-20 17:15:04.010 debug statesDB connected
mihome-vacuum.0 2017-08-20 17:15:03.936 debug objectDB connected
host.pi-iobroker 2017-08-20 17:15:02.450 info instance system.adapter.mihome-vacuum.0 started with pid 5657
host.pi-iobroker 2017-08-20 17:15:02.426 info object change system.adapter.mihome-vacuum.0
host.pi-iobroker 2017-08-20 17:14:52.522 info instance system.adapter.mihome-vacuum.0 terminated with code 0 (OK)
mihome-vacuum.0 2017-08-20 17:14:52.487 debug inMem message mihome-vacuum.0.* mihome-vacuum.0.info.connection val=false, ack=true, ts=1503242092481, q=0, from=system.adapter.mihome-vacuum.0, lc=1503242092481
host.pi-iobroker 2017-08-20 17:14:52.465 info stopInstance system.adapter.mihome-vacuum.0 killing pid 5644
host.pi-iobroker 2017-08-20 17:14:52.464 info stopInstance system.adapter.mihome-vacuum.0
host.pi-iobroker 2017-08-20 17:14:52.463 info object change system.adapter.mihome-vacuum.0
mihome-vacuum.0 2017-08-20 17:14:40.040 debug inMem message mihome-vacuum.0.* mihome-vacuum.0.info.connection val=true, ack=true, ts=1503242080035, q=0, from=system.adapter.mihome-vacuum.0, lc=1503242080035
mihome-vacuum.0 2017-08-20 17:14:40.033 info Connected
mihome-vacuum.0 2017-08-20 17:14:40.031 debug Receive <<< Helo <<< 2131002000000000034c7b675999a760ffffffffffffffffffffffffffffffff
mihome-vacuum.0 2017-08-20 17:14:39.927 debug server started on 0.0.0.0:53421
mihome-vacuum.0 2017-08-20 17:14:39.900 info Crate state clean_home for controlling by cloud Adapter
mihome-vacuum.0 2017-08-20 17:14:39.898 info Expretmode disabled, states deleded
mihome-vacuum.0 2017-08-20 17:14:39.887 info starting. Version 0.5.7 in /opt/iobroker/node_modules/iobroker.mihome-vacuum, node: v6.11.2
mihome-vacuum.0 2017-08-20 17:14:39.803 debug statesDB connected
mihome-vacuum.0 2017-08-20 17:14:39.735 debug objectDB connected
host.pi-iobroker 2017-08-20 17:14:38.185 info instance system.adapter.mihome-vacuum.0 started with pid 5644
host.pi-iobroker 2017-08-20 17:14:35.718 info instance system.adapter.mihome-vacuum.0 terminated with code 0 (OK)
mihome-vacuum.0 2017-08-20 17:14:35.654 info terminating
host.pi-iobroker 2017-08-20 17:14:35.620 info stopInstance system.adapter.mihome-vacuum.0 killing pid 5537
host.pi-iobroker 2017-08-20 17:14:35.618 info stopInstance system.adapter.mihome-vacuum.0
host.pi-iobroker 2017-08-20 17:14:35.602 info object change system.adapter.mihome-vacuum.0geändert: code in code-tags und spoiler gesetzt (****Homoran, Mod.****) ` Also der Adapter läuft ordnungsgemäß und der zeitstempel passt auf die sec. Du kannst versuchen den token über ein Editor zu kopieren um eine falsche Formatierung zu vermeiden. Hast du mal 5 Minuten gewartet nach Adapter Start?
Gesendet von meinem Handy
-
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.