Változók és konstansok
Változók a TapHome szkriptekben: az eszközök értékei rövidítés alapján, csoportértékek, modul- és eszközváltozók, VAR és típusos deklarációk, értékadás, tulajdonságok és a környezet konstansai.
Eszközváltozók
A szkriptszerkesztőben kiválasztott eszközértékek a rövidítésük alatt érhetők el, például Se, Mu vagy Te. A már nem létező eszköz értéke Null.
Se + 2;A legtöbb szkript csak olvassa az eszközök értékeit. A szkript két helyen változtathatja meg egy eszköz értékét:
- A Szkript smart rule-ban az olvasható és írható változóknak lehet értéket adni. Minden értékadásból az eszköz egy művelete lesz.
- A Packet parser listener szkriptjében egy eszközérték rövidítésének adott érték beállítja azt az értéket.
IF Se > 25
Mu := 1;
ENDMinden más helyen az értékadás a Can not directly set value to device variable hibával leállítja a szkriptet.
Az eszköz értéke az eszköz statisztikájaként vagy Value info formában is kiválasztható, az utolsó változás idejével, az előző értékkel és a lezárt időszakok értékeivel — lásd Statisztikák és Value info.
Csoportértékek
Az eszközcsoporthoz kötött változó groupvalue értéket tartalmaz:
| Tulajdonság | Tartalom |
|---|---|
Calculated | A csoportra a csoporton beállított számítási függvénnyel kiszámított érték — Min, Max, Avg, Sum, Or vagy And. A NaN értékű tagok kimaradnak. Az Or és az And a 0,5 feletti értéket bekapcsoltnak tekinti, és 1 vagy 0 eredményt ad. Ha egyik tagnak sincs érvényes értéke, az eredmény 0. |
Values | A tagok értékei abban a sorrendben, ahogy a tagok a csoportban vannak. A még el nem indult tag Null, az ismeretlen érték NaN. |
Az aritmetikában és az összehasonlításokban a csoportérték a Calculated értékeként viselkedik:
# Se = device group of room temperatures (calculation Avg)
IF Se > 22
RETURN(1);
END
0;Miután a csoportértéket egy smart rule vagy kézi vezérlés megváltoztatta, a változó egy ideig groupvalue helyett egyszerű számot tartalmazhat. A Values olvasása előtt ellenőrizd a .Type értékét; a MIN és a MAX kihagyja a Null vagy NaN értékű tagokat:
# Se = device group of room temperatures
IF Se.Type = "GroupValue"
RETURN(MAX(Se.Values) - MIN(Se.Values));
END
NaN;Modul- és eszközváltozók
A Modbus vagy Packet parser modulon vagy eszközön definiált változók a nevükkel érhetők el, és megtartják az értéküket a szkript futásai között. Adatokat adnak át egy olvasó szkriptből a szolgáltatási attribútumoknak, vagy egy listener szkriptből az eszközök olvasó szkriptjeinek.
# Packet parser module read script: one request, the answer is kept for the device scripts
VAR response := SENDHTTPREQUEST("/status", "GET");
StatusJson := response.Content;Elérhetőség — gyűjtemény típusú modulváltozók: TapHome Next 2026.1.39507+.
Helyi változók
A helyi változó a szkript egyetlen futásáig él. A VAR kulcsszóval deklarálható, amely a kezdőérték típusát veszi át, vagy kifejezett típussal. A típus mindkét esetben az egész szkriptre rögzített, és minden későbbi értékadás erre a típusra alakul.
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 silentlyA típusos deklaráció elhagyhatja a kezdőértéket; a változó ekkor a típusa alapértelmezett értékét kapja (0, FALSE, üres szöveg, üres gyűjtemény). A VAR mindig értéket igényel, a VAR y; a Variable must have initial value provided hibával leáll.
datetime timestamp;
collection<uint16> block;
double ratio := 0.5;Szabályok:
- A név betűvel kezdődik, és csak betűket és számjegyeket tartalmaz; az
_azOnly letters or numbers are allowed in variable namehibát okozza. - A név nem egyezhet meg egy konstanssal, egy változóval vagy egy eszközrövidítéssel.
- A változót az első használata előtt kell deklarálni. Nincs blokkhatókör: az
IFbelsejében deklarált változó azENDután is látható.
A típusok kulcsszavait az Adattípusok oldal sorolja fel.
Értékadás
A := értéket ad, az = összehasonlít. A +=, -=, *=, /=, <<=, >>=, &=, |= és ^= összetett operátorok egy műveletet kombinálnak az értékadással.
VAR x := 5;
x += 1;
x *= 2;
x <<= 1;
x;
# Result: 24Az összetett operátor precedenciája a műveletéé, ezért az
x -= a - bkiértékelése(x -= a) - b. A jobb oldalt tedd zárójelbe:x -= (a - b);. Lásd Precedencia.
Tulajdonságok
A tulajdonságot . jellel lehet olvasni. Egy szint írható, a beágyazott tulajdonságok csak olvashatók (Unable to assign a value to a nested property), a csak olvasható tulajdonságok pedig nem írhatók.
VAR t := NOW();
t.Minute := 0;
t.Hour;
Se.Current.LastKnownValue;Tulajdonságot csak névvel ellátott változóból, konstansból vagy eszközváltozóból lehet olvasni. A NOW().Hour elemzési hiba; előbb tárold az értéket.
A környezet konstansai
A környezet konstansai csak olvasható értékek, amelyeket egy smart rule vagy egy listener szkript ad át a szkriptjének:
| Konstans | Hol érhető el | Tartalom |
|---|---|---|
TriggerName | Egyenlet, Képlet és Szkript smart rule | Annak a változónak a rövidítése, amelynek változása elindította a szabályt, vagy a kiváltó trigger neve. Az Egyenlet smart rule-ban szükséges verzió: TapHome Next 2026.1.36599+. |
LastState | Egyenlet és Képlet smart rule | Az előző eredmény; lásd Szkriptek a smart rule-okban. |
RECEIVEDMSG | Packet parser listener szkript | A beérkező üzenet (receivedmessage). |
RECEIVEDBYTES | Packet parser listener szkript | Az üzenet tartalmának régebbi formája bájtgyűjteményként; inkább a RECEIVEDMSG használatát javasoljuk. |
Az értesítések címének és üzenetének szkriptjei a következő csak olvasható konstansokkal rendelkeznek:
| Konstans | Az értesítést küldi |
|---|---|
SmartRuleName, LocationName | Bármely smart rule |
TriggerName | Egy Egyenlet smart rule igaz vagy hamis műveletei |
CardName, DeviceName | Egy hozzáférési esemény; ismeretlen kártyánál a CardName értéke Null |
DeviceName | Egy trigger művelet |
SensorNames | Egy riasztás |
SensorNames, AlarmPhaseName | Egy riasztási fázis |
SensorNames, NumberOfSensors | Egy érzékelőkre vonatkozó művelet, például nyitott ablakok |