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;
ENDKdekoli 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í:
| Vlastnost | Typ | Obsah |
|---|---|---|
Current | currentvalueinfo | CurrentValueTime, PreviousValue, PreviousValueTime, LastKnownValue, LastKnownValueTime |
History | historyvalues | FirstPeriodStartTime, 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 silentlyTypovaná 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čí chybouOnly 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ř
IFje viditelná i zaEND.
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: 24Složený operátor má prioritu své operace, takže
x -= a - bse 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:
| Konstanta | Dostupná v | Obsah |
|---|---|---|
TriggerName | Smart rules Rovnice, Vzorec a Skript | Zkratka 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. |
LastState | Smart rules Rovnice a Vzorec | Předchozí výsledek; viz Skripty ve smart rules. |
RECEIVEDMSG | Listener skript modulu Packet parser | Příchozí zpráva (receivedmessage). |
RECEIVEDBYTES | Listener skript modulu Packet parser | Starší 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í:
| Konstanta | V oznámení, které odeslal |
|---|---|
SmartRuleName, LocationName | Jakákoli smart rule |
TriggerName | Akce pro pravdu nebo nepravdu smart rule Rovnice |
CardName, DeviceName | Událost přístupu; CardName je Null u neznámé karty |
DeviceName | Akce spouštěče |
SensorNames | Alarm |
SensorNames, AlarmPhaseName | Fáze alarmu |
SensorNames, NumberOfSensors | Akce senzorů, například otevřená okna |