Fensterscript (unzuverlässig)

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Oekel
Beiträge: 201
Registriert: 28. Aug 2021 10:34
Answers: 0

Fensterscript (unzuverlässig)

Beitrag von Oekel »

Ich habe folgendes "Sammelscript", welches von ca. 15 Kontakten getriggert wird:
Bildschirmfoto 2024-11-20 um 22.59.20.png

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));
};
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....
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von Oekel am 22. Nov 2024 14:26, insgesamt 1-mal geändert.

Benutzeravatar
udo1toni
Beiträge: 15242
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Fensterscript (unzuverlässig)

Beitrag von udo1toni »

Kannst Du bitte den yaml Code einfügen? Der ist einfach leichter zu lesen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Harka
Beiträge: 489
Registriert: 30. Apr 2021 13:13
Answers: 19

Re: Fensterscript (unzuverlässig)

Beitrag von Harka »

Moin,
in den 3 Minuten kann ein anderes Item deine Variablen kapern. Wenn du den Triggername erst mal nur zur Benennung des Timers nutzt und als context mit übergibst, kannst du darauf innerhalb der Timerfunktion mit dem timer_context Block in privater Umgebung zugreifen.

Oekel
Beiträge: 201
Registriert: 28. Aug 2021 10:34
Answers: 0

Re: Fensterscript (unzuverlässig)

Beitrag von Oekel »

Harka hat geschrieben: 21. Nov 2024 05:43 Moin,
in den 3 Minuten kann ein anderes Item deine Variablen kapern. Wenn du den Triggername erst mal nur zur Benennung des Timers nutzt und als context mit übergibst, kannst du darauf innerhalb der Timerfunktion mit dem timer_context Block in privater Umgebung zugreifen.
Sollte es hierraus hinaus laufen? (noch nicht getestet):
Bildschirmfoto 2024-11-22 um 15.08.16.png

Code: Alles auswählen

var realItem, delayedItem, cx_realItem, cx_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) {
    cx_realItem = (timer_context)['real'];
    cx_delayedItem = (timer_context)['delayed'];
    realState = cx_realItem.state;
    delayedState = cx_delayedItem.state;
    if (realState != delayedState) {
      delayedItem.postUpdate(realState);
    }
    }, {'real': realItem, 'delayed': delayedItem}));
} else {
  cache.private.get(delayedItem.name).reschedule(time.ZonedDateTime.now().plusMinutes(3));
};
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Harka
Beiträge: 489
Registriert: 30. Apr 2021 13:13
Answers: 19

Re: Fensterscript (unzuverlässig)

Beitrag von Harka »

Moin,
Jain. Geht noch einfacher.
ForumTrigger2411.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Antworten