Xiaomi-Token auslesen
Wenn man Besitzer eines Xiaomi Gateways ist, braucht man das Token, dass das Gateway mit dem Cloudserver austauscht, um sich zu identifizieren und das Gateway in Homeassistant einzubinden. Das Token steht nirgendwo im Klartext zur Verfügung und wenn man seine Daten vergessen hat, ein neues Handy erstanden oder das Backup versaubeutelt, muss man das erneut ziehen können. Ich hatte schon erfolglos versucht, das über eine MITM-Attacke aus dem Handy zu pipen, dummerweise hat Xiaomi seine Hausaufgaben gemacht.
So geht es dann trotzdem:
root@razorblade:~# pip3 install pycryptodome pybase64 requests
Die Voraussetzungen schaffen und einen Codeschnipsel herunterladen.
root@razorblade:~# wget https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor/raw/master/token_extractor.py
Man sollte allerdings seine Login Credentials noch wissen. Zumindest das Passwort, die ID lässt sich aus der App abfragen, dort befindet sie sich im Profil.
root@razorblade:~# python3 token_extractor.py
Username (email or user ID):
XXXXXXXXXX
Password:
*******
Server (one of: cn, de, us, ru, tw, sg, in, i2) Leave empty to check all available:
deLogging in…
Logged in.Devices found for server „de“:
———
NAME: Xiaomi Gateway
ID: XXXXXXX
IP: 192.168.1.69
TOKEN: ($wert)
MODEL: lumi.gateway.mgl03
———
NAME: Temperatur Wohnzimmer
ID: blt.4.140nj2d44gg00
IP: (externe IP)
TOKEN: ($wert)
MODEL: miaomiaoce.sensor_ht.t2
———
NAME: Temperatur Esszimmer
ID: blt.4.140nk3384gk00
IP: (externe IP)
TOKEN: ($wert)
MODEL: miaomiaoce.sensor_ht.t2
———
NAME: Temperatur oben
ID: blt.4.140nku4m8gc00
IP: (externe IP)
TOKEN: ($wert)
MODEL: miaomiaoce.sensor_ht.t2
———
NAME: Temperatur Schlafzimmer
ID: blt.4.140nluuu8gc00
IP: (externe IP)
TOKEN: ($wert)
MODEL: miaomiaoce.sensor_ht.t2
———Press ENTER to finish
Das wars schon, nun kann man das Token in Homeassistant in die Xiaomi-Integration eintragen und das Gateway integrieren.