Ja, kann man realisiseren.
Die Rule muss sich merken, ob die Leuchte aus war oder nicht. Weiterhin braucht es einen Timer. So als (ungeprüfter) Schnellschuss:
Code: Alles auswählen
// Globale Variablen werden zu Beginn der Datei definiert
var Timer tWozi = null // Timer um zwischen Aus und Dunkler zu unterscheiden
rule "Wozi Licht"
when
Item Shelly2_55C04A_A received command // Zustand geändert
then
if(receivedCommand == ON) { // Kommando war ON
tWozi?.cancel // Timer stoppen
switch (WoziLicht.state as Number) { // Abhängig vom Zustand
case 0: { // falls vorher aus
WoziLicht.postUpdate(100) // Neuer Status 100
Shelly2_55C04A_A..sendCommand(OFF) // Licht aus
Thread::sleep(500) // kurz warten
Shelly2_55C04A_A..sendCommand(ON) // Licht an
}
case 60: WoziLicht.postUpdate(30) // Neuer Status 30
case 30: WoziLicht.postUpdate(100) // Neuer Status 100
case 100: WoziLicht.postUpdate(60) // Neuer Status 60
}
} else // Kommando war OFF
tWozi = createTimer(now.plusSeconds(3), [ | // Starte Timer
WoziLicht.postUpdate(0) // Neuer Status 0
])
end
Die Herausforderung besteht darin, dass die Rule sich zwangsläufig selbst auslöst. Deshalb müssen wir uns merken, wo wir gerade stehen. Die Rule triggert jedes Mal, wenn das Licht geschaltet wird. Ist das Kommando OFF, wird ein Timer gestartet, der nach drei Sekunden den Zustand auf 0 setzt.
Ist das Kommando ON, wird zunächst ein eventuell laufender Timer abgebrochen. Dann prüft die Rule, ob das Licht aus war. Ist das der Fall, setzt sie den neuen Status auf 100 und schaltet das Licht aus, nach 500 MilliSec schaltet sie das Licht wieder ein. Dadurch erfolgt ein neuer Trigger. Nun ist der Zustand aber 100, die Rule ändert den Zustand auf 60. Wird das Licht dann manuell auf eine andere Stufe geschaltet, wird der Status jeweils angepasst.
Das Item kann direkt in der UI verwendet werden, um den Zustand der Leuchte abzubilden. (Man sollte allerdings ein Text Widget verwenden, damit kein Slider gemalt wird, der hätte ja keine Funktion.
Wie gesagt, ein Schnellschuss ohne getestet zu haben, aber schon beim formulieren bin ich an diversen Ecken angestoßen

vielleicht habe ich schon alles bedacht, vielleicht auch nicht...
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet