BOTVAC
BOTVAC | |
---|---|
Zweck / Funktion | |
Steuerung eines NEATO oder VORWERK Saugroboters | |
Allgemein | |
Typ | Gerätemodul |
Details | |
Dokumentation | EN / DE |
Support (Forum) | Sonstige Systeme |
Modulname | 70_BOTVAC.pm |
Ersteller | Vuffiraa (Forum /Wiki) |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
Mit dem BOTVAC-Modul können VORWERK und NEATO Saugroboter gesteuert werden.
Allgemeines
Funktionsumfang
Aktuell ist folgender Funktionsumfang vorhanden:
Status
Der Modulstatus wird aus den Readings action, error und stateId gemischt. Folgende Statusmeldung werden im Modul angezeigt:
- Unkown
- Invalid
- Idle
- einen Arbeitsmodus:
- House Cleaning
- Spot Cleaning
- Manual Cleaning
- Docking
- User Menu Active
- Suspended Cleaning
- Updating
- Copying Logs
- Recovering Location
- IEC Test
- Map cleaning
- Exploring map (creating a persistent map)
- Acquiring Persistent Map IDs
- Creating & Uploading Map
- Suspended Exploration
- Paused: <angehaltener Arbeitsmodus>
- einen Fehlertext:
- Dust Bin Is Full!
- I'm Recovering My Location!
- Picked Up!
- Brush Stuck!
- I'm Stuck!
- Dust Bin Has Been Emptied!
- Dust Bin Is Missing!
- Please Clear My Path!
Attribute
- actionInterval
- Poll-Interval für den aktiven Betrieb (Busy/Paused)
- boundaries
- Hindernniseinträge (Boundaries) werden durch Leerzeichen getrennt im JSON-Format angegeben, z.B.
{"type":"polyline","vertices":[[0.710,0.6217],[0.710,0.6923]],"name":"Bad","color":"#E54B1C","enabled":true} {"type":"polyline","vertices":[[0.7139,0.4101],[0.7135,0.4282],[0.4326,0.3322],[0.4326,0.2533],[0.3931,0.2533],[0.3931,0.3426],[0.7452,0.4637],[0.7617,0.4196]],"name":"Kueche","color":"#000000","enabled":true}
- Weitere Informationen sind auf der Herstellerseite zu finden: https://developers.neatorobotics.com/api/robot-remote-protocol/maps
- Der Wert des Parameters "name" kann in der Hindernisliste bei "setBoundariesOnFloorplan_<floor plan>" benutzt werden. Außerdem ist es möglich, mehr als ein Hindernis mit dem selben Namen zu speichern. Das Kommando "setBoundariesOnFloorplan_<floor plan> <name>" setzt alle Hindernisse mit diesem Namen.
Set
- dismissCurrentAlert
- Zurücksetzen einer anstehenden Warnmeldung
- findMe
- Löst die Suchfunktion des Saugroboters aus. Dabei wird ein Ton wiedergegeben und die LEDs blinken.
- password
- Setzt das Passwort für den NEATO/VORWERK-Zugang.
- pause
- Pausiert die Reinigung
- pauseToBase
- Beendet eine Reinigung und fährt zur Basis zurück
- reloadMaps
- Lädt die letzte Karte vom Neato-Server, die erstellt wurde. Das passiert normalerweise automatisch, ist aber z.B. beim Neustart von FHEM sinnvoll. **Diese Funktion wird vom VR200 nicht unterstützt.
- resume
- Setzt eine Reinigung fort.
- schedule
- Die möglichen Argumente sind 'on' und 'off' zum An- und Abschalten der Zeitsteuerung.
- sendToBase
- Fährt zur Basis zurück
- setBoundaries
- Setzt Hindernisse oder No-Go-Linien im entsprechenden Grundriss.
- Der Parameter kann entweder ein Name, der vorher per Attribute "boundaries" definiert wurde, oder alternativ eine JSON-Zeichenkette sein. (Eine Liste von Namen (mit Komma getrennt) ist auch möglich.)
- Beschreibung der Syntax unter https://developers.neatorobotics.com/api/robot-remote-protocol/maps
- Beispiele:
set <name> setBoundariesOnFloorplan_0 Bad
set <name> setBoundariesOnFloorplan_0 Bad,Kueche
set <name> setBoundariesOnFloorplan_0 {"type":"polyline","vertices":[[0.710,0.6217],[0.710,0.6923]], "name":"Bad","color":"#E54B1C","enabled":true}
- setRobot
- Legt den zu steuernden Roboter fest, wenn mehr als ein Saugroboter unter dem selben Zugang bei NEATO/VORWERK registriert ist.
- startCleaning
- Startet eine neue Reinigung.
- Falls der Saugroboter Hindernisse/No-Go-Linien/Zonen unterstützt, können weitere Parameter angegeben werden:
- house - Reinigung ohne gespeicherte Karte
- map - Reinigung mit gespeicherter Karte
- zone - Reinigung in einer bestimmten Zone, siehe set nextCleaningZone
- startManual
- Startet den manuellen Reinigungsmodus.
- Dieser Modus öffnet eine direkte Verbindung zum Saugroboter per Websocket. Deshalb müssen die FHEM-Installation und der Saugroboter im gleichen LAN angemeldet sein. Außerdem ist weiterhin eine Verbindung zum Internet nötig, da die Initialisierung der Websocket-Verbindung durch einen Fernzugriff über einen Server von NEATO/VORWERK angestoßen wird.
- Hinweis: Der Saugroboter beendet den manuellen Reinigungsmodus, wenn er für 30 Sekunden keine Nachricht über die Websocken-Verbindung erhält. Die Wegsacket-Verbindung selber wird dabei aber nicht automatisch geschlossen.
- startSpot
- Startet die Spot-Reinigung von der aktuellen Position.
- statusRequest
- Bewirkst eine Aktualisierung aller Readings.
- stop
- Stoppt die Reinigung.
- syncRobots
- Synchronisiert die Roboterdaten. Das ist nützlich, wenn man mehrere Geräte unter einem NEATO- bzw. VORWERK-Zugang verwaltet und dort Geräte entfernt oder hinzugefügt hat.
- wsCommand
- Startet oder stoppt die Reinigungsaktivitäten:.
- eco-on
- eco-off
- turbo-on
- turbo-off
- brush-on
- brush-off
- vacuum-on
- vacuum-off
- Startet oder stoppt die Reinigungsaktivitäten:.
- wsCombo
- Bestimmt das Verhalten des Saugroboters. Für eine kontinuierliche Bewegung müssen die Kommandos mit einer Frequenz < 1Hz gesendet werden, ansonsten stoppt der Saugroboter die Bewegung.
- forward - Bewegung vorwärts.
- back - Bewegung rückwärts. Aufgrund der fehlenden Sensoren an der Rückseite des Saugroboters stoppt die Bewegung nach ca. 30 cm.
- arc-left - Bewegung 45° im Bogen vorwärts gegen den Uhrzeigersinn.
- arc-right - Bewegung 45° im Bogen vorwärts im Uhrzeigersinn..
- pivot-left - Drehung 90° gegen den Uhrzeigersinn.
- pivot-right - Drehung 90° im Uhrzeigersinn.
- stop - Hält die Bewegung sofort an.
- Bestimmt das Verhalten des Saugroboters. Für eine kontinuierliche Bewegung müssen die Kommandos mit einer Frequenz < 1Hz gesendet werden, ansonsten stoppt der Saugroboter die Bewegung.
Die nächsten Kommandos werden zum Saugertyp passend angeboten. Dadurch sind die Startbefehle für die Reinigung parameterlos. Einzige Ausnahme beim D7 ist set <name> startCleaning <house|map|zone> Wenn keine entsprechenden Einträge definiert sind, werden die Werte der letzten Reinigung aus dem Reading übernommen.
- nextCleaningMode
- wird bei Starten der nächsten Reinigung verwendet, je nach Model: eco,turbo
- nextCleaningModifier
- wird bei Starten der nächsten Reinigung verwendet, je nach Model: normal,double
- nextCleaningNavigationMode
- wird bei Starten der nächsten Reinigung verwendet, je nach Model: normal,extra care,deep
- Hinweis: Der Navigationsmodus kann nur auf "deep" gestellt werden, wenn der Reinigungsmodus "turbo" ist.
- nextCleaningSpotHeight
- wird bei Starten der nächsten Reinigung verwendet (cm): 100,200,300,400
- nextCleaningSpotWidth
- wird bei Starten der nächsten Reinigung verwendet (cm): 100,200,300,400
- Die Kombination aus Höhe und Breite muss kein Quadrat sein, der Bereich ist von 100 - 400 cm, in 1 cm Schritten einstellbar. Rechtecke von z.B. 152x244 sind also möglich.
- nextCleaningZone
- Je nach Model kann die ID der Reinigungszone für die nächste Reinigung gesetzt werden.
Get
- batteryPercent
- Gibt den aktuellen Stand der Akkuladung des Saugroboters.
- statistics
- Liefert eine Übersicht der relevanten Parameter je vorhandener Map.
Readings
- action
- kann einen dieser Werte annehmen:
- 0 - Invalid
- 1 - House Cleaning
- 2 - Spot Cleaning
- 3 - Manual Cleaning
- 4 - Docking
- 5 - User Menu Active
- 6 - Suspended Cleaning
- 7 - Updating
- 8 - Copying Logs
- 9 - Recovering Location
- 10 - IEC Test
- 11 - Map cleaning
- 12 - Exploring map (creating a persistent map)
- 13 - Acquiring Persistent Map IDs
- 14 - Creating & Uploading Map
- 15 - Suspended Exploration
- kann einen dieser Werte annehmen:
- dockHasBeenSeen
- stellt sich erst eine Weile nach Beginn einer Reinigung auf "1". Und nur in diesem Zustand klappt das Zurücksenden.
- error
- kann einen dieser Werte annehmen:
- ui_alert_invalid - Ok
- ui_alert_dust_bin_full - Dust Bin Is Full!
- ui_alert_recovering_location - I'm Recovering My Location!
- ui_error_picked_up - Picked Up!
- ui_error_brush_stuck - Brush Stuck!
- ui_error_stuck - I'm Stuck!
- ui_error_dust_bin_emptied - Dust Bin Has Been Emptied!
- ui_error_dust_bin_missing - Dust Bin Is Missing!
- ui_error_navigation_falling - Please Clear My Path!
- ui_error_navigation_noprogress - Please Clear My Path!
- kann einen dieser Werte annehmen:
- stateId
- kann einen dieser Werte annehmen:
- 0 - Invalid
- 1 - Idle
- 2 - Busy
- 3 - Paused
- 4 - Error
- kann einen dieser Werte annehmen:
MAPS
Die Karte der letzten Reinigung kann man z.B. per URL oder per Weblink in Fhem einbinden.
Der relative URL-Pfad ist:
http(s)://<ip>:<port>/fhem/BOTVAC/<device>/map
Eine Weblink-Definition sieht so aus:
define <device>Wl weblink htmlCode { BOTVAC::ShowMap("<device>"[,"<width>"[,"<height>"]]) }
Die Definitionen für Breite und Höhe sind optional, wenn sie benutzt werden, dann geht entweder nur Breite oder Breite und Höhe. (https://forum.fhem.de/index.php/topic,51713.msg548498.html#msg548498)
Map per telegram versenden:
set <TelegramBot> cmdSend {ReadingsVal('<BOTVAC>', '.map_cache', )}
Grundkonfiguration
Definition in FHEM
define <name> BOTVAC <email> [<vendor>] [<poll-interval>] set <name> password <password>
Icons
https://forum.fhem.de/index.php/topic,51713.msg539375.html#msg539375
die Datei reinkopieren, dann "set WEB rereadicons" und anschließend normal als Icon auswählen. Inzwischen ist das Icon wohl im SVN eingecheckt.
Probleme
Falls der Sauger mit der App neu konfiguriert werden musste
Du hast nach der Neuinstallation der App auch deinen VR/NEATO neu registriert. Fhem lädt aber noch die Daten aus der alten Registrierung. Wähle mal im Gerät unter Set 'syncRobots' aus. Wenn es danach bei Set auch eine Funktion 'setRobot' gibt, hast du wirklich den VR neu registriert. Dann einfach über dieses Set den VR wechseln. Ansonsten bleibt noch die Registrierungsschlüssel im FHEM-Gerät zu löschen. Das geht über die Kommandozeile in FHEM:
deletereading <device> accessToken
deletereading <device> secretKey
MAPS
Die Karte der letzten Reinigung kann man z.B. per URL oder per Weblink in Fhem einbinden.
Der relative URL-Pfad ist:
http(s)://<ip>:<port>/fhem/BOTVAC/<device>/map
Eine Weblink-Definition sieht so aus:
define <device>Wl weblink htmlCode { BOTVAC::ShowMap("<device>"[,"<width>"[,"<height>"]]) }
Die Definitionen für Breite und Höhe sind optional, wenn sie benutzt werden, dann geht entweder nur Breite oder Breite und Höhe. (https://forum.fhem.de/index.php/topic,51713.msg548498.html#msg548498)
Map per telegram versenden:
set <TelegramBot> cmdSend {ReadingsVal('<BOTVAC>', '.map_cache', )}
Grundkonfiguration
Definition in FHEM
define <name> BOTVAC <email> [<vendor>] [<poll-interval>] set <name> password <password>
Icons
https://forum.fhem.de/index.php/topic,51713.msg539375.html#msg539375
die Datei reinkopieren, dann "set WEB rereadicons" und anschließend normal als Icon auswählen. Inzwischen ist das Icon wohl im SVN eingecheckt.
Probleme
Falls der Sauger mit der App neu konfiguriert werden musste
Du hast nach der Neuinstallation der App auch deinen VR/NEATO neu registriert. Fhem lädt aber noch die Daten aus der alten Registrierung. Wähle mal im Gerät unter Set 'syncRobots' aus. Wenn es danach bei Set auch eine Funktion 'setRobot' gibt, hast du wirklich den VR neu registriert. Dann einfach über dieses Set den VR wechseln. Ansonsten bleibt noch die Registrierungsschlüssel im FHEM-Gerät zu löschen. Das geht über die Kommandozeile in FHEM:
deleteReading <device> accessToken
deleteReading <device> secretKey
Map Statistik
Durch einen Vergleich der zu erwartenden Laufzeit und Fläche mit einer Akkuladung und den vom Hersteller spezifizierten Werten kann die verbliebene Akkuleistung beurteilt werden. Dazu sollten einige Testläufe unter angenäherten Laborbedingungen durch geführt werden. Die ideale Fläche ist ein glatter rechtwinkliger Boden (kein Teppich, Auslegeware usw,), ohne Hindernisse, Nischen und ein gereinigter Filter.
Datenbasis
Die Daten stammen aus der Beehive API, wie unter Maps/Index beschrieben. In FHEM sind die Daten im Gerätehash verfügbar unter:
$defs{<name>}{helper}{MAPS}{<MapNr. [0..19]>}{<Bezeichner gem. API>}
Berechnungsmodel
Es werden die Bezeichner aus der Beehive API verwendet.
Erwartungswert Fläche (qm)
expected_area = cleaned_area / ( run_charge_at_start - run_charge_at_end )
Erwartungswert Laufzeit (min)
expected_time = ( end_at - start_at - time_in_suspended_cleaning - time_in_error - time_in_pause ) / ( run_charge_at_start - run_charge_at_end )
Beispiel
Vorwerk gibt für den VR300(VR220) folgende Werte an:
- Akku: 84 Wh, nach 800 Ladezyklen 70%
- Fläche: eco, 120 qm; turbo (normal), 90 qm
- Laufzeit: eco, 90 min; turbo (normal), 60 min
- Leistung: eco, 65 W; turbo (normal), 85 W
Versuchsbedingungen
- Fläche: 5,9 qm, Bodenfliesen
- Robot: VR300, Startladung 97-98%, gereinigter Filter, turbo 11 und eco 9 Fahrten.
Ergebnis
20 Fahrten ergeben folgende Übersicht:
Die aus den Testfahrten berechneten Erwartungswerte für die Fläche und Laufzeit liegen in der spezifizierten Werte.
- Für den Mode eco liegt der Erwartungswert für die gereinigte Fläche bei 117 qm zu 120 qm.
- Für den Mode eco liegt der Erwartungswert für die Laufzeit bei 92 min zu 90 min.
- Für den Mode turbo liegt der Erwartungswert für die gereinigte Fläche bei 76 qm zu 90 qm.
- Für den Mode turbo liegt der Erwartungswert für die Laufzeit bei 66 min zu 60 min.
Die spezifizierten Werte werden nur theoretisch erreicht, da nur etwa 77% der Akkukapazität zum Reinigen zur Verfügung steht, denn der Saugroboter kann nicht gestartet werden oder fährt zur Ladestation zurück, wenn 23% der Akkukapazität erreicht sind.
Wird der Versuch nach 800 Ladezyklen wiederholt, sollten die Erwartungswerte auf 70% gesunken sein.