Re: Alarm Rule - Bitte checken ob korrekt?
Verfasst: 25. Feb 2020 18:27
Nur noch was Kleines:-)
Also rule nun nochmal überarbeitet, wie empfohlen unter Verwendung von Gruppen und die If-Bedingungen einzeln.
Und das neue Mail Binding 2.5 (werde als nächstes noch Telgram aktivieren, ist irgendwie geschickter als Mail)
aber ich habe doch noch ein paar kleine Fragen:
1. Wieso nutzen wir denn nun: ist hier wie vorher benutzt falsch?
2. Ich möchte erreichen, wenn Alarm Aktiv also AlarmAussen.state == ON mit Hilfe des triggeringItem.name ein Auslösen des jeweiligen
BW-Melders gesendet wird. Hierzu habe ich eine weiter If-Bedingung eingebaut. Ist die so korrekt und auch an der richtigen Stelle?
3. Woher weiß das Programm welches triggeringItem aus welcher Gruppe gemeint ist, da könnte doch im Code noch eine andere Gruppe
verwendet werden?
Also rule nun nochmal überarbeitet, wie empfohlen unter Verwendung von Gruppen und die If-Bedingungen einzeln.
Und das neue Mail Binding 2.5 (werde als nächstes noch Telgram aktivieren, ist irgendwie geschickter als Mail)
aber ich habe doch noch ein paar kleine Fragen:
1. Wieso nutzen wir denn nun:
Code: Alles auswählen
var lastRun = now.minutesMinutes(2)
Code: Alles auswählen
var lastRun = now
2. Ich möchte erreichen, wenn Alarm Aktiv also AlarmAussen.state == ON mit Hilfe des triggeringItem.name ein Auslösen des jeweiligen
BW-Melders gesendet wird. Hierzu habe ich eine weiter If-Bedingung eingebaut. Ist die so korrekt und auch an der richtigen Stelle?
3. Woher weiß das Programm welches triggeringItem aus welcher Gruppe gemeint ist, da könnte doch im Code noch eine andere Gruppe
verwendet werden?
Code: Alles auswählen
import java.util.List
var List timers = newArrayList
var Timer shutoffTimer = null
var lastRun = now.minusMinutes(2)
rule "Sonbas Motion changed from OFF to ON 3 times in a minute"
when
Member of gBW changed from OFF to ON
then
if(AlarmAussen.state == ON) {
val mailActions = getActions("mail","mail:smtp:c1a3d968")
mailActions.sendMail("xxx@gmail.com","Alarm "+ triggeringItem.name, "Bewegungsmelder " + triggeringItem.name.toString + " hat ausgelöst")
}
if(AlarmAussen.state == OFF) {
logInfo("bw_alarm","Alarmanlage aus, Rule Ende!")
return;
}
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 < 3) {
val t = createTimer(now.plusMinutes(1), [ |
timers.remove(0) ] )
timers.add(t)
}
if(timers.size == 3) {
val mailActions = getActions("mail","mail:smtp:c1a3d968")
mailActions.sendMail("xxx@gmail.com","Sirene aktiviert ", "Sirene wurde aktiviert")
Sirene_Gaeste.sendCommand(ON)
lastRun = now
while(timers.size > 0) {
timers.get(0).cancel
timers.remove(0)
}
shutoffTimer = createTimer(now.plusSeconds(10)) [|
Sirene_Gaeste.sendCommand(OFF)
logInfo("Alarmrule", "Sirene Ende")
shutoffTimer = null
]
}
End