XiaomiDevice: Unterschied zwischen den Versionen
Erste Version |
Tokenermittlung eingefügt, Installation ergänzt |
||
| Zeile 11: | Zeile 11: | ||
== Voraussetzungen == | == Voraussetzungen == | ||
Perl Libraries libjson-perl, libdigest-md5-perl, libcrypt-cbc-perl, libcrypt-ecb-perl (CPAN: Crypt::Cipher::AES oder Crypt::Rijndael_PP ) | Perl Libraries libjson-perl, libdigest-md5-perl, libcrypt-cbc-perl, libcrypt-ecb-perl (CPAN: Crypt::Cipher::AES oder Crypt::Rijndael_PP ) | ||
=== Token ermitteln === | |||
Das Problem ist folgendes: | |||
Wenn der Roboter mit dem WLAN verbunden wird, generiert er einen Token. Das ist ein Schlüssel, ohne den er sich nicht steuern lässt. Damit FHEM drauf zugreifen kann, benötigt man diesen Token. | |||
Mit den neueren Versionen der MiHome App klappt das Auslesen der Tokens leider nicht mehr. | |||
==== Auslesen mit dem tool token_extractor ==== | |||
Mit dem [https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor Tokem extractor von PiotrMachowski] gibt es ein Windows- und Python-Tool für das Terminal, mit dem man sich relativ einfach alle Token holen kann, zudem von allen Servern. | |||
Ich beschreibe hier nur kurz den Token-Vorgang, die Installation ist auf der GitHub-Seite beschrieben. | |||
* in einem Terminal das Programm aufrufen (getestet unter Linux) | |||
* Auswählen, wie das Token abgerufen werden soll ('''p'''asswort oder '''q'''r-code) | |||
* Eingabe der verlangten Daten (ich habe es mit den Zugangsdaten zur App gemacht;Achtung: beim Passwort erscheinen auch keine Platzhalter) | |||
* War die Eingabe (und das Login) erfolgreich, kommt eine Captcha-Abfrage. Das Bild ruft man mit '''ctrl+Mausklick''' auf den Link auf - die Anzeige erfolgt im Browser | |||
* Es erfolgt eine 2FA-Abfrage - der notwendige Code geht an die angegebene email-Addresse | |||
* Bei erfolgreichem Login erfolgt noch eine Server-Abfrage - drückt man hier nur die '''Enter'''-Taste, werden alle verfügbaren Server abgefragt. Als Ausgabe kommen entweder die Informationen der Geräte auf deinem Server, oder aber eine Fehlermeldung, daß auf dem entsprechenden Server kein Device existiert. | |||
Die Ausgabe sieht etwa so aus (in Auszügen):<syntaxhighlight> | |||
Devices found for server "cn" @ home "42500110xxxx": | |||
--------- | |||
NAME: Mi Standing Fan | |||
ID: 85701909 | |||
MAC: 7C:49:EB:0F:xx:xx | |||
IP: 192.168.xxx.xxx | |||
TOKEN: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | |||
MODEL: zhimi.fan.sa1 | |||
--------- | |||
Devices found for server "de" @ home "42500100xxxx": | |||
--------- | |||
NAME: Smartmi Standing Fan 2S | |||
ID: 11696xxxx | |||
MAC: 40:31:3C:BB:xx:xx | |||
IP: 192.168.xxx.xxx | |||
TOKEN: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | |||
MODEL: zhimi.fan.za4 | |||
No devices found for server "us" @ home "42500105xxxx". | |||
</syntaxhighlight> | |||
==== Auslesen bei Android Endgeräten ==== | |||
Ich gehe davon aus, dass der Staubsauger mit der original MiHome App eingebunden ist und funktioniert. (Ich habe bei der Einrichtung des Servers => "other" gewählt. Offenbar wollen neuere Staubsauger sich mit "China Mainland" nicht mehr verbinden. Tut hier an dieser Stelle zwar nichts zur Sache, aber vielleicht hilft es dem ein oder anderen. Wenn man die Region gewechselt hat, muss man auch den Staubsauger neu einbinden) | |||
* MiHome löschen | |||
* alte MiHome suchen (APKMirror z.B., Version 5.0.19 hat bei mir funktioniert, unsichere Quellen müssen erlaubt sein) | |||
* runtergeladene MiHome App öffnen und anmelden (sollte ganz normal den Sauger finden) | |||
* USB-Debugging am Handy einschalten (Entwickleroptionen...) | |||
* Handy mit USB Kabel und PC verbinden | |||
* [https://github.com/ultrara1n/MiToolkit/releases MiToolkit] 1.6 runterladen und öffnen | |||
* [https://github.com/ultrara1n/MiToolkit/releases MiToolkit] erzeugt nun am Handy ein Backup | |||
* anschließend zeigt es den Token direkt am PC an | |||
==== Wenn die Datenbank miio2.db kein Token enthält ==== | |||
[https://github.com/merdok/homebridge-xiaomi-fan/blob/master/obtain_token.md github] homebridge-xiaomi-fan bietet eine Methode für root-freie Android SmartPhones über das Logfile. | |||
Diese Methode funktioniert nur, wenn Sie die Mi Home App version v5.4.54 nutzen. | |||
* installieren Sie Mi Home App Version 5.4.54 | |||
* loggen Sie sich mit Ihrem Xiaomi Account ein | |||
* nutzen Sie den Dateiexplorer und gehen nach '''/sdcard/SmartHome/logs/Plug_Devicemanager/''' | |||
* finden Sie dort eine aktuelle Datei im Format yyyy-mm-dd.txt und öffnen Sie sie | |||
* ODER nutzen Sie adb pull /sdcard/SmartHome/logs/Plug_Devicemanager/, um alles auf den PC herunter zu laden | |||
* Suchen Sie eine Zeichenkette ähnlich der folgenden mit dem Gerätenamen: | |||
<syntaxhighlight lang="JSON"> | |||
{"did":"117383849","token":"90557f1373xxxxxxx8314a74d547b5","longitude":"x","latitude":"y","name":"Mi Robot Vacuum","pid":"0","localip":"192.168.88.68","mac":"40:31:3C:AA:BB:CC","ssid":"Your AP Name","bssid":"E4:8D:8C:EE:FF:GG","parent_id":"","parent_model":"","show_mode":1,"model":"rockrobo.vacuum.v1","adminFlag":1,"shareFlag":0,"permitLevel":16,"isOnline":true,"desc":"Zoned cleanup","extra":{"isSetPincode":0,"fw_version":"3.3.9_003460","needVerifyCode":0,"isPasswordEncrypt":0},"event":{"event.back_to_dock":"{\"timestamp\":1548817566,\"value\":[0]} | |||
</syntaxhighlight> | |||
* Dort finden Sie ''token'' | |||
==== Auslesen bei iOS Endgeräten ==== | |||
Zum Auslesen des Tokens mit iOS Endgeräten kann die Anleitung unter folgendem Link befolgt werden: [https://forum.smartapfel.de/forum/thread/370-xiaomi-token-auslesen/] | |||
'''Auslesen mit fhem / fhempy''' | |||
In fhem gibt es auch noch das [https://github.com/fhempy/fhempy/blob/master/README.md fhempy-System], dafür gibt es auch ein Modul zum Auslesen von Xiaomi-Token aus deren Cloud, u.a. auch das Token für unseren Mi-Vacuum. | |||
Anscheinend hat es aber in jüngerer Zeit Änderungen gegeben, daß auch der Weg über fhempy-token versperrt ist. | |||
== Installation == | == Installation == | ||
Das Modul ist seit 28.02.2018 ein offizielles Modul. Eine separates Installation ist nicht (mehr) notwendig. | |||
== Definition == | == Definition == | ||
<code>define <name> XiaomiDevice <Device-IP> <token></code> | |||
<code>attr Mi_Vacuum subType VacuumCleaner</code> | |||
== Besonderheiten einzelner Gerätetypen == | == Besonderheiten einzelner Gerätetypen == | ||
Aktuelle Version vom 28. Juni 2026, 09:00 Uhr
| XiaomiDevice | |
|---|---|
| Zweck / Funktion | |
| Steuerung von Xiaomi Geräten | |
| Allgemein | |
| Typ | Gerätemodul |
| Details | |
| Dokumentation | EN / DE Thema |
| Support (Forum) | Sonstige Systeme |
| Modulname | 72_XiaomiDevice.pm |
| Ersteller | Markus M. (Forum /Wiki) |
| Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! | |
Das Modul XiaomiDevice ermöglicht die Steuerung von Xiaomi Geräten wie z.B. Saug-/Wischrobotern, Luftreinigern und -befeuchtern.
Voraussetzungen
Perl Libraries libjson-perl, libdigest-md5-perl, libcrypt-cbc-perl, libcrypt-ecb-perl (CPAN: Crypt::Cipher::AES oder Crypt::Rijndael_PP )
Token ermitteln
Das Problem ist folgendes:
Wenn der Roboter mit dem WLAN verbunden wird, generiert er einen Token. Das ist ein Schlüssel, ohne den er sich nicht steuern lässt. Damit FHEM drauf zugreifen kann, benötigt man diesen Token.
Mit den neueren Versionen der MiHome App klappt das Auslesen der Tokens leider nicht mehr.
Auslesen mit dem tool token_extractor
Mit dem Tokem extractor von PiotrMachowski gibt es ein Windows- und Python-Tool für das Terminal, mit dem man sich relativ einfach alle Token holen kann, zudem von allen Servern.
Ich beschreibe hier nur kurz den Token-Vorgang, die Installation ist auf der GitHub-Seite beschrieben.
- in einem Terminal das Programm aufrufen (getestet unter Linux)
- Auswählen, wie das Token abgerufen werden soll (passwort oder qr-code)
- Eingabe der verlangten Daten (ich habe es mit den Zugangsdaten zur App gemacht;Achtung: beim Passwort erscheinen auch keine Platzhalter)
- War die Eingabe (und das Login) erfolgreich, kommt eine Captcha-Abfrage. Das Bild ruft man mit ctrl+Mausklick auf den Link auf - die Anzeige erfolgt im Browser
- Es erfolgt eine 2FA-Abfrage - der notwendige Code geht an die angegebene email-Addresse
- Bei erfolgreichem Login erfolgt noch eine Server-Abfrage - drückt man hier nur die Enter-Taste, werden alle verfügbaren Server abgefragt. Als Ausgabe kommen entweder die Informationen der Geräte auf deinem Server, oder aber eine Fehlermeldung, daß auf dem entsprechenden Server kein Device existiert.
Die Ausgabe sieht etwa so aus (in Auszügen):
Devices found for server "cn" @ home "42500110xxxx":
---------
NAME: Mi Standing Fan
ID: 85701909
MAC: 7C:49:EB:0F:xx:xx
IP: 192.168.xxx.xxx
TOKEN: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MODEL: zhimi.fan.sa1
---------
Devices found for server "de" @ home "42500100xxxx":
---------
NAME: Smartmi Standing Fan 2S
ID: 11696xxxx
MAC: 40:31:3C:BB:xx:xx
IP: 192.168.xxx.xxx
TOKEN: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MODEL: zhimi.fan.za4
No devices found for server "us" @ home "42500105xxxx".Auslesen bei Android Endgeräten
Ich gehe davon aus, dass der Staubsauger mit der original MiHome App eingebunden ist und funktioniert. (Ich habe bei der Einrichtung des Servers => "other" gewählt. Offenbar wollen neuere Staubsauger sich mit "China Mainland" nicht mehr verbinden. Tut hier an dieser Stelle zwar nichts zur Sache, aber vielleicht hilft es dem ein oder anderen. Wenn man die Region gewechselt hat, muss man auch den Staubsauger neu einbinden)
- MiHome löschen
- alte MiHome suchen (APKMirror z.B., Version 5.0.19 hat bei mir funktioniert, unsichere Quellen müssen erlaubt sein)
- runtergeladene MiHome App öffnen und anmelden (sollte ganz normal den Sauger finden)
- USB-Debugging am Handy einschalten (Entwickleroptionen...)
- Handy mit USB Kabel und PC verbinden
- MiToolkit 1.6 runterladen und öffnen
- MiToolkit erzeugt nun am Handy ein Backup
- anschließend zeigt es den Token direkt am PC an
Wenn die Datenbank miio2.db kein Token enthält
github homebridge-xiaomi-fan bietet eine Methode für root-freie Android SmartPhones über das Logfile.
Diese Methode funktioniert nur, wenn Sie die Mi Home App version v5.4.54 nutzen.
- installieren Sie Mi Home App Version 5.4.54
- loggen Sie sich mit Ihrem Xiaomi Account ein
- nutzen Sie den Dateiexplorer und gehen nach /sdcard/SmartHome/logs/Plug_Devicemanager/
- finden Sie dort eine aktuelle Datei im Format yyyy-mm-dd.txt und öffnen Sie sie
- ODER nutzen Sie adb pull /sdcard/SmartHome/logs/Plug_Devicemanager/, um alles auf den PC herunter zu laden
- Suchen Sie eine Zeichenkette ähnlich der folgenden mit dem Gerätenamen:
{"did":"117383849","token":"90557f1373xxxxxxx8314a74d547b5","longitude":"x","latitude":"y","name":"Mi Robot Vacuum","pid":"0","localip":"192.168.88.68","mac":"40:31:3C:AA:BB:CC","ssid":"Your AP Name","bssid":"E4:8D:8C:EE:FF:GG","parent_id":"","parent_model":"","show_mode":1,"model":"rockrobo.vacuum.v1","adminFlag":1,"shareFlag":0,"permitLevel":16,"isOnline":true,"desc":"Zoned cleanup","extra":{"isSetPincode":0,"fw_version":"3.3.9_003460","needVerifyCode":0,"isPasswordEncrypt":0},"event":{"event.back_to_dock":"{\"timestamp\":1548817566,\"value\":[0]}
- Dort finden Sie token
Auslesen bei iOS Endgeräten
Zum Auslesen des Tokens mit iOS Endgeräten kann die Anleitung unter folgendem Link befolgt werden: [1]
Auslesen mit fhem / fhempy
In fhem gibt es auch noch das fhempy-System, dafür gibt es auch ein Modul zum Auslesen von Xiaomi-Token aus deren Cloud, u.a. auch das Token für unseren Mi-Vacuum.
Anscheinend hat es aber in jüngerer Zeit Änderungen gegeben, daß auch der Weg über fhempy-token versperrt ist.
Installation
Das Modul ist seit 28.02.2018 ein offizielles Modul. Eine separates Installation ist nicht (mehr) notwendig.
Definition
define <name> XiaomiDevice <Device-IP> <token>
attr Mi_Vacuum subType VacuumCleaner
Besonderheiten einzelner Gerätetypen
Saug-/Wischroboter
Besonderheiten bei Xioami Vaccum mop Geräten werden (seit Dezember 2020) in diesem Forenthema behandelt.
Links
- Forenthema Xiaomi WiFi Devices Modul