Hysterese
Mit Hilfe der drei folgenden Attribute kann eine Hysterese konfiguriert werden.
hysteresis_input
Das Attribut hysteresis_input legt das Item fest, welches überwacht werden soll. Angegeben wird der Pfad eines Items, welches als Eingabe Wert für die Hysterese dient. Der Wert dieses Items wird gegen die beiden Schwellwerte verglichen. Das hier angegebene Item muss als num definiert sein.
Die Pfad Angabe kann als absoluter oder als relativer Itempfad erfolgen. Das Item, welches dieses Hysterese Attribut verwendet, muss als bool definiert sein.
Oberhalb des oberen Schwellwertes
Wenn der Wert des hysteresis_input-Items den oberen Schwellwert überschreitet, wird das Hysterese Item auf True gesetzt. Das bedeutet, dass das Item bei Überschreitung von False auf True wechselt. Wenn das hysteresis_input-Item anschließend weitere Werte oberhalb des oberen Schwellwertes annimmt, wird findet ein Update des Wertes True statt.
zwischen den Schwellwerten
Wenn das des hysteresis_input-Item einen Wert zwischen den beiden Schwellwerten annimmt,
also: unterer Schwellwert <= Itemwert <= oberer Schwellwert
findet beim Hysterese Item keine Änderung statt. Der Wert erhält also kein Update.
Unterhalb des unteren Schwellwertes
Wenn der Wert des hysteresis_input-Items den untern Schwellwert unterschreitet, wird das Hysterese Item auf False gesetzt. Das bedeutet, dass das Item bei Unterschreitung von True auf False wechselt. Wenn das hysteresis_input-Item anschließend weitere Werte unterhalb des unteren Schwellwertes annimmt, findet ein Update des Wertes False statt.
hysteresis_upper_threshold
Das Attribut hysteresis_upper_threshold definiert den oberen Schwellwert für die Hysterese. Bei der Überschreitung dieses Wertes im Item welches den zu überwachenden Eingabewert darstellt, wird dieses Item auf True gesetzt.
Optional kann in diesem Attribut eine Dauer angegeben werden, welche die Überscheitung andauern muss, damit der Wert des Items auf True gesetzt wird.
Das Item, welches dieses Hysterese Attribut verwendet, muss als bool definiert sein.
Die Definitionen für den Upper-Threshold und die optionale Dauer für den Upper-Threshold können statt absoluter Werte auch eval-Ausdrücke enthalten. Diese Ausdrücke dürfen auch relative Item Referenzen enthalten. |
hysteresis_lower_threshold
Das Attribut hysteresis_lower_threshold definiert den unteren Schwellwert für die Hysterese. Bei der Unterschreitung dieses Wertes im Item welches den zu überwachenden Eingabewert darstellt, wird dieses Item auf False gesetzt.
Optional kann in diesem Attribut eine Dauer angegeben werden, welche die Unterscheitung andauern muss, damit der Wert des Items auf False gesetzt wird.
Das Item, welches dieses Hysterese Attribut verwendet, muss als bool definiert sein.
Die Definitionen für den Lower-Threshold und die optionale Dauer für den Lower-Threshold können statt absoluter Werte auch eval-Ausdrücke enthalten. Diese Ausdrücke dürfen auch relative Item Referenzen enthalten.
Konfiguration
hysterese_input:
type: num
name: 'z.B. Helligkeit'
...
hysterese_item:
type: bool
name: 'z.B. Beschattung an/aus'
hysteresis_input: ..hysterese_input
hysteresis_upper_threshold: <oberer Schwellwert> [; <Mindestdauer in Sekunden> ]
hysteresis_lower_threshold: <unterer Schwellwert> [; <Mindestdauer in Sekunden> ]
Der obere Schwellwert und der untere Schwellwert können als Integer oder Float Werte angegeben werden. Die Angabe der Mindestdauer zu den Schwellwerten ist optional. Die Mindestdauer kann als Integer oder Float Wert angegeben werden.
Beispiele
Das folgende Beispiel zeigt ein Item als Hysterese Glied mit oberem und unterem Schwellwert und Werten für die jeweiligen Mindestdauern für das Zeitglied.
helligkeit:
type: num
...
beschattung:
type: bool
hysteresis_input: ..helligkeit
hysteresis_upper_threshold: 5000 ; 60
hysteresis_lower_threshold: 900.5 ; 120
beschattung_2:
type: bool
hysteresis_input: ..helligkeit
hysteresis_upper_threshold: sh...einschalthelligkeit() ; sh...einschaltverzögerung()
hysteresis_lower_threshold: 900.5 ; 2 * sh...einschaltverzögerung()
einschalthelligkeit:
type: num
initial_value: 5000
einschaltverzögerung:
type: num
initial_value: 60
Das folgende Beispiel zeigt ein Item als Hysterese Glied mit oberem und unterem Schwellwert, jedoch ohne konfigurierte Zeitglieder. Der TV-Status wechselt bei überschreiten eines Verbrauchs von 90 Watt auf True (eingeschaltet) und wechselt bei unterschreiten eines Verbrauchs von 10 Watt auf False (ausgeschaltet):
tv_verbrauch:
type: num
...
tv_status:
type: bool
hysteresis_input: ..tv_verbrauch
hysteresis_upper_threshold: 90
hysteresis_lower_threshold: 10
zusätzliche Statusinformationen
Beim Einrichten einer Konfiguration kann es hilfreich sein, den Zustand des Hysteresis Items genauer zu kennen.
Hierfür gibt es eine Methode `hysteresis_state()`
, um den aktuellen Zustand des Items über den Status (True/False)
hinaus abzufragen.
Um die Informationen zu dem Item beschattung aus dem obigen Beispiel abzufragen, kann z.B. im eval Syntax Checker
der Admin GUI der Ausdruck `sh.beschattung.hysteresis_state()`
eingegeben werden. Als Ergebnis wird ein String
zurück gegeben, der die folgenden Werte haben kann:
Status |
Bedeutung |
---|---|
On |
Der Wert des hysteresis_input Items liegt oberhalb des oberen Schwellwertes |
Timer -> On |
Der Wert des hysteresis_input Items liegt zwar oberhalb des oberen Schwellwertes, aber der Timer für die Mindestdauer ist noch nicht abgelaufen |
Stay (On) |
Der Wert des hysteresis_input Items liegt zwischen unterem und oberen Schwellwert und lag vorher oberhalb des oberen Schwellwertes |
Stay (Off) |
Der Wert des hysteresis_input Items liegt zwischen unterem und oberen Schwellwert und lag vorher unterhalb des unteren Schwellwertes |
Timer -> Off |
Der Wert des hysteresis_input Items liegt zwar unterhalb des unteren Schwellwertes, aber der Timer für die Mindestdauer ist noch nicht abgelaufen |
Off |
Der Wert des hysteresis_input Items liegt unterhalb des unteren Schwellwertes |