hmm, wüsste ich nichts von, habs aber grad probiert, war auch tatsächlich in der APP auch abgemeldet. hat aber leider nicht funktioniert, login auf website und APP geht, baustein aber nicht
Ankündigung
Einklappen
Keine Ankündigung bisher.
Xiaomi / Roboroc Baustein 19001929
Einklappen
X
-
Die haben die Authentifizierung vollständig geändert, mit 2 FA und zusätzlich Link.
Ich hab das Skript hier abgeändert, damit die Credentails ausgegeben werden.
Das Ding lädt ihr runter und braucht auch python3 auf dem Rechner.
https://github.com/PiotrMachowski/Xi...n_extractor.py
Dann sucht ihr diese Funktion (Aktuell Zeile 131):
Code:def execute_api_call_encrypted(self, url, params): def execute_api_call_encrypted(self, url, params): headers = { "Accept-Encoding": "identity", "User-Agent": self._agent, "Content-Type": "application/x-www-form-urlencoded", "x-xiaomi-protocal-flag-cli": "PROTOCAL-HTTP2", "MIOT-ENCRYPT-ALGORITHM": "ENCRYPT-RC4", } cookies = { "userId": str(self.userId), "yetAnotherServiceToken": str(self._serviceToken), "serviceToken": str(self._serviceToken), "locale": "en_GB", "timezone": "GMT+02:00", "is_daylight": "1", "dst_offset": "3600000", "channel": "MI_APP_STORE" } millis = round(time.time() * 1000) nonce = self.generate_nonce(millis) signed_nonce = self.signed_nonce(nonce) fields = self.generate_enc_params(url, "POST", signed_nonce, nonce, params, self._ssecurity) response = self._session.post(url, headers=headers, cookies=cookies, params=fields) if response.status_code == 200: decoded = self.decrypt_rc4(self.signed_nonce(fields["_nonce"]), response.text) return json.loads(decoded) return None
Code:print ("serviceToken: "+self._serviceToken) print ("SSec: "+self._ssecurity) print ("Uid:"+str(self.userId)) output = f"{self._serviceToken}\n{self._ssecurity}\n{self.userId}" print(output)
Code:def execute_api_call_encrypted(self, url, params): headers = { "Accept-Encoding": "identity", "User-Agent": self._agent, "Content-Type": "application/x-www-form-urlencoded", "x-xiaomi-protocal-flag-cli": "PROTOCAL-HTTP2", "MIOT-ENCRYPT-ALGORITHM": "ENCRYPT-RC4", } print ("serviceToken: "+self._serviceToken) print ("SSec: "+self._ssecurity) print ("Uid:"+str(self.userId)) output = f"{self._serviceToken}\n{self._ssecurity}\n{self.userId}" print(output) cookies = { "userId": str(self.userId), "yetAnotherServiceToken": str(self._serviceToken), "serviceToken": str(self._serviceToken), "locale": "en_GB", "timezone": "GMT+02:00", "is_daylight": "1", "dst_offset": "3600000", "channel": "MI_APP_STORE" } millis = round(time.time() * 1000) nonce = self.generate_nonce(millis) signed_nonce = self.signed_nonce(nonce) fields = self.generate_enc_params(url, "POST", signed_nonce, nonce, params, self._ssecurity) response = self._session.post(url, headers=headers, cookies=cookies, params=fields) if response.status_code == 200: decoded = self.decrypt_rc4(self.signed_nonce(fields["_nonce"]), response.text) return json.loads(decoded) return None
Aufruf:
Code:python3 token_extractor.py -uXXXX -pYYYY -sde
YYYY= Passwort
Nachdem ihr die Captcha und die URL aufgerufen habt, gibt das Skript dann den Auth-Token aus. Ist dann irgendwas was so aussieht:
asdfoiuartuhrtuiz
fsidu48==
weouirweui
Also, 3 Zeilen mit Zeilenumbrüche.
Das kopiert ihr nun in Edomi rein, wichtig ist, dass die Zeilenumbrüche stimmen. Das ist dann der Xiamo Cloud Token, was dem LBS an E7 übergeben werden muss.
Danach LBS über E1 mit "1" im Live-Modus triggern und schauen, ob wieder alles geht.
Kommentar
-
edit; erst grade jetzt dein post gesehen.... werde testen, merci für deine hilfe
hab jetzt mal edomi neu gestartet, die log einträge haben sich verändert, aber es geht leider immer noch nicht
lbs log
HTML-Code:2025-10-13 22:10:42 274038 16395 Kritisch Login failed.{"notificationUrl":"https:\/\/account.xiaomi.com\/fe\/service\/identity\/authStart?sid=xiaomiio&context=D2MR_[---lange kryptische Zeichenfolge---]&_locale=de_CH","result":"ok","code":0,"miDemo":0,"captchaUrl":null,"description":"\u6210\u529f","location":"","securityStatus":16,"pwd":0,"child":0,"desc":"\u6210\u529f"} 2025-10-13 22:10:42 276133 16395 Kritisch Login fehlgeschlagen! 2025-10-13 22:10:42 276283 16395 Debug cloud->isAccessible:N-E10=-E11= 2025-10-13 22:10:42 276374 16395 Kritisch IP/Token leer! Baustein muss richtig konfiguriert werden! Abbruch 2025-10-13 22:10:42 278584 16395 Debug Ausführungszeit: 2.5475239753723 [s]
HTML-Code:2025-10-13 22:10:41 103512 ? 16395 Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19001929.php | Fehlercode: 2 | Zeile: 946 | rand() expects exactly 2 parameters, 1 given
Zuletzt geändert von mmarkus; 13.10.2025, 21:26.
Kommentar
-
Nachtrag. Die Cloud ist nur notwendig, wenn die Map benutzt werden soll. Wer den LBS offline laufen lassen will, braucht die IP-Adresse vom Roboter und Roboter-Token. Diese Informationen werden auch vom token_extractor ausgegeben.
Heisst: Wer die Cloud-Map weiterhin nutzen will:
1) Xiaomi-Cloud-Token an E7 übergeben
2) E2+E3 = Leer lassen
Wer den Roboter offline ohne Map nutzen will:
Den Token-extractor verwenden und IP-Adresse und Roboter-Token rauskopieren.
1) E2,E3, E7 leer lassen
2) E10 = IP vom Roboter
3) E11 = Token vom Roboter
Dann lässt sich dieser komplett ohne Cloud nutzen, allerdings entfällt leider die Map.
Kommentar
Kommentar