Vor einiger Zeit hat mir der @udo1toni hier "meine" genialste Rule geschrieben.viewtopic.php?p=21565#p21565

Dadurch kann ich in einer Sitemap Räume auswählen, u.a. den "Go-Button" drücken und mein Saugroboter düst los... Alles klein, kompackt und läuft seit dem täglich!

Nun habe ich mein Setup um Türkontakte erweitert, für jede Tür einen:
tk_16_Arbeitszimmer
tk_17_Bad
tk_18_Flur
tk_20_Kueche
und würde die Rule gern so erweitern das der Roboter nach der Abfrage der HashMap nicht nur los fährt wenn der jeweilige Raum ausgewäht ist, sondern auch NUR wenn der dazu passende Türkontakte OFFEN ist. So zu sagen als Sicherung...
Die Türkontakte habe ich einer Gruppe "gTKontk" zusammengefasst und kann mir Vorstellen das man eine zweite HashMap definiert in dem diese Eingetragen werden. Im THEN Bereich wird dann nicht nur geprüft ob das 1. Element der Gruppe "Raeume" ON ist sondern AUCH das dazu passende Element der Gruppe "gTKontk" OFFEN . Nur weiß ich überhaupt nicht wie ich das in der Rule formulieren soll!
Kann mir da jemand behilflich sein?
Anbei die Rule von @udo1toni
Code: Alles auswählen
import java.util.HashMap
val HashMap<String,String> Raeume = newHashMap("Robo_16_Arbeitszimmer_vw" -> "app_segment_clean[16]", // 16 - Arbeitszimmer
"Robo_17_Bad_vw" -> "app_segment_clean[17]", // 17 - Bad
"Robo_18_Flur_vw" -> "app_segment_clean[18]", // 18 - Flur
"Robo_20_Kueche_vw" -> "app_segment_clean[20]") // 20 - Kueche
rule "vorauswahl_fuer_automatisches_saugen"
when
Item Robo_Test_B changed to ON
then
if(gRomms_vw.members.filter[i|i.state == ON].size == 0) { // auch der letzter Raum der Gruppe schon gesaugt (Sortierabfrage ?)
logInfo("vacuum","Fertig mit Saugen!")
if(Robo_Test_B.state != OFF) // Falls Schalter nicht OFF
Robo_Test_B.postUpdate(OFF) // dann auf OFF
return;
}
val vacRoom = gRomms_vw.members.filter[i|i.state == ON].sortBy[name].head // 1. Element der Gruppe das ON ist
logInfo("vacuum","{}. Raum ({}) gewählt",Raeume,vacRoom.name)
val String strRaum = Raeume.get(vacRoom.name) // Variable initialisieren
logInfo("vacuum","Raumzone {} gewählt",strRaum)
Mi_1S_ActionsCommands.sendCommand(strRaum) // Raum saugen mit dem Kommando aus Variablen und Gruppe
vacRoom.postUpdate(OFF)
end