Skip to content

Doku De Aktionen Einzeln

onkelandy edited this page Oct 6, 2018 · 3 revisions

Aktionen - Einzelvariante

Bei der Einzelvariante zur Definition von Aktionen werden alle Parameter einer Aktion in separaten Attributen definiert. Über den gemeinsamen Aktionsnamen gehören die Attribute einer Aktion zusammen.

Ähnlich wie Bedingungen benötigen auch Aktionen einen Namen. Der Name ist auch hier beliebig und wird lediglich in der Benennung der Attribute verwendet. Die Namen aller Attribute, die zu einer Bedingung gehören, folgen dem Muster "as_<Funktion>_<Aktionsname>".

Aktion: Item auf einen Wert setzen

    as_set_<Aktionsname>

Das Item, dass verändert werden soll, muss auf Ebene des Objekt-Items über das Attribut "as_item_<Aktionsname>" angegeben werden.

Das Attribut "as_set_<Aktionsname>" nutzt den Datentyp AbValue. Der Wert, auf den das Item gesezt wird kann dadurch als statischer Wert, als Wert eines Items oder als Ergebnis der Ausführung einer Funktion festgelegt werden.

Minimumabweichung: Es ist möglich eine Minimumabweichung für Änderungen zu definieren. Wenn die Differenz zwischen dem aktuellen Wert des Items und dem ermittelten neuen Wert kleiner ist als die festgelegte Minimumabweichung wird keine Änderung vorgenommen. Die Minimumabweichung wird über das Attribut "as_mindelta_<Aktionsname>" auf der Ebene des Objekt-Items festgelegt. Auch hier wird der Datentyp AbValue verwendet.

Aktion: Item zwangsweise auf einen Wert setzen

    as_force_<Aktionsname>

