Ich würde es in diesem Fall andersrum formulieren (allerdings bekommst Du dann halt alles zu sehen außer die gescjlossenen, also auch solche Items, die auf NULL oder UNDEV stehen:
Code: Alles auswählen
msg = gKontakteDG.members.filter[ i | !(i.toString.contains("CLOSED"))].map[ label ].reduce[ s, label | s + " und " + label ]
Natürlich kannst Du auch mehrere Bedingungen verwenden:
Code: Alles auswählen
msg = gKontakteDG.members.filter[ i | i.toString.contains("OPEN") || i.toString.contains("TILTED")].map[ label ].reduce[ s, label | s + " und " + label ]
Eventuell möchtest Du noch eine Information, welche Fenster gekippt und welche geöffnet sind:
Code: Alles auswählen
msg1 = gKontakteDG.members.filter[ i | i.toString.contains("OPEN") ].map[ label ].reduce[ s, label | s + " und " + label ]
msg2 = gKontakteDG.members.filter[ i | i.toString.contains("TILTED") ].map[ label ].reduce[ s, label | s + " und " + label ]
msg = msg1 + " sind geöffnet, " + msg2 + " sind gekippt."
Natürlich sollte man da noch ein paar Bedingungen einflechten, damit die entsprechenden Teilmeldungen nur dann verwendet werden, wenn mindestens eines der Fenster betroffen ist, aber das ist dann ja mehr eine Fingerübung...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet