Basics: Globale Variablen

Basics: Globale Variablen

28. Januar 2017 1 600 Von Bastian

Weiter geht es mit den Grundlagen des Fibaro Home Center. In diesem Artikel geht es um globale Variablen. Welche Arten gibt es, wofür und wie können sie verwendet werden?

Basics: Globale Variablen

Basics: Globale Variablen

Globale Variablen

Möchte man Informationen oder definierte Zustände szenenübergreifend oder als Trigger verwenden, so greift man auf globale Variablen zurück. Weiterhin lassen sich Zustände des Smart Home mit globalen Variablen definieren. In diesem Artikel habe ich bereits ein paar der gängigsten globalen Variablen erwähnt. Die dort vorgestellte globale Variable TimeOfDay beispielsweise steht repräsentativ für die aktuelle Tageszeit. Ist es also Morgen, Tag, Abend oder Nacht. Da sich die Inhalte von globalen Variablen mit Lua abfragen lassen, kann der Inhalt dieser für die Steuerungen innerhalb von Szene herangezogen werden. So ist die Beleuchtung in meinem Badezimmer abhängig von eben dieser Variablen. Morgens und abends lasse ich bei Betreten das Licht vollständig einschalten wo hingegen tagsüber und nachts eine weniger helle Lichtsituation geschaffen wird. Also immer in Abhängigkeit von der jeweils aktuellen Tageszeit. Im Artikel Tageszeitsteuerung ist diese noch etwas ausführlicher erklärt.

Zwei unterschiedliche Arten

Das Home Center verfügt über zwei unterschiedliche Arten von globalen Variablen. Die bereits beschriebene Tageszeitvariable TimeOfDay hat exakt 4 Ausprägungen Morning, Day, Evening und Night. Die Werte sind also vorgegeben. Passend dazu hat Fibaro diese Art von Variablen daher als Vordefinierte Variablen bezeichnet. Immer wenn die Ausprägungen der Variable klar und eindeutig sind, wird eine solche verwendet.

Die zweite Art von globalen Variablen können beliebige Inhalte aufnehmen und heißen dementsprechend einfach Variablen. Der ursprüngliche Gedanke von Fibaro war dahingehend, dass in diesen Variablen nur Ziffern bzw. Zahlen gespeichert werden. So ist es im Webinterface nicht möglich dort andere Werte als Ziffern und Zahlen einzutragen. Füllt man diese aus Szenen heraus, lassen sich beliebige Inhalte ablegen und wiederverwendent.

Starten von Szenen

Wie bereits im Artikel zu Triggern erwähnt, kann die Änderung einer globalen Variable als Trigger verwendet werden. Um beim Beispiel TimeOfDay zu bleiben, ist es beispielsweise möglich beim Wechsel von Tag zu Abend Rolläden automatisch herunterfahren zu lassen oder beim Wechsel von Abend zu Nacht die Außenbeleuchtung auszuschalten. Hier ist jedoch zu beachten, dass die bloße Änderung der globalen Variable im Webinterface (in der Variablen Steuerung) nicht zum Triggern von Szenen führt. Lediglich Änderungen durch virtuelle Devices oder andere Szenen führen dazu, dass diese gestartet werden. Im Einsteiger-Artikel zu Triggern erfährst Du, wie diese zu verwenden sind.

Erstellung von globalen Variablen

Es gibt zwei unterschiedliche Möglichkeiten zur Erstellung von globalen Variablen. Die Point&Click Variante über das Webinterface und die automatische Erstellung über eine Lua Szene.

Manuelle Erstellung

Im Webinterface des Home Center unter Steuerung -> Variablen Steuerung werden die bereits vorhandenen globalen Variaben getrennt nach Variablen und Vordefinierten Variablen angezeigt. Unter der jeweiligen Art von Variablen befindet sich eine Schalzfläche zum hinzufügen neuer Variablen.

Variable

