Hi,
I am having some problems using @rlkoshak timer_mgr, if I define more than one timer at the same time. I have definded a group of DateTime items called “Routinen”:
Group:DateTime Routinen "Routinen" <calendar>
DateTime Rolladen_Wohnzimmer_Morgens "Zeitsteuerung" <time> (Routinen) {target="Rolladen_Wohnzimmer", task="UP"}
DateTime Rolladen_Wohnzimmer_Abends "Zeitsteuerung" <time> (Routinen) {target="Rolladen_Wohnzimmer", task="UP"}
DateTime Rolladen_Wohnzimmer_Mittags "Zeitsteuerung" <time> (Routinen) {target="Rolladen_Wohnzimmer", task="DOWN"}
Now I have defined a rule, which triggers, when a Member of Routinen is changed
I am using this rule:
this.OPENHAB_CONF = (this.OPENHAB_CONF === undefined) ? java.lang.System.getenv("OPENHAB_CONF") : this.OPENHAB_CONF;
load(OPENHAB_CONF+'/automation/lib/javascript/community/timerMgr.js');
load(OPENHAB_CONF+'/automation/lib/javascript/community/timeUtils.js');
this.ZonedDateTime = (this.ZonedDateTime === undefined) ? Java.type("java.time.ZonedDateTime") : this.ZonedDateTime;
var log = Java.type("org.openhab.core.model.script.actions.Log");
// Only create a new manager if one doesn't already exist or else it will be wiped out each time the rule runs
this.tm = (this.tm === undefined) ? new TimerMgr() : this.tm;
log.logWarn("Routinen", "Routine "+ event.itemName +" activated. - Time: " + event.itemState );
this.tm.check(event.itemName,
event.itemState,
function() {
log.logWarn("Test", "Timer " + event.itemName + " ended");
}
);
(The complete rule is more complex because of using metadata)
Thats working fine for one Timer. But if I change more than one item of the Group “Routinen”, it seems to override some variables.
Example:
If I use this scipt as a trigger:
var Rolladen_Wohnzimmer_Morgens = "2021-04-05T13:03:31.000+0200";
var Rolladen_Wohnzimmer_Abends = "2021-04-05T13:03:41.000+0200";
var Rolladen_Wohnzimmer_Mittags = "2021-04-05T13:03:51.000+0200";
events.postUpdate('Rolladen_Wohnzimmer_Morgens', Rolladen_Wohnzimmer_Morgens);
events.postUpdate('Rolladen_Wohnzimmer_Abends', Rolladen_Wohnzimmer_Abends);
events.postUpdate('Rolladen_Wohnzimmer_Mittags', Rolladen_Wohnzimmer_Mittags);
3 Timers are defined, thats the log:
2021-04-05 13:03:22.486 [WARN ] [g.openhab.core.model.script.Routinen] - Routine Rolladen_Wohnzimmer_Morgens activated. - Time: 2021-04-05T13:03:31.000+0200
2021-04-05 13:03:22.675 [WARN ] [g.openhab.core.model.script.Routinen] - Routine Rolladen_Wohnzimmer_Abends activated. - Time: 2021-04-05T13:03:41.000+0200
2021-04-05 13:03:22.700 [WARN ] [g.openhab.core.model.script.Routinen] - Routine Rolladen_Wohnzimmer_Mittags activated. - Time: 2021-04-05T13:03:51.000+0200
Looks fine. The Timers are set and ending at :31, :41 and :51. But the logs shows:
2021-04-05 13:03:31.065 [WARN ] [org.openhab.core.model.script.Test ] - Timer Rolladen_Wohnzimmer_Mittags ended
2021-04-05 13:03:41.003 [WARN ] [org.openhab.core.model.script.Test ] - Timer Rolladen_Wohnzimmer_Mittags ended
2021-04-05 13:03:51.001 [WARN ] [org.openhab.core.model.script.Test ] - Timer Rolladen_Wohnzimmer_Mittags ended
The time is correct, but event.itemName is not correct any more. “Rolladen_Wohnzimmer_Mittags” is the last one, which seems to override the other values . Does anyone know, how to solve that? I would like to use a simple Rule for define these timers.