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;
ENDBilo 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:
| Svojstvo | Sadržaj |
|---|---|
Calculated | Vrijednost 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. |
Values | Vrijednosti č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 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 zahtijeva TapHome Next 2026.1.36599+. |
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 |