Plugin ‚stateengine‘ Konfiguration

plugin logo

Im folgenden sind etwaige Anforderungen und unterstützte Hardware beschrieben. Danach folgt die Beschreibung, wie das Plugin stateengine konfiguriert wird. Außerdem ist im folgenden beschrieben, wie das Plugin in den Item Definitionen genutzt werden kann. [1]

Es handelt sich bei diesem Plugin um ein system Plugin.

Beschreibung

Der ursprüngliche Zweck dieses Plugins war es, Jalousien zu steuern. Mit den steigenden Anforderungen hat es sich jedoch zu einem flexiblen Zustandsautomaten entwickelt, mit dem nahezu alles gesteuert werden kann. Im Prinzip ist es ein endlicher Automat. Dabei arbeitet das Plugin nicht mit Events, die zu konkreten Zuständen führen, sondern mit einer hierarchischen Evaluierung der Zustände.

Anforderungen

Das Plugin benötigt die folgende Software, um die State Engine im Webinterface visuell darzustellen:

  • graphviz: sudo apt install graphviz

  • Python Modul pydotplus: pip3 install pydotplus

  • Minimum SmartHomeNG Version: 1.6

Konfiguration

Im folgenden ist beschrieben, wie das Plugin stateengine konfiguriert wird. Außerdem ist im folgenden beschrieben, wie das Plugin in den Item Definitionen genutzt werden kann.

Parameter

Das Plugin verfügt über folgende Parameter, die in der Datei ../etc/plugin.yaml konfiguriert werden:

instant_leaveaction

Ist dieser Parameter auf True gesetzt, werden „on leave“ Aktionen sofort ausgeführt, wenn der aktuelle Zustand nicht mehr eingenommen wird. Standardmäßig werden die Aktionen erst direkt vor dem Eintreten in einen neuen Zustand getriggert.

  • Datentyp: bool

  • Standardwert: False

lamella_offset

Gibt es ein Problem mit dem automatischen Ausrichten der Lamellen mittels sun_tracking Funktion, kann ein globaler Offset eingestellt werden, der für alle Aufrufe besagter Funktion berücksichtigt wird.

  • Datentyp: num

  • Standardwert: 0

  • Minimalwert: -90

  • Maximalwert: 90

lamella_open_value

Je nach Lamellenart muss die sonnenstandsbezogene Berechnung der Lamellenausrichtung angepasst werden. Für z-Lamellen kann hier der standardmäßige Wert 0 gewählt werden, hat man jedoch normale Lamellen, die sich nach oben und unten drehen, werden die Lamellen in der Regel bei 50% komplett offen, also waagrecht stehen. Somit sollte hier der Wert 50 angegeben werden, um eine korrekte Ausrichtung beim Nutzen der sun_tracking Funktion zu gewährleisten.

  • Datentyp: num

  • Standardwert: 0

  • Minimalwert: 0

  • Maximalwert: 100

log_directory

Verzeichnis für die Protokolldateien: Die Logdateien der erweiterten Protokollierung werden in das hier angegebene Verzeichnis geschrieben. Wenn der angegebene Verzeichnisname mit „/“ beginnt wird er als absoluter Verzeichnisname behandelt. Alle anderen Verzeichnisnamen werden als Unterverzeichnisse des smarthomeNG Basisverzeichnisses behandelt. Das angegebene Verzeichnis wird angelegt, wenn es nicht existiert. Wenn hier kein abweichendes Verzeichnis angegeben ist, wird das Verzeichnis <smarthome_base_directory>/var/log/stateengine/ verwendet.

  • Datentyp: str

  • Standardwert: var/log/stateengine/

log_level

Erweiterte Protokollierung: Bei einem Wert von 1, 2 oder 3 wird pro Item eine eigene Logdatei im unter log_directory angegebenen Verzeichnis angelegt. Wenn der Parameter nicht angegeben oder auf 0 gestellt ist, ist die erweiterte Protokollierung deaktiviert.

  • Datentyp: int

  • Standardwert: 0

  • Mögliche Werte:

    • -1   -   Standardlevel aus plugin.yaml

    • 0   -   deaktiviert

    • 1   -   Info

    • 2   -   Debug

    • 3   -   Develop

log_maxage

