Változók és konstansok
Változók a TapHome szkriptekben: az eszközök értékei rövidítés alapján, Value info, 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.
Value info
Az Egyenlet, a Képlet és a Szkript smart rule bemeneti változói, a Képlet korlátozó feltétel és az értesítések szövegeinek változói Value info formában is kiválaszthatók; a választó ezt Érték info: az érték neve alakban listázza. Egy ilyen változó a jelenlegi értéket az előzményeivel együtt tartalmazza:
| Tulajdonság | Típus | Tartalom |
|---|---|---|
Current | currentvalueinfo | CurrentValueTime, PreviousValue, PreviousValueTime, LastKnownValue, LastKnownValueTime |
History | historyvalues | FirstPeriodStartTime, Values; csak az aktuális időszak olyan összesített értékénél van kitöltve, amelynek előzményei rögzítésre kerülnek, egyébként Null |
A LastKnownValue a legutóbbi olyan előző érték, amely nem volt sem NaN, sem Null, a LastKnownValueTime pedig az az időpont, amikor az eszköz ezt az értéket felvette.
# Se was picked as Value info of a temperature
IF ISNAN(Se.Current.PreviousValue)
RETURN(Se.Current.LastKnownValue);
END
Se.Current.PreviousValue;Elérhetőség — Core 2026.1, build 36599.
Csoportértékek
Az eszközcsoporthoz kötött változó groupvalue értéket tartalmaz: a Calculated a csoportra kiszámított érték, a Values a tagjainak értékei. Az aritmetikában a csoportérték a Calculated értékeként viselkedik.
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 a Core 2026.1 verziótól (build 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 a Core 2026.1 verziótól (build 35936). |
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 |