NEWS
IRobot Roomba Adapter
-
Hallo zusammen,
ich beschäftige mich seit kurzem auch mit dem Thema Roomba und iobroker und habe mir ein entsprechendes Docker-Image installiert, welches ich auf meiner DS218+ betreibe. Den Adapter konnte ich installieren und auch eine Verbindung zu meinem i7 herstellen. Auf Befehle, die ich über das Objekt absetze, reagiert diese auch.
Nur das Web-Frontend mag noch nicht funktionieren, hier komme ich auch nicht über die Loading-Anzeige hinaus. Daher würde ich mich hier gerne anhängen, was man noch tun kann. Die notwendigen Bibliotheken und canvas habe ich nachträglich installiert, jedoch ohne Auswirkung.
-
Hallo,
wird dir zufällig auch folgende Meldung in deinem Log angezeigt?
roomba.0 2020-11-15 06:58:34.017 error (2856) "Cannot read property 'toString' of null"
Hab hier schon mehrere Tipps gefunden wie z.B. WebSockets im WebAdapter zu aktivieren etc. Ohne Erfolg.
Hoffe jemand hat hier eine zündende Idee
Danke euch Gruß
-
@das-Scheisserle
Hatte das selbe Problem. Bin mir nicht meh100% sicher aber glaube du musst einfach eine Reinigung ausführen mit laufendem Adapter. -
@PatrickH Danke für den Tipp. Seit der ersten Reinigung kam die besagte Meldung nicht mehr. Die Weboberfläche läd leider immer noch nichts. Allerdings bau ich mir eine Eigene in der Vis also ist diese nebensächlich.
-
Ist hier inzwischen jemand weiter gekommen? Ich habe leider auch das Problem mit dem "Loading States.."
-
Sind aktuell irgend welche Probleme mit dem Adapter oder Roomba bekannt?
Bei mir hat der Adapter auf einmal mitten drin plötzlich aufgehört zu funktionieren. Das VIS Bild, was ja nur die Datenpunkte abholt ist auf diesem Stand eingefroren. Obwohl der Adapter Grün ist, kommt nichts aktuelles mehr vom Roomba
Der Adapter ist quasi Tot.
-
Hallo zusammen
Ich habe den roomba Adapter zum laufen gebracht. Soweit sogst.
Starten, Stoppen, Dok funktioniert auch einwandfrei.Könnt ihr mir sagen, in welchem Datenpunkt / Json ich meine Raum-IDs auslesen kann?
Ich habe leider nicht soooooo viel Ahnung vom ganzen aber ich habe hier Gelsen, dass ich einzelne Räume direkt saugen lassen kann. Dafür muss ich aber erst wissen, wie ich einen Raum ansteure.
Ich nehmen an, dass ich nicht einfach "Wohnzimmer" eingeben kann.
Dank für eure Hilfe!
PS: Bei mir funktioniert das Web Interface auch nicht. Stört mich aber nicht...
Ich Weill nur Raum / Räume starten können....DANKE!
Gruss waeck
-
-
@Kusi Warum nicht hier im Forum? Möglicherweise haben andere auch die gleiche oder ähnliche Frage und wären um die Antwort froh. Sonst müsstest Du da jedem einzeln per PM antworten und das Forum wäre ja fast überflüssig. Also lieber einmal hier schreiben und gut.
Gruss, Jürgen
-
@Wildbill weil es sehr viel Text ist, aber gerne werde ich es hier für alle machen.
-
Die Räume:
Ich habe die Ordner '0_userdata.0/Roomba/Räume' erstellt, und dort für sämtliche Räume von Roomba ein Objekt mit "Raumname" mit der Art "Zeichenkette" erstellt. Dies wird später genutzt und ist dafür da, wenn sich mal die Raum-ID ändert, kannst du diese dort ganz einfach ändern und musst nicht das Blockly anpassen. Zudem kannst du in Blockly mit den Raumnamen arbeiten und nicht den ID´s.Dann erstellst du auf deiner Roomba-App auf dem Smartphone einen Zeitplan (nur einen!!!) und wählst unter "Räume anwählen" nur EINEN Raum aus. Sobald du diesen gespeichert hast, musst du ggfs. den Roomba-Adapter neu starten, damit sich der Wert 'roomba.0/device/_rawData' aktualisiert. Alternativ das Abfrageintervall des Adapters auf 10 Sekunden stellen.
Dieser Wert kopierst du dir dann und fügst ihn in ein Texteditor (ich nehme Word) ein. Der Text ist über eine Seite lang, dort musst du nun nach dem Wort "cleanSchedule2" suchen. Der ganze Text davor habe ich einfach gerade gelöscht, damit es übersichtlicher wird. Ein paar Wörter (ca. 3-4 Zeilen) später findest du die "Region-ID".
Kopiere nun den Text '{"region_id":"xx","type":"xxx"}' (xx steht für den Text, der bei dir angezeigt wird) und füge dies in den von dir erstellten Objektwert im Ordner '0_userdata.0/roomba/räume' des entsprechenden Raumes ein.Nachtrag: Mit folgendem Blockly kann man die Region_ID per Debug auslesen. Geht viel schneller und ist um einiges bequemer:
Nun änderst du im Zeitplan der Roomba-App den Raum, Neustart von Roomba-Adapter und kopierst wieder den Wert von 'roomba.0/device/_rawData', suchst dir wiedder die Region-ID heraus und kopierst diese in dein von dir erstellten Raum im Javascript-Ordner. Dies machst du mit all den Räumen, welche du dann von ioBroker aus starten willst. Ich habe mir alle 10 Räume so kopiert.
Weitere Objekte:
Erstelle zu den Räumen noch 2 weitere Datenpunkte, ich habe diese "Beginn" und "Ende" benannt.Folgende Werte muss du darin speichern:
Bei Beginn: {"command":"start","ordered":1,"params":{"noAutoPasses":false,"twoPass":false},"pmap_id":"xxxxxxxxxxxxxxxxx","regions":[Bei Ende: ],"user_pmapv_id":"xxxxxxxxxxx"}
Die pmap_id und user_pmapv_id musst du mit den Werten ergänzen, welche bei dir in der _rawData stehen (wo du die RaumID herauskopiert hast).
Start der Reinigung:
Um nun einen Raum zu Starten, musst du die Werte/Teile wie folgt zusammensetzen:
"Beginn" "Raumname" "Ende", alles an einem Stück! Dies kannst du dann direkt in 'roomba.0/commands/_runCommand' schreiben und Roomba beginnt zu saugen.
Wenn du mehrere Räume saugen willst, dann kannst du mehrere Räume hintereinander nehmen, z.B. so:
"Beginn" "Raumname" , "Raumname" , "Raumname" "Ende"
(Räume getrennt mit einem Komma, OHNE Leerzeichen!Der Roomba-Start mache ich mit Blockly.
1 Raum reinigen:
mehrere Räume reinigen:
Der Sonst-Teil habe ich eingefügt, damit der Roomba seine Reinigung stoppt, wenn ich den Schalter wieder auf "Aus" stelle.
Und so sieht meine vis "Roomba" aus:
Erklärung, warum ich "Beginn" und "Ende" als Datenpunkte gespeichert habe:
Zu Beginn habe ich mir die Werte darin einfach als Text in Blockly vor/nach den Raum gesetzt.
Leider hat sich dann die Karte mal angepasst in der Roomba-App, dadurch hat sich die pmap_id geändert (und die Räume).
Darauf musste ich bei ALLEN Einzelräumen und Gruppen diese pmap_id ändern.
Wenn man jedoch diese Werte eben in einem Datenpunkt hat, dann muss man dies nur einmal im Objekt ändern, und es wird gleich überall übernommen.Folgendes habe ich bei mir noch gemacht (optional):
Pause-Schalter:
Licht einschalten, wenn Zeit zwischen Sonnenuntergang und Sonnenaufgang (kann auch ohne Datenpunkt gelöst werden, ich brauche diesen aber noch für andere Skripts).
Licht ausschalten, wenn dieses vorher für die Reinigung eingeschaltet wurde.
Schalter zurücksetzen auf "Aus", sobald der Roomba seine Reinigung beendet hat.
-
bitte löschen, Danke
Wie kann ich eigene Einträge von mir löschen?
Es kommt immer die Meldung "Du verfügst nicht über ausreichende Berechtigungen, um die Aktion durchzuführen." -
bitte löschen, Danke
-
Hallo Kusi
Erstmals vielen Dank für eine Anleitung.
Sehr umfangreich und endlich ein Mal etwas, was ich einfach verstanden habe!Zum testen habe ich folgenden Befehl in roomba.0.commands._runCommand eingefügt:
{"command":"start","ordered":1,"params":{"noAutoPasses":false,"twoPass":false},"pmap_id":"YGOxxxx","regions":[{"region_id":"20","type":"rid"}],"user_pmapv_id":"20xxxx"}
xx ist natürlich der korrekte Inhalt. Da ich nicht weiss ob dieser "geheim" ist, habe ich ihn ersetzt.
Nun macht aber mein Roomba so komplett gar nix...
Habe ich doch etwas nicht Veranden?
Danke für eine Hilfe.
Gruss waeck
-
@waeck sagte in IRobot Roomba Adapter:
Zum testen habe ich folgenden Befehl in roomba.0.commands._runCommand eingefügt:
Hast du dies per Blockly mit "steuern" gemacht?
-
Ich habe es von Hand eingegeben und über Blockly.
Beide werden kurz grün, danach gehen sie auf rot... ?
-
@waeck Was wird grün und danach rot? Der Adapter unter "Instanz"? Oder leuchtet der Roomba?
Reagiert der Roomba in irgend einer Weise, wenn du den _runCommand steuerst? (Roomba leuchtet, Roomba sagt etwas, usw.)Ich habe noch beide Befehle (den von dir und mir) verglichen. Unterschiede sind nur bei pmap_id und user_pmapv_id, was auch logisch ist.
Hast du gleich viele Zeichen wie ich?
Meine pmap_id besteht aus 10 Zeichen, einem Strich und 11 Zeichen, total also 22 Zeichen.
Meine user_pmapv_id besteht aus 13 Zeichen.
Ist dies bei dir auch so?Die region_id ist korrekt? Wichtig zu wissen ist, wenn du deine Karte in der Roomba-App mal anpasst/änderst, dann ändert sich auch die pmap_id und/oder user_pmapv_id.
Bei mir sieht es im Blockly wie folgt aus:
1 Raum reinigen
mehrere Räume reinigen
-
Ich gehöre auch zu denjenigen, wo das Webinterface bei loading states hängt
-
Mein Roomba macht nichts.
Weder blinken noch sonst was.... Es ist als würde der "Befehl" nicht ankommen.
Start und Stop funktioniert aber.... -
@waeck ich bin mir gar nicht sehr sicher, ob man den Befehl einfach zu _runCommand einfügen darf, oder ob es zwingend per Blockly mit "steuern" gemacht werden muss.