Du bist schon auf dem richtigen Weg.
Du musst die Zeit zwischen zwei Triggern messen, bzw. prüfen, ob der letzte Trigger entsprechend kurz her ist.
Aber als erste Frage: kannst Du das Licht "zweimal einschalten", ohne es zwischendurch auszuschalten? Also: kannst Du mit dem Lichttaster gezielt zweimal hintereinander ON senden, ohne ein OFF zu senden? Und falls das geht: meldet der Aktor dann ein Update des Zustands ON?
Falls Du das Licht zwischendurch ausschalten musst:
Code: Alles auswählen
// Globale Variablen zu Beginn der Datei anlegen!
var Timer tHerdlicht = null // globale Variable für den Timer
rule "Herdlicht"
when
Item kuechelicht changed from OFF to ON // Wechsel OFF -> ON erkannt
then
if(tHerdlicht === null) // falls Timer nicht existiert
tHerdlicht = createTimer(now.plusSeconds(2), [ // lege Timer an
tHerdlicht = null
])
else // sonst
HerdLicht_Power.sendCommand(ON) // Schalte Licht ein
end
Die Rule prüft beim Einschalten des Lichts, ob die Variable
tHerdlicht auf einen Schedulereintrag verweist.
Ist das nicht der Fall, so handelt es sich um den ersten Einschaltvorgang. Die Rule erzeugt den Timer.
Existiert der Timer, so handelt es sich (mindestens) um den zweiten Einschaltvorgang. Das Licht wird eingeschaltet.
Der Timer selbst tut nichts anderes, als die Variable zu löschen. Simpel und effizient.
Solltest Du in der Lage sein, mehrfach hintereinander ON zu senden (ohne zwischendurch OFF) und das Item erzeugt auch mehrere Events dazu, müsste der Trigger stattdessen
received update ON lauten. Der Rest der Rule bliebe.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet