BOTVAC

Aus FHEMWiki
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
  • 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.

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.

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
  • 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!
  • stateId
    • kann einen dieser Werte annehmen:
      • 0 - Invalid
      • 1 - Idle
      • 2 - Busy
      • 3 - Paused
      • 4 - Error

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