iRobot Roomba

Verbinde deinen iRobot Roomba mit ioBroker

Aktueller Release
1.3.0
Entwickler
Zefau
Lizenz
MIT

Verbinde deinen iRobot Roomba mit ioBroker.

Basierend auf der dorita980-Bibliothek https://github.com/karlvr/dorita980#readme

Travis CI

Inhaltsverzeichnis

  1. Installation
  2. Änderungsprotokoll
  3. Credits
  4. Lizenz

Merkmale

Folgende Funktionen sind in diesem Adapter enthalten:

  • Befehle senden (start ,stop ,resume ,pause ,dock ) zu Ihrem Roomba
  • Gerätezustände abrufen, z. B. Akku, angedockt, voller/eingesetzter Behälter (vollständige Liste unter Kanäle & Zustände )
  • Gerätekonfiguration abrufen, z. B. Voreinstellungen, Netzwerk- oder Zeitplaneinstellungen (vollständige Liste unter Kanäle & Status ).
  • Gerätestatistiken abrufen, z. B. Gesamtmissionen, Betriebsstunden an der Dockingstation usw. (vollständige Liste unter Kanäle & Status )
  • Rufen Sie Informationen über den aktuellen Reinigungsvorgang ab (während Ihr Roomba reinigt), z. B. Start- und Endzeit, Gesamtlaufzeit, gereinigte Fläche usw. (nur bei unterstützten Roomba-Modellen, siehe Unterstützte Roomba-Modelle / Firmware-Versionen ).
  • Karte anhand der empfangenen Missionsdaten erstellen (nur bei unterstützten Roomba-Room ...
  • Webinterface , das den Status und die Karte der aktuellen sowie der vorherigen/archivierten Missionen anzeigt:Roomba-Schnittstelle

Installation

ioBroker.roomba benötigt Canvas , um Karten der Roomba-Missionen zu zeichnen. ioBroker versucht, diese Abhängigkeit bei der Installation von ioBroker.roomba zu installieren.

Wahrscheinlich müssen Sie jedoch die Paketabhängigkeiten von Canvas (und Canvas selbst) mit folgendem Befehl installieren:

Linux

sudo apt-get install build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev

Führen Sie außerdem den folgenden Befehl im Verzeichnis ioBroker.roomba aus (/opt/iobroker/node_modules/iobroker.roomba ):

sudo npm install canvas --unsafe-perm=true

Windows

  1. Stellen Sie sicher, dass Sie Folgendes habennode-gyp installiert über

    npm install -g node-gyp
    
  2. Stellen Sie sicher, dass Sie Build Essentials installiert haben über

    npm install --global --production windows-build-tools
    
  3. Laden Sie GTK 2 (für Win32 oder Win64 ) herunter und entpacken Sie es (z. B. nach …).C:\path\to\GTK2 )

  4. Laufen

    node-gyp rebuild --GTK_Root=C:\path\to\GTK2
    
  5. Installieren Sie Canvas aus dem Ordner iobroker.roomba.

    cd C:\path\to\iobroker\node_modules\iobroker.roomba
    npm install canvas
    

Weitere Details finden Sie unter https://github.com/Automattic/node-canvas/wiki/Installation:-Windows .

Einrichtungsanleitung

Automatisierte Einrichtung

Um ioBroker.roomba automatisch einzurichten, folgen Sie den Anweisungen im Admin-Panel von ioBroker.roomba.

ACHTUNG : Die Anmeldeinformationen sind nicht dieselben wie die, die Sie in der Smartphone-App verwenden!

  1. Stellen Sie sicher, dass der ioBroker.roomba-Adapter gestartet ist.
  2. Stellen Sie sicher, dass sich Ihr Roboter auf der Basisstation befindet und eingeschaltet ist (grüne Lichter leuchten).
  3. Halten Sie anschließend die HOME-Taste an Ihrem Roboter gedrückt, bis eine Reihe von Tönen ertönen (ca. 2 Sekunden).
  4. Lassen Sie den Knopf los, und Ihr Roboter blinkt mit der WLAN-Leuchte.
  5. Kehren Sie dann hierher zurück und drücken Sie die Schaltfläche, um IP-Adresse und Zugangsdaten abzurufen.

Falls der automatische Prozess zum Abrufen Ihrer Zugangsdaten fehlschlägt, verwenden Sie bitte die manuelle Einrichtung.

Manuelle Einrichtung

