TapHome

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:

ProprietateTipConținut
CurrentcurrentvalueinfoValoarea curentă și cea anterioară, vezi Valoarea curentă și cea anterioară. Completat pentru o valoare simplă a dispozitivului, Null pentru o statistică.
HistoryhistoryvaluesValorile 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:

ProprietateTipConținut
CurrentValueTimedatetimeCând s-a schimbat valoarea la cea curentă. Dacă dispozitivul trimite din nou aceeași valoare, momentul nu se mută.
PreviousValueoricareValoarea dinaintea ultimei modificări; poate fi NaN sau Null.
PreviousValueTimedatetimeCând s-a schimbat valoarea la PreviousValue.
LastKnownValueoricareCea mai recentă valoare anterioară care nu a fost nici NaN, nici Null.
LastKnownValueTimedatetimeCâ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:

ProprietateTipConținut
ValuescolecțieValues[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.
FirstPeriodStartTimedatetimeÎ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 minute36 (3 ore)3
10 minute18 (3 ore)3
15 minute12 (3 ore)3
1 oră48 (2 zile)3
3 ore17 (circa 2 zile)3
1 zi353
1 lună253
1 an103

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 hours

Consultați și — Variabile și constante, MIN, MAX și AVG, COPY.