NEWS
[Frage] Xiaomi Vacuum cleaner
-
Alternativ bin Ich gerade dabei das python Script in js zu überführen. `
Ich hab auch schon mal angefangen das Script nach Node zu portieren.Da ich aber keine Ahnung von Python, den Grundlagen von Crypto und im Moment wenig Zeit habe, werde ich wohl frühestens nächstes Wochenende fertig werden und testen.
Wie weit bist du denn mit der Konvertierung?
Kannst du vielleicht schon was zur Verfügung stellen?
-
so, habe
1. robo reset
2. token per …-info neu ausgelesen
3. und dann in cmd folgende Fehlermeldung
filename="bild1.jpg" index="0">~~klappt noch nicht bei mir.
Anm: wenn ich als id: 2514 eingebe kommt die gleiche Fehlermeldung
-
Anbei mal ne Anleitung wie es bei mir bis dahin geklappt hat (auf win7 rechner)
(der Befehl zum start des robo klappt noch nicht - deshalb hab ich diesen ersteinmal weggelassen)
1\. Python installieren 2\. cmd als Admin aufrufen - get-pip.py Datei besorgen und unter python27 Verzeichnis speichern - Eingabe: cd\python27 - Eingabe: python get-pip.py - Eingabe: cd scripts - Eingabe: pip install cryptography 3\. Python aufrufen und xpn.py laden 4\. Wenn Fehlermeldung: "Your indentation mixes tabs and spaces" dann - Edit -> Select All -> Format: Untabify Region -> Nummer 8 eingeben 5\. cmd aufrufen - xpn.py -h (kommt die Hilfe; wenn ja dann ok) 6\. robo reset 7\. per wlan mit robo verbinden, bei mir "rockrobo vacuum ...." - ip prüfen, bei mir 192.168.8.1 8\. in cmd Eingabe: python xpn.py -info - angezeigt wird der token: (diesen unbedingt aufschreiben) 9\. dann per "mi home"app dem robo das heimnetz zuweisen. 10\. in cmd zur Kontrolle Eingabe: python xpn.py -info - angezeigt wird nun die von der fritzbox zugewiesenen ip und als Token: ffff.... (dies ist richtig; weil der richtige token nicht mehr angezeigt wird)
@meitertr oder @gst66
Bitte mal drüber schauen ob das alles so richtig ist.
mfg
Dieter
Nachtrag:
Die dateien könnte ich ja noch anhängen (txt jeweils umändern in py).
-
Wie wäre es das Skript & so in ein git-repo hinzufügen, wäre dann einfacher zu kooperieren plus updaten? Vielen Dank für euer Mühe, werde das heute ausprobieren!
-
@meitertr oder @gst66
Bitte mal drüber schauen ob das alles so richtig ist. `
Leider muss ich zugeben, dass mein Pythonisch nicht mehr so gut ist. Und ich so auf Anhieb nichts finden kann, bis zum senden läuft es ja scheinbar normal durch, nur das senden scheint nicht zu funktionieren. Vielleicht kann gst666 helfen.@mc-hollin: ich bin noch nicht weit. habe heute morgen angefangen. Hatte im Vorfeld auch noch nichts mit AES zu tun und muss mich da erst durch lesen und meine Defizite in Python verringern.
@gst666: Kann es sein dass für das Programm die Anwesenheit des Roboters im Wlan erforderlich ist? hab ihn gerade mit lerem Akku neben mir stehen und ich kann keine Nachrichten mehr dekodieren. :shock:
-
so, habe
1. robo reset
2. token per …-info neu ausgelesen
3. und dann in cmd folgende Fehlermeldung
bild1.jpg
klappt noch nicht bei mir.
Anm: wenn ich als id: 2514 eingebe kommt die gleiche Fehlermeldung `
Hallo zusammen,
mein Name ist Kay und bin neu hier. Habe auch den Xiaomi Robot und benötige den Akkustand für mein SmartHome. Bin wie bahnuhr an dem Punkt an dem ich die Fehlermeldung vom Python Script erhalte. Läuft momentan auf Win7, da ich das Cryptography nicht auf die schnelle auf meinen Raspis installieren konnte. Was bedeutet denn die Fehlermeldung die bahnur auf dem Bild zeigt ?
Gruß Kay
-
Die ID hat keinerlei Auswirkungen. Sie muss nur angegeben werden. Sie dient dazu, zu erkennen, ob die Antwort zu dem zuvor gesendeten Text gehört.
-
Toller Fehler. Ist ein Fehler beim Abfangen des Fehlers. Was für ein Trottel programmiert denn so etwas. Da muss ich mir mal an den Ohren ziehen.
Teste doch bitte mal, ob es sich ändert, wenn Du ausdrücklich die IP des Robot angibst (mit -ip x.x.x.x).
Müssen dann mal schauen, ob der Fehler beim Senden, oder beim Empfangen auftritt.
Gratulation zu Deiner Auswertung der Befehle. Spannend finde ich, ob wir irgendwann auch mal die Karte verstehen werden. Ich glaube ich brauche auch so ein Ding.
-
was denn für eine Fernbedienung ?
Gibt es eine solche für den xiaomi vacuum ? `
Das ist vermutlich die Fernbedienung wo Du den Roboter selbst steuern könntest -
Gratulation zu Deiner Auswertung der Befehle. Spannend finde ich, ob wir irgendwann auch mal die Karte verstehen werden. Ich glaube ich brauche auch so ein Ding. `
Gratulation von meiner Seite auch, es ist sehr hilfreich! Ich baue mir gerade eine Python-Bibliotek & einen Client womit man das alles steuern kann (mein Ziel ist schließlich das mit Home Assistant zu verbinden).@gst666 ich benutze deinen Kryptocode hier, hoffentlich ist das in Ordnung. Über die Karte, sie wird anscheinbar nicht über das gleiche Protokoll übertragen
edit: Danke ebenso für Deine Mitteilungen @Meistertr, sie waren wirklich echt hilfreich
Hier eine kleine Abschnitt von meinem Mitschnitt, wo zu sehen ist wie get_map_v1 ohne Netzverbindung (gar nicht) funktioniert:
TO DEV >> {'id': 1648, 'method': 'get_map_v1'} FROMDEV << {'result': ['retry'], 'id': 1648} TO DEV >> {'id': 1649, 'method': 'get_status'} FROMDEV << {'result': [{'msg_ver': 4, 'msg_seq': 79, 'state': 8, 'battery': 100, 'clean_time': 52, 'clean_area': 1217500, 'error_code': 0, 'map_present': 1, 'in_cleaning': 0, 'fan_power': 60, 'dnd_enabled': 1}], 'id': 1649} TO DEV >> {'id': 1650, 'method': 'get_map_v1'} FROMDEV << {'result': ['retry'], 'id': 1650} TO DEV >> {'id': 1651, 'method': 'get_status'} FROMDEV << {'result': [{'msg_ver': 4, 'msg_seq': 80, 'state': 8, 'battery': 100, 'clean_time': 52, 'clean_area': 1217500, 'error_code': 0, 'map_present': 1, 'in_cleaning': 0, 'fan_power': 60, 'dnd_enabled': 1}], 'id': 1651} TO DEV >> {'id': 1652, 'method': 'get_map_v1'} FROMDEV << {'result': ['retry'], 'id': 1652} TO DEV >> {'id': 1653, 'method': 'get_consumable'} FROMDEV << {'result': [{'main_brush_work_time': 31255, 'side_brush_work_time': 31255, 'filter_work_time': 31255, 'sensor_dirty_time': 2642}], 'id': 1653} TO DEV >> {'id': 1654, 'method': 'get_consumable'} FROMDEV << {'result': [{'main_brush_work_time': 31255, 'side_brush_work_time': 31255, 'filter_work_time': 31255, 'sensor_dirty_time': 2642}], 'id': 1654}
-
<u>ACHTUNG</u>: Wer Nachrichten encodieren will: Habe gerade auf meinem Handy die die Gesendeten Datenpakete nachgeschaut. wo vor wenigen Tagen noch die UDP Nachrichten gesendet wurden, werden nun nur noch verschlüsselte Nachrichten an den xiaomi Server geschickt, ich glaube die haben die UDP verbindung von der App gekappt also nicht die app updaten…
in Bluestack habe ich noch die version 4.0.8, die wollte sicher gerade updaten, konnte es noch rechtzeitig verhindern, ab version 4.0.11 keine UDP mehr...
-
Toller Fehler. Ist ein Fehler beim Abfangen des Fehlers. Was für ein Trottel programmiert denn so etwas. Da muss ich mir mal an den Ohren ziehen.
Teste doch bitte mal, ob es sich ändert, wenn Du ausdrücklich die IP des Robot angibst (mit -ip x.x.x.x).
Müssen dann mal schauen, ob der Fehler beim Senden, oder beim Empfangen auftritt.
Gratulation zu Deiner Auswertung der Befehle. Spannend finde ich, ob wir irgendwann auch mal die Karte verstehen werden. Ich glaube ich brauche auch so ein Ding. `
Wenn ich die IP Adresse mit angebe erhalte ich folgendes:
C:\Python27>python xpn.py -token '4c4a645a4630696c314e56484e464737' -ip '192.168.0.8' -cmd '{"id":4966,"method":"get_status"}' Error Code: 11001 Messge: getaddrinfo failed
Habe aus dem Excelfile von Meistertr schon alle Status Befehle durch. Immer das gleiche.
Gruß Kay
-
Die Fehlermeldung ist schon besser. Sie besagt, dass er anscheinend die URL in eine IP-Adresse umwandeln kann. Werde mal schauen, ob ich den Fehler provozieren kann.
Funktioniert bei Dir
python xpn.py -info
?
Dann kommen wir dem Problem etwas näher
-
Die Fehlermeldung ist schon besser. Sie besagt, dass er anscheinend die URL in eine IP-Adresse umwandeln kann. Werde mal schauen, ob ich den Fehler provozieren kann.
Funktioniert bei Dir
python xpn.py -info
?
Dann kommen wir dem Problem etwas näher `
Ja funktioniert. Aber nur wenn ich in der xpn.py die IP Adresse des Saugers manuell eintrage. Mache ich das nicht, startet zwar die xpn.py aber es kommt einfach nichts / hängt sich auf.
Hier die Ausgabe mit eingetragener IP:
C:\Python27>python xpn.py -info 192.18.0.8 Device Type: 02f2 Token: ffffffffffffffffffffffffffffffff
-
<u>ACHTUNG</u>: Wer Nachrichten encodieren will: Habe gerade auf meinem Handy die die Gesendeten Datenpakete nachgeschaut. wo vor wenigen Tagen noch die UDP Nachrichten gesendet wurden, werden nun nur noch verschlüsselte Nachrichten an den xiaomi Server geschickt, ich glaube die haben die UDP verbindung von der App gekappt also nicht die app updaten…
in Bluestack habe ich noch die version 4.0.8, die wollte sicher gerade updaten, konnte es noch rechtzeitig verhindern, ab version 4.0.11 keine UDP mehr... `
Was meinst du denn jetzt?
bluestack oder die app für den robo
Beim robo hab ich derzeit: 3.3.6_003030
Er bietet mir an: 3.3.6_003047
Können wir dieses update noch machen ?
Oder erst einmal warten?
mfg
Dieter
-
gst66:
Teste doch bitte mal, ob es sich ändert, wenn Du ausdrücklich die IP des Robot angibst (mit -ip x.x.x.x).
Ergebnis:
filename="bild1.jpg" index="0">~~Fazit:
gleicher Fehler wie oben
-
ACHTUNG: Wer Nachrichten encodieren will: Habe gerade auf meinem Handy die die Gesendeten Datenpakete nachgeschaut. wo vor wenigen Tagen noch die UDP Nachrichten gesendet wurden, werden nun nur noch verschlüsselte Nachrichten an den xiaomi Server geschickt, ich glaube die haben die UDP verbindung von der App gekappt also nicht die app updaten…
Was meinst du denn jetzt?
Meinst Du die Kommunikation App<->Roboter oder wirklich App<->Xiaomi Server? Soweit ich mir die Kommunikation App<->Xiaomi Server anschauen konnte war die auch früher verschlüsselt. Nicht aber UDP sonder per SSL/HTTP. Da gab es keinen Klartext.
-
Ja funktioniert. Aber nur wenn ich in der xpn.py die IP Adresse des Saugers manuell eintrage. Mache ich das nicht, startet zwar die xpn.py aber es kommt einfach nichts / hängt sich auf.
Hier die Ausgabe mit eingetragener IP: … `
OK, das ist schon mal gut zu wissen. Anscheinend geht unter Windows der Multicast so nicht. Muss mal sehen, ob ich auf einen Windows Rechner das mal aufsetze. Spannend ist auch, warum das Programm nicht per timeout einfach abbricht.
Prima ist, das -info mit der IP geht. Warum dann der Rest nicht ist komisch. Mal sehen, werde wohl Morgen daran rumbauen. Eigentlich wollte ich ja an der Portierung Javascript arbeiten …
-
Und um mal eine Bemerkung zur Qualität zu machen: ich habe bisher drei Geräte getestet, eine. Roomba 780, einen Roomba 650 sowie einen LG Hombot. Im Vergleich zu unserem Xiaomi können die alle nix. Der Xiaomi ist denen hinsichtlich Saugleistung, Userfreundlichkeit, Lautstärke und vor allem der Qualität, Technik und Intelligenz haushoch überlegen. Die Chinesen können was!
Und jetzt müssen wir ihn nur noch "einfach" in den iobroker kriegen!
So, das war mein Wort zum Sonntag!
Liebe Grüße
Bernd
-
Meinst Du die Kommunikation App<->Roboter oder wirklich App<->Xiaomi Server? Soweit ich mir die Kommunikation App<->Xiaomi Server anschauen konnte war die auch früher verschlüsselt. Nicht aber UDP sonder per SSL/HTTP. Da gab es keinen Klartext. `
ich Dachte eigentlich App –> Roboter aber es wahr ein fehlalarm. Die App hatte kein wlan, deswegen wurden keine udp nachrichten gesendet..
Leider muss ich mich in sachen überführung in js ergeben. Ich bekomme es einfach nicht hin.. bleibe aber dran..