Die Rule ist so oder so nicht wirklich gut.
Das Eine ist die unnötige doppelte Definition des Timers. Auch die Umschaltfunktion ist nicht gut, denn sie setzt voraus, dass Swi_Gerät entweder den Zustand ON oder den Zustand OFF hat, es gibt aber auch noch die Zustände NULL und UNDEV.
Und wo wir schon beim Item sind: Swi_Gerät enthält ein Sonderzeichen, das ist höchst riskant. Es wäre besser, das Item ohne Umlaute zu benennen.
Die Rule sollte also besser so aussehen:
Code: Alles auswählen
rule "PushButton EIN/AUS"
when
Item PushButton received command ON
then
Swi_Geraet.sendCommand(if(Swi_Geraet.state != ON) ON else OFF)
createTimer(now.plusMillis(500), [ |
PushButton.postUpdate(OFF)
])
end
Nun zum Timer. Da kann ich leider nur einen halben Tipp geben (bzw. in diesem Fall einen doppelten), nämlich statt plusMillis(500) ein plusSeconds(1) zu nehmen. Java Time unterstützt keine Addition von Sekundenbruchteilen. Natürlich gäbe es die Möglichkeit, sich den Zeitpunkt in Millisekunden ausgeben zu lassen und diese Zahl als Grundlage für ein neues Java Time Objekt nutzen. Wie das genau abläuft, müsste man dann eruieren.
Auch die Expire-Funktion (die ein vollständiger Ersatz für das Expire Binding ist) erlaubt nur ganze Sekunden als Zeitspanne.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet