Zustand-Item
Zustände
Alle Items unterhalb des Regelwerk-Items (rules
)
beschreiben Zustände des Objekts („Zustands-Item“).
Die Ids der Zustands-Items sind beliebig, im Beispiel day
.
Prinzipiell werden die Zustände der Reihe nach, wie sie im YAML
File angegeben wurden evaluiert. Es ist allerdings auch möglich,
die Reihenfolge (selbst zur Laufzeit) mittels se_stateorder
zu verändern. Dies ist insbesondere für die ersten Tests sinnvoll.
#items/item.yaml
raffstore1:
automatik:
struct: stateengine.general
rules:
day:
name: Tag # optional, wie bei allen Items
Bedingungen
Jeder Zustand kann eine beliebige Anzahl von Bedingungsgruppen haben. Jede Bedingungsgruppe definiert ein Set an Bedingungen das überprüft wird, wenn der aktuelle Status neu ermittelt wird.
Jede Bedingungsgruppe wird durch ein Item („Bedingungsgruppen-Item“) unterhalb des Zustands-Items abgebildet. Details zu den Bedingungen werden im Abschnitt Bedingungen erläutert.
Aktionen
Jeder Zustand kann eine beliebige Anzahl an Aktionen definieren. Sobald ein Zustand aktueller Zustand wird, werden die Aktionen des Zustands ausgeführt. Für die Aktionen gibt es vier Ereignisse, die festlegen, wann eine Aktion ausgeführt wird.
Details zu den Aktionen werden im Abschnitt Aktionen erläutert.
Templates für Zustände
Da viele Items immer wieder die gleichen Zustände inklusive Aktionen und Bedingungen nutzen, gibt es die Möglichkeit, Zustände als Vorlagen zu deklarieren und diese dann in die entsprechenden Zustandsautomaten der jeweiligen Items zu integrieren.
Beispielsweise wird man alle Items mit den identen Sperr- und Aussetz/Suspendfunktionen ausstatten wollen. Außerdem werden vermutlich mehrere Jalousien auf die selbe Weise auf den aktuellen Sonnenstand reagieren oder mehrere Lichter in der Nacht gemeinsam abgedunkelt.
Neben der vom Plugin bereitgestellten Möglichkeit, Zustand-Templates zu definieren
und mittels se_use
zu referenzieren, bietet sich ab smarthomeNG 1.6 das struct
Attribut an.
Zum einen können in der Datei etc/struct.yaml
eigene Vorlagen definiert werden,
zum anderen stellt das Plugin folgende Vorlagen fix fertig bereit:
stateengine.state_release: Sofortiges Entsperren und Beenden des Suspend-Modus und Neuevaluierung
stateengine.state_lock: Sperren der Zustandsevaluierung, sobald das Sperritem „lock“ aktiv ist.
stateengine.state_suspend: Aussetzen der Evaluierung für eine bestimmte Zeit bei manueller Betätigung (z.B. Taster)
Gemeinsam mit der Vorlage stateengine.general, die allgemein relevante Items automatisch erstellt, könnte
ein Item wie unten zu sehen bestückt werden. Das Einbinden der Zustandsvorlagen findet dabei auf gleicher
Hierarchieebene wie das Regelwerk-Item statt. Genauere Angaben hierzu sind unter Zustand-Templates zu finden.
Informationen zu se_use
findet man unter Sonstiges.
Zusätzlich können eigene Zustände (beispielsweise day) definiert werden.
#items/item.yaml
raffstore1:
automatik:
struct:
- stateengine.general
- stateengine.state_release
- stateengine.state_lock
- stateengine.state_suspend
rules:
day:
name: Tag # optional, wie bei allen Items