Skip to end of metadata
Go to start of metadata


AutorMichael Schlenstedt
Logo

Status

STABLE

Version1.0.5
Min. LB Version

LB 1.2

Download

https://github.com/mschlenstedt/LoxBerry-Plugin-MiRobot2Lox-NG/archive/mirobot2lox-ng-1.0.5.zip

Zweck

Das MiRobot2Lox-NG Plugin ermöglicht die Kommunikation zwischen bis zu 5 Mi Vacuum Robots und dem Loxone MiniServer. 

LanguagesEN, DE, CZ
Diskussionhttps://www.loxforum.com/forum/projektforen/loxberry/plugins/168084-plugin-mirobot2lox-ng-xiaomi-vacuum-robots
 Version History...

Nutze die Beobachten-Funktion rechts oben um über neue Versionen informiert zu werden. 

Inhalt



   

Ursprung des Plugins

Dieses Plugin basiert auf dem Original-Plugin MiRobot2Lox von Dieter Schmidberger . Leider wird das Original-Plugin nicht mehr weiterentwickelt. Da es noch nicht auf LoxBerry V1.0 angepasst war und mittlerweile auch bei der Installation der notwendigen Python-Tools Probleme bereitet, wurde diese Version ins Leben gerufen. Die grundlegenden Ideen und das Konzept wurden vom Originalplugin übernommen - dennoch ist es von Grund auf neu programmiert und nutzt eine andere Kommunikationsschnittstelle zum Miniserver. Durch die direkte Integration in LoxBerry V1.0 konnten viele Standardfunktionen aus LB1.0 übernommen werden.


Aufgabe des Plugins

