TapHome

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

Kdekoli 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:

VlastnostObsah
CalculatedHodnota 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.
ValuesHodnoty č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 silently

Typovaná 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čí chybou Only 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ř IF je viditelná i za END.

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: 24

Složený operátor má prioritu své operace, takže x -= a - b se 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:

KonstantaDostupná vObsah
TriggerNameSmart rules Rovnice, Vzorec a SkriptZkratka 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+.
LastStateSmart rules Rovnice a VzorecPředchozí výsledek; viz Skripty ve smart rules.
RECEIVEDMSGListener skript modulu Packet parserPříchozí zpráva (receivedmessage).
RECEIVEDBYTESListener skript modulu Packet parserStarší 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í:

KonstantaV oznámení, které odeslal
SmartRuleName, LocationNameJakákoli smart rule
TriggerNameAkce pro pravdu nebo nepravdu smart rule Rovnice
CardName, DeviceNameUdálost přístupu; CardName je Null u neznámé karty
DeviceNameAkce spouštěče
SensorNamesAlarm
SensorNames, AlarmPhaseNameFáze alarmu
SensorNames, NumberOfSensorsAkce senzorů, například otevřená okna