Het leek zo makkelijk, even een token achterhalen en gaan met die robot!
Deze tutorial
https://github.com/jghaanstra/com.xiaomi-miio/blob/master/docs/obtain_token.md gevolgd… maar werken ho maar. Oude versies van de app crashen, telefoon kreeg ik niet geroot.
Versie v5.4.54 (om de logfile direct uit te lezen) is nog steeds de installatie aan het afronden en de backup uitlezen is ook niet gelukt.
Was ik maar gewoon aan het eind begonnen met lezen zoals altijd, had me heel wat opties en gepuzzel bespaard.
Met de packet sender ging het namelijk best vlot. Download tooltje, kopieer de parameters, reset de wifi van de stofzuiger en gaan!
En dan krijg je die code en dan begint het gepuzzel….
ASCII: !1\00 \00\00\00\00\05\c5\8d@\00\00\8e,eYwHA1bJT9FbGVLu
HEX: 21 31 00 20 00 00 00 00 05 C5 8D 40 00 00 8E 2C 65 59 77 48 41 31 62 4A 54 39 46 62 47 56 4C 75
In the last 16 bytes (32 characters) of the devices response is the device token. Copy and save it somewhere.
https://github.com/jghaanstra/com.xiaomi-miio/blob/master/docs/obtain_token.md
De beschrijving zal vast exact beschrijven wat bedoelt wordt, maar toch begin ik te twijfelen wat nou de laatste 32 karakters of 16 bytes zijn
Puur naar de output gekeken zou je denken dat ‘eYwHA1bJT9FbGVLu’ de code is. Alleen dat zijn de laatste 16 karakters (van de ascii variant)
Als we deze code omzetten naar hex is dat ’65 59 77 48 41 31 62 4a 54 39 46 62 47 56 4c 75′
Dat zijn inderdaad de laatste 32 karakters van de HEX variant (spaties niet meegeteld!)
Helaas…
Na het ophalen van de token, dolle pret, slingers uit! Maar het werkt nog steeds niet. Wat blijkt, nadat je de stofzuiger opnieuw toevoegt in de xiaomi app wijzigt de token weer zodat je er niets aan hebt. Niet toevoegen aan de app is ook geen optie aangezien de stofzuiger dan niet in je netwerk zit en je hem ook niet aan kan sturen.
Dus weer terug naar de tekentafel en weer alle opties nalopen.
Het was me de laatste tijd wel opgevallen dat in de xiaomi app nieuwe landen/regio’s/ servers beschikbaar waren en iets als ‘europe’ niet meer bestond. Daar had ik weinig mee gedaan tot ik ‘ergens’ (geen idee waar in de zoektocht) de hint tegenkwam om de server in te stellen op iets wat in eerdere versies ook bestond.
Wat blijkt: Als je de oude versie installeert en je hebt een te nieuwe server ingesteld dan crasht de app. Tenminste, nadat ik in de app de server op china had gezet en daarna de oude versie geïnstalleerd draait het opeens wel.
In de oude app was de roborock meteen te vinden en na het toevoegen vond ik dit in de logfile:
SmartHome 623621:[DEBUG]-05-07 21:42:14.318 processResult in result={"code":0,"message":"ok","result":{"list":[{"did":"96832832","token":"735a383765416b674d3773343358374d","longitude":"0.00000000","latitude":"0.00000000","name":"Roborock Vacuum","pid":"0","localip":"xxx.xxx.xxx.xxx","mac":"7C:49:EB:A0:BF:61","ssid":"WIFI-SSID","bssid":"78:8A:20:DA:83:26","parent_id":"","parent_model":"","show_mode":1,"model":"roborock.vacuum.s5","adminFlag":1,"shareFlag":0,"permitLevel":16,"isOnline":true,"desc":"","extra":{"isSetPincode":0,"fw_version":"3.3.9_001720","needVerifyCode":0,"isPasswordEncrypt":0},"event":{"prop.fan_power":"75","prop.ota_state":"idle","prop.ota_state_ts":"1557258127"},"uid":xiaomiid,"pd_id":577,"password":"","p2p_id":"","rssi":-66,"family_id":0,"reset_flag":0}],"virtualModels":[{"model":"zhimi.airpurifier.m1","state":0,"url":""},{"model":"yunmi.waterpurifier.v2","state":0,"url":""},{"model":"zimi.powerstrip.v2","state":0,"url":""}]}}
Neem de code uit het ’token’ veld, pak het IP , vul het in de config en gaaaan!
Subtiele note:
Standaard wisselt de roborock nog wel eens tussen 2 IP adressen waardoor homeassistant hem niet kan vinden. Handig om dus het IP vast te zetten in je router.