Kannst du das etwas detaillierter beschreiben?
Einbindung Staubsaugerroboter Xiaomi Mi Robot Vacuum WLAN
Einklappen
X
-
Es laufen auf einem Raspberry 2 Skripte, eines nimmt die Befehle an (UDP-Receiver), und eines versendet die Statusmeldungen an den Mini-Server (VTI).
Die Statusmeldungen werden im Loop alle X-Sekunden abgefragt, wenn sie sich zum vorherigen Durchlauf verändert haben werden sie an den MiniServer versendet.
So wird der MS nicht unnötig belastet belastet.
Über init.d-Startskripte werden die Dienste mit dem System gestartet bzw. gestoppt.
Man benötigt den TOKEN und die IP des Mi Robot.
Der Token kann aber sehr leicht abgefragt/angezeigt werden, und wird dann in der Config-Datei eingertragen.
Es ist nicht nötig mit Wireshark usw. Daten zu loggen
Wenn interesse da ist, werde ich die Tage mal einen Installer schreiben der das System einrichtet. Die Übersetzung der Fehler- und Status-Meldungen werde ich auch noch machen.
Kein Support per PN!Kommentar
-
Hallo,
klasse Thread, ich habe damit den Roboter nun auch eingebunden.
Da er bei uns unter der Treppe parkt, wollte ich ihn gerne per Tastendruck zur Reinigung des Staubbehälters hervorholen können.
Die Ermittlung der Hex-Befehle mittels Bluestack, Wireshark und Packetsender waren etwas langwierig, aber nach knapp einer Stunde (inkl. Download und Installation der Tools)
hatte ich die benötigten Zeichenketten beisammen.
Diese habe ich dann noch per Suchen&Ersetzen in die von Loxone benötigte HEX-Form mit \x umgewandelt und anschließend als Virt-Ausgang
mit drei Befehlen (Start, Pause, Home/Dock) in die Programmierung hinzugefügt.
Die Schaltung ist eine einfache Abfolge von Einfach-Klick = Start o. Pause und Langzeit-Klick = Home/Dock: [BILD]
Die Statusabfrage mittels Rasp würde mich auch interessieren, habe noch einen rumliegen, den ich eh mal für LoxWeather einbinden wollte.
Grüße Wolv1 BildKommentar
-
Kommentar
-
Hallo,
ich habe beim Herausfinden der Befehle noch ein Problem.
Wieshark und Bluestacks laufen. Ich kann über Bluestacks den Robot steuern und sehen per Wireshark auch mehrere UDP Befehle an die IP Adresse des Robots gehen. Aber egal welchen Code ich kopiere und per Packetsender schicke, der Robot reagiert nicht drauf. Ich habe die Befehle Clean und Pause ausprobiert. Ich habe auch mehrmals versucht zu sniffen, aber nie reagiert der Robot drauf.
Gibt es noch irgendwas anderes zu beachten?
Hat jemande eine Idee worin oder warum sich die Befehle zwischen den Robots unterscheiden?
LG,
retodorKommentar
-
Ich habe mal irgendwo gelesen, dass mit einem der letzten Updates ein Timestamp im Hash eingeführt wurde. Somit bin ich der Meinung, dass das einfache Abgreifen der Befehle und 1:1-Übernahme in Loxone nicht mehr funktionieren wird. Man wird den Timestamp jedes mal einrechnen müssen.Kommentar
-
-
Hallo,
ich habe jetzt mal das ganze auf die schnelle zusammen gestellt. Leider fehlt mir die Zeit um ein Loxberry Plugin zu schreiben, aber das werde ich sicher noch.
Es läuft aber im Hintergrund des Loxberry ohne weiteres.
Wie es funktioniert...
Ein Skript übergibt alle x Sekunden die Werte die sich seit dem letzten Durchlauf verändert haben (schont den MiniServer).
Da andere Skript übernimmt UDP Befehle vom MiniServer auf einem einstellbaren Port.
Installieren
Ich habe alles als "root" getestet, aber alles so geschrieben da Loxberry mich die Files nicht ausführen lässt.
Auf anderen Rechnern ging es auch ohne "root".
#cd /
#wget http://music-server.net/download/mi_robot/install.sh
#bash install.sh
Es werden alle nötigen Dateien heruntergladen und eingerichtet
Config
Jetzt müsst ihr im MiniServer alle VIs und VTIs anlegen.
Es kommt ganz darauf an was ihr alles übergeben wollt. Diese tragt ihr dann in die mi.cfg ein.
Hier könnt ihr mal meine Demo-Config laden. Ich habe diese allerdings mit V9.x erstellt (hab auf dem Rechner keine andere) und hoffe es geht trotzdem bei euch.
http://music-server.net/download/mi_robot/lox_config_mi_robot.zip
#nano /opt/mi_robo/mi.cfg
Hier findet ihr alle Werte die ihr einstellen müsst.
Ihr könnt entweder ganze Gruppen Status/Consumable/Cleaning History ein- oder ausschalten 0/1
Oder ihr könnt einfach einzelen Werte in den Gruppen nicht übergeben, hierzu einfach 0 bei VI/VTI eintragen und der Wert wird ignoriert.
Start/Stop
#sudo service mirobo2lox restart
#sudo service udp_receiver restart
Die beiden werden beim neustart mit gestartet und müssen nicht extra aktiviert werden.
Uninstall
cd /
wget http://music-server.net/download/mi_robot/uninstall.sh
bash uninstall.sh
UDP-Befehle
MI_START\n --> startet das Reinigen
MI_PAUSE\n --> Sauger auf Pause
MI_DOCK\n --> Sauger fährt zu Ladestation zurück
MI_FIND_ME\n --> Sauger meldet wo er steht
MI_DND_ON\n --> Ruhemodus wird aktiviert (12:00-11:59=ganzer Tag) Zeitschaltuhr des MiniServer steuert als das DND
MI_DND_OFF\n --> Ruhemodus wird deaktiviert
MI_FAN_Q\n --> Saugleistung auf Quiet
MI_FAN_B\n --> Saugleistung auf Balanced
MI_FAN_T\n --> Saugleistung auf Turbo
MI_FAN_F\n --> Saugleistung auf Full
MI2LOX_RESET\n --> Die Service m2robo2lox wird neu gestartet, in Verbindung mit Startimpuls des MS wird nach einem Reboot alles aktualisiert.
Nun hoffe ich das bei euch auch alles funktioniertKein Support per PN!Kommentar
-
Für iOS...
Erstellt per iTunes ein unverschlüsselter Backup.
Holt euch diese Software (freie Version reicht) http://www.imactools.com/iphonebackupviewer/
Jetzt geht ihr in eurem Backup auf den letzten Punkt RAW
Dort habt ihr zwei Tabellen
links wählt ihr AppDomian-com.xiaomi.mihome aus
rechts wählt ihr xxxxxxxx__mihome.sqlite (xxxx steht für eine UserID die unterschiedlich ist)
Jetzt auf rechts oben auf Export und selected und speichert die Datei
Die Datei mit einem Texteditor wie zB N++ usw. öffen.
Nun seht ihr viel krytische Zeichen... ...und in 8 Zeile ganz links den Namen des Robots. Die 32 Zeichen hinter dem Namen ist der Token
Für alle die ganz sicher gehen wollen...
Datenbank laden und auf Daten durchsuchen ganz rechts findet ihr den Eintrag ZTOKEN, die Nummer ist es dann.
Ich hoffe ich konnte es verständlich beschreiben -
die Installation dauert etwas (bei mir so 45 minuten) läuft aber :-) .... wäre noch nett wenn du die config auf 8.xx zur verfügung stellst----ansonsten sieht es nach sehr guter Arbeit aus... kurze frage noch... das skript startet immer selbstständig nach neustart vom loxberry? oder muss das noch mit cron automatisiert werden? jetzt schon ein fettes Danke!Zuletzt geändert von Halskrause; 07.08.2017, 23:24. -
Es werden für die Kommunikation mit darum Robot diverse Python Pakete benötigt. Darunter auch eines für Kryptographie, das dauert auf dem Pi recht lange für die Installation.
Mal sehen wie ich das mit der V8 noch mache...
-
-
Wie kann das eigentlich funktionieren, wenn jeder Robot einen eigenen Befehl benötigt?
P.S. die Config lässt sich mit v8 nicht öffnen.Kommentar
-
Ich werde versuchen das für V8 zu speichern.
Du brauchst nach wie vor den Token deines Sauger.
Ich ergänze die Anleitung nachher noch dazu. -
leider klappt das mit den udp befehlen noch nicht so ganz... ich glaube wir benötigen doch noch die config ;-) ach ja token raussuchen usw hat alles gut geklappt.... -
Hast du den Token mit Andriod oder iOS geholt?
-
-
Habe mal eine Version mit V8.3 gemacht, hoffe das es so klappt...
Kein Support per PN!Kommentar
-
die Konfig lässt sich öffnen... ich übertrage nachher mal alles in meiner...was ich nicht verstehe, vielleicht habe ich auch ein Brett vorm Kopf ist wie der Miniserver die Status vom Roboter bekommt?
Ausgänge (Befehle) werden per UDP an den Berry gesendet der schickt diese dann weiter... soweit klar.
bei den Status sind einfach nur Virtuelle Eingänge in der Config angelegt aber wie bekommt der Miniserver diesen Input / Daten?
ich würde es einfach nur gerne technisch verstehen.
Meinen Token habe ich übrigens per IPhone Backup und dann mit den RAW file sowie SQLite ausgelesen...
-
-
Halskrause
Technisch ist es so...
Befehle empfangen...
Ich öffne am Loxberry einen UDP Port den du in der mi.cfg wählen kannst. An diesem Port wird gelauscht ob ein Befehl ankommt.
Kommt ein Befehl an wird er mit den möglichen Befehlen verglichen, und dann ausgeführt wenn er gefunden wird zB MI_START um den Sauger zu starten.
Status Senden...
Das Skript holt sich alle X-Sekunden (mi.cfg LOOPTIME) die Daten den Sauger ab.
Wenn diese sich seit dem letzten Durchlauf verändert haben, sendet er diese an die VTIs bzw VIs des MiniServer.
Wichtig!
...bei den Status sind einfach nur Virtuelle Eingänge in der Config angelegt...Kein Support per PN!Kommentar
-
Befehle senden und empfangen funktioniert jetzt einwandfrei... in der mi.cfg muss die Nummer des VI / VTI angegeben werden sprich VI_BATTERY="14" die 14 wäre dann der VI14 im Miniserver.... danke für die gute Arbeit hismastersvoiceZuletzt geändert von Halskrause; 09.08.2017, 22:17. -
Hast du nach dem du die mi.cfg bearbeitet hast den service neu gestartet? (sudo service mirobo2lox restart)
Hast du dir Daten für den MS eingetragen?
Hast du die richtige IP / Token? (Token ändert sich übrigens bei jedem einrichten des WLAN am Robot.)
Was kommt wenn du einen Test im Terminal mit...
mirobo --ip xxx.xxx.xxx.xxx --token xxxxxxxxxxxxxxxxxxxxx raw_command get_status
x natürlich gegen deine Daten tauschen.
-
-
Habe gerade ein update der Skripte gemacht.
Nach dem ich das Update auf die neu Firmware gemacht habe ist mir ein Fehler aufgefallen...
fix - Wenn der Sauger während einer Abfrage neu gestartet wird (zB Update) kann python-mirobo das Skript mirobo2lox zum Absturz bringen.
neu - wenn der Sauger nicht erreichbar ist wird das nun als Fehler (Nr. 20) mit Text (Robot nicht erreichbar / Robot not reachable) angezeigt.
neu - es wird vor jeder Abfrage erst geprüft ob der Sauger auch wirklich erreichbar ist
Wenn Euch noch Fehler auffallen bitte melden...
Update installieren...
#cd /
#wget http://music-server.net/download/mi_robot/update.sh
#bash update.shKein Support per PN!Kommentar
-
Wer noch Lust und Zeit hat...
Hier könnt Ihr eine Excel mit den Texten für Status und Fehler herunter laden.
Wenn ich Verbesserungsvorschläge oder eine kpl. Übersetzung in eine andere Spreche habt... einfach eintragen und per PN die Excel an mich schicken.
Kein Support per PN!Kommentar
-
hismastersvoice kurze Rückmeldung...das skript stürzt leider auch nach Update noch ab. Nach Neustart vom loxberry läuft es wieder...Loxone seit 2015Kommentar
-
Update... 0.2.2
fix - loop und abfragen getrennt, so kann das Abfrage-Skript im Hintergrund bei längerer Nicht-Erreichbarkeit des Robots den Prozess nicht mehr beenden.
Update installieren...
#cd /
#wget http://music-server.net/download/mi_robot/update.sh
#bash update.sh
User hodojazi hat gerade bei bei angefragt und will daraus ein Loxberry Plugin machen.
Da ich es im Augenblick werde zeitlich noch Perl mäßig abbilden kann, freu ich mich auf die Zusammenarbeit.
Zuletzt geändert von hismastersvoice; 15.08.2017, 13:24.Kein Support per PN!Kommentar
Kommentar