Korrekte Timer in Openhab3
Verfasst: 7. Mär 2022 14:39
Hallo zusammen,
ich bin vor Kurzem von openhab 2.5 auf openhab 3.2 umgestiegen und habe aktuell noch ein wenig Probleme mit Javaskript. Aktuell bin ich mir nicht sicher, ob folgender Code richtig ist, bzw. ob es nicht noch eleganter geht.
Ziel ist es die Rolläden von meinen Fenster zeitverzörgert runterzufahren. Ich habe dazu folgendes Javaskript in einer Rule eingebaut, das auch funktioniert, ich bin mir aber nicht sicher, ob das nicht ein wenig eleganter / einfacher geht.
In Openhab 2.5 war es jeweils nur eine Zeile
ich bin vor Kurzem von openhab 2.5 auf openhab 3.2 umgestiegen und habe aktuell noch ein wenig Probleme mit Javaskript. Aktuell bin ich mir nicht sicher, ob folgender Code richtig ist, bzw. ob es nicht noch eleganter geht.
Ziel ist es die Rolläden von meinen Fenster zeitverzörgert runterzufahren. Ich habe dazu folgendes Javaskript in einer Rule eingebaut, das auch funktioniert, ich bin mir aber nicht sicher, ob das nicht ein wenig eleganter / einfacher geht.
Code: Alles auswählen
var scriptExecution = Java.type('org.openhab.core.model.script.actions.ScriptExecution');
var zdt = Java.type('java.time.ZonedDateTime');
if (typeof this.timers === 'undefined') {
this.timers = [];
}
if (typeof this.timers['fenster1'] === 'undefined' || this.timers['Test'].hasTerminated()) {
this.timers['fenster1'] = scriptExecution.createTimer(zdt.now().plusSeconds(10), function () {
events.sendCommand('fenster1_level', 'DOWN');
if (typeof this.timers['Test'] !== 'undefined') {
this.timers['fenster1'].cancel();
this.timers['fenster1'] = undefined;
}
if (typeof this.timers['fenster2'] === 'undefined' || this.timers['fenster2'].hasTerminated()) {
this.timers['fenster2'] = scriptExecution.createTimer(zdt.now().plusSeconds(10), function () {
events.sendCommand('fenster2_level', 'DOWN');
})
}
})
}
createTimer(now.plusSeconds(5), [| Fenster1_Level.sendCommand(DOWN)] )
createTimer(now.plusSeconds(5), [| Fenster2_Level.sendCommand(DOWN)] )