Zum Hauptinhalt springen

iRobot Roomba Smart-Home-Integration, kostenlos und Open Source

iRobot Roomba-Integration für Gladys Assistant

iRobot-Roomba- und -Braava-Roboter im lokalen Netz: Status, Akku, Behälter, Start, Station.

Überblick​

Diese Integration steuert iRobot-Roomba- und -Braava-Roboter in deinem lokalen Netz, ohne den Umweg über die iRobot-Cloud: Die Integration spricht direkt mit jedem Roboter, über die verschlüsselte MQTT-Verbindung, die auch die iRobot-App zu Hause nutzt (Port 8883). Du bekommst ein Gladys-Gerät pro Roboter, mit Status, Akku, Behälter, Dauer und Fläche des Einsatzes sowie den Befehlen Starten, Pause, Stoppen, Zurück zur Ladestation und Finden. Drei Szenen-Auslöser (Einsatz beendet, Roboter festgefahren oder mit Fehler, Behälter voll) und ein Dashboard-Widget ergänzen das Ganze.

Die iRobot-Cloud wird nur einmal genutzt, wenn du das möchtest, um das Passwort deiner Roboter zu lesen.

Ohne die Hardware entwickelt: Rückmeldungen sind willkommen. Der Autor hat keinen iRobot-Roboter. Die Integration folgt dem lokalen Protokoll, wie es die Open-Source-Projekte dorita980 und roombapy (die Bibliothek von Home Assistant) dokumentieren, und wird gegen einen simulierten Roboter getestet. Teile deine Erfahrungen und die Ausgabe der Aktion Diagnose im Gladys-Forum.

Diese Integration steht in keiner Verbindung zu iRobot.

Unterstützte Roboter​

Die WLAN-Roboter, die die iRobot-App lokal steuert (lokales Protokoll „v2“ und „v3“):

  • Roomba der 600er-Serie mit WLAN (675, 690, 694…), 800er- und 900er-Serie (960, 980…);
  • Roomba der e-Serie (e5, e6), i-Serie (i3, i4, i7, i7+, i8…), s-Serie (s9, s9+), j-Serie (j7, j7+, j9…) und die Combo-Modelle dieser Generationen;
  • Braava jet m6.

Die neuesten „Matter-first“-Modelle (zum Beispiel der Combo Max 705) nutzen ein neues Protokoll, das weder dorita980 noch roombapy bisher unterstützen: Diese Modelle werden auch hier nicht unterstützt. Roboter ohne WLAN werden nicht unterstützt.

Voraussetzungen​

  • Gladys 5.2.0 oder neuer.
  • Der Roboter ist mit der iRobot-App eingerichtet und mit deinem WLAN verbunden.
  • Gladys und der Roboter im selben lokalen Netz, und die IP-Adresse des Roboters (in deinem Router oder in der iRobot-App: Robotereinstellungen, WLAN). Gib dem Roboter im Router eine feste Adresse (DHCP-Reservierung): Die Integration sucht einen Roboter, der seine Adresse gewechselt hat, aber eine feste Adresse ist zuverlässiger.
  • Das Roboterpasswort, das die Integration auf einem von zwei Wegen erhält (siehe Konfiguration):
    • E-Mail-Adresse und Passwort deines iRobot-Kontos, einmal verwendet;
    • oder ein Druck auf die HOME-Taste des Roboters (bei manchen 600ern DOCK + SPOT).

Installation​

Öffne in Gladys Integrationen → Von GitHub installieren und gib https://github.com/guim31/gladys-roomba ein. Gladys zeigt vor der Installation, was die Integration anfordert: die Netzwerksuche auf UDP-Port 5678 (der iRobot-Suchport), über Gladys.

Konfiguration​

Öffne die Seite Konfiguration der Integration. Füge deine Roboter mit einer der beiden Aktionen unten hinzu, öffne dann den Tab Entdecken und füge die Roboter zu Gladys hinzu. Nur die zu Gladys hinzugefügten Roboter werden verbunden.

Sprache der Namen​

Sprache der Funktionsnamen, der Fehlertexte und der Texte der Szenen-Ereignisse (standardmäßig Französisch). Funktionsnamen werden beim Anlegen eines Geräts festgelegt: Um sie nach einer Änderung umzubenennen, lösche das Gerät und füge es erneut hinzu.

Passwörter aus der iRobot-Cloud holen​

Gib E-Mail-Adresse und Passwort deines iRobot-App-Kontos ein und das Land des Kontos mit zwei Buchstaben (DE, AT, CH…). Die Integration meldet sich einmal an, liest die Kennung (BLID) und das lokale Passwort jedes Roboters des Kontos und sucht die Roboter dann in deinem Netz. Das Kontopasswort wird nie gespeichert; die Roboterpasswörter werden im privaten Speicher der Integration aufbewahrt.

Wird ein Roboter im Netz nicht gefunden, starte Roboter hinzufügen mit seiner IP-Adresse: Sein Passwort ist schon bekannt, keine Taste nötig.

Roboter hinzufügen​

Gib die IP-Adresse des Roboters ein. Drei Fälle:

  • das Passwort kam aus der Cloud: nichts weiter zu tun;
  • du kennst das Passwort: Gib es im optionalen Passwortfeld ein;
  • sonst die Methode mit der HOME-Taste: Schließe die iRobot-App, stelle den Roboter auf seine Ladestation, halte HOME (bei manchen 600ern DOCK + SPOT) etwa zwei Sekunden gedrückt, bis er eine Melodie spielt, und starte die Aktion innerhalb weniger Sekunden. Die Integration fragt den Roboter bis zu 45 Sekunden lang. Die neueste Firmware antwortet nicht mehr: Nutze dann die Cloud-Methode.

Die Integration fragt den Roboter auf UDP-Port 5678, wer er ist (seine BLID); antwortet er nicht, gib seine BLID im optionalen Feld ein. Das Passwort wird danach mit einer Verbindung zum Roboter geprüft.

Roboter vergessen​

Löscht das Passwort des gewählten Roboters und schließt seine Verbindung. Lösche auch das Gerät in Gladys, wenn du es nicht mehr brauchst.

Diagnose​

Eine Zusammenfassung zum Einfügen im Forum, wenn etwas nicht klappt: Modell, Firmware, Verbindungsstatus, Einsatz, Fähigkeiten. Die Zusammenfassung enthält keine Kennung, keine Adresse und kein Passwort.

Das Robotergerät​

FunktionGladys-TypInhalt
StatusSaugroboter, StatusGestoppt, läuft, pausiert, Fehler, kehrt zurück, lädt, angedockt
ReinigungSaugroboter, BetriebsmodusReinigen: startet oder setzt einen pausierten Einsatz fort. Leerlauf: stoppt
Zurück zur LadestationSaugroboter, LadestationSchickt den Roboter zur Station (vorher pausiert, wenn er reinigt)
PauseTasterPausiert den Einsatz
FindenTasterDer Roboter spielt einen Ton
AkkuAkku (%)Ladestand
LädtAkku lädt1 während des Ladens auf der Station
Behälter vollEingang (ja/nein)1, wenn der Behälter voll ist (Roboter mit Behältersensor)
EinsatzdauerDauer (Minuten)Des laufenden oder des letzten Einsatzes
Gereinigte FlächeFläche (m²)Des laufenden oder des letzten Einsatzes (wenn gemeldet)
FehlerText„Kein Fehler“ oder der Fehlertext mit seinem Code

Ein vom Benutzer mitten im Einsatz gestoppter Roboter zeigt Pausiert; ein Roboter auf seiner Station zeigt Lädt, bis der Akku voll ist, dann Angedockt.

Widget​

Das Widget Roomba zeigt einen Roboter: eine Live-Kachel mit dem Akku, dann seinen Status, den Behälter, den laufenden oder letzten Einsatz, den Fehler, wenn es einen gibt, und die Verbindung, wenn sie verloren ist. Seine Tasten folgen der Lage: Starten (und Zur Station, wenn der Roboter nicht auf der Station steht) in Ruhe, Pause und Zur Station beim Reinigen, Fortsetzen, Stoppen und Zur Station, wenn pausiert. Keine Taste, solange der Roboter nicht verbunden ist.

