TapHome

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

In 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àTipoContenuto
CurrentcurrentvalueinfoCurrentValueTime, PreviousValue, PreviousValueTime, LastKnownValue, LastKnownValueTime
HistoryhistoryvaluesFirstPeriodStartTime, 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 silently

Una 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 con Only 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 dopo END.

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

Un operatore composto ha la precedenza della sua operazione, quindi x -= a - b viene 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:

CostanteDisponibile inContenuto
TriggerNameSmart rule Equazione, Formula e ScriptL’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.
LastStateSmart rule Equazione e FormulaIl risultato precedente; vedi Script nelle smart rule.
RECEIVEDMSGScript listener del Packet parserIl messaggio in arrivo (receivedmessage).
RECEIVEDBYTESScript listener del Packet parserForma 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:

CostanteIn una notifica inviata da
SmartRuleName, LocationNameQualsiasi smart rule
TriggerNameLe azioni per vero o per falso di una smart rule Equazione
CardName, DeviceNameUn evento di accesso; CardName è Null per una tessera sconosciuta
DeviceNameUn’azione di trigger
SensorNamesUn allarme
SensorNames, AlarmPhaseNameUna fase di allarme
SensorNames, NumberOfSensorsUn’azione dei sensori, per esempio finestre aperte