Statisztikák és Value info
Statisztikák és Value info a TapHome szkriptekben: egy statisztika értéke, az utolsó változás ideje, az előző és az utolsó ismert érték, valamint a lezárt időszakok értékei.
Az eszköz puszta értékén kívül egy szkriptváltozó az eszköz egy statisztikáját vagy egy értékről szóló információkat is tartalmazhat: mikor változott utoljára, mi volt az előző értéke, és mik a lezárt időszakok értékei. Mindkettőt a szkriptszerkesztő eszközérték-választójában lehet kiválasztani.
Statisztikák
Az eszköz puszta értékein kívül az eszközérték-választó az eszköz statisztikáit is felkínálja (Statisztikák szakasz): azokat a statisztikákat, amelyeket a felhasználó bekapcsolt az eszközön, vagy amelyeket maga az eszköz biztosít, például egy érték minimumát, maximumát, átlagát, darabszámát vagy összegét egy időszakra. Az így kiválasztott változó ennek a statisztikának az értékét tartalmazza:
- A Mostani időszak típusú statisztika, például az aktuális óra átlaga, a folyó időszak — óra, nap vagy hónap — kezdetétől a jelen pillanatig számítódik.
- A Idő a mostani időpontig típusú statisztika, például az utolsó 24 óra átlaga, egy megadott hosszúságú, most végződő csúszó ablakban számítódik.
# Se was picked as the 1-hour average of Temperature (current period)
IF Se > 25
RETURN(1);
END
0;A lezárt időszakok értékei nem részei magának a statisztikának; ezeket a statisztika Value info adatából olvasd ki.
Value info
Az Egyenlet, a Képlet és a Szkript smart rule bemeneti változói, a Képlet korlátozó feltétel és az értesítések szövegeinek változói Value info formában is kiválaszthatók; a választó ezt Érték info: az érték neve alakban listázza, az eszköz puszta értékéhez és a Mostani időszak típusú statisztikához is. Egy ilyen változó nem számot tartalmaz, hanem az értékről szóló információkat:
| Tulajdonság | Típus | Tartalom |
|---|---|---|
Current | currentvalueinfo | A jelenlegi és az előző érték, lásd Jelenlegi és előző érték. Az eszköz puszta értékénél ki van töltve, statisztikánál Null. |
History | historyvalues | A lezárt időszakok értékei, lásd Egy statisztika előzményei. Előzményekkel rendelkező statisztikánál ki van töltve, az eszköz puszta értékénél Null. |
A Value info magát az értéket nem tartalmazza. Ha az értékkel és a róla szóló információkkal együtt akarsz dolgozni, add hozzá az eszköz értékét kétszer a szkripthez: egyszer értékként (például Se), egyszer Value info formában (például SeInfo).
Elérhetőség — Core 2026.1 a TapHome Next csatornán, build 36599 vagy újabb (még nem része a hivatalos kiadásnak).
Jelenlegi és előző érték
A Current az érték utolsó változását írja le:
| Tulajdonság | Típus | Tartalom |
|---|---|---|
CurrentValueTime | datetime | Mikor változott az érték a jelenlegire. Ha az eszköz ugyanazt az értéket újra elküldi, az időpont nem mozdul. |
PreviousValue | bármely | Az utolsó változás előtti érték; lehet NaN vagy Null. |
PreviousValueTime | datetime | Mikor változott az érték PreviousValue értékre. |
LastKnownValue | bármely | A legutóbbi olyan előző érték, amely nem volt sem NaN, sem Null. |
LastKnownValueTime | datetime | Mikor változott az érték LastKnownValue értékre. |
A Current addig Null, amíg az érték először meg nem változik — a tulajdonságainak olvasása előtt ellenőrizd az ISNULL függvénnyel.
Példa — 10 percnél tovább nyitva lévő ablak
# 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;Példa — nő vagy csökken az érték
# 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;Egy statisztika előzményei
Egy Mostani időszak típusú statisztikánál a History a már lezárult időszakok értékeit tartalmazza:
| Tulajdonság | Típus | Tartalom |
|---|---|---|
Values | gyűjtemény | A Values[0] az utolsó lezárt időszak, a Values[1] az azt megelőző, és így tovább. Az adat nélküli időszak Null. A folyó időszak nincs benne — az maga a statisztika értéke. |
FirstPeriodStartTime | datetime | A Values[0] időszakának kezdete. |
Az, hogy hány időszak marad meg, a statisztika időszakától és attól függ, hogy be van-e kapcsolva az előzmények rögzítése — ez a statisztika előzménykapcsolója az eszköz Statisztikák oldalán:
| Időszak | Megőrzött időszakok, előzmények rögzítése be | Megőrzött időszakok, előzmények rögzítése ki |
|---|---|---|
| 5 perc | 36 (3 óra) | 3 |
| 10 perc | 18 (3 óra) | 3 |
| 15 perc | 12 (3 óra) | 3 |
| 1 óra | 48 (2 nap) | 3 |
| 3 óra | 17 (kb. 2 nap) | 3 |
| 1 nap | 35 | 3 |
| 1 hónap | 25 | 3 |
| 1 év | 10 | 3 |
Minden más időszaknál (1, 2, 3 és 30 perc, 12 óra, 2 és 3 nap, 1 hét, 1 negyedév) és a Idő a mostani időpontig típusú statisztikánál a History értéke Null. A Values rövidebb lehet a megőrzött időszakok számánál, például röviddel a statisztika bekapcsolása után — egy esetleg nem létező index olvasása előtt ellenőrizd a LENGTH értékét.
Példa — a mai fogyasztás eddig a teljes tegnapihoz képest
# 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;Példa — az utolsó 7 nap átlagos napi fogyasztása
# EnInfo = Value info of the daily sum of Energy (current period)
AVG(COPY(EnInfo.History.Values, 0, MIN(7, LENGTH(EnInfo.History.Values))));A COPY az első 7 napot veszi — a MIN a 7 napnál rövidebb előzményeket fedi le, mert a gyűjtemény végén túli COPY hiba —, az AVG pedig kihagyja az adat nélküli napokat. A MIN, a MAX és az AVG kihagyja a Null értékeket, így a teljes előzmény közvetlenül is használható:
# SeInfo = Value info of the 1-hour maximum of Temperature (current period)
MAX(SeInfo.History.Values);
# Result: the highest temperature of the kept hoursLásd még — Változók és konstansok, MIN, MAX és AVG, COPY.