Fensterscript (unzuverlässig)
Verfasst: 20. Nov 2024 23:06
Ich habe folgendes "Sammelscript", welches von ca. 15 Kontakten getriggert wird:
Leider habe ich entweder einen Denkfehler, oder das System verschluckt regelmäßig Trigger.
Jedenfalls bleibt das "xxx_delayed" ab und zu unberührt und nimmt nicht den Zustand des Kontaktes entgegen.
Wofür das ganze?
Ich regel damit Heizkörper (AN/AUS), die ich nicht direkt an die Kontakte hängen kann, da diese (bedingt durch Wind) ab und zu flattern.
Wir jeden also von einem überdimensionierten Debouncing.
Sieht Jemand etwas?
PS: Das Script funktioniert (min. mehrfach pro Quelle+Ziel) richtig. Es handelt sich also nicht um irgendeinen Typo bei der Item-Namensvergabe....
Code: Alles auswählen
var realItem, delayedItem, realState, delayedState;
realItem = items.getItem(event.itemName);
delayedItem = items.getItem((String(event.itemName) + '_delayed'));
if (cache.private.exists(delayedItem.name) === false || cache.private.get(delayedItem.name).hasTerminated()) {
cache.private.put(delayedItem.name, actions.ScriptExecution.createTimer(delayedItem.name, time.ZonedDateTime.now().plusMinutes(3), function (timer_context) {
realState = realItem.state;
delayedState = delayedItem.state;
if (realState != delayedState) {
delayedItem.postUpdate(realState);
}
}, undefined));
} else {
cache.private.get(delayedItem.name).reschedule(time.ZonedDateTime.now().plusMinutes(3));
};
Jedenfalls bleibt das "xxx_delayed" ab und zu unberührt und nimmt nicht den Zustand des Kontaktes entgegen.
Wofür das ganze?
Ich regel damit Heizkörper (AN/AUS), die ich nicht direkt an die Kontakte hängen kann, da diese (bedingt durch Wind) ab und zu flattern.
Wir jeden also von einem überdimensionierten Debouncing.
Sieht Jemand etwas?
PS: Das Script funktioniert (min. mehrfach pro Quelle+Ziel) richtig. Es handelt sich also nicht um irgendeinen Typo bei der Item-Namensvergabe....