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.