Mit dem Plugin können Saugrobotoer der Firma Xiaomi (https://xiaomi-mi.com/cleaning-gear/) und der Firma Roborock (https://en.roborock.com/) gesteuert werden. Es können sowohl Befehle an den Roboter abgesetzt werden als auch Daten vom Roboter ausgelesen werden (z. B. den aktuellen Status, diverse Verbrauchszähler, usw.). Alle Daten können in LoxConfig visualisiert werden und auch in Logiken verwendet werden. Die Ausgangsbefehle an den Roboter können ebenfalls aus der Logik in LoxConfig heraus abgesetzt werden.


Download


Fehlerberichte

  

Fehlerberichte bitte direkt im Repository auf GitHub melden.


Konfigurationsoptionen

Einstellungen

Hole Daten vom Robot

Sollen Statusmeldungen vom Robot abgeholt werden, muss diese Option eingeschaltet werden (das will man normalerweise (wink)). Alle 60 Sekunden reicht normalerweise aus. Wer auf Grund einer Logik wirklich aktuellere Daten haben muss, kann auch noch auf 30 Sekunden umschalten. Eine kürzere Zeit gibt es nicht, da es doch recht lange dauert, bis der Robot antwortet. Wer mehr als 2 Robots im Einsatz hat, sollte die Zeit etwas hochnehmen, da in der gewählten Periode alle Robots nacheinander abgefragt werden.

Sende per UDP

Wer die Statusdaten per UDP zum Miniserver senden und dort per Virtuellen Eingängen weiterverarbeiten möchte, muss diese Option aktivieren. Eine andere Alternative ist, die Daten per Virtuellen HTML Eingang abzufragen. Das verursacht aber mehr Netzwerkverkehr, da bei UDP die Daten nur übertragen werden, wenn sie sich geändert haben. Daher ist UDP die bessere Wahl. Nur bei Netzwerkproblemen ist häufig HTML die einfacherere Variante.

UDP Port

Der Port, auf dem der Miniserver auf neue Daten lauscht.

Miniserver

Wähle den Miniserver aus, an den die Daten per UDP gesendet werden sollen. Es kann nur ein Miniserver ausgewählt werden.

Sende per HTML

"Senden" ist eigentlich nicht der richtige Ausdruck. Es wird eine Text-Internetseite zur Verfügung gestellt, die per Virtuellem HTML Eingang vom Miniserver abgerufen werden kann. Diese Option ist immer aktiv.

Robot #1 - #5

Aktiviere Robot

Mit dieser Option aktivierst Du den Robot. Aktivieren heisst, dass von diesem Robot die Statusdaten abgerufen werden.

IP-Adresse

Die IP-Adresse des Robots. Diese darf sich nicht ändern. Konfiguriere Deinen Router entsprechend.

Token

Der Netzwerkverkehr zum Robot ist per "Token" gesichert. Ohne den Token kann man mit dem Robot nicht kommunizieren. Leider kann der Token aus Sicherheitsgründen nicht automatisch aus dem Robot ausgelesen werden. Bitte folge dieser Anleitung, um den Token auszulesen: Token extrahieren

Der ausgelesene Token muss hier eingegeben werden.

Zeit Ladestation verlassen (s)

Es gibt einen Befehl "Dock Release" bzw. "Ladestation verlassen", der an den Robot abgesetzt werden kann. Bei diesem Befehl fährt der Robot x Sekunden geradeaus nach vorne (z. B. unter einem Schrank hervor). Die Zeit kann hier eingestellt werden. Der Befehl kann z. B. genutzt werden, um den Robot zum Staubbehälter-Leeren vorzufahren.

Robot Kommandos

Hier findest Du eine Auflistung aller Kommandos, die für die Robots voreingerichtet sind. Die Kommandos werden per HTTP REST API an das Plugin übergeben. Du kannst so auch eigene Kommandos generieren. Zum Absetzen der Befehle an den Robot wird die Software miiocli verwendet (Achtung! Die Syntax von miiocli unterscheidet sich leicht von mirobo! mirobo-Befehle funktionieren nicht!) . Dokumentation hier: https://python-miio.readthedocs.io/en/latest/miio.html#module-miio.vacuum

Um einen Befehl an den Robot abzusetzen, wird folgende API verwendet (die möglichen Befehle finden sich in der miio-Dokumentaion):

Kommando ohne Option, z. B. "find":

http://loxberry/plugins/mirobot2lox-ng/sendcmd.cgi?command=find&robot=1&debug=0


command= Kommando, welches abgesetzt werden soll (siehe miio Dokumentation)

robot=1|2|3|4|5 Nummer des Robots, an den das Kommando gesendet werden soll

debug=0|1 Debugging-Informationen aus oder an

Kommando mit Option, z. B. "set_fan_speed":

http://loxberry/plugins/mirobot2lox-ng/sendcmd.cgi?command=set_fan_speed&option=50&robot=1&debug=0


command= Kommando, welches abgesetzt werden soll (siehe miio Dokumentation)

option= Zusätzliche Option für das Kommando (siehe miio Dokumentation)

robot=1|2|3|4|5 Nummer des Robots, an den das Kommando gesendet werden soll

debug=0|1 Debugging-Informationen aus oder an

Soundpacks

Hier kannst Du neue Soundpacks auf den Robot installieren, z. B. Deutsche Sprache. Wir haben verschiedene TTS Engines verwendet. Die beste Sprachqualität liefert normalerweise Amazon Polly. Nachdem Du ein Soundpack ausgewählt hast, musst Du noch festlegen, auf welchen Robot Du das Soundpack spielen möchtest. Anschließend wird das entsprechende Kommando ausgeführt.

 

Hinweis

Der Robot muss über die XIAOMI App zuvor auf englische Sprache gestellt werden. Der Befehl zum Installieren des Soundpacks überschreibt die englischen Sprachdateien im Robot.


Eingänge / Ausgänge

Mit diesem Wizard kannst Du sehr einfach die notwendigen Templates für die Ein- und Ausgänge in LoxConfig erstellen. Die Templates können dann sehr einfach ins eigene Projekt importiert werden und Du brauchst so nicht alle Ein- und Ausgänge manuell anzulegen. Nur Virtuelle Text Eingänge müssen manuell angelegt werden.

 


Virtuelle Texteingänge

Die Virtuellen Texteingänge müssen manuell angelegt werden. Die Bezeicnung oder der Name müssen dem im Wizard angezeigten exakt entsprechen. Diese Virtuellen Textausgänge kann man dann z. B. auf einen Statusbaustein zur Anzeige in der App legen.

Virtuelle Ausgänge

Ab LoxConfig Version 9 kannst Du die Datei direkt importieren:

  

 

 

Bis LoxConfig Version 8 muss die Datei manuell in das Verzeichnis C:\ProgramData\Loxone\Loxone Config VERSION\Templates\VirtualOut kopiert werden. Sie muss dabei unbedingt mit VO_ beginnen, damit sie erkannt wird. LoxConfig muss anschließend neu gestartet werden.


Virtuelle UDP Eingänge

Wenn Du die Status-Daten per UDP im Miniserver empfangen möchtest (Hinweis: Dazu muss die entsprechende Option in den Einstellungen des Plugins aktiviert sein), musst Du dieses Template in Dein Projekt integrieren. Ab LoxConfig Version 9 kannst Du die Datei direkt importieren:

 

 

Bis LoxConfig Version 8 muss die Datei manuell in das Verzeichnis C:\ProgramData\Loxone\Loxone Config VERSION\Templates\VirtualIn kopiert werden. Sie muss dabei unbedingt mit VIU_ beginnen, damit sie erkannt wird. LoxConfig muss anschließend neu gestartet werden.

Virtuelle HTTP Eingänge

Wenn Du die Status-Daten per HTTP-Eingäng im Miniserver einlesen möchtest, musst Du dieses Template in Dein Projekt integrieren. Ab LoxConfig Version 9 kannst Du die Datei direkt importieren:



Bis LoxConfig Version 8 muss die Datei manuell in das Verzeichnis C:\ProgramData\Loxone\Loxone Config VERSION\Templates\VirtualIn kopiert werden. Sie muss dabei unbedingt mit VI_ beginnen, damit sie erkannt wird. LoxConfig muss anschließend neu gestartet werden.

Codes

Status Codes

StatusBeschreibung
STATE 0
STATE 1
STATE 2Ladegerät von Netz getrennt
STATE 3Ruheposition
STATE 4
STATE 5Reinigung aktiv
STATE 6Robot fährt zurück zur Ladestation
STATE 7Manueller Modus
STATE 8Aufladen
STATE 9
STATE 10Pausiert
STATE 11Spot Reinigung
STATE 12Fehler
STATE 13
STATE 14Aktualisieren (Firmware)
STATE 15Batterie voll geladen
STATE 16Gehe zu Ziel
STATE 17Zonenreinigung aktiv

Error Codes

ErrorBeschreibung
ERROR 0Kein Fehler
ERROR 1Laserentfernungssensor
ERROR 2Kollisionssensor
ERROR 3Räder haben keinen Bodenkontakt
ERROR 4Bodensensoren reinigen
ERROR 5Hauptbürste reinigen
ERROR 6Seitenbürste reinigen
ERROR 7Räder blockiert
ERROR 8Robot blockiert
ERROR 9Staubbehälter nicht eingesetzt
ERROR 10Filter reinigen
ERROR 11Robot an magnetischer Barriere blockiert
ERROR 12Batterieladung niedrig
ERROR 13Ladefehler
ERROR 14Batteriefehler
ERROR 15Wandsensoren reinigen
ERROR 16Robot auf flachen Untergrund setzen
ERROR 17Problem mit Seitenbürste. Robot neu booten
ERROR 18Problem mit Lüfter
ERROR 19Ladestation nicht angesteckt
ERROR 20Robot nicht erreichbar
ERROR 21

Koordinaten für Zonenreinigung ermitteln

mit dem Befehl kann man eine definierte Fläche reinigen.

/plugins/mirobot2lox-ng/sendcmd.cgi?command=zoned_clean&option=[[30200,26280,32500,32400,1]]&robot=1&debug=0


Die Fläche bestimmt man am einfachsten mit der Android App https://xiaomi.flole.de/

  • links den Menüpunkt "Karte" auswählen, die Karte wird runtergeladen und angezeigt

  • Schaltfläche "Hinzufügen" und dann gewünschten Bereich markieren

  • "Reinigen" länger drücken, die notwendigen Koordinaten werden in die Zwischenablage kopiert
  • nun noch den Befehl mit den eigenen Koordinaten ersetzen

8 Comments

  1. Könnte mal bitte jemand ein beispiel.loxone Template ins Wiki stellen? Ich habe nämlich insbesondere nicht den Punkt "Virtuelle Texteingänge" und "Virtuelle Textausgänge" verstanden und mit einem konkreten Beispiel kann ich das immer besser nachvollziehen.

  2. Hallo Michael,

    ich habe Probleme bei der Installation der Datei. Ich bekomme immer die Fehlermeldung (habe nur die letzten Zeilen aus dem Logfile eingefügt, wo der Fehler aufgetreten ist):

    3.5/cryptography/hazmat/backends/openssl
    running egg_info
    writing requirements to src/cryptography.egg-info/requires.txt
    writing top-level names to src/cryptography.egg-info/top_level.txt
    writing dependency_links to src/cryptography.egg-info/dependency_links.txt
    writing src/cryptography.egg-info/PKG-INFO
    reading manifest file 'src/cryptography.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    no previously-included directories found matching 'docs/_build'
    warning: no previously-included files matching '*' found under directory 'vectors'
    writing manifest file 'src/cryptography.egg-info/SOURCES.txt'
    running build_ext
    generating cffi module 'build/temp.linux-armv7l-3.5/_padding.c'
    creating build/temp.linux-armv7l-3.5
    generating cffi module 'build/temp.linux-armv7l-3.5/_constant_time.c'
    generating cffi module 'build/temp.linux-armv7l-3.5/_openssl.c'
    building '_openssl' extension
    creating build/temp.linux-armv7l-3.5/build
    creating build/temp.linux-armv7l-3.5/build/temp.linux-armv7l-3.5
    arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fdebug-prefix-map=/build/python3.5-6waWnr/python3.5-3.5.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.5m -c build/temp.linux-armv7l-3.5/_openssl.c -o build/temp.linux-armv7l-3.5/build/temp.linux-armv7l-3.5/_openssl.o -Wconversion -Wno-error=sign-conversion
    build/temp.linux-armv7l-3.5/_openssl.c:22:24: fatal error: pyconfig.h: No such file or directory
    # include <pyconfig.h>
    ^
    compilation terminated.
    error: command 'arm-linux-gnueabihf-gcc' failed with exit status 1

    ----------------------------------------
    Failed building wheel for cryptography
    Running setup.py clean for cryptography
    Failed to build cryptography
    Could not build wheels for cryptography which use PEP 517 and cannot be installed directly
    yes: standard output: Broken pipe
    <WARNING> Python MIIO tools installation failed! The plugin will not work without.
    <WARNING> Giving up.
    14.04.2019 09:21:48 <FAIL> Fehler während der Script-Installation, die Installation wurde beendet.
    removed '/tmp/zLJYqAYN9i.zip'


    Kannst Du mir da weiterhelfen?


    Gruss
    James

    1. Hi James,

      das Problem ist über github adressiert: https://github.com/mschlenstedt/LoxBerry-Plugin-MiRobot2Lox-NG/issues/15 

      Ich hatte das gleiche Problem, mit der Version 1.0.5 klappt es aber problemlos, da werden alle benötigten libs richtig mitinstalliert (smile) https://github.com/mschlenstedt/LoxBerry-Plugin-MiRobot2Lox-NG/archive/mirobot2lox-ng-1.0.5.zip

      Viele Grüße,

      Benni

  3. Hi!

    Erstmal vielen Dank für das super Plugin! Sehr sehr nützlich für mich. Einzig, ich schaffe es nicht die "Virtuellen Texteingänge" für Status und Fehler zu konfigurieren. Es kommt einfach nichts an. So glaube ich auf jeden Fall. Was habe ich gemacht: 

    1. Virtueller Texteingang erstellt mit der Bezeichnung und Name die ich per copy - paste aus der Konfiguration des Plugin auf dem Loxberry eingefügt habe. (um Tippfehler zu vermeiden; "MiRobot1 State")
    2. Diesen Texteingang habe ich nun auf eine Seite der Loxone Config gezogen und an eine Statusbaustein angeschlossen. (der Eingang des Texteingangs in VTI1 )


    Weder auf der Visualisierung noch per LiveView sehe ich irgend was...  Sollte ich nicht irgendwo bei der Konfiguration den Eingang VTI1 angeben können?


    Was mach ich falsch? Eventuell kann mir jemand weiterhelfen?


    Vielen Dank und Gruß

    1. Hast du sicher „Im Miniserver speichern“ gemacht?

      Nur Statusänderungen werden übertragen.

  4. Hallo,

    bin neu hier und habe heute erstmalig Loxberry aufgesetzt und die MiRobot2Lox-NG (neuste Version) aufgesetzt. Habe bereits Verbindung zum Roboter hergestellt (Token passt). Jetzt wollte ich die virtuellen Variablen für Loxone erzeugen und dann in die Loxone 10 Config in mein Projekt importieren.

    Wenn ich die drei Taster im Wizard drücke sehe ich keinerlei weiteren Informationen. Wo werden diese Konfigurationen abgespeichert (auf dem Rasperry oder im Miniserver?) und wie bekomme ich diese dann in mein Loxone Projekt? Hat jemand evtl. eine Loxone Seite mit der aktuellen Ansteurung, die ich dann nur noch importieren müsste?

    Vielen Dank

  5. Hallo,


    bei mir werden die VI und VO nicht angelegt. Vermutlich weil im bei mir der Pfad wo anders ist. Kann diese jemand bitte online stellen?


    Danke

    1. Die Templates werden vom Plugin genau für deinen LoxBerry erstellt. Du musst diese als Template in der Loxone Config importieren, und danach die nun hinzugefügte Vorlage zum Erstellen der VIs/VOs auswählen.