TapHome

Zmienne i stałe

Zmienne w skryptach TapHome: wartości urządzeń według skrótu, Info wartości, wartości grup, zmienne modułu i urządzenia, VAR i deklaracje z typem, przypisanie, właściwości i stałe kontekstu.

Zmienne urządzeń

Wartości urządzeń wybrane w edytorze skryptów są dostępne pod swoim skrótem, na przykład Se, Mu lub Te. Urządzenie, które już nie istnieje, odczytuje się jako Null.

Se + 2;

Większość skryptów tylko odczytuje wartości urządzeń. Skrypt może zmienić wartość urządzenia w dwóch miejscach:

  • W smart rule Skrypt zmiennej do odczytu i zapisu można przypisać wartość. Każde przypisanie staje się akcją urządzenia.
  • W skrypcie listener modułu Packet parser przypisanie do skrótu wartości urządzenia ustawia tę wartość.
IF Se > 25
    Mu := 1;
END

W każdym innym miejscu przypisanie zatrzymuje skrypt komunikatem Can not directly set value to device variable.

Info wartości

Zmienne wejściowe smart rules Równanie, Formuła i Skrypt, warunku ograniczającego Formuła oraz tekstów powiadomień można wybrać jako Info wartości; lista wyboru pokazuje je jako Info wartości nazwa wartości. Taka zmienna przechowuje bieżącą wartość razem z jej historią:

WłaściwośćTypZawartość
CurrentcurrentvalueinfoCurrentValueTime, PreviousValue, PreviousValueTime, LastKnownValue, LastKnownValueTime
HistoryhistoryvaluesFirstPeriodStartTime, Values; wypełniana tylko dla zagregowanej wartości bieżącego okresu, której historia jest zapisywana, w przeciwnym razie Null

LastKnownValue to najnowsza poprzednia wartość, która nie była ani NaN, ani Null, a LastKnownValueTime to chwila, w której urządzenie ją miało.

# Se was picked as Value info of a temperature
IF ISNAN(Se.Current.PreviousValue)
    RETURN(Se.Current.LastKnownValue);
END
Se.Current.PreviousValue;

Dostępność — Core 2026.1, kompilacja 36599.

Wartości grup

Zmienna powiązana z grupą urządzeń przechowuje groupvalue: Calculated to wartość obliczona dla grupy, Values to wartości jej członków. W arytmetyce wartość grupy zachowuje się jak jej wartość Calculated.

Zmienne modułu i urządzenia

Zmienne zdefiniowane w module lub urządzeniu Modbus albo Packet parser są dostępne według nazwy i zachowują wartość między uruchomieniami skryptu. Przekazują dane ze skryptu odczytu do atrybutów serwisowych albo ze skryptu listener do skryptów odczytu urządzeń.

# Packet parser module read script: one request, the answer is kept for the device scripts
VAR response := SENDHTTPREQUEST("/status", "GET");
StatusJson := response.Content;

Dostępność — zmienne modułu typu kolekcji od Core 2026.1, kompilacja 39507.

Zmienne lokalne

Zmienna lokalna istnieje przez jedno uruchomienie skryptu. Deklaruje się ją słowem VAR, które przejmuje typ wartości początkowej, albo z jawnym typem. W obu przypadkach typ jest ustalony dla całego skryptu, a każde późniejsze przypisanie jest na niego konwertowane.

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

Deklaracja z typem może pominąć wartość początkową; zmienna dostaje wtedy wartość domyślną swojego typu (0, FALSE, pusty tekst, pustą kolekcję). VAR zawsze potrzebuje wartości, VAR y; kończy się błędem Variable must have initial value provided.

datetime timestamp;
collection<uint16> block;
double ratio := 0.5;

Zasady:

  • Nazwa zaczyna się od litery i zawiera tylko litery i cyfry; _ kończy się błędem Only letters or numbers are allowed in variable name.
  • Nazwa nie może powtarzać stałej, zmiennej ani skrótu urządzenia.
  • Zmienna musi być zadeklarowana przed pierwszym użyciem. Nie ma zasięgu blokowego: zmienna zadeklarowana wewnątrz IF jest widoczna po END.

Słowa kluczowe typów są wymienione na stronie Typy danych.

Przypisanie

:= przypisuje, a = porównuje. Operatory złożone +=, -=, *=, /=, <<=, >>=, &=, |= i ^= łączą operację z przypisaniem.

VAR x := 5;
x += 1;
x *= 2;
x <<= 1;
x;
# Result: 24

Operator złożony ma priorytet swojej operacji, więc x -= a - b jest obliczane jako (x -= a) - b. Prawą stronę ujmij w nawiasy: x -= (a - b);. Zobacz Priorytet.

Właściwości

Właściwość odczytuje się przez .. Zapisać można jeden poziom, zagnieżdżone właściwości można tylko odczytać (Unable to assign a value to a nested property), a właściwości tylko do odczytu nie można zapisać.

VAR t := NOW();
t.Minute := 0;
t.Hour;
Se.Current.LastKnownValue;

Właściwości można odczytać tylko z nazwanej zmiennej, stałej lub zmiennej urządzenia. NOW().Hour to błąd parsowania; najpierw zapisz wartość.

Stałe kontekstu

Stałe kontekstu to wartości tylko do odczytu, które smart rule lub skrypt listener przekazuje swojemu skryptowi:

StałaDostępna wZawartość
TriggerNameSmart rules Równanie, Formuła i SkryptSkrót zmiennej, której zmiana uruchomiła regułę, albo nazwa wyzwalacza, który zadziałał. W smart rule Równanie od Core 2026.1, kompilacja 35936.
LastStateSmart rules Równanie i FormułaPoprzedni wynik; zobacz Skrypty w smart rules.
RECEIVEDMSGSkrypt listener modułu Packet parserPrzychodząca wiadomość (receivedmessage).
RECEIVEDBYTESSkrypt listener modułu Packet parserStarsza forma treści jako kolekcja bajtów; preferuj RECEIVEDMSG.

Skrypty tytułu i treści powiadomienia mają te stałe tylko do odczytu:

StałaW powiadomieniu wysłanym przez
SmartRuleName, LocationNameDowolną smart rule
TriggerNameAkcje dla prawdy lub fałszu smart rule Równanie
CardName, DeviceNameZdarzenie dostępu; CardName to Null dla nieznanej karty
DeviceNameAkcję wyzwalacza
SensorNamesAlarm
SensorNames, AlarmPhaseNameFazę alarmu
SensorNames, NumberOfSensorsAkcję czujników, na przykład otwarte okna