Szenen-Auslöser​

  • Roomba: Einsatz beendet — ein Reinigungseinsatz ist beendet, nicht wegen eines Fehlers. Filter: Roboter, Ende („Fertig, zurück“, wenn der Roboter von selbst heimgekehrt ist, „Gestoppt oder zurückgeschickt“ sonst). Variablen: Roboter, Ende, Dauer in Minuten, Fläche in m².
  • Roomba: festgefahren oder Fehler — der Roboter steckt fest oder meldet einen Fehler (einmal pro Fehler). Filter: Roboter. Variablen: Roboter, Fehlertext, Fehlercode.
  • Roomba: Behälter voll — der Behälter ist voll. Er löst einmal aus, und erst wieder, nachdem der Behälter auf der Station als nicht voll erkannt wurde (der Sensor kann beim Reinigen schwanken). Filter: Roboter. Variable: Roboter.

Status, Akku und Behälter des Roboters sind auch Gerätefunktionen: Eine Szene kann sie mit dem üblichen Auslöser und den Bedingungen zum Gerätestatus nutzen und den Roboter mit der Aktion „Gerät steuern“ starten oder zur Station schicken.

Szenenbeispiele​

  • Reinigen, wenn alle weg sind: Auslöser „das Haus ist leer“, Aktion: Reinigung des Roboters auf Reinigen setzen. Eine zweite Szene schickt ihn zur Station (Zurück zur Ladestation), wenn jemand heimkommt.
  • Benachrichtige mich, wenn der Roboter feststeckt: Auslöser Roomba: festgefahren oder Fehler, Aktion: eine Nachricht „{{triggerEvent.data.robot}}: {{triggerEvent.data.error}}“ senden.
  • Einsatzbericht: Auslöser Roomba: Einsatz beendet, Ende „Fertig, zurück“, Aktion: „Reinigung in {{triggerEvent.data.duration_minutes}} min erledigt“ senden. Mit Roomba: Behälter voll eine Erinnerung, den Behälter zu leeren.

Aktualisierung und Netzwerknutzung​

  • Der Roboter sendet jede Änderung selbst, sobald sie eintritt; die Integration gibt nur die geänderten Werte an Gladys weiter.
  • Ein interner Timer prüft jede Minute und sendet alle 6 Stunden die unveränderten Werte erneut, damit Gladys immer einen aktuellen Wert hat. Er hängt nicht davon ab, dass Gladys das Gerät abfragt.
  • Alles bleibt in deinem lokalen Netz. Die iRobot-Cloud wird nur von der Aktion „Passwörter aus der iRobot-Cloud holen“ aufgerufen, drei Anfragen, wenn du sie startest.
  • Ein Roboter, der nicht antwortet, wird alle 10 Sekunden bis 2 Minuten erneut versucht; ein von einem anderen Client belegter Roboter alle 30 Sekunden bis 2 Minuten; ein abgelehntes Passwort alle 15 Minuten.

Fehlerbehebung​

  • „Belegt (iRobot-App?)“: Ein Roboter akzeptiert nur eine lokale Verbindung. Solange die iRobot-App (oder Home Assistant oder ein anderes Werkzeug) sie hält, weist der Roboter Gladys ab. Schließe die App oder warte: Die Integration versucht es weiter und verbindet sich, sobald der Roboter frei ist. Umgekehrt funktioniert die iRobot-App weiter über die Cloud, solange Gladys die Verbindung hält.
  • „Antwortet nicht“: Prüfe, ob der Roboter eingeschaltet und im WLAN ist und ob sich seine IP-Adresse nicht geändert hat (starte Roboter hinzufügen mit der neuen Adresse erneut).
  • „Passwort abgelehnt“: Starte Roboter hinzufügen oder die Cloud-Aktion erneut.
  • Die HOME-Tasten-Methode liefert nichts: Schließe die iRobot-App, stelle den Roboter auf seine Station, halte HOME bis zur Melodie und starte die Aktion sofort; manchmal braucht es mehrere Versuche. Neuere Firmware gibt das Passwort nur über die Cloud heraus.
  • Die Cloud lehnt die Anmeldung ab: Prüfe E-Mail-Adresse und Passwort in der iRobot-App; ein mit Google oder Apple erstelltes Konto hat eventuell kein Passwort.
  • Alte Firmware und TLS: Die Roboter nutzen alte TLS-Einstellungen (TLS 1.2, AES128-SHA256, alte Neuverhandlung). Die Integration aktiviert sie nur für die Verbindung zum Roboter.

Bei jedem Problem starte Diagnose und füge das Ergebnis im Forum ein, zusammen mit den Protokollen der Integration (Integrationen → iRobot Roomba → Überwachung). Mehr Details mit der Umgebungsvariable LOG_LEVEL=debug.

