Ich habe ein kleines Modul in den Module Store gestellt, das ich selbst inzwischen an einigen Stellen einsetze: ValueDelayed.
Das Modul gibt Boolean-, Integer- und Float-Werte verzögert weiter. Dabei können für steigende und fallende Werte unterschiedliche Verzögerungen eingestellt werden.
Ein paar typische Anwendungen:
- Ein Zustand soll beim Ansteigen erst nach einigen Minuten übernommen werden, beim Abfallen aber sofort (z.B. “Wölkchensteuerung”).
- Kurze Spitzen oder Schwankungen sollen unterdrückt werden.
- Ohne Verzögerung beim Steigen und längerer Verzögerung beim Fallen lässt sich eine Art Peak-Hold realisieren.
Während eine Verzögerung läuft, startet ein weiterer Wert in derselben Richtung den Timer nicht neu, sondern aktualisiert nur den auszugebenden Wert. Ein Richtungswechsel wird entsprechend neu bewertet.
Als Quelle kann eine Symcon-Variable verwendet werden, alternativ lässt sich der Wert per VALD_SetDelayedValue($InstanceID, $Value); übergeben.
Als Ziel sind eine Variable, ein Script oder auch beides möglich. Hat die Zielvariable eine Action, verwendet ValueDelayed RequestAction(), ansonsten wird der Wert direkt mit SetValue() gesetzt.
Das Modul ist inzwischen im Module Store verfügbar.
Dokumentation und Source:
GitHub – wowbagger60/ValueDelayed
Falls jemand einen Anwendungsfall hat, an den ich noch nicht gedacht habe, oder beim Einsatz über ein Problem stolpert: Rückmeldungen sind natürlich willkommen.