Variabili e costanti
Variabili negli script TapHome: valori dei dispositivi per abbreviazione, Info valore, valori di gruppo, variabili del modulo e del dispositivo, VAR e dichiarazioni tipizzate, assegnazione, proprietà e costanti di contesto.
Variabili dei dispositivi
I valori dei dispositivi scelti nell’editor degli script sono disponibili con la loro abbreviazione, per esempio Se, Mu o Te. Un dispositivo che non esiste più viene letto come Null.
Se + 2;La maggior parte degli script legge soltanto i valori dei dispositivi. Uno script può modificare il valore di un dispositivo in due punti:
- Nella smart rule Script si può assegnare una variabile di lettura e scrittura. Ogni assegnazione diventa un’azione sul dispositivo.
- In uno script listener del Packet parser, l’assegnazione dell’abbreviazione di un valore del dispositivo imposta quel valore.
IF Se > 25
Mu := 1;
ENDIn qualsiasi altro punto un’assegnazione interrompe lo script con Can not directly set value to device variable.
Info valore
Le variabili di ingresso delle smart rule Equazione, Formula e Script, della condizione limitante Formula e dei testi delle notifiche si possono scegliere come Info valore; il selettore le elenca come Info valore di nome del valore. Una variabile di questo tipo contiene il valore attuale insieme al suo storico:
| Proprietà | Tipo | Contenuto |
|---|---|---|
Current | currentvalueinfo | CurrentValueTime, PreviousValue, PreviousValueTime, LastKnownValue, LastKnownValueTime |
History | historyvalues | FirstPeriodStartTime, Values; compilato solo per un valore aggregato del periodo corrente di cui viene registrato lo storico, altrimenti Null |
LastKnownValue è il valore precedente più recente che non era né NaN né Null, e LastKnownValueTime è il momento in cui il dispositivo lo aveva.
# Se was picked as Value info of a temperature
IF ISNAN(Se.Current.PreviousValue)
RETURN(Se.Current.LastKnownValue);
END
Se.Current.PreviousValue;Disponibile — Core 2026.1, build 36599.
Valori di gruppo
Una variabile collegata a un gruppo di dispositivi contiene un groupvalue: Calculated è il valore calcolato per il gruppo, Values sono i valori dei suoi membri. Nei calcoli un valore di gruppo si comporta come il suo valore Calculated.
Variabili del modulo e del dispositivo
Le variabili definite su un modulo o un dispositivo Modbus o Packet parser sono disponibili per nome e conservano il loro valore tra un’esecuzione dello script e l’altra. Passano dati da uno script di lettura agli attributi di servizio, oppure da uno script listener agli script di lettura dei dispositivi.
# Packet parser module read script: one request, the answer is kept for the device scripts
VAR response := SENDHTTPREQUEST("/status", "GET");
StatusJson := response.Content;Disponibile — variabili del modulo di tipo collezione dal Core 2026.1, build 39507.
Variabili locali
Una variabile locale vive per un’esecuzione dello script. Si dichiara con VAR, che prende il tipo del valore iniziale, oppure con un tipo esplicito. In entrambi i casi il tipo è fisso per l’intero script e ogni assegnazione successiva viene convertita in quel tipo.
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 silentlyUna dichiarazione tipizzata può omettere il valore iniziale; la variabile riceve allora il valore predefinito del suo tipo (0, FALSE, testo vuoto, una collezione vuota). VAR richiede sempre un valore, VAR y; fallisce con Variable must have initial value provided.
datetime timestamp;
collection<uint16> block;
double ratio := 0.5;Regole:
- Un nome inizia con una lettera e contiene solo lettere e cifre;
_fallisce conOnly letters or numbers are allowed in variable name. - Un nome non deve ripetere una costante, una variabile o l’abbreviazione di un dispositivo.
- Una variabile deve essere dichiarata sopra il suo primo utilizzo. Non esiste un ambito di blocco: una variabile dichiarata dentro
IFè visibile dopoEND.
Le parole chiave dei tipi sono elencate nella pagina Tipi di dati.
Assegnazione
:= assegna e = confronta. Gli operatori composti +=, -=, *=, /=, <<=, >>=, &=, |= e ^= combinano un’operazione con l’assegnazione.
VAR x := 5;
x += 1;
x *= 2;
x <<= 1;
x;
# Result: 24Un operatore composto ha la precedenza della sua operazione, quindi
x -= a - bviene valutato come(x -= a) - b. Metti il lato destro tra parentesi:x -= (a - b);. Vedi Precedenza.
Proprietà
Una proprietà si legge con .. Un livello si può scrivere, le proprietà annidate si possono solo leggere (Unable to assign a value to a nested property) e le proprietà di sola lettura non si possono scrivere.
VAR t := NOW();
t.Minute := 0;
t.Hour;
Se.Current.LastKnownValue;Le proprietà si possono leggere solo da una variabile con nome, da una costante o da una variabile del dispositivo. NOW().Hour è un errore di analisi; salva prima il valore.
Costanti di contesto
Le costanti di contesto sono valori di sola lettura che una smart rule o uno script listener passa al proprio script:
| Costante | Disponibile in | Contenuto |
|---|---|---|
TriggerName | Smart rule Equazione, Formula e Script | L’abbreviazione della variabile il cui cambiamento ha avviato la regola, oppure il nome del trigger che è scattato. Nella smart rule Equazione dal Core 2026.1, build 35936. |
LastState | Smart rule Equazione e Formula | Il risultato precedente; vedi Script nelle smart rule. |
RECEIVEDMSG | Script listener del Packet parser | Il messaggio in arrivo (receivedmessage). |
RECEIVEDBYTES | Script listener del Packet parser | Forma più vecchia del contenuto del messaggio come collezione di byte; preferisci RECEIVEDMSG. |
Gli script del titolo e del messaggio di una notifica hanno queste costanti di sola lettura:
| Costante | In una notifica inviata da |
|---|---|
SmartRuleName, LocationName | Qualsiasi smart rule |
TriggerName | Le azioni per vero o per falso di una smart rule Equazione |
CardName, DeviceName | Un evento di accesso; CardName è Null per una tessera sconosciuta |
DeviceName | Un’azione di trigger |
SensorNames | Un allarme |
SensorNames, AlarmPhaseName | Una fase di allarme |
SensorNames, NumberOfSensors | Un’azione dei sensori, per esempio finestre aperte |