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;
ENDW 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ść | Typ | Zawartość |
|---|---|---|
Current | currentvalueinfo | CurrentValueTime, PreviousValue, PreviousValueTime, LastKnownValue, LastKnownValueTime |
History | historyvalues | FirstPeriodStartTime, 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 silentlyDeklaracja 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łędemOnly 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
IFjest widoczna poEND.
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: 24Operator złożony ma priorytet swojej operacji, więc
x -= a - bjest 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ła | Dostępna w | Zawartość |
|---|---|---|
TriggerName | Smart rules Równanie, Formuła i Skrypt | Skró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. |
LastState | Smart rules Równanie i Formuła | Poprzedni wynik; zobacz Skrypty w smart rules. |
RECEIVEDMSG | Skrypt listener modułu Packet parser | Przychodząca wiadomość (receivedmessage). |
RECEIVEDBYTES | Skrypt listener modułu Packet parser | Starsza forma treści jako kolekcja bajtów; preferuj RECEIVEDMSG. |
Skrypty tytułu i treści powiadomienia mają te stałe tylko do odczytu:
| Stała | W powiadomieniu wysłanym przez |
|---|---|
SmartRuleName, LocationName | Dowolną smart rule |
TriggerName | Akcje dla prawdy lub fałszu smart rule Równanie |
CardName, DeviceName | Zdarzenie dostępu; CardName to Null dla nieznanej karty |
DeviceName | Akcję wyzwalacza |
SensorNames | Alarm |
SensorNames, AlarmPhaseName | Fazę alarmu |
SensorNames, NumberOfSensors | Akcję czujników, na przykład otwarte okna |