TapHome

Variablen und Konstanten

Variablen in TapHome-Skripten: Gerätewerte über die Abkürzung, Wertinfo, Gruppenwerte, Modul- und Gerätevariablen, VAR und typisierte Deklarationen, Zuweisung, Eigenschaften und Kontextkonstanten.

Gerätevariablen

Gerätewerte, die im Skripteditor ausgewählt wurden, stehen unter ihrer Abkürzung zur Verfügung, zum Beispiel Se, Mu oder Te. Ein Gerät, das nicht mehr existiert, wird als Null gelesen.

Se + 2;

Die meisten Skripte lesen Gerätewerte nur. An zwei Stellen kann ein Skript einen Gerätewert ändern:

  • In der smart rule Skript kann einer Lese-/Schreibvariablen ein Wert zugewiesen werden. Jede Zuweisung wird zu einer Geräteaktion.
  • In einem Listener-Skript des Packet Parsers setzt die Zuweisung an die Abkürzung eines Gerätewerts diesen Wert.
IF Se > 25
    Mu := 1;
END

An jeder anderen Stelle bricht eine Zuweisung das Skript mit Can not directly set value to device variable ab.

Wertinfo

Eingangsvariablen der smart rules Gleichung, Formel und Skript, der Begrenzungsbedingung Formel und der Benachrichtigungstexte können als Wertinfo ausgewählt werden; die Auswahl zeigt sie als Wertinfo von Name des Werts. Eine solche Variable enthält den aktuellen Wert zusammen mit seinem Verlauf:

EigenschaftTypInhalt
CurrentcurrentvalueinfoCurrentValueTime, PreviousValue, PreviousValueTime, LastKnownValue, LastKnownValueTime
HistoryhistoryvaluesFirstPeriodStartTime, Values; nur gefüllt bei einem aggregierten Wert der aktuellen Periode, dessen Verlauf aufgezeichnet wird, sonst Null

LastKnownValue ist der jüngste vorherige Wert, der weder NaN noch Null war, und LastKnownValueTime gibt an, wann das Gerät ihn hatte.

# Se was picked as Value info of a temperature
IF ISNAN(Se.Current.PreviousValue)
    RETURN(Se.Current.LastKnownValue);
END
Se.Current.PreviousValue;

Verfügbar — Core 2026.1, Build 36599.

Gruppenwerte

Eine an eine Gerätegruppe gebundene Variable enthält einen groupvalue: Calculated ist der für die Gruppe berechnete Wert, Values sind die Werte ihrer Mitglieder. In der Arithmetik verhält sich ein Gruppenwert wie sein Wert Calculated.

Modul- und Gerätevariablen

Variablen, die an einem Modul oder Gerät von Modbus oder Packet Parser definiert sind, stehen über ihren Namen zur Verfügung und behalten ihren Wert zwischen Skriptdurchläufen. Sie geben Daten aus einem Leseskript an Service-Attribute weiter oder aus einem Listener-Skript an die Leseskripte der Geräte.

# Packet parser module read script: one request, the answer is kept for the device scripts
VAR response := SENDHTTPREQUEST("/status", "GET");
StatusJson := response.Content;

Verfügbar — Modulvariablen eines Sammlungstyps ab Core 2026.1, Build 39507.

Lokale Variablen

Eine lokale Variable lebt für einen Durchlauf des Skripts. Sie wird mit VAR deklariert, das den Typ des Anfangswerts übernimmt, oder mit einem expliziten Typ. In beiden Fällen ist der Typ für das ganze Skript festgelegt, und jede spätere Zuweisung wird in ihn umgewandelt.

VAR    a := 5;
int    b := 5;
string s := 5;
b := 2.6;
# Result: b = 3, converted to int, halves are rounded away from zero
VAR    t := "a";
t := 5;
# Result: t = "5", VAR keeps the type of its first value
uint16 r := 70000;
# Result: r = 4464, a value out of range wraps around silently

Eine typisierte Deklaration darf den Anfangswert weglassen; die Variable erhält dann den Standardwert ihres Typs (0, FALSE, leerer Text, eine leere Sammlung). VAR braucht immer einen Wert, VAR y; schlägt mit Variable must have initial value provided fehl.

datetime timestamp;
collection<uint16> block;
double ratio := 0.5;

Regeln:

  • Ein Name beginnt mit einem Buchstaben und enthält nur Buchstaben und Ziffern; _ schlägt mit Only letters or numbers are allowed in variable name fehl.
  • Ein Name darf keine Konstante, Variable oder Geräteabkürzung wiederholen.
  • Eine Variable muss oberhalb ihrer ersten Verwendung deklariert sein. Es gibt keinen Gültigkeitsbereich pro Block: Eine innerhalb von IF deklarierte Variable ist auch nach END sichtbar.

Die Typ-Schlüsselwörter sind auf Datentypen aufgeführt.

Zuweisung

:= weist zu und = vergleicht. Die zusammengesetzten Operatoren +=, -=, *=, /=, <<=, >>=, &=, |= und ^= verbinden eine Operation mit der Zuweisung.

VAR x := 5;
x += 1;
x *= 2;
x <<= 1;
x;
# Result: 24

Ein zusammengesetzter Operator hat die Rangfolge seiner Operation, daher wird x -= a - b als (x -= a) - b ausgewertet. Setzen Sie die rechte Seite in Klammern: x -= (a - b);. Siehe Rangfolge.

Eigenschaften

Eine Eigenschaft wird mit . gelesen. Eine Ebene lässt sich schreiben, verschachtelte Eigenschaften lassen sich nur lesen (Unable to assign a value to a nested property), und nur lesbare Eigenschaften lassen sich nicht schreiben.

VAR t := NOW();
t.Minute := 0;
t.Hour;
Se.Current.LastKnownValue;

Eigenschaften lassen sich nur aus einer benannten Variablen, Konstante oder Gerätevariablen lesen. NOW().Hour ist ein Parse-Fehler; speichern Sie den Wert zuerst.

Kontextkonstanten

Kontextkonstanten sind nur lesbare Werte, die eine smart rule oder ein Listener-Skript an sein Skript übergibt:

KonstanteVerfügbar inInhalt
TriggerNamesmart rules Gleichung, Formel und SkriptDie Abkürzung der Variablen, deren Änderung die smart rule gestartet hat, oder der Name des ausgelösten Triggers. In der smart rule Gleichung ab Core 2026.1, Build 35936.
LastStatesmart rules Gleichung und FormelDas vorherige Ergebnis; siehe Skripte in smart rules.
RECEIVEDMSGListener-Skript des Packet ParsersDie eingehende Nachricht (receivedmessage).
RECEIVEDBYTESListener-Skript des Packet ParsersÄltere Form der Nutzdaten als Bytesammlung; bevorzugen Sie RECEIVEDMSG.

Die Skripte für Titel und Nachricht einer Benachrichtigung haben diese nur lesbaren Konstanten:

KonstanteIn einer Benachrichtigung, gesendet von
SmartRuleName, LocationNameJeder smart rule
TriggerNameDen Aktionen für „wahr“ oder „falsch“ einer smart rule Gleichung
CardName, DeviceNameEinem Zutrittsereignis; CardName ist Null bei einer unbekannten Karte
DeviceNameEiner Trigger-Aktion
SensorNamesEinem Alarm
SensorNames, AlarmPhaseNameEiner Alarmphase
SensorNames, NumberOfSensorsEiner Sensorenaktion, zum Beispiel offene Fenster