Für die manuelle Einrichtung siehe https://github.com/karlvr/dorita980#how-to-get-your-usernameblid-and-password .

Unterstützte Roomba-Modelle / Firmware-Versionen

Unterstützte Firmware-Versionen

SoftwareversionFirmware-InformationenUnterstützt
Version 1.4Versionshinweise#c5f015 unterstützt (#c5f015 inkl. Karte)
v2.4.6-xVersionshinweise#c5f015 unterstützt (#c5f015 inkl. Karte)
v3.2.xxVersionshinweise#c5f015 unterstützt (#f03c15 (KEINE Karte)

Unterstützte Roomba-Geräte

SerieModelle (unvollständig)SoftwareversionFirmware-InformationenUnterstützt
Roomba® 6xx605, 606, 612, 616, 671, 676, 680, 696Version 3.2.40Versionshinweise(höchstwahrscheinlich)
Roomba® 6xx675, 690Version 3.2.40Versionshinweise#c5f015 unterstützt (#f03c15 (KEINE Karte)
Roomba® 6xx692Version 3.5.62Versionshinweise#c5f015 unterstützt (#f03c15 (KEINE Karte)
Roomba® 7xx774, 785,-#f03c15 Das Modell bietet keine WLAN-Konnektivität und daher keine Unterstützung.
Roomba® 8xx880, 886, 891, 896-Versionshinweise(höchstwahrscheinlich)
Roomba® 8xx895Version 3.2.10 / 40 / 69Versionshinweise#c5f015 unterstützt (#f03c15 (KEINE Karte)
Roomba® 9xx965, 981-Versionshinweise(höchstwahrscheinlich)
Roomba® 9xx960 , 966 , 980v2.4.6-3Versionshinweise#c5f015 unterstützt (inkl. Karte)
Roomba® ii7 (7150) , i7+ (7550)Version 1.4Versionshinweise#c5f015 unterstützt (inkl. Karte)
Roomba® e5e5Version 3.4.42Versionshinweise#c5f015 unterstützt (#f03c15 (KEINE Karte)
Roomba® sS9+Version 3.2.4Versionshinweise#c5f015 unterstützt (inkl. Karte)

Bitte helfen Sie uns bezüglich der unterstützten Geräte und teilen Sie mir über ein Ticket mit , ob Ihr Roomba-Modell unterstützt wird!

Kanäle und Staaten

Nach erfolgreicher Einrichtung werden die folgenden Kanäle und Zustände erstellt:

