Seite 1 von 1
Rule mit Item und TimerVariablen
Verfasst: 28. Apr 2020 10:01
von Heavy-Dee
Guten Morgen,
Ich würde gerne eine Art Zeitsperre für einen Item Change einrichten.
In meinem Fall starte ich bei einem Change Ereignis eine Rule.
Diese soll aber nur ausgeführt werden wenn ein Timer auf NULL steht.
Wechselt also innerhalb der 30 Sekunden erneut der Item Status soll nicht getriggert werden.
Kann ich den Timer und das Change Ereignis mit UND verknüpfen?
Code: Alles auswählen
var Timer ZeitsperreTimer = null
rule "Zeitsperre"
when
Item Tuersensor changed and ZeitsperreTimer = null
then
Zeitsperre = createTimer(now.plusSeconds(30), [|
...
ZeitsperreTimer = null
])
end
Re: Rule mit Item und TimerVariablen
Verfasst: 28. Apr 2020 10:23
von Darkwin101
Also Grundsätzlich du kannst einen Trigger nicht mit und Verknüpfen denn das Ereignis müsste auf die Millisekunde genau gleichzeitig eintreten.
somit ist im when Teil nur ein auslösender Trigger erlaubt/möglich.
Du musst die Unterscheidung dann im Then Teil machen hierzu wäre aber das genaue Change gut zu wissen um dir eventuell besser helfen zu können.
Re: Rule mit Item und TimerVariablen
Verfasst: 28. Apr 2020 12:24
von Heavy-Dee
Das Change Ereignis betrifft die Tür u. Fenstersensoren in den Räumen. Mit diesen Signalen möchte ich die Heizungssteuerung (HomaticIP) ansteuern. Ich möchte aber vermeiden das bei einen kurzzeitigen öffnen u. wieder schließen (Timerlaufzeit) die Heizungsteuerung angesteuert wird.
hier der THEN Teil:
Code: Alles auswählen
if (KZ1_FensterSensor.state == 0 { // Fenster-Sensor geschlossen
HM_KZ1_FensterStatus.sendCommand("closed") // Steuersignal für Homematic
}
else if (KZ1_FensterSensor.state ==1) { // Fenster-Sensor geöffnet
HM_KZ1_FensterStatus.sendCommand("opened") // Steuersignal für Homematic
}
else {
logWarn (filename, "Fensterstatus: kein gültiger Wert für 'KZ1_FensterSensor' [" + KZ1_FensterSensor.state + "]")
Thread::sleep(1000)
KZ1_FensterSensor.state.postUpdate(HM_KZ1_FensterStatus.state)
Thread::sleep(1000)
logInfo (filename, "Fensterstatus: 'KZ1_FensterSensor.state' -> " + HM_KZ1_FensterStatus.state)
}
Re: Rule mit Item und TimerVariablen
Verfasst: 28. Apr 2020 12:54
von Darkwin101
OK das Ganze Könntest du Beispielhaft so gestalten:
Code: Alles auswählen
var Timer timeFenster1 = null // Am Anfang der Datei Schreiben
rule "Fenster 1 wurde geöffnet"
when
Item KZ1_FensterSensor changed // wenn Fenster Status geändert wird
then
if(KZ1_FensterSensor.state == 1){
timeFenster1?.cancel //Ein laufender Timer wird abgebrochen
timeFenster1 = createTimer(now.plusSeconds(60))[| //Ein neuer Timer wird gestartet
HM_KZ1_FensterStatus.sendCommand("opened")]} //Nach Ablauf des Timer wird Kommando ausgeführt
if(KZ1_FensterSensor.state == 0){
timeFenster1?.cancel
timeFenster1 = createTimer(now.plusSeconds(60))[|
HM_KZ1_FensterStatus.sendCommand("closed")]}
end
Das ganze geht natürlich schöner aber ich bin auch Anfänger die Richtigen Spezies hier prüfen halt noch ob ein Timer läuft usw. aber grundsätzlich sollte es funktionieren
Re: Rule mit Item und TimerVariablen
Verfasst: 28. Apr 2020 13:35
von Heavy-Dee
Super Danke,
ich werde es später mal probieren!
Re: Rule mit Item und TimerVariablen
Verfasst: 28. Apr 2020 16:22
von Heavy-Dee
Hat soweit funktioniert.
war das, was ich benötigt habe.
DANKE
