TapHome

Varijable i konstante

Varijable u skriptama TapHome: vrijednosti uređaja prema kratici, Info vrijednosti, 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.

Info vrijednosti

Ulazne varijable u smart rules Jednadžba, Formula i Skripta, u ograničavajućem uvjetu Formula i u tekstovima obavijesti mogu se odabrati kao Info vrijednosti; izbornik ih navodi kao Info vrijednosti naziv vrijednosti. Takva varijabla sadrži trenutačnu vrijednost zajedno s njezinom poviješću:

SvojstvoTipSadržaj
CurrentcurrentvalueinfoCurrentValueTime, PreviousValue, PreviousValueTime, LastKnownValue, LastKnownValueTime
HistoryhistoryvaluesFirstPeriodStartTime, Values; popunjeno samo za agregiranu vrijednost tekućeg razdoblja čija se povijest bilježi, inače Null

LastKnownValue je najnovija prethodna vrijednost koja nije bila ni NaN ni Null, a LastKnownValueTime je trenutak kada ju je uređaj imao.

# Se was picked as Value info of a temperature
IF ISNAN(Se.Current.PreviousValue)
    RETURN(Se.Current.LastKnownValue);
END
Se.Current.PreviousValue;

Dostupno — Core 2026.1, build 36599.

Vrijednosti skupina

Varijabla povezana sa skupinom uređaja sadrži groupvalue: Calculated je vrijednost izračunata za skupinu, Values su vrijednosti njezinih članova. U aritmetici se vrijednost skupine ponaša kao njezina vrijednost Calculated.

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 od verzije Core 2026.1, build 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 od verzije Core 2026.1, build 35936.
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