Premenné a konštanty
Premenné v skriptoch TapHome: hodnoty zariadení podľa skratky, Info o hodnote, hodnoty skupín, premenné modulu a zariadenia, VAR a typované deklarácie, priradenie, vlastnosti a kontextové konštanty.
Premenné zariadení
Hodnoty zariadení vybrané v editore skriptu sú dostupné pod svojou skratkou, napríklad Se, Mu alebo Te. Zariadenie, ktoré už neexistuje, sa číta ako Null.
Se + 2;Väčšina skriptov hodnoty zariadení iba číta. Skript môže zmeniť hodnotu zariadenia na dvoch miestach:
- V smart rule typu Skript sa dá priradiť premenná na čítanie a zápis. Z každého priradenia sa stane akcia na zariadení.
- V listener skripte Packet parsera priradenie do skratky hodnoty zariadenia túto hodnotu nastaví.
IF Se > 25
Mu := 1;
ENDKdekoľvek inde priradenie zastaví skript chybou Can not directly set value to device variable.
Info o hodnote
Vstupné premenné smart rules typu Rovnica, Vzorec a Skript, obmedzujúcej podmienky typu Vzorec a textov notifikácií sa dajú vybrať ako Info o hodnote; výber ich ponúka ako Info o hodnote názov hodnoty. Taká premenná obsahuje aktuálnu hodnotu spolu s jej históriou:
| Vlastnosť | Typ | Obsah |
|---|---|---|
Current | currentvalueinfo | CurrentValueTime, PreviousValue, PreviousValueTime, LastKnownValue, LastKnownValueTime |
History | historyvalues | FirstPeriodStartTime, Values; naplnené iba pri agregovanej hodnote aktuálnej periódy, ktorej história sa zaznamenáva, inak Null |
LastKnownValue je posledná predchádzajúca hodnota, ktorá nebola NaN ani Null, a LastKnownValueTime je čas, keď ju zariadenie malo.
# Se was picked as Value info of a temperature
IF ISNAN(Se.Current.PreviousValue)
RETURN(Se.Current.LastKnownValue);
END
Se.Current.PreviousValue;Dostupnosť — od Core 2026.1, build 36599.
Hodnoty skupín
Premenná naviazaná na skupinu zariadení obsahuje groupvalue: Calculated je hodnota vypočítaná pre skupinu, Values sú hodnoty jej členov. V aritmetike sa hodnota skupiny správa ako jej hodnota Calculated.
Premenné modulu a zariadenia
Premenné definované na module alebo zariadení Modbus či Packet parser sú dostupné pod svojím názvom a zachovávajú si hodnotu medzi behmi skriptu. Odovzdávajú dáta zo skriptu na čítanie do servisných atribútov alebo z listener skriptu do skriptov na čítanie zariadení.
# Packet parser module read script: one request, the answer is kept for the device scripts
VAR response := SENDHTTPREQUEST("/status", "GET");
StatusJson := response.Content;Dostupnosť — premenné modulu typu kolekcia od Core 2026.1, build 39507.
Lokálne premenné
Lokálna premenná žije počas jedného behu skriptu. Deklaruje sa pomocou VAR, ktorá prevezme typ počiatočnej hodnoty, alebo s explicitným typom. V oboch prípadoch je typ pevný pre celý skript a každé ďalšie priradenie sa na tento typ prevedie.
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á deklarácia môže počiatočnú hodnotu vynechať; premenná potom dostane predvolenú hodnotu svojho typu (0, FALSE, prázdny text, prázdnu kolekciu). VAR hodnotu potrebuje vždy, VAR y; skončí chybou Variable must have initial value provided.
datetime timestamp;
collection<uint16> block;
double ratio := 0.5;Pravidlá:
- Názov začína písmenom a obsahuje iba písmená a číslice;
_skončí chybouOnly letters or numbers are allowed in variable name. - Názov nesmie opakovať konštantu, premennú ani skratku zariadenia.
- Premenná musí byť deklarovaná nad svojím prvým použitím. Blokový rozsah platnosti neexistuje: premenná deklarovaná vnútri
IFje viditeľná aj zaEND.
Kľúčové slová typov sú uvedené na stránke Dátové typy.
Priradenie
:= priraďuje a = porovnáva. Zložené operátory +=, -=, *=, /=, <<=, >>=, &=, |= a ^= spájajú operáciu s priradením.
VAR x := 5;
x += 1;
x *= 2;
x <<= 1;
x;
# Result: 24Zložený operátor má prioritu svojej operácie, takže
x -= a - bsa vyhodnotí ako(x -= a) - b. Pravú stranu dajte do zátvoriek:x -= (a - b);. Pozrite Priorita.
Vlastnosti
Vlastnosť sa číta cez .. Jedna úroveň sa dá zapisovať, vnorené vlastnosti sa dajú iba čítať (Unable to assign a value to a nested property) a do vlastností iba na čítanie sa zapisovať nedá.
VAR t := NOW();
t.Minute := 0;
t.Hour;
Se.Current.LastKnownValue;Vlastnosti sa dajú čítať iba z pomenovanej premennej, konštanty alebo premennej zariadenia. NOW().Hour je chyba pri parsovaní; hodnotu si najprv uložte.
Kontextové konštanty
Kontextové konštanty sú hodnoty iba na čítanie, ktoré dostáva skript smart rule alebo listener skript:
| Konštanta | Dostupná v | Obsah |
|---|---|---|
TriggerName | Smart rules typu Rovnica, Vzorec a Skript | Skratka premennej, ktorej zmena spustila smart rule, alebo názov triggera, ktorý sa spustil. V smart rule typu Rovnica od Core 2026.1, build 35936. |
LastState | Smart rules typu Rovnica a Vzorec | Predchádzajúci výsledok; pozrite Skripty v smart rules. |
RECEIVEDMSG | Listener skript Packet parsera | Prichádzajúca správa (receivedmessage). |
RECEIVEDBYTES | Listener skript Packet parsera | Starší tvar obsahu správy ako bajtová kolekcia; uprednostnite RECEIVEDMSG. |
Skripty názvu a textu notifikácie majú tieto konštanty iba na čítanie:
| Konštanta | V notifikácii, ktorú posiela |
|---|---|
SmartRuleName, LocationName | Ľubovoľný smart rule |
TriggerName | Akcie pre pravdu alebo nepravdu smart rule typu Rovnica |
CardName, DeviceName | Prístupová udalosť; pri neznámej karte je CardName Null |
DeviceName | Akcia triggera |
SensorNames | Alarm |
SensorNames, AlarmPhaseName | Fáza alarmu |
SensorNames, NumberOfSensors | Akcia senzorov, napríklad otvorené okná |