roomba

Das Plugin verbindet SmartHomeNG mit ausgewählten iRobot-Roomba-Staubsaugrobotern. Es liest Sensorwerte des Roomba aus und sendet Fahr-/Reinigungskommandos über die Roomba Serial Command Interface (SCI).

Voraussetzungen

Die Verbindung zum Roomba erfolgt entweder über Bluetooth oder über Ethernet (TCP).

Für Bluetooth wird auf dem SmartHomeNG-Rechner bluez benötigt:

sudo apt-get install bluez

In diesem Fall wird socket_type auf bt gesetzt und socket_addr erhält die Bluetooth-MAC-Adresse des Roomba. Getestet wurde dies mit einem selbstgebauten Bluetooth-Modul sowie mit einem fertigen Adapter (z. B. „FT41 BlueRoom“ von Fussel-Tronic); ein WLAN-RS232-Adapter wurde nicht getestet.

Für die TCP-Verbindung wird socket_type auf tcp gesetzt, socket_addr erhält die IP-Adresse und socket_port den Port des Roomba-Empfängers. Diese Verbindungsart wurde bisher nicht getestet.

Für den Aufbau eigener Byte-Sequenzen über roomba_raw ist die Dokumentation der Roomba SCI hilfreich, z. B. hacking_roomba.pdf.

Konfiguration

Die Informationen zur Konfiguration des Plugins sind unter Plugin ‚roomba‘ Konfiguration beschrieben.

Item-Attribute

roomba_cmd

roomba_cmd sendet eines der folgenden Kommandos an den Roomba: clean, dock, power_off, spot, max, sowie die Fahrkommandos forward, backward, spin_left, spin_right und stop.

Es kann auch eine ganze „Fahrszene“ als Liste angegeben werden. Dabei werden Kommandos und Zahlenwerte gemischt: eine Zahl in der Liste wird als Wartezeit in Sekunden vor dem nächsten Kommando interpretiert. Das folgende Beispiel fährt 2 Sekunden rückwärts, dreht 2 Sekunden nach links, fährt 3 Sekunden vorwärts, dreht 3 Sekunden nach rechts und beginnt nach weiteren 2 Sekunden mit der Reinigung:

roomba_cmd:
  - backward
  - '2'
  - spin_left
  - '2'
  - forward
  - '3'
  - spin_right
  - '3'
  - stop
  - '2'
  - clean

roomba_raw

roomba_raw sendet eine als Liste von Ganzzahlen angegebene, eigene Byte-Sequenz nach der Roomba SCI direkt an den Roomba, z. B. [137, 0, 0, 0, 0] für den Stopp-Befehl.

Beispiele

Das Plugin liefert die Item-Structs roomba.commands und roomba.sensors mit, die die gängigen Kommando- und Sensor-Items fertig vorkonfiguriert enthalten:

roomba:

    commands:
        struct: roomba.commands

    sensors:
        struct: roomba.sensors

    raw:
        stop:
            type: bool
            enforce_updates: 'true'
            roomba_raw:
              - '137'
              - '0'
              - '0'
              - '0'

    test_scene:
        enforce_updates: 'true'
        type: bool
        roomba_cmd:
          - backward
          - '2'
          - spin_left
          - '2'
          - forward
          - '3'
          - spin_right
          - '3'
          - stop
          - '2'
          - clean