Log Rotation für erweiterte Protokollierung: Alte Protokolldateien können nach einer bestimmten Zeit automatisch gelöscht werden. Durch diesen Parameter wird die Anzahl der Tage festgelegt, nach der die Dateien gelöscht werden sollen. Das Löschen ist ausgesetzt, solange der Parameter den Wert 0 hat. Wenn der Parameter auf einen anderen Wert gesetzt wird, wird das Alter der Dateien im Protokollverzeichnis log_directory täglich geprüft und überalterte Dateien werden gelöscht.

Achtung: Die Löschfunktionalität prüft und löscht alle Dateien im Protokollverzeichnis, ob sie Protokolldateien sind oder nicht. Daher sollten keine anderen Dateien in diesem Verzeichnis abgelegt werden!

  • Datentyp: int

  • Standardwert: 0

  • Minimalwert: 0

startup_delay_default

Vorgabewert für die Startverzögerung der ersten Zustandsermittlung beim Start von smarthomeNG: Beim Starten von smarthomeNG dauert es üblicherweise einige Sekunden, bis alle Items initialisiert sind. Um zu verhindern, dass die erste Zustandsermittlung stattfindet, bevor alle Items ihren Initialwert haben, wird die erste Zustandsermittlung verzögert. Die Dauer der Verzögerung kann bei den Objekt-Items angegeben werden. Wenn bei einem Objekt-Item kein Wert angegeben ist, wird der hier angegebene Standardwert verwendet.

  • Zahl größer 0: Angabe der Startverzögerung in Sekunden. Während der Startverzögerung sind die Auslöser der Zustandsermittlung inaktiv.

  • 0: Keine Startverzögerung. Die erste Zustandsermittlung wird direkt nach der Initialisierung des Objekt-Items durchgeführt.

  • -1: Es wird keine erste Zustandsermittlung durchgeführt.

Ohne Angabe dieses Parameters wird der Standardwert von 10 Sekunden angenommen.

  • Datentyp: int

  • Standardwert: 10

  • Minimalwert: -1

  • Maximalwert: 600

startup_log_level

Erweiterte Protokollierung: Bei einem Wert von 1, 2 oder 3 wird pro Item eine eigene Logdatei im unter log_directory angegebenen Verzeichnis angelegt. Ist die Initialisierung eines Stateengine Items abgeschlossen, wird der über se_log_level oder den Standard Loglevel im plugin.yaml eingestellt.

  • Datentyp: int

  • Standardwert: 2

  • Mögliche Werte:

    • -1   -   Standardlevel aus plugin.yaml

    • 0   -   deaktiviert

    • 1   -   Info

    • 2   -   Debug

    • 3   -   Develop

suspend_time_default

Vorgabezeit zur Unterbrechung der automatischen Steuerung nach manuellen Aktionen: Nach manuellen Aktionen kann die Automatik für eine bestimmte Zeit Unterbrochen werden. Die Dauer dieser Unterbrechungen kann bei den Objekt-Items angegeben werden. Die Einheit für den Wert sind Sekunden. Wenn bei einem Objekt-Item kein Wert angegeben ist, wird der hier angegebene Standardwert verwendet. Wenn kein abweichender Standardwert in der Plugin-Konfiguration angegeben ist, ist der Vorgabewert 3600 Sekunden (1 Stunde)

  • Datentyp: int

  • Standardwert: 3600

  • Minimalwert: 1

  • Maximalwert: 86400

Item Attribute

Das Plugin unterstützt folgende Item Attribute, die in den Dateien im Verzeichnis ../items verwendet werden:

se_instant_leaveaction

Ist dieser Parameter auf True bzw. 1 gesetzt, werden „on leave“ Aktionen sofort ausgeführt, wenn der aktuelle Zustand nicht mehr eingenommen wird. Standardmäßig werden die Aktionen erst direkt vor dem Eintreten in einen neuen Zustand getriggert. Kann auch über ein Item zur Laufzeit geändert werden, beispielsweise durch item:..settings.instant_leaveaction. Der Wert -1 sorgt dafür, dass der in der plugin.yaml angegebene Standardwert herangezogen wird.

  • Datentyp: foo

  • Standardwert: False

se_item_suspend_end

