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;
ENDBilo 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:
| Svojstvo | Tip | Sadržaj |
|---|---|---|
Current | currentvalueinfo | CurrentValueTime, PreviousValue, PreviousValueTime, LastKnownValue, LastKnownValueTime |
History | historyvalues | FirstPeriodStartTime, 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 silentlyDeklaracija 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škomOnly 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
IFvidljiva je i izaEND.
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: 24Složeni operator ima prioritet svoje operacije, pa se
x -= a - bizrač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:
| Konstanta | Dostupna u | Sadržaj |
|---|---|---|
TriggerName | Smart rules Jednadžba, Formula i Skripta | Kratica 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. |
LastState | Smart rules Jednadžba i Formula | Prethodni rezultat; vidi Skripte u smart rules. |
RECEIVEDMSG | Listener skripta modula Packet parser | Dolazna poruka (receivedmessage). |
RECEIVEDBYTES | Listener skripta modula Packet parser | Stariji oblik sadržaja poruke kao zbirke bajtova; prednost ima RECEIVEDMSG. |
Skripte naslova i teksta obavijesti imaju ove konstante samo za čitanje:
| Konstanta | U obavijesti koju šalje |
|---|---|
SmartRuleName, LocationName | Bilo koji smart rule |
TriggerName | Radnje za istinu ili laž smart rule Jednadžba |
CardName, DeviceName | Događaj pristupa; CardName je Null za nepoznatu karticu |
DeviceName | Radnja okidača |
SensorNames | Alarm |
SensorNames, AlarmPhaseName | Faza alarma |
SensorNames, NumberOfSensors | Radnja senzora, na primjer otvoreni prozori |