TapHome

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;
END

Kdekoľ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ťTypObsah
CurrentcurrentvalueinfoCurrentValueTime, PreviousValue, PreviousValueTime, LastKnownValue, LastKnownValueTime
HistoryhistoryvaluesFirstPeriodStartTime, 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 silently

Typovaná 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čí chybou Only 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 IF je viditeľná aj za END.

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: 24

Zložený operátor má prioritu svojej operácie, takže x -= a - b sa 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štantaDostupná vObsah
TriggerNameSmart rules typu Rovnica, Vzorec a SkriptSkratka premennej, ktorej zmena spustila smart rule, alebo názov triggera, ktorý sa spustil. V smart rule typu Rovnica od Core 2026.1, build 35936.
LastStateSmart rules typu Rovnica a VzorecPredchádzajúci výsledok; pozrite Skripty v smart rules.
RECEIVEDMSGListener skript Packet parseraPrichádzajúca správa (receivedmessage).
RECEIVEDBYTESListener skript Packet parseraStarší tvar obsahu správy ako bajtová kolekcia; uprednostnite RECEIVEDMSG.

Skripty názvu a textu notifikácie majú tieto konštanty iba na čítanie:

KonštantaV notifikácii, ktorú posiela
SmartRuleName, LocationNameĽubovoľný smart rule
TriggerNameAkcie pre pravdu alebo nepravdu smart rule typu Rovnica
CardName, DeviceNamePrístupová udalosť; pri neznámej karte je CardName Null
DeviceNameAkcia triggera
SensorNamesAlarm
SensorNames, AlarmPhaseNameFáza alarmu
SensorNames, NumberOfSensorsAkcia senzorov, napríklad otvorené okná