Statistiche e Info valore
Statistiche e Info valore negli script TapHome: il valore di una statistica, l'ora dell'ultima modifica, il valore precedente e l'ultimo valore noto e i valori dei periodi conclusi.
Oltre al semplice valore di un dispositivo, una variabile di script può contenere una statistica del dispositivo oppure informazioni su un valore: quando è cambiato l’ultima volta, il suo valore precedente e i valori dei periodi conclusi. Entrambi si scelgono nel selettore dei valori del dispositivo nell’editor degli script.
Statistiche
Oltre ai semplici valori del dispositivo, il selettore dei valori del dispositivo offre anche le statistiche del dispositivo (sezione Statistiche): le statistiche che l’utente ha attivato sul dispositivo o che il dispositivo fornisce da sé, per esempio il minimo, il massimo, la media, il conteggio o la somma di un valore in un periodo. Una variabile scelta in questo modo contiene il valore di quella statistica:
- Una statistica di tipo Periodo attuale, per esempio la media dell’ora corrente, si calcola dall’inizio del periodo in corso — l’ora, il giorno o il mese — fino ad adesso.
- Una statistica di tipo Periodo fino ad adesso, per esempio la media delle ultime 24 ore, si calcola su una finestra mobile della lunghezza indicata che termina adesso.
# Se was picked as the 1-hour average of Temperature (current period)
IF Se > 25
RETURN(1);
END
0;I valori dei periodi conclusi non fanno parte della statistica stessa; leggili dall’Info valore della statistica.
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 anche come Info valore; il selettore le elenca come Info valore di nome del valore, sia per un semplice valore del dispositivo sia per una statistica di tipo Periodo attuale. Una variabile di questo tipo non contiene un numero, ma informazioni sul valore:
| Proprietà | Tipo | Contenuto |
|---|---|---|
Current | currentvalueinfo | Il valore attuale e quello precedente, vedi Valore attuale e precedente. Compilato per un semplice valore del dispositivo, Null per una statistica. |
History | historyvalues | Valori dei periodi conclusi, vedi Storico di una statistica. Compilato per una statistica con storico, Null per un semplice valore del dispositivo. |
L’Info valore non contiene il valore stesso. Per lavorare insieme con il valore e con le sue informazioni, aggiungi il valore del dispositivo allo script due volte: una volta come valore (per esempio Se) e una volta come Info valore (per esempio SeInfo).
Disponibile — Core 2026.1 su TapHome Next, build 36599 o più recente (non ancora nella versione ufficiale).
Valore attuale e precedente
Current descrive l’ultima modifica del valore:
| Proprietà | Tipo | Contenuto |
|---|---|---|
CurrentValueTime | datetime | Quando il valore è passato al valore attuale. Se il dispositivo invia di nuovo lo stesso valore, l’ora non si sposta. |
PreviousValue | qualsiasi | Il valore prima dell’ultima modifica; può essere NaN o Null. |
PreviousValueTime | datetime | Quando il valore è passato a PreviousValue. |
LastKnownValue | qualsiasi | Il valore precedente più recente che non era né NaN né Null. |
LastKnownValueTime | datetime | Quando il valore è passato a LastKnownValue. |
Current è Null finché il valore non cambia per la prima volta — controllalo con ISNULL prima di leggerne le proprietà.
Esempio — una finestra aperta da più di 10 minuti
# Wi = window contact (1 = open), WiInfo = Value info of the window contact
IF ISNULL(WiInfo.Current)
RETURN(0);
END
IF Wi = 1 AND WiInfo.Current.CurrentValueTime < DATETIMEADD(NOW(), 0, 0, 0, 0, -10)
RETURN(1);
END
0;Esempio — il valore sale o scende
# Se = Temperature, SeInfo = Value info of Temperature
IF ISNULL(SeInfo.Current) OR ISNULL(SeInfo.Current.LastKnownValue)
RETURN(0);
END
VAR change := Se - SeInfo.Current.LastKnownValue;
IF change > 0
RETURN(1);
ELSEIF change < 0
RETURN(-1);
END
0;Storico di una statistica
Per una statistica di tipo Periodo attuale, History contiene i valori dei periodi già conclusi:
| Proprietà | Tipo | Contenuto |
|---|---|---|
Values | collezione | Values[0] è l’ultimo periodo concluso, Values[1] il periodo precedente e così via. Un periodo senza dati è Null. Il periodo in corso non è incluso — è il valore della statistica stessa. |
FirstPeriodStartTime | datetime | Inizio del periodo di Values[0]. |
Quanti periodi vengono conservati dipende dal periodo della statistica e dal fatto che per essa sia attiva la registrazione dello storico — l’interruttore dello storico della statistica nella pagina Statistiche del dispositivo:
| Periodo | Periodi conservati, registrazione dello storico attiva | Periodi conservati, registrazione dello storico disattivata |
|---|---|---|
| 5 minuti | 36 (3 ore) | 3 |
| 10 minuti | 18 (3 ore) | 3 |
| 15 minuti | 12 (3 ore) | 3 |
| 1 ora | 48 (2 giorni) | 3 |
| 3 ore | 17 (circa 2 giorni) | 3 |
| 1 giorno | 35 | 3 |
| 1 mese | 25 | 3 |
| 1 anno | 10 | 3 |
Per qualsiasi altro periodo (1, 2, 3 e 30 minuti, 12 ore, 2 e 3 giorni, 1 settimana, 1 trimestre) e per una statistica di tipo Periodo fino ad adesso, History è Null. Values può essere più corta del numero di periodi conservati, per esempio poco dopo l’attivazione della statistica — controlla LENGTH prima di leggere un indice che potrebbe non esistere.
Esempio — il consumo di oggi finora rispetto a tutto ieri
# En = daily sum of Energy (current period), EnInfo = Value info of the same statistic
VAR yesterday := GETAT(EnInfo.History.Values, 0);
IF ISNULL(yesterday)
RETURN(NaN);
END
En - yesterday;Esempio — consumo medio giornaliero degli ultimi 7 giorni
# EnInfo = Value info of the daily sum of Energy (current period)
AVG(COPY(EnInfo.History.Values, 0, MIN(7, LENGTH(EnInfo.History.Values))));COPY prende i primi 7 giorni — MIN copre uno storico più corto di 7 giorni, perché COPY oltre la fine della collezione è un errore — e AVG salta i giorni senza dati. MIN, MAX e AVG saltano Null, quindi si può usare anche direttamente un intero storico:
# SeInfo = Value info of the 1-hour maximum of Temperature (current period)
MAX(SeInfo.History.Values);
# Result: the highest temperature of the kept hoursVedi anche — Variabili e costanti, MIN, MAX e AVG, COPY.