[Modul] Roborock / Xiaomi Vacuum Cleaner

Hat es mit GetTokenFromXiaomi funktioniert?

Ich habe gerade reingeguckt und nun hat er das schon selber hinbekommen.
Wenn man lange genug wartet scheint es auch so zu gehen?

Jetzt kann ich das nicht mehr testen :frowning:

Servus!

Nachdem ich nun lange diese Diskussionen verfolgt habe, habe ich heute meinen Roborock S6 Pure mal eingebunden. Ich betriebe ihn im Gast-WLAN, da ich keinem chinesischen Produkt mit Internetanbindung Zugang zu meinem Private LAN (wo auch IP-Symcon läuft) geben möchte. Und hier ergibt sich ein Problem. Der Token kann zwar von der Xiaomi Cloud ausgelesen werden, dennoch meldet das Modul „Es wurde kein Roborock unter der IP Adresse und mit dem Token gefunden.“ Liegt es daran, dass das Modul zunächst versucht, den Roborock anzupingen oder gar die Daten direkt vom Roborock per LAN abfragt?
Mir sind die Kommunikationsbeziehungen nicht klar und bei den Voraussetzungen steht nichts vom gleichen Netzwerk/VLAN.
Den Apps (egal ob Roborock oder Xiaomi) ist es egal, in welchem Netz (WLAN, LTE) sie sich befinden. Sie holen die Infos immer von der Cloud.

Also wie macht es dieses Modul? Cloud oder direkte Verbindung im lokalen LAN?

Die Kommunikation findet nur mit der Cloud statt.
Es muss die IP Adresse angegeben werden, unter der der Roborock in der Cloud angemeldet ist. Dort wird geprüft, ob ein Roborock unter der Adresse angemeldet ist.

Das ist schon mal gut. Somit ist es egal, in welchem Netz der Roborock ist. Das dachte ich mir schon.

Genau das habe ich gemacht (192.168.179.3) und der „Xiaomi Login Test“ liefert auch ein OK zurück. Im Debug Log steht auch alles richtig drin:

16.01.2024, 22:04:13 | getApiIO | url: https://de.api.io.mi.com/app/home/device_list, params: {„key“:„data“,„value“:„{"getVirtualModel":false,"getHuamiDevices":0}“}
16.01.2024, 22:04:14 | getDeviceStatus | device_list: {„code“:0,„message“:„ok“,„result“:{„list“:[{„did“:„416556578“,„token“:„#####################“,„longitude“:„0.0“,„latitude“:„0.0“,„name“:„Roborock S6 Pure“,„pid“:„0“,„localip“:„192.168.179.3“,„mac“:„#:#:#:#“,„ssid“:„####“,„bssid“:„#:#:#:#“,„parent_id“:„“,„parent_model“:„“,„show_mode“:1,„model“:„roborock.vacuum.a08“,„adminFlag“:1,„shareFlag“:0,„permitLevel“:16,„isOnline“:true,„desc“:„Ger\u00e4t online „,„extra“:{„isSetPincode“:0,„pincodeType“:0,„fw_version“:„3.5.8_1368“,„needVerifyCode“:0,„isPasswordEncrypt“:0},„uid:########,„pd_id“:####,„password“:““,„p2p_id“:“„,„rssi“:-41,„family_id“:0,„reset_flag“:0}]}}
16.01.2024, 22:04:14 | GetTokenFromXiaomi | deviceData[0]: {„did“:“######„,„name“:„Roborock S6 Pure“,„token“:“#####################"}
16.01.2024, 22:04:14 | GetTokenFromXiaomi | Token ‚#####################‘ found

Dennoch wird in der Instanzkonfiguration „Es wurde kein Roborock unter der IP Adresse und mit dem Token gefunden.“ angezeigt. Das ist klar im Widerspruch zum Debug Log.

Wenn ich den Roborock ins gleiche Netz wie IP-Symcon umziehe und die IP auf die neue konfiguriere, funktioniert es. Es scheint also irgendwo ein weiterer Test stattzufinden, ob der Roborock erreichbar ist. Mit den Apps funktioniert es unabhängig von den Netzen.

Der Login selber funktioniert und es wird auch ein Token bezogen.

Aber beim Versuch, mittels der Methode „miIO.info“ Informationen über das Gerät zu bekommen, schlägt etwas fehl.

Du kannst es auch nachstellen mit

Roborock_GetDeviceInfo(...);

Was kommt da bei dir im Debug?

17.01.2024, 22:34:04 | send                  | {"InstanceID":45391,"token":"#############","ip":"192.168.179.3","immediate":true,"method":"miIO.info","params":[]}
17.01.2024, 22:34:09 | send (return)         | false
17.01.2024, 22:34:09 | ValidateConfiguration | 206

Ich habe schon versucht, im Code nachzuvollziehen, warum es fehlschlägt, jedoch nix plausibles gefunden.

Ich habe mal eine Frage zum Modul. Ich habe einen Tesvor X500 und ein Wemos Mini das ich mit Tasmota geflasht habe. Ich kann den Roboter über die Tasmota Console steuern. Ist es mit dem Modul möglich den Roboter einzubinden?

Hi,
vermutlich eher mit dem Tasmota-Modul.

Ralf

Moin,
beim Saugen heute kamen vom S8 seit langem mal wieder Meldungen obwohl ich wissentlich nichts geändert habe:

26.01.2024 09:01:28 | 00000 | CUSTOM  | Roborock MapFileParser - __construct | The blocktype 29 is not yet supported. (header length: 12, data length: 6)

Modul ist vom 13.12.23 also aktuell. Seit dem 13.12. musste der Arme 2mal in der Woche sein Bestes geben.

Ralf

Hallo Zusammen,

ich habe zwei Sauger, einmal den S8 und einen Uralten Xiaomi.

Beide werden in Unterschiedlichen Installation jeweils durch einen VPN Tunnel angesprochen.
Ping geht durch, aber es kommt immer Token falsch.

Installation 1:
5 Sauger, einer durch einen Tunnel.
Der alte Xiaomi V1 ist durch den Tunnel per Ping erreichbar und über die App Steuerbar.
Token Falsch.

Instalation 2:
3 Sauger. Roborock Vioami laufen ohne Probleme
der S8 durch den Tunnel, per ok, App ok aber Token falsch.

Woran könnte das liegen? Der IP-Symcon Server hat bei allen Installation in der Firewall „any, any, any“

danke für ein paar Tipps!

Debug Installation 1:

Ist ja ein ähnliches Problem wie vor deinem Beitrag.
Die Geräte scheinen anfragen aus fremden Netzen nicht zu beantworten. Das lokale Protokoll scheint wirklich nur im gleichen Subnetz zu funktionieren.

Michael

Gibt es irgend eine Chance das zum laufen zu bekommen?

Wäre schon irgendwie extrem cool.
So könnte ich Steuern wenn ich in der Werkstatt war mach sauber, außer es hat geregnet, dann könnte es ja vom Auto nass sein :slight_smile:

Wüsste nicht wie ich sowas mit Hausmitteln hinbekommen kann

Nicht wenn das Gerät nicht antwortet (die Antwort fehlt ja im Debug bei dir).
Michael

Hallo,

ich bekomme beim Reinigen immer diesen Fehler (alle ca. 20 Sekunden):

18.03.2024, 16:20:09 | TimerPool            | Roborock S7+ (RoborockTimerUpdate_Map): 
Notice: getApiIO: responsecode: 401, URL: https://de.api.io.mi.com/app/home/getmapfileurl, effective URL: https://de.api.io.mi.com/app/home/getmapfileurl, result: {"code":3,"message":"auth err"} in C:\ProgramData\Symcon\modules\.store\fonzo.ipsymconroborock\Roborock Robot\module.php on line 3577

Ich kann mich mit den Zugangsdaten sowohl an der App, als auch auf der Website/Cloud anmelden. Im Modul beim Login-Test kommt aber immer „Nicht erfolgreich“. Ich auch schon mal das Passwort geändert, mit dem gleichen Ergebnis „Nicht erfolgreich“.
Mir ist aufgefallen, dass ich beim Anmelden der App und der Website jetzt plötzlich einen Code zugeschickt bekomme. Das war früher nicht so.

Grüße
Proxima

Momentan habe ich noch keine rechte Idee.

Die Fehlermeldung kommt beim Abholen der Karte. Wenn du die Option „Kartenbild“ deaktivierst, sollte die Meldung nicht mehr kommen.

Kam denn schon mal das Kartenbild?

Schau auch mal in den Debug der Testfunktion „Xiaomi Login Test“. Gibt es da eine Fehlermeldung?

Hallo,

im Debug:

18.03.2024, 22:13:17 | GetTokenFromXiaomi: ERROR | Login failed, please check user/password at https://account.xiaomi.com

wenn ich das mache erscheint nach Eingabe von User und Passwort:

Die Konto-Authentifizierung kommt bei jedem anmelden. Das Kartenbild kam zuletzt am 01.03.2024 (wobei der Roboter nicht jeden Tag/Woche läuft).

Schwieriges Thema. Kann es vielleicht sein, dass du bei der Konto-Authentifizierung Methode etwas anderes eingestellt hast als vorher.

Im Modul wird bei jeder Anmeldung eine zufällig generierte ClientID mitgegeben. Die will der Server scheinbar bestätigt haben.

Die Frage ist, warum das vorher bei dir nicht aufgetreten ist und auch von anderen habe ich da bislang nichts gehört. Kannst du mal bei deinen Kontoeinstellungen nachschauen, ob dir da etwas auffällt?

Guten Morgen,

seit geraumer Zeit bekomme ich ab und an diesen Fehler:

In der Webfront selbst zeigt er mir aber alles richtig an…

Jemand eine Idee?

VG

Spontan habe ich da noch keine Idee.
Wie sieht denn die komplette Meldung aus?

Ich schaue mir das dann mal an.