Id des Items, in dem das Ende der Suspendzeit abgelegt werden soll: Für Visualisierungszwecke kann der Inhalt des hier verknüpften Items angezeigt werden. Dadurch ist ersichtlich, bis wann die Statusevaluierung noch ausgesetzt wird.

  • Datentyp: str

se_item_suspend_start

Id des Items, in dem der Start der Suspendzeit abgelegt werden soll: Für Visualisierungszwecke kann der Inhalt des hier verknüpften Items z.B. im clock.countdown Widget der SmartVisu genutzt werden.

  • Datentyp: str

se_lastconditionset_item_id

ID des Items, in dem der Name des aktuellen Zustandsets abgelegt wird: In das hier verknüpfte Item wird der Name des zuletzt aktiven Zustandsets abgelegt. Das Item kann für Displayzwecke, Aktionen und Bedingungen genutzt werden.

  • Datentyp: str

se_lastconditionset_item_name

Name des Items, in dem der Name des aktuellen Zustandsets abgelegt wird: In das hier verknüpfte Item wird der Name des zuletzt aktiven Zustandsets abgelegt. Das Item kann für Displayzwecke, Aktionen und Bedingungen genutzt werden.

  • Datentyp: str

se_laststate_item_id

Id des Items, in dem der aktuelle Zustand abgelegt wird: In das hier verknüpfte Item wird die Id des aktuellen Zustands abgelegt. Das Item kann mit dem Attribut cache: yes versehen werden, dann bleibt der vorherige Zustand bei einem Neustart von smarthomeNG erhalten.

  • Datentyp: str

se_laststate_item_name

Id des Items, in dem der Name des aktuellen Zustands abgelegt wird: In das hier verknüpfte Item wird der Name des aktuellen Zustands abgelegt. Das Item kann für Displayzwecke und Bedingungen verwendet werden.

  • Datentyp: str

se_log_level

Das global angegebene Loglevel kann für jedes SE item individuell überschrieben werden. Somit ist es einfacher möglich, bestimme State Engines zu debuggen. Das Loglevel kann durch das Settings Item log_level im laufenden Betrieb angepasst werden. Ist der Wert auf -1 gesetzt, wird der Standardwert aus dem plugin.yaml übernommen.

  • Datentyp: foo

se_name

Zustandsname, überschreibt den im Attribut „name“ angegebene Wert Dies kann beispielsweise nützlich sein, um den Namen abhängig von einer Bedingungsgruppe zu ändern.

  • Datentyp: str

se_plugin

Kennzeichnet das Item als Objekt-Item des StateEngine-Plugins. Ist der Wert nicht „active“, werden keine Zustände evaluiert.

  • Datentyp: str

  • Mögliche Werte:

    • active   -   Aktiviert die State Machine

    • inactive   -   Jeder andere Wert deaktiviert die State Machine

se_previousconditionset_item_id

ID des Items, in dem der Name des vorherigen Zustandsets abgelegt wird: In das hier verknüpfte Item wird der Name des vorherigen Zustandsets abgelegt. Das Item kann für Displayzwecke, Aktionen und Bedingungen genutzt werden.

  • Datentyp: str

se_previousconditionset_item_name

Name des Items, in dem der Name des vorherigen Zustandsets abgelegt wird: In das hier verknüpfte Item wird der Name des vorherigen Zustandsets abgelegt. Das Item kann für Displayzwecke, Aktionen und Bedingungen genutzt werden.

  • Datentyp: str

se_previousstate_conditionset_item_id

ID des Items, in dem der Name des Zustandsets vom vorherigen Zustand abgelegt wird: In das hier verknüpfte Item wird der Name des Zustandssets des vorherigen Zustands abgelegt. Das Item kann für Displayzwecke, Aktionen und Bedingungen genutzt werden.

  • Datentyp: str

se_previousstate_conditionset_item_name

Name des Items, in dem der Name des Zustandsets vom vorherigen Zustand abgelegt wird: In das hier verknüpfte Item wird der Name des Zustandssets des vorherigen Zustands abgelegt. Das Item kann für Displayzwecke, Aktionen und Bedingungen genutzt werden.

  • Datentyp: str

se_previousstate_item_id

