Für alle anderen hier die fertige rule:
Code: Alles auswählen
import org.openhab.core.model.script.ScriptServiceUtil
import java.util.Map
val Map<String, Timer> contactTimers = newHashMap
val Map<String, Boolean> contactList = newHashMap
rule "Fenster Status"
when
Member of Fenstersensoren changed
then
val String itemLabel = triggeringItem.label.toString
val String itemName = triggeringItem.name.toString
val String itemNameSperren = itemName.replace("Kontakt","Sperren")
val GenericItem SperrenItem = ScriptServiceUtil.getItemRegistry?.getItem(itemNameSperren) as GenericItem
var vName = triggeringItem.name.split("_").get(1)
var vTimerName = "timer_" + vName
contactTimers.get(vTimerName)?.cancel;
if((triggeringItem.state == "Offen") && (SperrenItem.state != ON)) {
contactList.put(vTimerName,true)
contactTimers.put(vTimerName, createTimer(now.plusMinutes(13)) [|
if(contactList.get(vTimerName)) {
contactList.put(vTimerName,false)
AlexaWohnzimmer_Ankuendigung.sendCommand(itemLabel + "ist seit 13 Minuten geöffnet")
AlexaBad_TTS.sendCommand(itemLabel + "ist seit 13 Minuten geöffnet")
AlexaArbeitszimmer_TTS.sendCommand(itemLabel + "ist seit 13 Minuten geöffnet")
AlexaKueche_TTS.sendCommand(itemLabel + "ist seit 13 Minuten geöffnet")
sendNotification("abc@googlemail.com", itemLabel + "ist seit 13 Minuten geöffnet", "contact", "Info")
} else {
AlexaWohnzimmer_Ankuendigung.sendCommand(itemLabel + "ist länger als 13 Minuten geöffnet")
AlexaBad_TTS.sendCommand(itemLabel + "ist länger als 13 Minuten geöffnet")
AlexaArbeitszimmer_TTS.sendCommand(itemLabel + "ist länger als 13 Minuten geöffnet")
AlexaKueche_TTS.sendCommand(itemLabel + "ist länger als 13 Minuten geöffnet")
sendNotification("abc@googlemail.com", itemLabel + "ist länger als 13 Minuten geöffnet", "contact", "Info")
}
contactTimers.get(vTimerName)?.reschedule(now.plusMinutes(5))
])
} else {
contactTimers.get(vTimerName)?.cancel
}
end