Das hinzufügen einer Variable ist denkbar einfach. Beim Klick auf hinzufügen öffnet sich ein kleiner Dialog mit den zwei Eingabefeldern Variablen Name und Wert. Der gewählte Name darf im Home Center natürlich nur einmal vorkommen, aber ansonsten ist dieser frei wählbar. In das Feld Wert lassen sich nur Ziffern eintragen. Aber keine Sorge, wie bereits erwähnt, aus Szenen heraus lassen sich hier auch Texte und sogar ganze Arrays speichern.

Erstellung einer Variable

Erstellung einer Variable

Vordefinierte Variable

Das Formular bei der Erstellung einer Vordefinierten Variable sieht etwas anders aus. Neben dem zu definierenden Namen lassen sich hier beleibig viele vordefinierte Ausprägungen der Variable angeben. Und hier nicht nur Ziffern, sondern auch Text.

Erstellung einer Vordefinierten Variable

Erstellung einer Vordefinierten Variable

Automatische Erstellung

Vielleicht nicht ganz passend in den Basics, aber wissenswert und der Vollständigkeit halber hier erwähnt, lassen sich Globale Variablen auch aus Szenen heraus automatisch erstellen. Dabei wird die API des Home Centers genutzt und erspart bei der Einbindung neuer Variablen das Klicken im Webinterface. Diese Funktion habe ich in einigen meiner Szenen bereits verwendet.


Das Auführen dieser Szene erstellt eine globale Variable namens BeispielVarmit dem Inhalt Beispielinhalt.

Verwendung von globalen Variablen

Neben der Verwendung als Trigger lassen sich die Inhalte von globalen Variablen auch innerhalb von Szenen verwenden. Fibaro stellt hierfür die folgenden Funktionen zur Verfügung:

fibaro:getGlobal()

Zum Auslesen von Wert und letzter Änderung einer globalen Variable. Die Rückgabe beinhaltet den aktuell gespeicherten Wert der Variable, sowie den Timestamp der letzten Änderung des Wertes. Beispiel:

fibaro:getGlobalValue() und fibaro:getGlobalModificationTime()

Mit diesen beiden Funktionen lassen sich Wert und Timestamp der letzten Änderung einzeln abfragen. Beispiel:

fibaro:setGlobal()

Will man den Wert der Variable ändern, so wird diese Funktion genutzt. Der Timestamp der letzten Änderung lässt sich natürlich nicht anpassen, da dieser automatisch gesetzt wird. Beispiel:


Moment! Fällt Dir etwas auf? Die globale Variable TimeOfDay ist eine Vordefinierte Variable die den Wert Midnight gar nicht kennt. Gut aufgepasst und ein Blick in die Variablen Steuerung verrät uns, dass wir zwar den Befehl zur Änderung der Variablen abgeschickt haben, dieser aber keine Wirkung gezeigt hat, weil die Ausprägung Midnight nicht vordefiniert ist. Vordefinierte Variablen lassen eine Änderung nur zu, wenn der neue Wert auch in den vordefinierten Ausprägungen vorhanden ist.

Vordefinierte Variable in der Steuerung

Vordefinierte Variable in der Steuerung

Feedback

Ich hoffe, dass dieser Artikel die Funktionsweise und Verwendung von globalen Variablen ein wenig verdeutlicht hat und freue mich über Feedback in der Kommentarfunktion oder dem Fibaro Forum.

Moin, ich heiße Bastian und bin Autor dieser kleinen bescheidenen Seite. Zwanghaft, ja fast schon neurotisch beschäftige ich mich seit Jahren mit jedem erdenklichen technischen Schnick-Schnack. Nichts, was einen Stecker hat ist vor mir sicher. So war es klar, dass ich eines Tages das Haus auf den Kopf stellen und alles vernetzen würde.

Da ich bei meinem Vorhaben sehr viel Hilfe und Unterstützung in diversen Foren, Blogs und Boards erfahren habe, möchte ich diesen Blog zum sammeln meiner Smarthome- und Technikerrungenschaften nutzen um der Community zumindest ein klein wenig was zurückgeben zu können.

Artikel teilen