Xiaomi / Dreame / Roborock / Mova / Viomi / Cecotec / Prosecnic / Commodore mit Firmware Valetudo
Vorbemerkung: Die neue Version der Firmware (ab 2021.01.0) hat eine andere API URL; http://IP-des-Staubsauerroboters/api/v2/ Daher wird weiter unten zwischen den Firmwareversionen unterschieden.
Die Staubsaugerroboter von Xiaomi / Roborock erfreuen sich großer Beliebtheit, da sie sehr gut in der Erkennung von Räumen sind (merken sich Karten, fahren gezielt die Räume ab statt zufällig), die Reinigung super ist (Staubsaugen & Wischen möglich) und zusätzlich noch relativ günstig sind. Leider haben sie aber auch einen Nachteil: viele der Daten (Sensordaten, Steuerung usw.) werden über die Cloud, teilweise sogar über chinesische Server geleitet. Wer das nicht will, kann auf das Projekt Valetudo zurückgreifen. Dabei handelt es sich um eine spezielle Firmware, die auf dem Staubsaugerroboter installiert wird und verhindert, dass dieser "nach Hause" telefoniert. Besonders einfach ist die Firmware Valetudo auf Xiaomi V1 (auch als ´Mi Robot Vacuum´ gelabelt; made by Roborock) und auf dem Roborock S5(x) [manchmal auch unter Xiaomi Mi Roborock S502-00 gelabelt] zu installieren; mehr Infos dazu finden sich auch hier.
Wen die Cloud-Anbindung nicht stört, bzw. wer ein nicht unterstütztes Modell des Staubsaugerroboters von Xiaomi besitzt, kann statt dieser Anleitung auch das Plugin MiRobot2Lox des Loxberry einsetzen.
Installation von Valetudo
Als erstes sollte genau geprüft werden, welches Modell man einsetzt und ob dies mit Valetudo kompatibel ist. Beim Roborock S5x (Gen 2) gilt es auch das Produktionsdatum zu beachten. Alle Infos hierzu finden sich hiert: Supported Robots
Als nächstes muss Valetudo auf dem Staubsaugerroboter installiert werden. Wie dies geht, findet Ihr hier: Roborock bzw. Dreame. Nutzt am besten Dennis's Dustbuilder (siehe Anleitung) um euch den Buildprozess und das Erstellen der SSH-Keys zu ersparen. Nachdem die neue Firmware installiert ist, verbindet den Staubsaugerroboter mit eurem WLAN, so dass auch Loxone darauf zugreifen kann (siehe Anleitung letzter Absatz "Connect your robot to your Wifi").
Ersteinrichtung via Webinterface
Verbindet Euch zum Webinterface (Aufruf http://ip-des-Staubsaugerroboters) und schaut Euch etwas um. Am besten Ihr aktiviert unter Settings→Persistent Data (nur beim Roborock S5x) das Speichern der Karte, dadurch verliert der Staubsaugerroboter auch nach einem Neustart die Karte nicht und alle Zonen bleiben erhalten. Wen es stört, kann unter Settings→Sound & Voice die Sprachausgabe leise stellen, oder neue Sprachpakete installieren.
Lasst den Staubsaugerroboter 1x das komplette Stockwerk reinigen, damit er seine Karte initial erstellt. Dazu auf Home→Start klicken oder die mittlere, große Taste am Staubsaugerroboter drücken. Anschließend findet Ihr unter dem Menüpunkt Map die Karte der Räume (dies kann auch schon während des Einlernens beobachtet werden).
Anlegen von Zonen
Unter dem Menüpunkt Zones im Webinterface können anschließend verschiedene Reinigungszonen erstellt werden. Diese Zonen dienen dazu, dass der Staubsaugerroboter später nur einen bestimmten Bereich und nicht alles reinigt. Hier empfiehlt es sich gleich die gewünschten Zonen zu erstellen (Küche, Esszimmer, Wohnzimmer usw.), damit diese später aus Loxone heraus angesprochen werden können.
Anlegen von GoTo Locations
Wer möchte kann auch noch sogenannte GoTo Locations anlegen. Bei Bedarf kann man darüber den Staubsaugerroboter später an die gewünschte GoTo Location schicken. Dies ist z. B. dann sinnvoll, falls die Ladestation schlecht zugänglich ist (z. B. unter einer Treppe) und man eine Wartungsposition zum Entleeren des Schmutzbehälters benötigt.
Sprachdateien
Die Sprachdateien finden sich unterIndex of /pkg/voice/roborock
Einbinden in Loxone
Valetudo bringt eine REST-API mit, die vor allem das Webinterface nutzt um mit dem Staubsaugerroboter zu kommunizieren. Allerdings kann die REST-API auch von jedem anderen Client im Netzwerk, also auch von Loxone, angesprochen werden. ACHTUNG: Die URL / Befehlszeilen unterscheiden sich massiv abhängig von der Valetudo Firmware 0.6.1 bzw. 2021.01.0 (und neuer)
Valetudo Firmware 0.6.1
Steuern des Staubsaugerroboters
Sie nachfolgenden Befehle für die Firmware 0.6.1 können mit Tools wie z. B. Postman bei Bedarf auch vorab getestet werden.
Befehl | URL | HTTP Methode | Body | Header |
---|---|---|---|---|
Komplette Reinigung starten | http://ip-des-Staubsaugerroboters/api/start_cleaning | PUT | ||
Reinigung einer oder mehrerer Zonen starten | http://ip-des-Staubsaugerroboters/api/start_cleaning_zones_by_id | PUT | Zonen-ID(s) z. B. [1] oder [1,2] Abruf der Zone-IDs unter: http://ip-des-Staubsaugerroboters/api/zones | Content-Type: application/json |
Reinigung pausieren | http://ip-des-Staubsaugerroboters/api/pause_cleaning | PUT | ||
Reinigung stoppen | http://ip-des-Staubsaugerroboters/api/stop_cleaning | PUT | ||
Zur Ladestation fahren | http://ip-des-Staubsaugerroboters/api/drive_home | PUT | ||
Zu bestimmter Position fahren | http://ip-des-Staubsaugerroboters/api/go_to | PUT | Koordinaten z. B. {"x":2539,"y":2474} Abruf der Koordinaten der GoTo Locations unter: http://ip-des-Staubsaugerroboters/api/spots | Content-Type: application/json |
Auslesen der aktuellen Statuswerte
Die nachfolgenden Befehle können auch im Browser aufgerufen werden, um zu sehen, welche Variablen zur Verfügung stehen.
Befehl | URL | HTTP Methode |
---|---|---|
Allgemeiner Status (Aktiv, Ladezustand, usw.) | http://ip-des-Staubsaugerroboters/api/state | GET |
Verbrauchsstatus (Wechselzeitpunkt Verbrauchsmaterialien, Reinigungsdauer, usw.) | http://ip-des-Staubsaugerroboters/api/consumable_status | GET |
Loxone Config
Eine Vorlage in der alle Befehle und alle Statuswerte eingebunden sind, kann hier heruntergeladen werden: Valetudo.Loxone
Anbei die drei Templates für den Virtuellen Ausgang für “Vordefinierte Geräte” (speichern unter C:\Users\-name-\Documents\Loxone\Loxone Config\Templates\VirtualOut) bzw. die beiden virtuellen Eingänge [ ; ] für die “Vordefinierte HTTP-Geräte” (speichern unter C:\Users\-name-\Documents\Loxone\Loxone Config\Templates\VirtualIn). Vor dem Import der Vorlagen in der Loxone Config am besten gleich die IP-Adresse eures Staubsaugerroboters in den drei .xml-Dateien anpassen.
Zum Steuern des Staubsaugerroboters mit den oben genannten Befehlen, reicht ein Virtueller Ausgang mit untergeordneten Virtuellen Ausgangs Befehlen. Beim Einlesen der Statuswerte muss jeweils ein Virtueller HTTP Eingang für den allgemeinen Status und den Verbrauchsstatus angelegt werden. Darunter werden die Virtuellen HTTP Eingangs Befehlen zur Erkennung der einzelnen Variablen (Ladezustand, Reinigungsdauer usw.) hinzugefügt.
Die zugehörige Konfiguration sieht dann folgendermaßen aus:
Der Status (idle, cleaning, returning, ...) des Staubsaugerroboters wird nur als Text ausgegeben. Daher werden zur eindeutigen Erkennung die ersten 3 Buchstaben über die Statusbausteine "1.-3. Buchstabe Status" ermittelt und im Nachfolgenden Status-Baustein auf den aktuellen Status des Staubsaugerroboters gemappt. Dort fließen ebenfalls die Fehlercodes und eine Prüfung, ob der Staubsaugerroboter erreichbar ist (Ping-Baustein), mit ein.
Im Radiotasten-Baustein "Zu reinigende Zone" und dem nachgelagerten Status-Baustein, können die Zonen hinterlegt werden, die in der Weboberfläche angelegt wurden (Abruf der Zonen IDs unter http://ip-des-Staubsaugerroboters/api/zones).
Im Virtuellen Ausgangsbefehl "Zur Wartungsposition fahren" kann im Feld "HTTP-Post-Befehl bei EIN" die Position ({"x":2539,"y":2474}) der Wartungsposition angegeben werden, die in der Weboberfläche angelegt wurde (Abruf der Koordinaten der GoTo Locations unter http://ip-des-Staubsaugerroboters/api/spots).
Valetudo Firmware ab 2021.01.0 [virtuelle Ausgangsbefehle sind getestet; virtuelle Eingänge manche noch nicht]
Steuern des Staubsaugerroboters
Die API Befehle (JSON) haben sich in der neuen Firmware (ab 2021.01.0) grundlegend verändert. Eine Übersicht über alle REST API bekommt man unter http://IP-des-Staubsaugerroboters/swagger/
Unter “Virtuelle Ausgänge” → “Virtueller Ausgang (z. B. genannt ´Staubsaugerroboter steuern´)” können verschiedene “Virtueller Ausgangs Befehl”e in Loxone angelegt werden und können mit Tools wie z. B. Postman bei Bedarf auch vorab getestet werden. Mit der Firmware 2023.12.0 z. B.:
Befehl | URL / Befehl bei EIN | HTTP header bei EIN | HTTP body bei EIN | HTTP Methode bei EIN |
---|---|---|---|---|
Komplette Reinigung starten | /api/v2/robot/capabilities/BasicControlCapability | Content-Type: application/json | { "action": "start" } | PUT |
Reinigung eines oder mehrere Segments (Raum) starten | /api/v2/robot/capabilities/MapSegmentationCapability | Content-Type: application/json | { "action": "start_segment_action", "segment_ids": ["<v>"], "iterations": 1} <v> = Segment-ID(s) z. B. [1] oder [1], [2] Abruf der Segment-IDs unter: [Link unbekannt; in der Weboberfläche des Staubsaugers kann man unter “Map Options” → ”Segment Management” ein Segment anklicken, dann auf ´rename´ und so sehen, welche Nummer welchem Segment / Raum zugeordnet ist] | PUT |
Reinigung pausieren | /api/v2/robot/capabilities/BasicControlCapability | Content-Type: application/json | { "action": "pause" } | PUT |
Reinigung stoppen | /api/v2/robot/capabilities/BasicControlCapability | Content-Type: application/json | { "action": "stop" } | PUT |
Zur Ladestation fahren | /api/v2/robot/capabilities/BasicControlCapability | Content-Type: application/json | { "action": "home" } | PUT |
Zu bestimmter Position fahren | /api/v2/robot/capabilities/GoToLocationCapability | Content-Type: application/json | Koordinaten z. B.: {"x":2539,"y":2474} Abruf der Koordinaten der GoTo Locations unter: [Link / Methode unbekannt] | PUT |
Auslesen der aktuellen Statuswerte
Unter “Virtuelle Eingänge” → 4x “Virtueller HTTP Eingang (z. B. genannt ´Staubsaugerroboter Status allgemein´ und ´Staubsaugerroboter Status Verbrauchsmaterialien´)” können verschiedene “Virtueller HTTP Eingang Befehl”e angelegt werden.
Die nachfolgenden Befehle können auch im Browser aufgerufen werden, um zu sehen, welche Variablen zur Verfügung stehen.
Virtueller HTTP Eingang | URL | HTTP Methode |
---|---|---|
Allgemeiner Status (Aktiv, Ladezustand, usw.) | http://ip-des-Staubsaugerroboters/api/v2/robot/state | GET |
Verbrauchsstatus (Wechselzeitpunkt Verbrauchsmaterialien, Reinigungsdauer, usw.) | http://ip-des-Staubsaugerroboters/api/v2/robot/capabilities/ConsumableMonitoringCapability | GET |
Staubsaugerroboter Statistik aktuell | http://ip-des-Staubsaugerroboters/api/v2/robot/capabilities/CurrentStatisticsCapability |
|
Staubsaugerroboter Statistik insgesamt | http://ip-des-Staubsaugerroboters/api/v2/robot/capabilities/TotalStatisticsCapability |
|
[die Befehlserkennungen ´Fehlercode´ des Roboters und ´Letzter Reinigungsvorgang am´ für die Befehlserkennungen in der “Virtuellen HTTP Eingängen” von Loxone fehlen noch]
Bei den “Virtuellen HTTP Eingang Befehl” ist (jedenfalls mir) die richtige “Befehlserkennung” noch nicht immer bekannt; um dies dann in Loxone auswerten zu können:
Bezeichnung | Befehlserkennung | Werteinterpretation mit Vorzeichen | Eingangswert 1 / Zielwert 1 / Eingangswert 2 / Zielwert 2 | Einheit | HTTP Methode |
---|---|---|---|---|---|
Batterieladestatus | \iBatteryStateAttribute\i\ilevel\i\i:\i\v | Haken | 0 / 0 / 100 / 100 | <v> % | GET |
Fehlercode | [VIRTUELLER HTTP EINGANG und BEFEHLSERKENNUNG UNBEKANNT] |
|
|
| GET |
Status 1. Zeichen | \iStatusStateAttribute\i\ivalue":"\i\1 |
|
|
|
|
Status 2. Zeichen | \iStatusStateAttribute\i\ivalue":"\i\s1\1 |
|
|
|
|
Status 3. Zeichen | \iStatusStateAttribute\i\ivalue":"\i\s2\1 |
|
|
|
|
|
|
|
|
|
|
Reinigung Sensor in Stunden | \iConsumableStateAttribute\i\isensor\i\ivalue\i\i:\i\v |
|
|
|
|
Wechsel Filter in Stunden | \iConsumableStateAttribute\i\ifilter\i\imain\i\ivalue\i\i:\i\v |
|
|
|
|
Wechsel Hauptbürste in Stunden | \iConsumableStateAttribute\i\ibrush\i\imain\i\ivalue\i\i:\i\v |
|
|
|
|
Wechsel Seitenbürste in Stunden | \iConsumableStateAttribute\i\ibrush\i\iside_right\i\ivalue\i\i:\i\v |
|
|
|
|
|
|
|
|
|
|
Letzter Reinigungsvorgang am | [UNBEKANNT] |
|
|
|
|
Dauer letzter Reinigungsvorgang | \iValetudoDataPoint\i\itime\i\ivalue\i\i:\i\v |
|
|
|
|
Fläche letzter Reinigungsvorgang | \iValetudoDataPoint\i\iarea\i\ivalue\i\i:\i\v |
|
|
|
|
|
|
|
|
|
|
Anzahl Reinigungsvorgänge gesamt | \iValetudoDataPoint\i\itime\i\icount\i\i:\i\v |
|
|
|
|
Gereinigte Fläche gesamt | \iValetudoDataPoint\i\itime\i\iarea\i\i:\i\v |
|
|
|
|
Reinigungsdauer gesamt in Stunden | \iValetudoDataPoint\i\itime\i\ivalue\i\i:\i\v |
|
|
|
|
Loxone Config
Eine Vorlage in der alle Befehle und alle Statuswerte eingebunden sind, kann hier heruntergeladen werden: ###
Anbei die drei Templates für den Virtuellen Ausgang ### für “Vordefinierte Geräte” (speichern unter C:\Users\-name-\Documents\Loxone\Loxone Config\Templates\VirtualOut) bzw. die beiden virtuellen Eingänge [### ; ### ] für die “Vordefinierte HTTP-Geräte” (speichern unter C:\Users\-name-\Documents\Loxone\Loxone Config\Templates\VirtualIn). Vor dem Import der Vorlagen in der Loxone Config am besten gleich die IP-Adresse eures Staubsaugerroboters in den drei .xml-Dateien anpassen.
Zum Steuern des Staubsaugerroboters mit den oben genannten Befehlen, reicht ein Virtueller Ausgang mit untergeordneten Virtuellen Ausgangs Befehlen. Beim Einlesen der Statuswerte muss jeweils ein Virtueller HTTP Eingang für den allgemeinen Status und den Verbrauchsstatus angelegt werden. Darunter werden die Virtuellen HTTP Eingangs Befehlen zur Erkennung der einzelnen Variablen (Ladezustand, Reinigungsdauer usw.) hinzugefügt.
[Screenshot Loxone Config Virtuelle Eingänge / Virtuelle Ausgänge]
Die zugehörige Konfiguration sieht dann folgendermaßen aus:
[Screenshot Config]
Der Status (idle, cleaning, returning, ...) des Staubsaugerroboters wird nur als Text ausgegeben. Daher werden zur eindeutigen Erkennung die ersten 3 Buchstaben über die Statusbausteine "1.-3. Buchstabe Status" ermittelt und im Nachfolgenden Status-Baustein auf den aktuellen Status des Staubsaugerroboters gemappt. Dort fließen ebenfalls die Fehlercodes und eine Prüfung, ob der Staubsaugerroboter erreichbar ist (Ping-Baustein), mit ein.
Im Radiotasten-Baustein "Zu reinigende Zone" und dem nachgelagerten Status-Baustein, können die Zonen hinterlegt werden, die in der Weboberfläche angelegt wurden.
Im Virtuellen Ausgangsbefehl "Zur Wartungsposition fahren" kann im Feld "HTTP-Post-Befehl bei EIN" die Position ({"x":2539,"y":2474}) der Wartungsposition angegeben werden, die in der Weboberfläche angelegt wurde.
Verwandte Artikel
Verwandte Artikel erscheinen hier basierend auf den Stichwörtern, die Sie auswählen. Klicken Sie, um das Makro zu bearbeiten und Stichwörter hinzuzufügen oder zu ändern.
Nach Stichwort filtern
Derzeit gibt es keine Elemente mit den ausgewählten Stichwörtern.