Wie gehe ich denn da vor?
das ist die IF-Abfrage mit der das rule losrennt
Code: Alles auswählen
if(E_Touch10_2.state == OFF) {
logInfo("bw_alarm","Alarmanlage aus, Rule Ende!")
return;
}
Code: Alles auswählen
if(E_Touch10_2.state == OFF) {
logInfo("bw_alarm","Alarmanlage aus, Rule Ende!")
return;
}
Code: Alles auswählen
import java.util.List
var List<Timer> timers = newArrayList
var Timer shutoffTimer = null
var Timer LEDTimer1 = null
var Timer LEDTimer2 = null
var Timer SireneTimer1 = null
var DateTime lastRun = 0
rule "Rule Datei eingelesen"
when
System started
then
lastRun = now.minusMinutes(2)
end
rule "Bewegung 5 mal in einer Minute"
when
Member of gBW changed from OFF to ON
then
if(MailSenden.state == ON) {
val mailText = "Bewegungsmelder " + triggeringItem.name + " hat ausgelöst"
mailActions.sendMail("xxxx@gmail.com","Alarm "+ triggeringItem.name, mailText)
}
if(TelegramSenden.state == ON) {
val telegramAction = getActions("telegram","telegram:telegramBot:xxxx")
telegramAction.sendTelegram("Bewegungsmelder An - %s", triggeringItem.name)
}
if(E_Touch10_2.state == OFF) {
logInfo("bw_alarm","Alarmanlage aus, Rule Ende!")
return;
}
if(LEDTimer1 === null) {
gLED.sendCommand(ON)
LEDTimer1 = createTimer(now.plusSeconds(7), [ |
gLED.sendCommand(OFF)
LEDTimer1 = null
] )
}
if(SireneTimer1 === null) {
Sirene_Gaeste.sendCommand(ON)
SireneTimer1 = createTimer(now.plusSeconds(1), [ |
Sirene_Gaeste.sendCommand(OFF)
SireneTimer1 = null
] )
}
if(shutoffTimer !== null) {
logInfo("bw_alarm","Alarm schon aktiv, Rule Ende!")
return;
}
if(lastRun.isAfter(now.minusMinutes(2))) {
logInfo("bw_alarm","letzter Alarm vor weniger als 2 Minuten, Rule Ende!")
return;
}
if(timers.size < 5) {
val t = createTimer(now.plusMinutes(1), [ |
timers.remove(0)
] )
timers.add(t)
}
if(timers.size == 5) {
if(MailSenden.state == ON) {
val mailActions = getActions("mail","mail:smtp:xxxx")
mailActions.sendMail("xxx@gmail.com","Sirene aktiviert ", "Sirene ON")
}
if(TelegramSenden.state == ON) {
val telegramAction = getActions("telegram","telegram:telegramBot:xxxx")
telegramAction.sendTelegram("Sirene AN")
}
Sirene_Gaeste.sendCommand(ON)
LEDTimer2 = createTimer(now.plusMillis(10), [ |
if(gLED.state != ON) {
gLED.sendCommand(ON)
LEDTimer2.reschedule(now.plusSeconds(3))
} else {
gLED.sendCommand(OFF)
LEDTimer2.reschedule(now.plusSeconds(3))
}
] )
lastRun = now
while(timers.size > 0) {
timers.get(0).cancel
timers.remove(0)
}
shutoffTimer = createTimer(now.plusSeconds(90), [ |
Sirene_Gaeste.sendCommand(OFF)
logInfo("Alarmrule", "Sirene Ende")
LEDTimer2?.cancel
LEDTimer2 = null
if(gLED.state != OFF)
gLED.sendCommand(OFF)
shutoffTimer = null
] )
}
end