Einbindung Staubsaugerroboter Xiaomi Mi Robot Vacuum WLAN

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • brau01ma
    Extension Master
    • 06.02.2017
    • 147

    #31
    Das sieht ja mal gut aus und würde mich interessieren, da ich nur Start/Stop/Dock habe, jedoch keinen Status zurück bekomme.

    Kannst du das etwas detaillierter beschreiben?

    Kommentar

    • hismastersvoice
      Supermoderator
      • 25.08.2015
      • 7271

      #32
      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


      • hismastersvoice
        hismastersvoice kommentierte
        Kommentar bearbeiten
        Ich integrierte gerade noch Timer und DND.
        Dann sollte es eigentlich soweit fertig sein.

        Du kannst das natürlich auf dem Loxberry installieren
        Ich werde wenn ich mal ganz ganz viel Zeit habe als Plugin machen, aber vorerst eher noch nicht.

      • Smart
        Smart kommentierte
        Kommentar bearbeiten
        ich hätte auch Interesse!

      • hodojazi
        hodojazi kommentierte
        Kommentar bearbeiten
        Kenne das Projekt und wollte es ebenfalls auf einem Raspberry installieren. Wenn du von einem Installerscript sprichst, meinst du damit ein Plugin für den Loxberry?
    • Gast

      #33
      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 Wolv

      Kommentar

      • Halskrause
        Extension Master
        • 11.06.2016
        • 109

        #34
        hismastersvoice das hört sich vielversprechend an..wir sind gespannT 😎
        Loxone seit 2015

        Kommentar

        • Gast

          #35
          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,
          retodor

          Kommentar

          • hodojazi
            Extension Master
            • 03.10.2016
            • 102

            #36
            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

            • Halskrause
              Extension Master
              • 11.06.2016
              • 109

              #37
              Nun wartet doch ab...
              Loxone seit 2015

              Kommentar

              • hismastersvoice
                Supermoderator
                • 25.08.2015
                • 7271

                #38
                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 funktioniert
                Kein Support per PN!

                Kommentar


                • hismastersvoice
                  hismastersvoice kommentierte
                  Kommentar bearbeiten
                  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

                • Halskrause
                  Halskrause kommentierte
                  Kommentar bearbeiten
                  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.

                • hismastersvoice
                  hismastersvoice kommentierte
                  Kommentar bearbeiten
                  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...
              • Gast

                #39
                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


                • hismastersvoice
                  hismastersvoice kommentierte
                  Kommentar bearbeiten
                  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.

                • Halskrause
                  Halskrause kommentierte
                  Kommentar bearbeiten
                  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....

                • hismastersvoice
                  hismastersvoice kommentierte
                  Kommentar bearbeiten
                  Hast du den Token mit Andriod oder iOS geholt?
              • hismastersvoice
                Supermoderator
                • 25.08.2015
                • 7271

                #40
                Habe mal eine Version mit V8.3 gemacht, hoffe das es so klappt...
                Kein Support per PN!

                Kommentar


                • Halskrause
                  Halskrause kommentierte
                  Kommentar bearbeiten
                  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...
              • hismastersvoice
                Supermoderator
                • 25.08.2015
                • 7271

                #41
                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...
                Es sind VTIs für Texte wie Status und Fehler und VIs für die ganzen Zahlenwerte. Also unbedingt drauf achten das du die zwei als VTI anlegst.
                Kein Support per PN!

                Kommentar


                • Halskrause
                  Halskrause kommentierte
                  Kommentar bearbeiten
                  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 hismastersvoice
                  Zuletzt geändert von Halskrause; 09.08.2017, 22:17.

                • hismastersvoice
                  hismastersvoice kommentierte
                  Kommentar bearbeiten
                  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.
              • hismastersvoice
                Supermoderator
                • 25.08.2015
                • 7271

                #42
                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.sh
                Kein Support per PN!

                Kommentar

                • hismastersvoice
                  Supermoderator
                  • 25.08.2015
                  • 7271

                  #43
                  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

                  • Halskrause
                    Extension Master
                    • 11.06.2016
                    • 109

                    #44
                    hismastersvoice kurze Rückmeldung...das skript stürzt leider auch nach Update noch ab. Nach Neustart vom loxberry läuft es wieder...
                    Loxone seit 2015

                    Kommentar


                    • hismastersvoice
                      hismastersvoice kommentierte
                      Kommentar bearbeiten
                      Der Fehler ist mir bekannt...
                      Er tritt immer dann auf wenn der Robot eine Zeit nicht über das WLAN nicht erreichbar ist.

                      Ich habe denke ich die Lösung, sie läuft bei mir seit 2 Tagen.
                      Ich werde heute Abend mal ein Update anbieten.
                  • hismastersvoice
                    Supermoderator
                    • 25.08.2015
                    • 7271

                    #45
                    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


                    • hismastersvoice
                      hismastersvoice kommentierte
                      Kommentar bearbeiten
                      Das kann aber noch dauern... Mal sehen ob du so geduldig bist 😀

                    • brau01ma
                      brau01ma kommentierte
                      Kommentar bearbeiten
                      Mein Roboter startet im Moment über den HEX-Befehl, das genügt mir erstmal zum Leben, das Plugin wäre nur das Sahnehäubchen ;-)

                    • hodojazi
                      hodojazi kommentierte
                      Kommentar bearbeiten
                      brau01ma ja, erwarte dir nicht zu viel und nicht zu schnell. Muss mich in die Thematik selbst erst einlesen.
                  Lädt...