Statistiky a Info o hodnotě
Statistiky a Info o hodnotě ve skriptech TapHome: hodnota statistiky, čas poslední změny, předchozí a poslední známá hodnota a hodnoty ukončených období.
Kromě samotné hodnoty zařízení může proměnná skriptu obsahovat statistiku zařízení nebo informace o hodnotě: kdy se naposledy změnila, její předchozí hodnotu a hodnoty ukončených období. Obojí se vybírá ve výběru hodnoty zařízení v editoru skriptu.
Statistiky
Kromě samotných hodnot zařízení nabízí výběr hodnoty zařízení i jeho statistiky (sekce Statistiky): statistiky, které na zařízení zapnul uživatel nebo které poskytuje samo zařízení, například minimum, maximum, průměr, počet nebo součet hodnoty za období. Takto vybraná proměnná obsahuje hodnotu této statistiky:
- Statistika typu Aktuální období, například průměr aktuální hodiny, se počítá od začátku probíhajícího období — hodiny, dne nebo měsíce — až do současnosti.
- Statistika typu Období do současnosti, například průměr za posledních 24 hodin, se počítá v klouzavém okně zadané délky, které končí teď.
# Se was picked as the 1-hour average of Temperature (current period)
IF Se > 25
RETURN(1);
END
0;Hodnoty ukončených období nejsou součástí samotné statistiky; přečtěte je z Info o hodnotě statistiky.
Info o hodnotě
Vstupní proměnné smart rules Rovnice, Vzorec a Skript, omezující podmínky Vzorec a textů oznámení lze vybrat také jako Info o hodnotě; výběr je uvádí jako Info o hodnotě název hodnoty, a to pro samotnou hodnotu zařízení i pro statistiku typu Aktuální období. Taková proměnná neobsahuje číslo, ale informace o hodnotě:
| Vlastnost | Typ | Obsah |
|---|---|---|
Current | currentvalueinfo | Aktuální a předchozí hodnota, viz Aktuální a předchozí hodnota. Vyplněno u samotné hodnoty zařízení, u statistiky Null. |
History | historyvalues | Hodnoty ukončených období, viz Historie statistiky. Vyplněno u statistiky s historií, u samotné hodnoty zařízení Null. |
Info o hodnotě neobsahuje samotnou hodnotu. Chcete-li pracovat s hodnotou i s informacemi o ní, přidejte hodnotu zařízení do skriptu dvakrát: jednou jako hodnotu (například Se) a jednou jako Info o hodnotě (například SeInfo).
Dostupnost — Core 2026.1 v TapHome Next, build 36599 nebo novější (zatím ne v oficiálním vydání).
Aktuální a předchozí hodnota
Current popisuje poslední změnu hodnoty:
| Vlastnost | Typ | Obsah |
|---|---|---|
CurrentValueTime | datetime | Kdy se hodnota změnila na aktuální. Když zařízení pošle stejnou hodnotu znovu, čas se neposune. |
PreviousValue | libovolný | Hodnota před poslední změnou; může být NaN nebo Null. |
PreviousValueTime | datetime | Kdy se hodnota změnila na PreviousValue. |
LastKnownValue | libovolný | Nejnovější předchozí hodnota, která nebyla NaN ani Null. |
LastKnownValueTime | datetime | Kdy se hodnota změnila na LastKnownValue. |
Current je Null, dokud se hodnota poprvé nezmění — před čtením jeho vlastností ho ověřte funkcí ISNULL.
Příklad — okno otevřené déle než 10 minut
# 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říklad — stoupá hodnota, nebo klesá
# 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;Historie statistiky
U statistiky typu Aktuální období obsahuje History hodnoty období, která už skončila:
| Vlastnost | Typ | Obsah |
|---|---|---|
Values | kolekce | Values[0] je poslední ukončené období, Values[1] období před ním a tak dále. Období bez dat je Null. Probíhající období v ní není — to je hodnota samotné statistiky. |
FirstPeriodStartTime | datetime | Začátek období Values[0]. |
Kolik období se uchovává, závisí na období statistiky a na tom, zda má zapnutý záznam historie — přepínač historie statistiky na stránce Statistiky zařízení:
| Období | Uchovaná období, záznam historie zapnutý | Uchovaná období, záznam historie vypnutý |
|---|---|---|
| 5 minut | 36 (3 hodiny) | 3 |
| 10 minut | 18 (3 hodiny) | 3 |
| 15 minut | 12 (3 hodiny) | 3 |
| 1 hodina | 48 (2 dny) | 3 |
| 3 hodiny | 17 (asi 2 dny) | 3 |
| 1 den | 35 | 3 |
| 1 měsíc | 25 | 3 |
| 1 rok | 10 | 3 |
U každého jiného období (1, 2, 3 a 30 minut, 12 hodin, 2 a 3 dny, 1 týden, 1 čtvrtletí) a u statistiky typu Období do současnosti je History Null. Values může mít méně prvků, než je počet uchovávaných období, například krátce po zapnutí statistiky — před čtením indexu, který nemusí existovat, ověřte LENGTH.
Příklad — dnešní spotřeba dosud ve srovnání s celým včerejškem
# 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říklad — průměrná denní spotřeba za posledních 7 dní
# EnInfo = Value info of the daily sum of Energy (current period)
AVG(COPY(EnInfo.History.Values, 0, MIN(7, LENGTH(EnInfo.History.Values))));COPY vezme prvních 7 dní — MIN pokryje historii kratší než 7 dní, protože COPY za koncem kolekce je chyba — a AVG přeskočí dny bez dat. MIN, MAX a AVG přeskakují Null, takže celou historii lze použít i přímo:
# SeInfo = Value info of the 1-hour maximum of Temperature (current period)
MAX(SeInfo.History.Values);
# Result: the highest temperature of the kept hoursViz také — Proměnné a konstanty, MIN, MAX a AVG, COPY.