Diese Aktion funktioniert analog zu as_set_<Aktionsname>. Einziger Unterschied ist, dass die Wertänderung erzwungen wird: Wenn das Item bereits den zu setzenden Wert hat, dann ändert smarthomeNG das Item nicht. Selbst wenn beim Item das Attribut enforce_updates = yes gesetzt ist, wird zwar der Wert neu gesetzt, der von smarthomeNG Änderungszeit nicht neu gesetzt. Mit dem Attribut as_force_<Aktionsname> wird das Plugin den Wert des Items bei Bedarf zuerst auf einen anderen Wert ändern und dann auf dem Zielwert setzen. Damit erfolgt auf jeden Fall eine Wertänderung (ggf. sogar zwei) mit allen damit in Zusammenhang stehenden Änderungen (eval's, Aktualisierung der Änderungszeiten, etc).

Aktion: Ausführen einer Funktion

    as_run_<Aktionsname>: eval:(Funktion)

Die Angabe ist vergleichbar mit dem Ausführen einer Funktion zur Ermittlung des Werts für ein Item, hier wird jedoch kein Item benötigt. Außerdem wird der Rückgabewert der Funktion ignoriert.

Aktion: Auslösen einer Logikausführung

    as_trigger_<Aktionsname>

Um beim Auslösen einen Wert an die Logik zu übergeben, kann dieser Wert im Attribut über die Angabe von :<Wert> hinter dem Logiknamen angegeben werden.

Beispiel:

    as_trigger_<Aktionsname>: meineLogik:Zu übergebender Wert

Aktion: Alle Items, die ein bestimmtes Attribut haben, auf den Wert dieses Attributs setzen

    as_byattr_<Aktionsname>

Mit diesem Attribut wird der Name eines anderen (beliebigen) Attributs angegeben. Beim Ausführen werden alle Items herausgesucht, die das angegebene Attribut enthalten. Diese Items werden auf den Wert gesetzt, der dem genannten Attribut in den Items jeweils zugewiesen ist.

Beispiel:

    as_byattr_<Aktionsname>: mein_eigenes_Attribut

sucht alle Items heraus, bei denen das Attribut "mein_eigenes_Attribut" angegeben ist. Ein Item

    dummy:
        type: num
        mein_eigenes_Attribut: 42

wird dann auf "42" gesetzt.
Ein anderes Item

    dummy2:
        type: str
        mein_eigenes_Attribut: Rums

wird gleichzeitig auf "Rums" gesetzt.

Aktion: Sondervorgänge

    as_special_<Aktionsname>: (Sondervorgang)

Für bestimmte Sondervorgänge sind besondere Aktionen im Plugin definiert (z. B. für das Suspend). Diese werden jedoch nicht hier erläutert, sondern an den Stellen, andenen Sie verwendet werden.

Verzögertes Ausführen einer Aktion

    as_delay_<Aktionsname>

Über das Attribut wird die Verzögerung angegeben, nach der die Aktion ausgeführt werden soll. Die Angabe erfolgt in Sekunden oder mit dem Suffix "m" in Minuten.

    as_delay_<Aktionsname>: 30         --> 30 Sekunden
    as_delay_<Aktionsname>: 30m        --> 30 Minuten

Der Timer zur Ausführung der Aktion nach der angegebenen Verzögerung wird entfernt, wenn eine gleichartike Aktion ausgeführt werden soll (egal ob verzögert oder nicht). Wenn also die Verzögerung größer als der "cycle" ist, wird die Aktion nie durchgeführt werden, es sei denn die Aktion soll nur einmalig ausgeführt werden.
Das Attribut "as_delay_<Aktionsname>" verwendet den Datentyp AbValue

Wiederholen einer Aktion

    as_repeat_<Aktionsname>

Über das Attribut wird unabhängig vom globalen Setting für das Autoblind Item festgelegt, ob eine Aktion auch beim erneuten Eintritt in den Status ausgeführt wird oder nicht.

    as_delay_<Aktionsname>: True    # Aktion wird bei jedem Mal aufs neue ausgeführt
    as_delay_<Aktionsname>: False   # Aktion wird nur beim ersten Eintritt in den Status ausgeführt

Festlegen der Ausführungsreihenfolge von Aktionen

    as_order_<Aktionsname>

Die Reihenfolge, in der die Aktionen ausgeführt werden, ist nicht zwingend die Reihenfolge in der die Attribute definiert sind. In den meisten Fällen ist dies kein Problem da die Aktionen voneinander unabhängig sind und daher in beliebiger Reihenfolge ausgeführt werden können. In Einzelfällen kann es jedoch erforderlich sein, mehrere Aktionen in einer bestimmten Reihenfolge auszuführen. Dies kann über das Attribut as_order_<Aktionsname> erfolgen. Mit diesem Attribut wird der Aktion eine Zahl zugewiesen. Aktionen werden in aufsteigender Reihenfolge der zugewiesenen Zahlen ausgeführt.

Es ist möglich zwei Aktionen die gleiche Zahl zuzuweisen, die Reihenfolge der beiden Aktionen untereinander ist dann wieder undefiniert. Innerhalb der gesamten Aktionen werden die beiden Aktionen jedoch an der angegebenen Position ausgeführt.

Wird für eine Aktion kein Reihenfolgenwert angegeben, wird implizit der Wert 1 verwendet.

Das Attribut "as_order_<Aktionsname>" verwendet den Datentyp AbValue

Beispiel zur Ausführungsreihenfolge:

beispiel:
    automatik:
        rules:
            <...>
            Zustand1:
                as_order_aktion1: 3
                as_order_aktion2: 2
                as_order_aktion3: 1
                as_order_aktion4: 2

Die Reihenfolge der Aktionen hier wird wie folgt sein:

  1. aktion3
  2. aktion2, aktion4 ODER aktion4, aktion2
  3. aktion 1

Ist zusätzlich eine aktion5 definiert, die keine Reihenfolge festgelegt hat, wird die Reihenfolge der Aktionen wie folgt sein:

  1. aktion3, aktion5 ODER aktion5, aktion3
  2. aktion2, aktion4 ODER aktion4, aktion2
  3. aktion 1

Beispiel zu Aktionen

beispiel:
    raffstore:
        automatik:
            rules:
                <...>
                as_item_height: beispiel.raffstore1.hoehe
                as_mindelta_height: 10
                as_item_lamella: beispiel.raffstore1.lamelle
                as_mindelta_lamella: 5
                Daemmerung:
                    <...>
                    as_set_height: value:100
                    as_set_lamella: value:25
                    <...>
                Nacht:
                    <...>
                    as_set_height: value:100
                    as_set_lamella: value:0
                    <...>
                Nachfuehren:
                    <...>
                    as_set_height: value:100
                    as_set_lamella: eval:autoblind_eval.sun_tracking()
                    <...>
                Sonder:
                    <...>
                    as_trigger_logic1: myLogic:42
                    as_delay_logic1: 10
                    <...>
Clone this wiki locally