Roomba für SmartHomeNG

Dieses Plugin ermöglicht die Einbindung von iRobot Roomba Staubsaugrobotern. Das Plugin basiert auf https://github.com/pschmitt/roombapy (ein Fork von https://github.com/NickWaterton/Roomba980-Python) für die Kommunikation. Es sollte die Roomba Serien 600, 900, i, s und M6 Mop unterstützen, wenn die Geräte per WiFi angesprochen werden können.

plugin logo

Anforderungen

Der Roomba muss per WiFi (LAN) mit SmartHomeNG verbunden sein.

Notwendige Software

Dies beinhaltet Python- und SmartHomeNG-Module

Unterstützte Geräte

Roomba Serien

  • 600

  • 900

  • e

  • i

  • s

  • M6 Mop

Getestet wurde das Plugin bisher nur mit einem Roomba e6

Installation

Bemerkung

Vor der Inbetriebnahme des Plugins bitte paho-mqtt und orjson installieren.

pip3 install paho-mqtt
pip3 install orjson

Konfiguration

Die Plugin Parameter, die Informationen zur Item-spezifischen Konfiguration des Plugins und zur Logik-spezifischen Konfiguration sind unter Plugin ‚roombapysh‘ Konfiguration beschrieben.

Dort findet sich auch die Dokumentation zu Funktionen, die das Plugin evtl. bereit stellt.

items.yaml

Hier ein Beispiel einer vollständigen Konfiguration von Items. Die Datei liegt auch im Plugin-Verzeichnis (Harry.yaml).

# Harry.yaml
Harry:
   connect:
        type: bool
        roombapysh: 'connect'
        visu_acl: rw
        autotimer: 7200 = False
   Status:
       type: num
       roombapysh: 'status'
   IsConnected:
       type: bool
       roombapysh: 'connected'
   ClientError:
        type: str
        roombapysh: 'client_error'
   MissionError:
       type: num
       roombapysh: 'error_code'
   MissionErrorMessage:
        type: str
       roombapysh: 'error_message'
   Mission_State:
        type: str
       roombapysh: 'mission_state'
   Name:
       type: str
       roombapysh: 'name'

   start:
       type: bool
       roombapysh: 'start'
       visu_acl: rw
       autotimer: 2 = False
   pause:
       type: bool
       roombapysh: 'pause'
       visu_acl: rw
       autotimer: 2 = False
   resume:
       type: bool
       roombapysh: 'resume'
        visu_acl: rw
       autotimer: 2 = False
   stop:
       type: bool
       roombapysh: 'stop'
       visu_acl: rw
       autotimer: 2 = False
   dock:
       type: bool
       roombapysh: 'dock'
       visu_acl: rw
       autotimer: 2 = False
   reset:
       type: bool
      roombapysh: 'reset'
       visu_acl: rw
      autotimer: 120 = False
   evac:
       type: bool
       roombapysh: 'evac'
       visu_acl: rw
       autotimer: 120 = False
   locate:
       type: bool
       roombapysh: 'locate'
      visu_acl: rw
       autotimer: 1 = False

   Battery:
       type: num
       roombapysh: 'status_batterie'
   Battery_Cycles:
        type: num
       roombapysh: 'bat_cCount'

   Bin:
        Present:
           type: bool
           roombapysh: 'bin_present'
        Full:
           type: bool
           roombapysh: 'bin_full'

   Dock_Known:
        type: bool
        roombapysh: 'dock_known'

   MissionStatus:
      Cycle:
          type: str
          roombapysh: 'MissionStatus_cycle'
      Phase:
           type: str
          roombapysh: 'MissionStatus_phase'
      Error:
           type: num
           roombapysh: 'MissionStatus_error'
      StartTime:
           type: num
           roombapysh: 'MissionStatus_startTime'
      ExpireTime:
           type: num
           roombapysh: 'MissionStatus_expireTime'
      Initiator:
           type: str
           roombapysh: 'MissionStatus_initiator'
      RunTime:
           type: str
           roombapysh: 'MissionStatus_runTime'

   Runs:
       Cliffs:
          type: num
          roombapysh: 'run_nCliffs'
      Panics:
          type: num
           roombapysh: 'run_nPanics'
      Scrubs:
          type: num
          roombapysh: 'run_nScrubs'
      Time:
           type: str
           roombapysh: 'run_time'

   Missions:
       Total:
           type: num
           roombapysh: 'mission_total'
       OK:
           type: num
           roombapysh: 'mission_OK'
       Err:
           type: num
           roombapysh: 'mission_err'

   LastCommand:
       Command:
           type: str
           roombapysh: 'lastCommand_command'
       time:
           type: num
           roombapysh: 'lastCommand_time'
       initiator:
           type: str
           roombapysh: 'lastCommand_initiator'

Beispiele

Beispiel, wie in der smartVisu der Status des Roomba als Icon angezeigt werden kann:

{{ basic.symbol('', ['Harry.Status'], '', ['scene_robo_vac_cleaner.svg','text_question_mark.svg','scene_robo_vac_cleaner_charging.svg','scene_robo_vac_cleaner_charging.svg','scene_robo_vac_cleaner_active.svg','scene_robo_vac_cleaner_paused.svg','scene_robo_vac_cleaner_dock.svg','scene_robo_vac_cleaner_attention.svg'], [0,1,2,3,4,5,6,7], '', ['#766','#f00','#ff0','#0f0','#0f0','#ff0','#0f0','#f00'],'','','midi') }}

Ein Beispiel, wie eine komplette smartVisu Seite aussehen könnte liegt als roomba.html im Plugin-Verzeichnis

Web Interface

Dieses Plugin hat kein Web Interface

Version History

  • Version 1.0.0 initiale Version