Id des Items, in dem der vorherige Zustand abgelegt wird: In das hier verknüpfte Item wird die Id des vorherigen Zustands abgelegt. Das Item kann mit dem Attribut cache: yes versehen werden, dann bleibt der vor-vorherige Zustand bei einem Neustart von smarthomeNG erhalten.

  • Datentyp: str

se_previousstate_item_name

Id des Items, in dem der Name des vorherigen Zustands abgelegt wird: In das hier verknüpfte Item wird der Name des vorigen Zustands abgelegt. Das Item kann für Displayzwecke und Bedingungen verwendet werden.

  • Datentyp: str

se_released_by

Durch Setzen dieses Attributs können Zustände durch untergeordnete Zustände aufgelöst werden. Sobald ein durch das Attribut definierter untergeordneter Zustand neu eingenommen werden könnte, wird der aktuelle Zustand verlassen und eine neue Zustandsevaluierung ausgeführt.

  • Datentyp: list(str)

se_repeat_actions

Wiederholen der Aktionen bei unverändertem Zustand: Im Normalfall werden Aktionen jedesmal ausgeführt wenn der aktuelle Zustand neu ermittelt wurde. Dies ist unabhängig davon, ob sich der Zustand bei der Neuermittlung geändert hat oder nicht. Durch die Angabe von se_repeat_actions: false werden die Aktionen nur beim erstmaligen Aktivieren des Zustands ausgeführt. Diese Option ist auch für jede Aktion separat verfügbar, um vom hier angegebenen Wert abzuweichen.

  • Datentyp: bool

se_startup_delay

Startverzögerung der ersten Zustandsermittlung beim Start von smarthomeNG: Beim Starten von smarthomeNG dauert es üblicherweise einige Sekunden, bis alle Items initialisiert sind. Um zu verhindern, dass die erste Zustandsermittlung stattfindet, bevor alle Items ihren Initialwert haben, wird die erste Zustandsermittlung verzögert. Zustandsermittlungen, die durch Items oder Timer vor Ablauf der Startverzögerung ausgelöst werden, werden nicht durchgeführt. Die zulässigen Werte für se_startup_delay sind identisch mit den zulässigen Werten für den Plugin-Parameter startup_delay_default.

  • Datentyp: int

  • Minimalwert: -1

  • Maximalwert: 600

se_stateorder

Durch diesen Wert wird bestimmt, an welcher Position der Status eingeordnet wird. Normalerweise ist die Sortierung abhängig von der Angabe der Stati innerhalb des rules Items. Durch diesen Wert kann die Sortierung zur Laufzeit abgeändert werden. Der Wert kann als Zahl, item oder eval deklariert werden.

  • Datentyp: foo

  • Minimalwert: 1

se_suspend_time

Unterbrechung der automatischen Steuerung nach manuellen Aktionen: Nach manuellen Aktionen kann die Automatik für eine bestimmte Zeit Unterbrochen werden. Wird die Dauer nicht im Objekt-Item definiert, wird die Standarddauer aus der Plugin Konfiguration oder der Standardwert von 3600 Sekunden (1 Stunde) angenommen.

  • Datentyp: foo

  • Minimalwert: -60

  • Maximalwert: 86400

se_use

Vorgabezustände werden als Item an beliebiger Stelle innerhalb der Item-Struktur definiert. Im konkreten Zustands-Item kann das Vorgabezustand-Item oder ein beliebiges struct über das Attribut se_use referenziert werden. Die zu nützenden Templates können auch über die eval: Deklaration zu Beginn des Werts unter Einbezug eines validen Eval-Ausdrucks dynamisch zur Laufzeit gesetzt werden.

  • Datentyp: list(str)

type

Datentyp des Objekt-Items. Muss „bool“ sein.

  • Datentyp: str

  • Mögliche Werte:

    • bool   -   Der Item Typ muss auf bool gestellt werden!

Logik Parameter

Das Plugin verfügt über folgende Parameter, die in der Datei ../etc/logic.yaml konfiguriert werden:

Keine Logik Parameter in den Metadaten beschrieben - Bitte in der README nachsehen (siehe Fußnote)

Plugin Functions

Das Plugin verfügt über folgende öffentliche Funktionen, die z.B. in Logiken aufgerufen werden können.

Keine