cycle

Das Attribut definiert ein regelmäßiges Aufrufen des Items (und damit der verknüpften Logik oder Eval-Funktion).

item:
    type: num
    cycle: 10 = 0
    enforce_updates: 'true'

ruft das Item alle 10 Sekunden auf und sorgt dadurch für das triggern von verknüpften Logiken und/oder Eval-Funktionen. Dazu muss enforce_updates auf truestehen, damit das Triggern erfolgt, auch wenn sich der Wert des Items nicht ändert.

Gleichzeitig wird bei jedem Aufruf von cycle, also hier alle 10 Sekunden, der Wert des Items auf 0 gesetzt. Wenn mit diesem Item Logiken und/oder Eval-Funktionen verknüpft sind, muss enforce_updates auf truestehen, damit das Triggern erfolgt, auch wenn sich der Wert des Items nicht ändert.

Bitte beachten: Datentyp der Wertzuweisung

Ab SmartHomeNG v1.3 werden die Konfigurationsmöglichkeiten erweitert.

Der Wert für dauer kann auf folgende Weise angegeben werden:

  1. eine Zahl, die die Anzahl an Sekunden angibt, optional kann ein s angehängt werden.

  2. eine Zahl gefolgt von m, gibt die Anzahl an Minuten an

Außerdem kann ab SmartHomeNG v1.3 der Datentyp der Wertzuweisung beeinflusst werden.

Datentyp der Wertzuweisung

Bei der Nutzung von autotimerund cycle ist eine Besonderheit zu beachten: Unabhängig vom mit type: angegebenen Datentyp erfolgt in smarthome.py und SmartHomeNG bis v1.2 die Zuweisung immer als String! Das ist inkonsistent und kann zu unerwarteten Ergebnissen führen, wenn das Item in eval-Ausdrücken verwendet wird.

Ab SmartHomeNG v1.3 kann alternativ die Zuweisung des Wertes in dem Datentyp erfolgen, der mit type: angegebenen wurde. Das kann jedoch zu Kompatibilitätsproblemen führen, falls jemand in eval-Ausdrücken berücksichtigt hat, dass bisher die Wertzuweisung immer als String erfolgte. Um diese Probleme zu umgehen, kann das Verhalten (Zuweisung als String oder Zuweisung im richtigen Datentyp) angegeben werden. Die beiden Modi sind:

  • compat_1.2 - Verhalten, wie in den vorherigen Versionen von smarthome.py/SmartHomeNG

  • latest - Zuweisung der Werte in dem Datentyp, der für das Item angegeben ist.

Aus Kompatibilitätsgründen ist der voreingestellte Modus in SmartHomeNG v1.3 compat_1.2.

Das Verhalten kann global für die SmartHomeNG Installation vorgegeben werden, indem der Konfigurationsdatei etc/smarthome.yaml der Eintrag

assign_compatibility: latest

hinzugefügt wird.

Falls eine Umstellung nicht installationsweit erfolgen soll, kann der Modus bei jedem autotimer oder cycle Attribut als optionaler dritter Parameter angegeben werden. Wenn keine Angabe des Kompatibilitätsmodus erfolgt, wird die globale Voreinstellung genutzt.

Die Angabe des Kompatibilitätsmodus erfolgt folgendermaßen:

item:
    cycle: <dauer> = <wert> = <kompatibilität>

Beispiel:

item:
    type: num
    cycle: 5m = 0 = compat_1.2

item2:
    type: bool
    cycle: 5m = true = latest

Nach auslösen des cycle wird item der String '0'zugewiesen und item2 wird der boolsche Wert Truezugewiesen.