TapHome

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;
END

Minden 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ágTípusTartalom
CurrentcurrentvalueinfoCurrentValueTime, PreviousValue, PreviousValueTime, LastKnownValue, LastKnownValueTime
HistoryhistoryvaluesFirstPeriodStartTime, 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 silently

A 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 _ az Only letters or numbers are allowed in variable name hibá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 IF belsejében deklarált változó az END utá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: 24

Az összetett operátor precedenciája a műveletéé, ezért az x -= a - b kié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:

KonstansHol érhető elTartalom
TriggerNameEgyenlet, Képlet és Szkript smart ruleAnnak 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).
LastStateEgyenlet és Képlet smart ruleAz előző eredmény; lásd Szkriptek a smart rule-okban.
RECEIVEDMSGPacket parser listener szkriptA beérkező üzenet (receivedmessage).
RECEIVEDBYTESPacket parser listener szkriptAz ü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:

KonstansAz értesítést küldi
SmartRuleName, LocationNameBármely smart rule
TriggerNameEgy Egyenlet smart rule igaz vagy hamis műveletei
CardName, DeviceNameEgy hozzáférési esemény; ismeretlen kártyánál a CardName értéke Null
DeviceNameEgy trigger művelet
SensorNamesEgy riasztás
SensorNames, AlarmPhaseNameEgy riasztási fázis
SensorNames, NumberOfSensorsEgy érzékelőkre vonatkozó művelet, például nyitott ablakok