Statistici și Value info
Statistici și Value info în scripturile TapHome: valoarea unei statistici, momentul ultimei modificări, valoarea anterioară și ultima valoare cunoscută și valorile perioadelor încheiate.
Pe lângă valoarea simplă a unui dispozitiv, o variabilă de script poate conține o statistică a dispozitivului sau informații despre o valoare: când s-a schimbat ultima dată, valoarea ei anterioară și valorile perioadelor încheiate. Ambele se aleg în lista de selecție a valorilor dispozitivului din editorul de scripturi.
Statistici
Pe lângă valorile simple ale dispozitivului, lista de selecție a valorilor dispozitivului oferă și statisticile dispozitivului (secțiunea Statistici): statisticile pe care utilizatorul le-a activat pe dispozitiv sau pe care le oferă dispozitivul însuși, de exemplu minimul, maximul, media, numărul sau suma unei valori pe o perioadă. O variabilă aleasă astfel conține valoarea acelei statistici:
- O statistică de tip Perioada curentă, de exemplu media orei curente, se calculează de la începutul perioadei în curs — ora, ziua sau luna — până acum.
- O statistică de tip Perioada până acum, de exemplu media ultimelor 24 de ore, se calculează pe o fereastră glisantă de lungimea dată, care se termină acum.
# Se was picked as the 1-hour average of Temperature (current period)
IF Se > 25
RETURN(1);
END
0;Valorile perioadelor încheiate nu fac parte din statistica însăși; ele se citesc din Value info a statisticii.
Value info
Variabilele de intrare ale smart rules Ecuație, Formulă și Script, ale condiției de limitare Formulă și ale textelor notificărilor se pot alege și ca Value info; lista de selecție le afișează ca Info valoare numele valorii, atât pentru o valoare simplă a dispozitivului, cât și pentru o statistică de tip Perioada curentă. O astfel de variabilă nu conține un număr, ci informații despre valoare:
| Proprietate | Tip | Conținut |
|---|---|---|
Current | currentvalueinfo | Valoarea curentă și cea anterioară, vezi Valoarea curentă și cea anterioară. Completat pentru o valoare simplă a dispozitivului, Null pentru o statistică. |
History | historyvalues | Valorile perioadelor încheiate, vezi Istoricul unei statistici. Completat pentru o statistică cu istoric, Null pentru o valoare simplă a dispozitivului. |
Value info nu conține valoarea însăși. Pentru a lucra împreună cu valoarea și cu informațiile despre ea, adăugați valoarea dispozitivului în script de două ori: o dată ca valoare (de exemplu Se) și o dată ca Value info (de exemplu SeInfo).
Disponibilitate — Core 2026.1 pe TapHome Next, build 36599 sau mai nou (încă nu este în versiunea oficială).
Valoarea curentă și cea anterioară
Current descrie ultima modificare a valorii:
| Proprietate | Tip | Conținut |
|---|---|---|
CurrentValueTime | datetime | Când s-a schimbat valoarea la cea curentă. Dacă dispozitivul trimite din nou aceeași valoare, momentul nu se mută. |
PreviousValue | oricare | Valoarea dinaintea ultimei modificări; poate fi NaN sau Null. |
PreviousValueTime | datetime | Când s-a schimbat valoarea la PreviousValue. |
LastKnownValue | oricare | Cea mai recentă valoare anterioară care nu a fost nici NaN, nici Null. |
LastKnownValueTime | datetime | Când s-a schimbat valoarea la LastKnownValue. |
Current este Null până când valoarea se schimbă prima dată — verificați-l cu ISNULL înainte de a-i citi proprietățile.
Exemplu — o fereastră deschisă de mai mult de 10 minute
# 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;Exemplu — valoarea crește sau scade
# 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;Istoricul unei statistici
Pentru o statistică de tip Perioada curentă, History conține valorile perioadelor deja încheiate:
| Proprietate | Tip | Conținut |
|---|---|---|
Values | colecție | Values[0] este ultima perioadă încheiată, Values[1] perioada dinaintea ei și așa mai departe. O perioadă fără date este Null. Perioada în curs nu este inclusă — ea este valoarea statisticii însăși. |
FirstPeriodStartTime | datetime | Începutul perioadei lui Values[0]. |
Câte perioade se păstrează depinde de perioada statisticii și de faptul dacă are activată înregistrarea istoricului — comutatorul de istoric al statisticii de pe pagina Statistici a dispozitivului:
| Perioadă | Perioade păstrate, înregistrarea istoricului activă | Perioade păstrate, înregistrarea istoricului dezactivată |
|---|---|---|
| 5 minute | 36 (3 ore) | 3 |
| 10 minute | 18 (3 ore) | 3 |
| 15 minute | 12 (3 ore) | 3 |
| 1 oră | 48 (2 zile) | 3 |
| 3 ore | 17 (circa 2 zile) | 3 |
| 1 zi | 35 | 3 |
| 1 lună | 25 | 3 |
| 1 an | 10 | 3 |
Pentru orice altă perioadă (1, 2, 3 și 30 de minute, 12 ore, 2 și 3 zile, 1 săptămână, 1 trimestru) și pentru o statistică de tip Perioada până acum, History este Null. Values poate fi mai scurtă decât numărul de perioade păstrate, de exemplu la scurt timp după activarea statisticii — verificați LENGTH înainte de a citi un index care poate să nu existe.
Exemplu — consumul de azi de până acum comparat cu toată ziua de 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;Exemplu — consumul zilnic mediu din ultimele 7 zile
# EnInfo = Value info of the daily sum of Energy (current period)
AVG(COPY(EnInfo.History.Values, 0, MIN(7, LENGTH(EnInfo.History.Values))));COPY ia primele 7 zile — MIN acoperă un istoric mai scurt de 7 zile, pentru că COPY dincolo de sfârșitul colecției este o eroare — iar AVG sare peste zilele fără date. MIN, MAX și AVG sar peste Null, așa că un istoric întreg se poate folosi și direct:
# SeInfo = Value info of the 1-hour maximum of Temperature (current period)
MAX(SeInfo.History.Values);
# Result: the highest temperature of the kept hoursConsultați și — Variabile și constante, MIN, MAX și AVG, COPY.