TapHome

Varijable i konstante

Varijable u skriptama TapHome: vrijednosti uređaja prema kratici, vrijednosti skupina, varijable modula i uređaja, VAR i deklaracije s tipom, dodjela, svojstva i konstante konteksta.

Varijable uređaja

Vrijednosti uređaja odabrane u uređivaču skripti dostupne su pod svojom kraticom, na primjer Se, Mu ili Te. Uređaj koji više ne postoji čita se kao Null.

Se + 2;

Većina skripti vrijednosti uređaja samo čita. Skripta može promijeniti vrijednost uređaja na dva mjesta:

  • U smart rule Skripta varijabli za čitanje i pisanje može se dodijeliti vrijednost. Svaka dodjela postaje radnja na uređaju.
  • U listener skripti modula Packet parser dodjela kratice vrijednosti uređaja postavlja tu vrijednost.
IF Se > 25
    Mu := 1;
END

Bilo gdje drugdje dodjela zaustavlja skriptu pogreškom Can not directly set value to device variable.

Vrijednost uređaja može se odabrati i kao statistika uređaja ili kao Info vrijednosti s vremenom njezine posljednje promjene, prethodnom vrijednošću i vrijednostima završenih razdoblja — vidi Statistika i Info vrijednosti.

Vrijednosti skupina

Varijabla povezana sa skupinom uređaja sadrži groupvalue:

SvojstvoSadržaj
CalculatedVrijednost izračunata za skupinu funkcijom izračuna postavljenom na skupini — Min, Max, Avg, Sum, Or ili And. Članovi s vrijednošću NaN izostavljaju se. Or i And vrijednost iznad 0,5 smatraju uključenom i daju 1 ili 0. Kad nijedan član nema valjanu vrijednost, rezultat je 0.
ValuesVrijednosti članova redoslijedom kojim su članovi u skupini. Član koji još nije pokrenut je Null, nepoznata vrijednost je NaN.

U aritmetici i usporedbama vrijednost skupine ponaša se kao njezina vrijednost Calculated:

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

Nakon što se vrijednost skupine promijeni iz smart rule ili ručnim upravljanjem, varijabla neko vrijeme može sadržavati običan broj umjesto groupvalue. Prije čitanja Values provjerite .Type; MIN i MAX preskaču članove koji su Null ili NaN:

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

Varijable modula i uređaja

Varijable definirane na modulu ili uređaju Modbus ili Packet parser dostupne su prema nazivu i zadržavaju vrijednost između izvršavanja skripti. Prenose podatke iz skripte za čitanje u servisne atribute ili iz listener skripte u skripte za čitanje uređaja.

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

Dostupno — varijable modula tipa zbirke: TapHome Next 2026.1.39507+.

Lokalne varijable

Lokalna varijabla postoji tijekom jednog izvršavanja skripte. Deklarira se s VAR, koji preuzima tip početne vrijednosti, ili s izričitim tipom. U oba slučaja tip je fiksan za cijelu skriptu i svaka kasnija dodjela pretvara se u njega.

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

Deklaracija s tipom smije izostaviti početnu vrijednost; varijabla tada dobiva zadanu vrijednost svojeg tipa (0, FALSE, prazan tekst, praznu zbirku). VAR uvijek treba vrijednost, VAR y; završava pogreškom Variable must have initial value provided.

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

Pravila:

  • Naziv počinje slovom i sadrži samo slova i znamenke; _ završava pogreškom Only letters or numbers are allowed in variable name.
  • Naziv ne smije ponavljati konstantu, varijablu ni kraticu uređaja.
  • Varijabla mora biti deklarirana iznad prve upotrebe. Blokovi nemaju vlastiti doseg: varijabla deklarirana unutar IF vidljiva je i iza END.

Ključne riječi tipova navedene su na stranici Tipovi podataka.

Dodjela

:= dodjeljuje, a = uspoređuje. Složeni operatori +=, -=, *=, /=, <<=, >>=, &=, |= i ^= spajaju operaciju s dodjelom.

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

Složeni operator ima prioritet svoje operacije, pa se x -= a - b izračunava kao (x -= a) - b. Desnu stranu stavite u zagrade: x -= (a - b);. Vidi Prioritet.

Svojstva

Svojstvo se čita pomoću .. Jedna razina može se pisati, ugniježđena svojstva mogu se samo čitati (Unable to assign a value to a nested property), a svojstva samo za čitanje ne mogu se pisati.

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

Svojstva se mogu čitati samo iz imenovane varijable, konstante ili varijable uređaja. NOW().Hour je pogreška pri raščlambi; vrijednost najprije spremite.

Konstante konteksta

Konstante konteksta su vrijednosti samo za čitanje koje smart rule ili listener skripta daje svojoj skripti:

KonstantaDostupna uSadržaj
TriggerNameSmart rules Jednadžba, Formula i SkriptaKratica varijable čija je promjena pokrenula smart rule ili naziv okidača koji se aktivirao. U smart rule Jednadžba zahtijeva TapHome Next 2026.1.36599+.
LastStateSmart rules Jednadžba i FormulaPrethodni rezultat; vidi Skripte u smart rules.
RECEIVEDMSGListener skripta modula Packet parserDolazna poruka (receivedmessage).
RECEIVEDBYTESListener skripta modula Packet parserStariji oblik sadržaja poruke kao zbirke bajtova; prednost ima RECEIVEDMSG.

Skripte naslova i teksta obavijesti imaju ove konstante samo za čitanje:

KonstantaU obavijesti koju šalje
SmartRuleName, LocationNameBilo koji smart rule
TriggerNameRadnje za istinu ili laž smart rule Jednadžba
CardName, DeviceNameDogađaj pristupa; CardName je Null za nepoznatu karticu
DeviceNameRadnja okidača
SensorNamesAlarm
SensorNames, AlarmPhaseNameFaza alarma
SensorNames, NumberOfSensorsRadnja senzora, na primjer otvoreni prozori