TapHome

Proměnné a konstanty

Proměnné ve skriptech TapHome: hodnoty zařízení podle zkratky, Info o hodnotě, hodnoty skupin, proměnné modulu a zařízení, VAR a typované deklarace, přiřazení, vlastnosti a konstanty kontextu.

Proměnné zařízení

Hodnoty zařízení vybrané v editoru skriptu jsou dostupné pod svou zkratkou, například Se, Mu nebo Te. Zařízení, které už neexistuje, se čte jako Null.

Se + 2;

Většina skriptů hodnoty zařízení jen čte. Skript může hodnotu zařízení změnit na dvou místech:

  • Ve smart rule Skript lze přiřadit do proměnné pro čtení / zápis. Z každého přiřazení se stane akce zařízení.
  • V listener skriptu modulu Packet parser přiřazení do zkratky hodnoty zařízení tuto hodnotu nastaví.
IF Se > 25
    Mu := 1;
END

Kdekoli jinde přiřazení zastaví skript s hlášením Can not directly set value to device variable.

Info o hodnotě

Vstupní proměnné smart rules Rovnice, Vzorec a Skript, omezující podmínky Vzorec a textů oznámení lze vybrat jako Info o hodnotě; výběr je uvádí jako Info o hodnotě název hodnoty. Taková proměnná obsahuje aktuální hodnotu spolu s její historií:

VlastnostTypObsah
CurrentcurrentvalueinfoCurrentValueTime, PreviousValue, PreviousValueTime, LastKnownValue, LastKnownValueTime
HistoryhistoryvaluesFirstPeriodStartTime, Values; vyplněno jen u agregované hodnoty aktuálního období, jejíž historie se zaznamenává, jinak Null

LastKnownValue je nejnovější předchozí hodnota, která nebyla NaN ani Null, a LastKnownValueTime je okamžik, kdy ji zařízení mělo.

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

Dostupnost — Core 2026.1, sestavení 36599.

Hodnoty skupin

Proměnná navázaná na skupinu zařízení obsahuje groupvalue: Calculated je hodnota vypočítaná pro skupinu, Values jsou hodnoty jejích členů. V aritmetice se hodnota skupiny chová jako její hodnota Calculated.

Proměnné modulu a zařízení

Proměnné definované na modulu nebo zařízení Modbus či Packet parser jsou dostupné podle názvu a zachovávají si hodnotu mezi běhy skriptu. Předávají data ze skriptu pro čtení do servisních atributů nebo z listener skriptu do skriptů pro čtení zařízení.

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

Dostupnost — proměnné modulu typu kolekce od Core 2026.1, sestavení 39507.

Lokální proměnné

Lokální proměnná žije po dobu jednoho běhu skriptu. Deklaruje se pomocí VAR, které převezme typ počáteční hodnoty, nebo s explicitním typem. V obou případech je typ pevný pro celý skript a každé pozdější přiřazení se na něj převede.

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

Typovaná deklarace smí počáteční hodnotu vynechat; proměnná pak dostane výchozí hodnotu svého typu (0, FALSE, prázdný text, prázdnou kolekci). VAR vždy potřebuje hodnotu, VAR y; skončí chybou Variable must have initial value provided.

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

Pravidla:

  • Název začíná písmenem a obsahuje jen písmena a číslice; _ skončí chybou Only letters or numbers are allowed in variable name.
  • Název nesmí opakovat konstantu, proměnnou ani zkratku zařízení.
  • Proměnná musí být deklarována nad svým prvním použitím. Bloková platnost neexistuje: proměnná deklarovaná uvnitř IF je viditelná i za END.

Klíčová slova typů jsou uvedena na stránce Datové typy.

Přiřazení

:= přiřazuje a = porovnává. Složené operátory +=, -=, *=, /=, <<=, >>=, &=, |= a ^= spojují operaci s přiřazením.

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

Složený operátor má prioritu své operace, takže x -= a - b se vyhodnotí jako (x -= a) - b. Pravou stranu dejte do závorek: x -= (a - b);. Viz Priorita.

Vlastnosti

Vlastnost se čte pomocí .. Zapsat lze jednu úroveň, vnořené vlastnosti lze jen číst (Unable to assign a value to a nested property) a vlastnosti jen pro čtení zapsat nelze.

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

Vlastnosti lze číst jen z pojmenované proměnné, konstanty nebo proměnné zařízení. NOW().Hour je chyba parsování; hodnotu nejprve uložte.

Konstanty kontextu

Konstanty kontextu jsou hodnoty jen pro čtení, které smart rule nebo listener skript předává svému skriptu:

KonstantaDostupná vObsah
TriggerNameSmart rules Rovnice, Vzorec a SkriptZkratka proměnné, jejíž změna pravidlo spustila, nebo název spouštěče, který se aktivoval. Ve smart rule Rovnice od Core 2026.1, sestavení 35936.
LastStateSmart rules Rovnice a VzorecPředchozí výsledek; viz Skripty ve smart rules.
RECEIVEDMSGListener skript modulu Packet parserPříchozí zpráva (receivedmessage).
RECEIVEDBYTESListener skript modulu Packet parserStarší forma obsahu zprávy jako kolekce bajtů; dejte přednost RECEIVEDMSG.

Skripty názvu a zprávy oznámení mají tyto konstanty jen pro čtení:

KonstantaV oznámení, které odeslal
SmartRuleName, LocationNameJakákoli smart rule
TriggerNameAkce pro pravdu nebo nepravdu smart rule Rovnice
CardName, DeviceNameUdálost přístupu; CardName je Null u neznámé karty
DeviceNameAkce spouštěče
SensorNamesAlarm
SensorNames, AlarmPhaseNameFáze alarmu
SensorNames, NumberOfSensorsAkce senzorů, například otevřená okna