TapHome

Premenné a konštanty

Premenné v skriptoch TapHome: hodnoty zariadení podľa skratky, 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.

Hodnotu zariadenia možno vybrať aj ako štatistiku zariadenia alebo ako Info o hodnote s časom jej poslednej zmeny, predchádzajúcou hodnotou a hodnotami ukončených období — pozri Štatistiky a Info o hodnote.

Hodnoty skupín

Premenná naviazaná na skupinu zariadení obsahuje groupvalue:

VlastnosťObsah
CalculatedHodnota vypočítaná pre skupinu výpočtovou funkciou nastavenou na skupine — Min, Max, Avg, Sum, Or alebo And. Členy s hodnotou NaN sa vynechajú. Or a And berú hodnotu nad 0,5 ako zapnutú a dávajú 1 alebo 0. Keď žiadny člen nemá platnú hodnotu, výsledok je 0.
ValuesHodnoty členov v poradí, v akom sú v skupine. Člen, ktorý sa ešte nespustil, je Null, neznáma hodnota je NaN.

V aritmetike a v porovnaniach sa hodnota skupiny správa ako jej hodnota Calculated:

# Se = device group of room temperatures (calculation Avg)
IF Se > 22
    RETURN(1);
END
0;

Po zmene hodnoty skupiny zo smart rule alebo ručným ovládaním môže premenná chvíľu obsahovať obyčajné číslo namiesto groupvalue. Pred čítaním Values overte .Type; MIN a MAX preskakujú členy, ktoré sú Null alebo NaN:

# Se = device group of room temperatures
IF Se.Type = "GroupValue"
    RETURN(MAX(Se.Values) - MIN(Se.Values));
END
NaN;

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: TapHome Next 2026.1.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 potrebuje TapHome Next 2026.1.36599+.
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á