KanalOrdnerZustandBeschreibung
Reinigung--Anweisungen und Informationen zum Reinigungsprozess
Reinigungzuletzt-Letzte Befehle an den Roboter gesendet
ReinigungzuletztBefehlLetzter Befehl an den Roboter gesendet
ReinigungzuletztZeitstempelZeitstempel des letzten gesendeten Befehls
ReinigungzuletztDatum/UhrzeitDer letzte DateTime-Befehl wurde gesendet.
ReinigungzuletztInitiatorInitiator des letzten Befehls
ReinigungzuletztZyklusZyklus
ReinigungzuletztPhasePhase
ReinigungzuletztFehlerWeist auf einen Fehler während der letzten Mission hin.
ReinigungZeitplan-Informationen zum Fahrplan
ReinigungZeitplanZyklusZeitplanzyklus (Sonntag bis Samstag)
ReinigungZeitplanStd.Stunde bis zum Beginn des Zyklus (Sonntag bis Samstag)
ReinigungZeitplanMinutenMinute bis zum Start des Zyklus (Sonntag bis Samstag)
Reinigung-DockSchicke den Roboter zur Dockingstation
Reinigung-PauseDen aktuellen Reinigungsprozess unterbrechen
Reinigung-wieder aufnehmenSetzen Sie den aktuellen Reinigungsprozess fort.
Reinigung-StartBeginnen Sie einen Reinigungsprozess
Reinigung-stoppenDen aktuellen Reinigungsprozess stoppen.
Gerät--Geräteinformationen
GerätNetzwerk-Netzwerkinformationen
GerätNetzwerkDHCPGeben Sie an, ob DHCP aktiviert ist.
GerätNetzwerkRouterMAC-Adresse des Routers
GerätNetzwerkIP-AdresseIP-Adresse
GerätNetzwerkSubnetzSubnetzadresse
GerätNetzwerkTorGateway-Adresse
GerätNetzwerkdns1Primäre DNS-Adresse
GerätNetzwerkdns2Sekundäre DNS-Adresse
GerätPräferenzen-Einstellungen festlegen
GerätPräferenzenbinPauseUNBEKANNT
GerätPräferenzencarpetBoostAutoAutomatisch: Roomba erhöht automatisch seine Saugleistung, um Teppiche gründlich zu reinigen.
GerätPräferenzencarpetBoostHighLeistungsmodus: Roomba erhöht stets seine Saugkraft, um die Reinigungsleistung auf allen Bodenoberflächen zu maximieren.
GerätPräferenzenecoChargeUNBEKANNT
GerätPräferenzennoAutoPassesEin Durchgang: Roomba reinigt alle Bereiche mit nur einem Durchgang.
GerätPräferenzennoPPUNBEKANNT
GerätPräferenzenNur öffnenUNBEKANNT
GerätPräferenzenschedHoldUNBEKANNT
GerätPräferenzenzweiPassDer Roomba fährt alle Bereiche ein zweites Mal ab. Das kann in Haushalten mit Haustieren oder für die gelegentliche gründliche Reinigung hilfreich sein.
GerätVersionen-Versionsinformationen
GerätVersionenhardwareRevHardware-Revision
GerätVersionenAkku-TypAkku-Typ
GerätVersionensoundVerUNBEKANNT
GerätVersionenuiSwVerUNBEKANNT
GerätVersionennavSwVerUNBEKANNT
GerätVersionenwifiSwVerUNBEKANNT
GerätVersionenmobilityVerUNBEKANNT
GerätVersionenBootloader-VersionBootloader-Version
GerätVersionenumiVerUNBEKANNT
GerätVersionensoftwareVersionSoftwareversion
Gerät-_rawDataRohdaten der Präferenzen im JSON-Format
Gerät-MacMAC-Adresse des Roboters
Gerät-NameName des Roboters
Gerät-TypRobotertyp
Staaten--Statusinformationen
Staaten-_verbundenVerbindungsstatus
Staaten-BatterieAkkustand des Roboters
Staaten-binFullGeben Sie an, ob der Behälter voll ist.
Staaten-binInsertedGeben Sie an, ob ein Behälter eingefügt wurde.
Staaten-angedocktGeben Sie an, ob der Roboter angedockt ist.
Staaten-SignalSignalstärke
Staaten-StatusAktueller Status des Roboters
Statistiken--Statistische Informationen
StatistikenMissionen-Missionsstatistik
StatistikenMissionenfehlgeschlagenAnzahl fehlgeschlagener Reinigungsaufträge
StatistikenMissionengelingenAnzahl erfolgreicher Reinigungsaufträge
StatistikenMissionengesamtAnzahl der Reinigungsaufträge
StatistikenZeit-Zeitstatistik
StatistikenZeitavgMinUNBEKANNT
StatistikenZeithOnDockUNBEKANNT
StatistikenZeitnAvailUNBEKANNT
StatistikenZeitestCapUNBEKANNT
StatistikenZeitnLithChrgUNBEKANNT
StatistikenZeitnNimhChrgUNBEKANNT
StatistikenZeitnDocksUNBEKANNT
--aktualisiertDatumUhrzeitDatum und Uhrzeit der letzten Aktualisierung
--aktualisierter ZeitstempelZeitstempel der letzten Aktualisierung

Beschreibung der Präferenzen (unvollständig)

