Ich habe hier ein Rule welches mit
- mehreren trigger items
- mehrere items schaltet
Wenn das item != ON wird es eingeschaltet und ein Timer gesetzt
Ein Timer pro item verhindert dabei, dass manuell aktivierte items nicht beeinflusst werden.
Mein Problem:
Wenn nun einer der trigger items geschaltet wird, sollen genau die laufenden Timer
zurückgesetzt und damit praktisch verlängert werden - aber nicht alle Timer
var Timer LED_Nachbar_Timer = null
var Timer LED_GVorne_Timer = null
var Timer LED_GWald_Timer = null
rule "Einfahrt Licht"
when
Item DW2_TOR received update ON or
Item S_Touch90_1 received update ON or
Item zwave_device_6c898019_node8_scene_number received update 4
then
if(Nacht.state != OFF) {
if(LED_Nachbar_Timer !== null)
LED_Nachbar_Timer.reschedule(now.plusSeconds(240))
if(LED_Nachbar.state != ON) {
LED_Nachbar.sendCommand(ON)
LED_Nachbar_Timer = createTimer(now.plusSeconds(240), [|
LED_Nachbar.sendCommand(OFF)
LED_Nachbar_Timer = null
])
}
if(LED_GVorne_Timer !== null)
LED_GVorne_Timer.reschedule(now.plusSeconds(240))
if(LED_GVorne.state != ON) {
LED_GVorne.sendCommand(ON)
LED_GVorne_Timer = createTimer(now.plusSeconds(240), [|
LED_GVorne.sendCommand(OFF)
LED_GVorne_Timer = null
])
}
if(LED_GWald_Timer !== null)
LED_GWald_Timer.reschedule(now.plusSeconds(240))
if(LED_GWald.state != ON) {
LED_GWald.sendCommand(ON)
LED_GWald_Timer = createTimer(now.plusSeconds(240), [|
LED_GWald.sendCommand(OFF)
LED_GWald_Timer = null
])
}
}
end
Wichtig ist halt, dass der Timer beim Ablaufen korrekt deinitialisiert wird (also auf null gesetzt wird). Beim Vergleich mit null muss der Operator === bzw. !== verwendet werden.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet
Ah OK, Du setzt also die Timer bei jedem Triggern einfach zurück und dazu ein reschedule, und das ist unabhängig vom Zustand der Lampen.
Dann Laufen die Timer, aber das tangiert die Lampen nicht wenn sie schon an waren, denn der zweite Teil fürs Ausschalten kommt ja nicht zum Zug.
Das ist gar nicht schlecht würde ich behaupten
BTW:
Ich habe jedoch jetzt noch ein kleines Problem mit der "Nacht" die wird nicht geschaltet, aber das hänge ich am Besten noch an den anderen
Beitrag mit dem Astro Binding dran, da gehört das ja hin...
Raspberry 4, Rev.1.2b, 4GB, Openhab 2.5.12 (OH3 kommt im Winter dran:-))
Nein, das Problem in Deiener Rule ist, dass Du nicht auf den Status des Items zugreifst, sondern auf das Item selbst (ich gehe davon aus, dass Du ein Item namens Nacht hast). Da Du mit != OFF vergleichst, ist diese Bedingung immer erfüllt, denn das Item liefert immer etwas anderes als OFF zurück Mit dem (in der Rule oben angegebenen) Nacht.state sollte es funktionieren...
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet
Das mit dem .state hate ich schon geändert, ja das war nach dem Zeitpunkt.
Aber der Channel den ich für den Morgen gewählt habe, der hat nicht getriggert. Im Log sehr ich aber andere Channels obwohl ich die deaktiviert habe,. Sehr komisch
Im anderen Beitrag habe ich das detailliert dargestellt.
Ich glaube ich mach Mal noch einen Neustart.
Raspberry 4, Rev.1.2b, 4GB, Openhab 2.5.12 (OH3 kommt im Winter dran:-))