NEWS
[Frage] Xiaomi Vacuum cleaner
-
-
Dieter,
Bei Dir läuft alles unter Win7? Also Python und iobroker?
-
ja so ist es.
-
Wenn man nur die Funktionen an aus und Saugstufe zur Zeit in iobroker benötigt, ist es wahrscheinlich der einfachere Weg den Adapter von Seite eins zu installieren und die verschlüsselten Nachrichten zu nutzen. Alternativ bin Ich gerade dabei das python Script in js zu überführen.
Gesendet von meinem E5823 mit Tapatalk
-
Meistertr,
Aber dafür müsste ich ja relativ aufwändig die verschlüsselten Nachrichten mitschneiden. Ich denke, das alles geht über den von Dir beschrittenen Weg dann Dich leichter. Zumal Du ja bereits die ganzen Daten ausgelesen hast.
Mal ganz dumm gefragt: geht den jetzt auch der umgekehrte Weg? Das heißt: Deine Befehle mit Hilfe des Tokens wieder verschlüsseln und in den Adapter von Seite 1 einfügen?
Liebe Grüße
Bernd
PS: und nochmal ganz lieben herzlichen Dank für all Deine Zeit und Arbeit und Hilfe und Erklärungen für uns Dummys.
-
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