Beim Aufruf wird die folgende Nutzlast empfangen.getPreferences() (siehe https://github.com/karlvr/dorita980#getpreferences ):

ObjektIndexTypBeschreibungioBroker-Status
netinfo-ObjektNetzwerkinformationen der Roomba-Verbindung-
netinfo.dhcpboolescher WertGeben Sie an, ob DHCP aktiviert ist.Gerät.Netzwerk-DHCP
netinfo.addrIP-AdresseIP-AdresseGeräte-Netzwerk-IP
netinfo.MaskeIP-AdresseSubnetzadresseGerät.Netzwerk.Subnetz
netinfo.gwIP-AdresseGateway-AdresseGerät.Netzwerk.Gateway
netinfo.dns1IP-AdressePrimäre DNS-Adressedevice.network.dns1
netinfo.dns2IP-AdresseSekundäre DNS-Adressedevice.network.dns2
netinfo.bssidMacMAC-Adresse des RoutersGerät.Netzwerk.Router
netinfo.secganze ZahlUnbekannt(nicht kartiert)
wifistat-ObjektUnbekannt-
wifistat.W-langanze ZahlUnbekannt(nicht kartiert)
wifistat.uapboolescher WertUnbekannt(nicht kartiert)
wifistat.Wolkeganze ZahlUnbekannt(nicht kartiert)
wlcfg-ObjektUnbekannt-
wlcfg.secganze ZahlUnbekannt(nicht kartiert)
wlcfg.ssidZeichenketteUnbekannt(nicht kartiert)
Mac-MacMAC-Adresse des Roomba-
Land-ZeichenketteUnbekannt-
Cloud-Umgebung-ZeichenketteUnbekannt-
svcEndpunkte.svcDeplIdZeichenketteUnbekannt-
Karten-Upload erlaubt-boolescher WertUnbekannt-
lokaler Zeitversatz-ganze ZahlUnbekannt-
...-......-

Bitte helfen Sie uns bei der Beschreibung der Präferenzen. Falls Sie die Bedeutung der in der Tabelle als unbekannt gekennzeichneten Präferenzen kennen, teilen Sie mir diese bitte über ein Issue mit !

Smart-Home-/Alexa-Integration mit ioBroker.javascript

Sende die Karte nach Abschluss der Mission per Telegram.

Hierfür muss der ioBroker-Adapter ioBroker.telegram installiert sein ( https://github.com/ioBroker/ioBroker.telegram ).

Erstellen Sie ein Skript im Ordner „common“ der Datei ioBroker.javascript und fügen Sie den folgenden Listener hinzu:

var _fs = require('fs');

/*
 * MISSION END: Send map
 * 
 */
var message = "%device.name% finished at %missions.current.endedDateTime% cleaning %missions.current.sqm% sqm in %missions.current.runtime% seconds (%missions.current.error% errors).";
var ns = 'roomba.0';
var imagePath = 'tmp/';

on({id: ns + '.missions.current.ended', change: 'any'}, function(obj)
{
    if (!obj.state || !obj.state.val) return;
    
    // replace variables with state values
    var pos, variable, state, value;
    while (message.indexOf('%') > -1)
    {
        pos = message.indexOf('%');
        variable = message.substring(pos, message.indexOf('%', pos+1)+1);
        state = getState(ns + '.' + variable.replace(/%/g, ''));
        
        if (state !== null && state.val !== null)
            value = state.val
        else
        {
            log('State ' + variable.replace(/%/g, '') + ' not found!', 'warn');
            value =  '';
        }

        if (typeof value === "boolean") value = value === true ? 'with' : 'no';
        message = message.replace(RegExp(variable, 'gi'), value);
    }
    
    // console
    log(message);
    
    // get image
    var img = getState(ns + '.missions.current.mapImage').val;

    if (img !== null && img.indexOf('data:image/png;base64,') > -1)
    {
        _fs.writeFile(imagePath + 'image.png', img.replace(/^data:image\/png;base64,/, ''), 'base64', function(err)
        {
            if (err !== null)
                log(err.message, 'warn');
            else
                sendTo('telegram', {text: imagePath + 'image.png', message: message});
        });
    }
});

04.05.2019: Fehler behoben, der das Senden der Karte verhinderte

Sie können die Variable bearbeiten.message Sie können alle Benachrichtigungen, die Sie zusammen mit der Karte erhalten möchten, hier eingeben.%name-of-state% um den Wert eines Zustands innerhalb des ioBroker.roomba-Objektbaums abzurufen.

Credits

inoffizielle API

Vielen Dank an @koalazak für die inoffizielle iRobot Roomba 980 Node.js-Bibliothek (SDK) .

Symbole

Icons erstellt von Iconnice aus www.flaticon.com ist lizenziert von CC 3.0 BY

Changelog

WORK IN PROGRESS

  • (copilot) Adapter requires node.js >= 22 now
  • (iobroker-bot) Adapter requires node.js >= 20 now.
  • (copilot) Adapter requires admin >= 7.7.22 now
  • (copilot) Adapter requires js-controller >= 6.0.11 now
  • (copilot) Adapter requires admin >= 7.6.17 now

1.3.0 (2024-04-26)

  • (mcm1957) Adapter requires node.js >= 18 and js-controller >= 5 now
  • (mcm1957) Dependencies have been updated

1.2.2 (2023-09-03)

  • (mcm1957) some dependencies have been upgraded
  • (TheRealArthurDent) Background color of the adapter settings page has been removed to make it useable in dark mode.

1.2.1 (2023-08-09)

  • (mcm1957) dorita980 dependency has been upgraded
  • (mcm1957) some other dependencies have been upgraded
  • (mcm1957) Adapter now requires node 16 or newer and js-controller 4.0.24 or newer

1.2.0 (2023-08-09)

  • (TheRealArthurDent) dorita980 has been updated (see PR #144)
  • (mcm1957) Release script has been updated
  • (mcm1957) Several issues reported by adapter checker have been fixed

1.1.4 (2021-07-19)

  • (Apollon77) Adjust some types to prevent js-controller 3.3 warnings
  • (thost96) fix hanging state loading in frontend
  • (thost96) fixed link in canvas warning

1.1.1 (2020-02-16)

  • (Zefau) moved development to Community Repository

1.1.0 (2020-02-06)

  • (Zefau) added support to change schedule (see #36)
  • (Zefau) fixed bug with state commands.last.dateTime having incorrect value NaN
  • (Zefau) fixed error message shown when robot is on a mission but map is not given

1.1.0 (2020-02-06)

  • (Zefau) acknowledged support for S9+ (see #34)

1.0.7 (2019-09-03)

  • (Zefau) fixed bugs occurring when Roomba is on a mission
  • (Zefau) added additional debug logging

1.0.6 (2019-08-19)

  • (Zefau) added loading screen to web interface

1.0.5 (2019-08-18)

  • (Zefau) fixed failing secure connection
  • (Zefau) fixed broken credential retrieval
  • (Zefau) fixed broken refresh

1.0.4 (2019-08-15)

  • (Zefau) fixed password retrieval
  • (Zefau) fixed German translations
  • (Zefau) added donations button
  • (Zefau) updated dorita980 dependency to v3.1.3
  • (Zefau) updated canvas dependency to v2.6.0

1.0.3 (2019-07-23)

  • (Zefau) fixed bug uncaught exception: Cannot read property 'x' of undefined

1.0.2 (2019-07-20)

  • (Zefau) reworked placing home icon (#23)
  • (Zefau) updated dependencies to fix security vulnerabilities in depending packages

1.0.1 (2019-05-15)

  • (Zefau) fixed display error in Chrome (#19)
  • (@Apollon77) updated testing for Node.js v12 (#18)
  • (Zefau) updated dependencies

1.0.0 (2019-05-04)

  • (zefau) No changes, only bump to stable release

0.5.0 (2019-04-21)

  • (zefau) Added command buttons to map page / web interface (#17)
  • (zefau) Removed button to end mission manually missions.current._endMission
  • (zefau) Run stop command in the background when dock command is received (#14)
  • (zefau) Added Web Adapter as dependency

0.4.5 (2019-03-20)

  • Zefau) Refactored retrieval of preferences and added debug mode

0.4.4 (2019-03-15)

  • (@Apollon77) Core Files/Testing Update and introduce adapter-core (#8)

0.4.3 (2019-02-10)

  • (zefau) Improved compatibility for series 600

0.4.2 (2019-02-09)

  • (zefau) Bug fixing

0.4.1 (2019-02-03)

  • (zefau) Support for Compact Mode
  • (zefau) Bug fixing

0.4.0 (2019-01-08)

  • (zefau) Support for e5 and 600 series (due to support by dorita980)

0.3.0 (2019-01-06)

  • (zefau) Image / Map of the current cleaning mission will be created
  • (zefau) Removed encryption of password

0.2.3 (2018-12-03)

  • (zefau) Fixed an issue encrypting the password when entered by user (no automated retrieval)

0.2.2 (2018-12-02)

  • (zefau) Password will now be stored encrypted

Note: If you are coming from an earlier version, you have to (1) empty your settings, (2) save, (3) restart the adapter and (4) enter / fetch credentials again (duo to the fact that password will be stored encrypted now)

0.2.1 (2018-11-25)

  • (zefau) Fixed / improved automatically retrieving of authentication credentials

0.2.0 (2018-11-18)

  • (zefau) improved admin interface to automatically retrieve authentication credentials

0.1.0 (2018-11-04)

  • (zefau) initial version

License

The MIT License (MIT)

Copyright (c) 2023-2026 iobroker-community-adapters iobroker-community-adapters@gmx.de
Copyright (c) 2018-2020 Zefau zefau@mailbox.org

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.