Einschränkungen​

  • Räume: Das Reinigen ausgewählter Räume wird nicht unterstützt. Raumnamen und Karten liegen in der iRobot-Cloud; das lokale Protokoll kennt nur Karten- und Bereichskennungen, die sich ändern, wenn die Karte in der App bearbeitet wird. Die Reinigung der ganzen Wohnung ist immer möglich.
  • Keine Karte, keine Position, kein Zeitplan, keine Saug- oder Wischeinstellungen in dieser Version.
  • Einsatzdauer und Fläche sind die, die der Roboter meldet: Manche neueren Modelle melden keine Fläche.
  • Den Behältersensor haben die meisten Roomba-Modelle, nicht die Braava (dann kein Wert „Behälter voll“).
  • Eine Verbindung pro Roboter: Solange Gladys verbunden ist, läuft die iRobot-App über die Cloud.
  • Ohne die Hardware entwickelt: Wie jedes Modell auf einen zweiten lokalen Client reagiert und manche Zustände stammen aus den Open-Source-Projekten und wurden nicht beobachtet.

Daten und Datenschutz​

Die Integration speichert in ihrem privaten Volume (/data/robots.json, nur für die Integration lesbar): Name, Modell, Firmware, IP- und MAC-Adresse, BLID und lokales Passwort jedes Roboters. Das Passwort des iRobot-Kontos wird nie gespeichert. Kein Passwort, keine Kennung und keine Adresse wird in die Protokolle geschrieben.

Konfigurationseinstellungen​

Diese Einstellungen fragt iRobot Roomba in seinem Konfigurationsbildschirm in Gladys ab.

EinstellungTypPflichtfeldBeschreibung
Einen Roboter hinzufügensectionNeinDie Integration spricht mit jedem Roboter in deinem lokalen Netz und braucht sein Passwort. Zwei Wege, im Bereich „Aktionen“ unten: „Passwörter aus der iRobot-Cloud holen“ (E-Mail-Adresse und Passwort deiner iRobot-App, einmal verwendet und nie gespeichert) oder „Roboter hinzufügen“ mit seiner IP-Adresse, während du die HOME-Taste des Roboters auf seiner Station gedrückt hältst. Füge den Roboter danach im Tab „Entdecken“ zu Gladys hinzu. Ein Roboter akzeptiert nur eine lokale Verbindung: Solange Gladys sie hält, läuft die iRobot-App über die Cloud.
Sprache der NamenselectNeinSprache der Funktionsnamen, Fehlertexte und Szenen-Ereignistexte. Funktionsnamen werden beim Anlegen eines Geräts festgelegt: Um sie umzubenennen, lösche das Gerät und füge es erneut hinzu.

So installierst du iRobot Roomba in Gladys​

  1. Öffne in Gladys Integrationen: iRobot Roomba erscheint im Katalog neben den nativen Integrationen, mit einem Community-Badge.
  2. Klicke auf Installieren. Gladys lädt das Docker-Image (ghcr.io/guim31/gladys-roomba:1.0.1) herunter, startet es in einer vom Kern isolierten Sandbox und erzeugt die Oberfläche der Integration (Geräte, Erkennung und Konfiguration).
  3. Öffne den Bildschirm Konfiguration der Integration, fülle die Einstellungen aus und speichere.
  4. Du kannst sie auch direkt über die URL ihres Repositorys installieren: https://github.com/guim31/gladys-roomba.

iRobot Roomba benötigt Gladys >=5.2.0. Der Katalog in Gladys wird stündlich aktualisiert, eine neue Version ist also spätestens eine Stunde nach ihrer Veröffentlichung verfügbar.

Du nutzt Gladys noch nicht? Es ist kostenlos und Open Source: folge der Installationsanleitung, um loszulegen.

Über externe Integrationen​

iRobot Roomba ist eine externe Integration: eine Community-Integration, die als Docker-Container verpackt und auf GitHub veröffentlicht wird. Gladys installiert sie mit einem Klick und führt sie in einer vom Kern isolierten Sandbox aus. Sie wird von guim31 veröffentlicht und gepflegt, nicht vom Gladys-Kernteam.

Abonniere den Newsletter von Gladys Assistant

Ein paar E-Mails im Monat zu neuen Releases und Neuigkeiten aus dem Projekt. Verschickt von Pierre-Gilles Leymarie, dem Gründer des Projekts. Jederzeit abbestellbar 🙂