Plugin: MiRobot2Lox / Xiaomi Vacuum Robot mit MiniServer steuern

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • hismastersvoice
    Supermoderator
    • 25.08.2015
    • 7318

    #1

    Plugin: MiRobot2Lox / Xiaomi Vacuum Robot mit MiniServer steuern

    End-of-life
    Das Plugin funktioniert nach wie vor mit allen Loxberry <2.x
    Ich werde aber keine Anpassungen mehr vornehmen da ich inzwischen mit eigenen Skripten arbeite, und es eine bessere Alternative LINK gibt

    Klicke auf die Grafik für eine vergrößerte Ansicht  Name: mi-robot-vacuum-c_loxberry.png Ansichten: 1 Größe: 85,0 KB ID: 112642MiRobot2Lox

    Mit diesem Plugin könnt ihr bis zu 3 Xiaomi Vacuum Robots mit dem MiniServer steuern und Statusdaten empfangen.
    Die Daten werden zyklisch von jedem Robot abgefragt und "nur" bei Änderung eines Wert an den MiniServer gesendet.
    Es wird ein UDP zum Empfang von Befehlen geöffent an den der MiniServer die Befehle senden kann.

    2017-11-03_22-57-50.png



    Details im LoxWiki http://www.loxwiki.eu/display/LOXBERRY/MiRobot2Lox

    Donwload
    - Loxberry Plugins http://plugins.loxberry.de/plugin/mirobot2lox/


    Aktuelle Version: 0.40
    Zuletzt geändert von hismastersvoice; 26.10.2019, 22:52.
    Kein Support per PN!
  • Negropo
    Smart Home'r
    • 10.10.2015
    • 90

    #2
    Hallo,

    vielen Dank für das Plugin. Irgendwie bringe ich es nicht hin, die Daten aus dem Robot zu empfangen. Ich habe alles eingetragen und in der LoxConfig angelegt. Doch irgendwie bleiben die VI und VTI leer. In der Log-Datei steht folgendes:
    Code:
      
     [SIZE=14px][FONT=arial]ROBOT 1 ----------------------------- Sep 17 12:54:54 Robot reachable Sep 17 12:54:54 GSD Robot 1 wird ausgeführt Sep 17 12:53:53 GET DATA CLEANING HISTORY: Sending cmd get_clean_summary with params []  ----------------------------- Sep 17 12:54:39 GET DATA STATUS: Sending cmd get_status with params []  Sep 17 12:54:39 Robot reachable Sep 17 12:54:23 GET DATA CONSUMABLES: Sending cmd get_consumable with params []  Sep 17 12:54:23 Robot reachable[/FONT][/SIZE]
    Hat jemand irgend eine Idee, woran das liegen könnte? Danke! Beste Grüße Negropo

    Kommentar

    • hismastersvoice
      Supermoderator
      • 25.08.2015
      • 7318

      #3
      Wenn du die Daten speicherst stehe sie danach nicht mehr drin?
      Hast du den 32 Zeichen Token?
      Kein Support per PN!

      Kommentar

      • Negropo
        Smart Home'r
        • 10.10.2015
        • 90

        #4
        Den Token habe ich. Die eingegebenen Daten im Plugin, als auch in der Config sind i.O. und bleiben auch nach dem Speichern Doch irgendwie kommt nichts vom Robo an, noch kann ich Befehle absetzen.

        Kommentar

        • hismastersvoice
          Supermoderator
          • 25.08.2015
          • 7318

          #5
          Ja, gib mal in der Konsole folgendes ein

          mirobo --ip xxxx.xxx.xxx.xxx --token xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

          Dann sollte sowas als Antwort kommen...
          State: Charging
          Battery: 100 %
          Fanspeed: 60 %
          Cleaning since: 0:31:24
          Cleaned area: 30.2975 m²

          Hat dein Token auch wirklich nur 32 Zeichen?
          Kein Support per PN!

          Kommentar

          • Negropo
            Smart Home'r
            • 10.10.2015
            • 90

            #6
            Problem, ich bekomme über putty keine Verbindung zum loxberry :-(

            Kommentar

            • hismastersvoice
              Supermoderator
              • 25.08.2015
              • 7318

              #7
              Nimm deine SD Karte in einen Kartenleser.
              In der Partition boot legst du eine leere Datei mit dem Name ssh an.
              Nur ssh ohne Endung usw. dann solltest du auf den Raspi kommen.
              Kein Support per PN!

              Kommentar

              • Negropo
                Smart Home'r
                • 10.10.2015
                • 90

                #8
                Auf der Konsole bekomme ich folgende Fehlermeldung:

                Code:
                ERROR:mirobo.vacuum_cli:Unable to read the stored msgid: [Errno 2] No such file or directory: '/tmp/python-mirobo.seq'
                ERROR:mirobo.device:Got error when receiving: timed out
                WARNING:mirobo.device:Retrying with incremented id, retries left: 3
                ERROR:mirobo.device:Got error when receiving: timed out
                WARNING:mirobo.device:Retrying with incremented id, retries left: 2
                ERROR:mirobo.device:Got error when receiving: timed out
                WARNING:mirobo.device:Retrying with incremented id, retries left: 1
                ERROR:mirobo.device:Got error when receiving: timed out
                Traceback (most recent call last):
                  File "/usr/local/lib/python3.4/dist-packages/mirobo/device.py", line 155, in send
                    data, addr = s.recvfrom(1024)
                socket.timeout: timed out
                
                During handling of the above exception, another exception occurred:
                
                Traceback (most recent call last):
                  File "/usr/local/lib/python3.4/dist-packages/mirobo/device.py", line 155, in send
                    data, addr = s.recvfrom(1024)
                socket.timeout: timed out
                
                During handling of the above exception, another exception occurred:
                
                Traceback (most recent call last):
                  File "/usr/local/lib/python3.4/dist-packages/mirobo/device.py", line 155, in send
                    data, addr = s.recvfrom(1024)
                socket.timeout: timed out
                
                During handling of the above exception, another exception occurred:
                
                Traceback (most recent call last):
                  File "/usr/local/lib/python3.4/dist-packages/mirobo/device.py", line 155, in send
                    data, addr = s.recvfrom(1024)
                socket.timeout: timed out
                
                The above exception was the direct cause of the following exception:
                
                Traceback (most recent call last):
                  File "/usr/local/bin/mirobo", line 11, in <module>
                    sys.exit(cli())
                  File "/usr/local/lib/python3.4/dist-packages/click/core.py", line 722, in __call__
                    return self.main(*args, **kwargs)
                  File "/usr/local/lib/python3.4/dist-packages/click/core.py", line 697, in main
                    rv = self.invoke(ctx)
                  File "/usr/local/lib/python3.4/dist-packages/click/core.py", line 1043, in invoke
                    return Command.invoke(self, ctx)
                  File "/usr/local/lib/python3.4/dist-packages/click/core.py", line 895, in invoke
                    return ctx.invoke(self.callback, **ctx.params)
                  File "/usr/local/lib/python3.4/dist-packages/click/core.py", line 535, in invoke
                    return callback(*args, **kwargs)
                  File "/usr/local/lib/python3.4/dist-packages/click/decorators.py", line 17, in new_func
                    return f(get_current_context(), *args, **kwargs)
                  File "/usr/local/lib/python3.4/dist-packages/mirobo/vacuum_cli.py", line 86, in cli
                    ctx.invoke(status)
                  File "/usr/local/lib/python3.4/dist-packages/click/core.py", line 535, in invoke
                    return callback(*args, **kwargs)
                  File "/usr/local/lib/python3.4/dist-packages/click/decorators.py", line 64, in new_func
                    return ctx.invoke(f, obj, *args[1:], **kwargs)
                  File "/usr/local/lib/python3.4/dist-packages/click/core.py", line 535, in invoke
                    return callback(*args, **kwargs)
                  File "/usr/local/lib/python3.4/dist-packages/mirobo/vacuum_cli.py", line 116, in status
                    res = vac.status()
                  File "/usr/local/lib/python3.4/dist-packages/mirobo/vacuum.py", line 87, in status
                    return VacuumStatus(self.send("get_status")[0])
                  File "/usr/local/lib/python3.4/dist-packages/mirobo/device.py", line 175, in send
                    return self.send(command, parameters, retry_count-1)
                  File "/usr/local/lib/python3.4/dist-packages/mirobo/device.py", line 175, in send
                    return self.send(command, parameters, retry_count-1)
                  File "/usr/local/lib/python3.4/dist-packages/mirobo/device.py", line 175, in send
                    return self.send(command, parameters, retry_count-1)
                  File "/usr/local/lib/python3.4/dist-packages/mirobo/device.py", line 176, in send
                    raise DeviceException from ex
                mirobo.device.DeviceException

                Kommentar

                • hismastersvoice
                  Supermoderator
                  • 25.08.2015
                  • 7318

                  #9
                  IP oder Token falsch!
                  Diese Meldung kommt wenn einer der zwei Werte nicht richtig ist.

                  Ich habe immer noch keine Antwort, hat dein Token 32 Zeichen?
                  Kein Support per PN!

                  Kommentar

                  • Negropo
                    Smart Home'r
                    • 10.10.2015
                    • 90

                    #10
                    Fehler gefunden! Aus irgend einem, mir nicht nachvollziehbaren Grund hat sich der Token geändert. Ich habe ihn vorsorglich nochmal abgerufen und siehe da, es war ein anderer. Jetzt funktioniert es. Velen Dank für die schnelle Hilfe!

                    Kommentar

                    • Negropo
                      Smart Home'r
                      • 10.10.2015
                      • 90

                      #11
                      Hallo,

                      ich muss jetzt doch nochmal "nerven". Die Daten des Robots kann ich weitestgehend empfangen, wobei ich noch prüfen muss, ob die Aktualisierung tatsächlich erfolgt. Bei den Werten Cleaning History Area und Cleaning History Time bekomme ich keine Werte angezeigt. In der MiApp werden die Gesamtwerte dagegen dargestellt. Ein größerers Problem ist auch noch die Steuerung des Robot. Er will einfach nicht auf die Befehle reagieren, wobei ich das Template aus dem Loxwiki 1zu1 nachgebaut habe. Gibt es wieder einen Konsolenbefehl o.ä. mit dem ich sehen kann, woran es in der Kommunikation hapert. Danke!

                      Beste Grüße

                      Negropo

                      Kommentar

                      • hismastersvoice
                        Supermoderator
                        • 25.08.2015
                        • 7318

                        #12
                        Mach den Debug an und schau in den Log.
                        Wenn ein Befehl ankommt steht das da drin.

                        Kein Support per PN!

                        Kommentar

                        • Negropo
                          Smart Home'r
                          • 10.10.2015
                          • 90

                          #13
                          Moin,

                          ok, danke. Habe das Phänomen, dass sich die Log-Datei zwar aufrufen lässt, jedoch kein Inhalt angezeigt wird. Das hatte ich gestern auch schon einmal als ich nachschauen wollte, warum er den Reinigungsvorgang von gestern nicht mit angezeigt hat. Es macht für mich den Eindruck als würde sich das Plugin mit der Zeit aufhängen, denn nach einem Neustart gestern hat er dann auch die aktuellen Werte wieder angezeigt. So wie gestern, geht es mir jetzt gerade wieder.

                          Im Log steht kein eingehender Befehl. Sowohl im Plugin, als auch in der Loxconfig ist der UDP Port 7003 gewählt (mit 7000 funktioniert es auch nicht).
                          Zuletzt geändert von Negropo; 19.09.2017, 05:35.

                          Kommentar

                          • Gast

                            #14
                            Hey,

                            bin hier neu im Forum und habe die gestrige Antwort von Negropo gelesen. Habe ein sehr ähnliches Problem.

                            iRobot funktioniert mit Port 7000, jedoch ist nach jedem Neustart des Miniservers die Verbindung zum loxberry unterbrochen - bzw werden die aktuellen Daten nicht mehr im Miniserver aktualisiert. Den MI2LOX_RESET/n habe ich mit Neustart gekoppelt. Bringt aber nichts. Erst wenn ich den loxberry nach einem Miniserver-Neustart auch direkt über die WEB-Oberfläche neu starte funktioniert wieder alles. Parallel zum Neustart habe ich einen VI angelegt, um diesen MI2LOX_RESET auch manuell von der Visualisierung jederzeit auszuführen zu können. Aber auch das hat leider nichts gebracht.

                            Hat jemand eine Idee?

                            Und für was ist das Flag /n hinter jedem Befehl? Bin kein Datentechniker - aber vielleicht kann mir das jemand verständlich erklären.

                            Danke für jede Antwort.

                            Kommentar

                            • hismastersvoice
                              Supermoderator
                              • 25.08.2015
                              • 7318

                              #15
                              Hallo,

                              also der Port kann frei gewählt werden... schon mal einen anderen versucht?
                              Der Reset Befehl wird genau so über UDP Empfangen, wenn die anderen nicht gehen, geht der auch nicht.

                              Nach einem Reboot den MiniServer muss der Rest ausgeführt werden.
                              Das Plugin sendet nur Daten wenn diese sich seit der letzten Abfrage geändert haben.
                              Wenn nicht sendet das Plugin auch nicht, nach einem Reset wird also das Plgin neu gestartet und hat somit neue Daten.

                              Alle Probleme die du beschrieben hast lösen sich wenn UDP geht.

                              Flag... /n
                              Also erstes muss es \n heißen nicht /n, das ist wie als ob du Enter an der Tastatur drückst "new Line".
                              Das ist in sofern wichtig da sonst der Befehl nicht abgesetzt wird.

                              Poste Screenshots deiner Config vielleicht sehe ich da gleich den Fehler.

                              Kein Support per PN!

                              Kommentar

                              Lädt...