Time cron kann auch Wertebereiche und Intervalle
entspricht
Was aber eine schlechte idee ist, ist der Thread::sleep(10000). Damit wird der Thread 10 Sekunden lang blockiert und steht nicht für andere Aufgaben zur Verfügung. Sauberer ist es, einen Timer zu verwenden:
Code: Alles auswählen
createTimer(now.plusSeconds(10), [ | echo_wz_playAlarmSound.sendCommand( "ECHO:system_alerts_soothing_01") ])
Diese Zeile ersetzt Thread::sleep() und die nachfolgende Anweisung.
Der Unterschied ist, dass openHAB nun das Lambda abspeichert und im Scheduler einen Eintrag für den gewünschten Ausführungszeitpunkt definiert. Die Rule wird innerhalb weniger Millisekunden beendet, nach 10 Sekunden wird der Alarmsound gespielt.
Bei dieser Rule spielt es erst mal keine Rolle, da die Rule maximal einmal pro 30 Minuten getriggert wird, so dass der Thread sicher schon abgelaufen ist. In anderen Rules kann das aber dazu führen, dass das System keine Rules mehr ausführt, man sollte sich Thread::sleep() mit Werten über 500 Millisekunden also gar nicht erst angewöhnen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet