TapHome

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ágTípusTartalom
CurrentcurrentvalueinfoA 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.
HistoryhistoryvaluesA 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ágTípusTartalom
CurrentValueTimedatetimeMikor változott az érték a jelenlegire. Ha az eszköz ugyanazt az értéket újra elküldi, az időpont nem mozdul.
PreviousValuebármelyAz utolsó változás előtti érték; lehet NaN vagy Null.
PreviousValueTimedatetimeMikor változott az érték PreviousValue értékre.
LastKnownValuebármelyA legutóbbi olyan előző érték, amely nem volt sem NaN, sem Null.
LastKnownValueTimedatetimeMikor 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ágTípusTartalom
ValuesgyűjteményA 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.
FirstPeriodStartTimedatetimeA 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őszakMegőrzött időszakok, előzmények rögzítése beMegőrzött időszakok, előzmények rögzítése ki
5 perc36 (3 óra)3
10 perc18 (3 óra)3
15 perc12 (3 óra)3
1 óra48 (2 nap)3
3 óra17 (kb. 2 nap)3
1 nap353
1 hónap253
1 év103

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 hours

Lásd még — Változók és konstansok, MIN, MAX és AVG, COPY.