ich habe das jetzt einmal versucht
es gibt eine Gruppe mit dem Namen "alle_Fenster_Kontakte".
und ich habe eine Rule definiert
Code: Alles auswählen
rule "fensterzustand melden"
when
Item GATEWAYEXTRAS_Anwesenheit changed to OFF // Haus wird gerade verlassen
then
if(GATEWAYEXTRAS_Anwesenheit.state == OFF && alle_Fenster_Kontakte.members.filter[ i | i.state != CLOSED ].size > 0) { // niemand zuhause und mindestens ein Fenster offen
var mailActions = getActions("mail","mail:smtp:270ff9aa89")
var String strList = "Es ist noch mindestens ein Fenster offen: " // Variable initialisieren
alle_Fenster_Kontakte.members.filter[ i | i.state != CLOSED ].forEach[ k | strList = strList + k.name + ", "] // Liste mit Elementen füllen
logInfo(strList) // Meldung senden.
mailActions.sendMail("peter.walber@t-online.de",strList)
}
end
entsprechende Mail Items sind auch als Thing definiert
Die Rule wird korrekt eingelesen und erscheint innerhalb der Rules Rule "fensterzustand melden". Der Dateiname ist "anzeige_offene_Fenster.rules". Sie wird auch getriggert durch Setzen der Variablen / des Items "
GATEWAYEXTRAS_Anwesenheit". Das funktioniert und sehe ich im log
Code: Alles auswählen
2025-01-14 14:18:45.865 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'GATEWAYEXTRAS_Anwesenheit' received command OFF
2025-01-14 14:18:45.868 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'GATEWAYEXTRAS_Anwesenheit' predicted to become OFF
2025-01-14 14:18:45.869 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'GATEWAYEXTRAS_Anwesenheit' changed from ON to OFF
Wenn die Rule ausgeführt wird, wird im log aber folgender Fehler angezeigt (es ist genau ein Fenster von acht Fenstern offen).
Code: Alles auswählen
[b]2025-01-14 13:52:50.120 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'anzeige_offene_Fenster-1' failed: An error occurred during the script execution: index=1, size=1 in anzeige_offene_Fenster
[/b]
Ich habe mir die Code Schnipsel für die rule hier aus dem Forum zusammengesucht. Vor allem die Schleifen verstehe ich nicht. Die Zugriffe auf members.filter und i.state und k.name sind mir unklar
Code: Alles auswählen
alle_Fenster_Kontakte.members.filter[ i | i.state != CLOSED ].size > 0
und
alle_Fenster_Kontakte.members.filter[ i | i.state != CLOSED ].forEach[ k | strList = strList + k.name + ", "]
Was kann der Fehler sein ?