Proměnné a konstanty
Proměnné ve skriptech TapHome: hodnoty zařízení podle zkratky, hodnoty skupin, proměnné modulu a zařízení, VAR a typované deklarace, přiřazení, vlastnosti a konstanty kontextu.
Proměnné zařízení
Hodnoty zařízení vybrané v editoru skriptu jsou dostupné pod svou zkratkou, například Se, Mu nebo Te. Zařízení, které už neexistuje, se čte jako Null.
Se + 2;Většina skriptů hodnoty zařízení jen čte. Skript může hodnotu zařízení změnit na dvou místech:
- Ve smart rule Skript lze přiřadit do proměnné pro čtení / zápis. Z každého přiřazení se stane akce zařízení.
- V listener skriptu modulu Packet parser přiřazení do zkratky hodnoty zařízení tuto hodnotu nastaví.
IF Se > 25
Mu := 1;
ENDKdekoli jinde přiřazení zastaví skript s hlášením Can not directly set value to device variable.
Hodnotu zařízení lze vybrat také jako statistiku zařízení nebo jako Info o hodnotě s časem její poslední změny, předchozí hodnotou a hodnotami ukončených období — viz Statistiky a Info o hodnotě.
Hodnoty skupin
Proměnná navázaná na skupinu zařízení obsahuje groupvalue:
| Vlastnost | Obsah |
|---|---|
Calculated | Hodnota vypočítaná pro skupinu výpočetní funkcí nastavenou na skupině — Min, Max, Avg, Sum, Or nebo And. Členy s hodnotou NaN se vynechají. Or a And berou hodnotu nad 0,5 jako zapnutou a dávají 1 nebo 0. Když žádný člen nemá platnou hodnotu, výsledek je 0. |
Values | Hodnoty členů v pořadí, v jakém jsou ve skupině. Člen, který se ještě nespustil, je Null, neznámá hodnota je NaN. |
V aritmetice a v porovnáních se hodnota skupiny chová jako její hodnota Calculated:
# Se = device group of room temperatures (calculation Avg)
IF Se > 22
RETURN(1);
END
0;Po změně hodnoty skupiny ze smart rule nebo ručním ovládáním může proměnná chvíli obsahovat obyčejné číslo místo groupvalue. Před čtením Values ověřte .Type; MIN a MAX přeskakují členy, které jsou Null nebo NaN:
# Se = device group of room temperatures
IF Se.Type = "GroupValue"
RETURN(MAX(Se.Values) - MIN(Se.Values));
END
NaN;Proměnné modulu a zařízení
Proměnné definované na modulu nebo zařízení Modbus či Packet parser jsou dostupné podle názvu a zachovávají si hodnotu mezi běhy skriptu. Předávají data ze skriptu pro čtení do servisních atributů nebo z listener skriptu do skriptů pro čtení zařízení.
# Packet parser module read script: one request, the answer is kept for the device scripts
VAR response := SENDHTTPREQUEST("/status", "GET");
StatusJson := response.Content;Dostupnost — proměnné modulu typu kolekce: TapHome Next 2026.1.39507+.
Lokální proměnné
Lokální proměnná žije po dobu jednoho běhu skriptu. Deklaruje se pomocí VAR, které převezme typ počáteční hodnoty, nebo s explicitním typem. V obou případech je typ pevný pro celý skript a každé pozdější přiřazení se na něj převede.
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 silentlyTypovaná deklarace smí počáteční hodnotu vynechat; proměnná pak dostane výchozí hodnotu svého typu (0, FALSE, prázdný text, prázdnou kolekci). VAR vždy potřebuje hodnotu, VAR y; skončí chybou Variable must have initial value provided.
datetime timestamp;
collection<uint16> block;
double ratio := 0.5;Pravidla:
- Název začíná písmenem a obsahuje jen písmena a číslice;
_skončí chybouOnly letters or numbers are allowed in variable name. - Název nesmí opakovat konstantu, proměnnou ani zkratku zařízení.
- Proměnná musí být deklarována nad svým prvním použitím. Bloková platnost neexistuje: proměnná deklarovaná uvnitř
IFje viditelná i zaEND.
Klíčová slova typů jsou uvedena na stránce Datové typy.
Přiřazení
:= přiřazuje a = porovnává. Složené operátory +=, -=, *=, /=, <<=, >>=, &=, |= a ^= spojují operaci s přiřazením.
VAR x := 5;
x += 1;
x *= 2;
x <<= 1;
x;
# Result: 24Složený operátor má prioritu své operace, takže
x -= a - bse vyhodnotí jako(x -= a) - b. Pravou stranu dejte do závorek:x -= (a - b);. Viz Priorita.
Vlastnosti
Vlastnost se čte pomocí .. Zapsat lze jednu úroveň, vnořené vlastnosti lze jen číst (Unable to assign a value to a nested property) a vlastnosti jen pro čtení zapsat nelze.
VAR t := NOW();
t.Minute := 0;
t.Hour;
Se.Current.LastKnownValue;Vlastnosti lze číst jen z pojmenované proměnné, konstanty nebo proměnné zařízení. NOW().Hour je chyba parsování; hodnotu nejprve uložte.
Konstanty kontextu
Konstanty kontextu jsou hodnoty jen pro čtení, které smart rule nebo listener skript předává svému skriptu:
| Konstanta | Dostupná v | Obsah |
|---|---|---|
TriggerName | Smart rules Rovnice, Vzorec a Skript | Zkratka proměnné, jejíž změna pravidlo spustila, nebo název spouštěče, který se aktivoval. Ve smart rule Rovnice vyžaduje TapHome Next 2026.1.36599+. |
LastState | Smart rules Rovnice a Vzorec | Předchozí výsledek; viz Skripty ve smart rules. |
RECEIVEDMSG | Listener skript modulu Packet parser | Příchozí zpráva (receivedmessage). |
RECEIVEDBYTES | Listener skript modulu Packet parser | Starší forma obsahu zprávy jako kolekce bajtů; dejte přednost RECEIVEDMSG. |
Skripty názvu a zprávy oznámení mají tyto konstanty jen pro čtení:
| Konstanta | V oznámení, které odeslal |
|---|---|
SmartRuleName, LocationName | Jakákoli smart rule |
TriggerName | Akce pro pravdu nebo nepravdu smart rule Rovnice |
CardName, DeviceName | Událost přístupu; CardName je Null u neznámé karty |
DeviceName | Akce spouštěče |
SensorNames | Alarm |
SensorNames, AlarmPhaseName | Fáze alarmu |
SensorNames, NumberOfSensors | Akce senzorů, například otevřená okna |