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)] )