TapHome

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ě:

VlastnostTypObsah
CurrentcurrentvalueinfoAktuální a předchozí hodnota, viz Aktuální a předchozí hodnota. Vyplněno u samotné hodnoty zařízení, u statistiky Null.
HistoryhistoryvaluesHodnoty 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:

VlastnostTypObsah
CurrentValueTimedatetimeKdy se hodnota změnila na aktuální. Když zařízení pošle stejnou hodnotu znovu, čas se neposune.
PreviousValuelibovolnýHodnota před poslední změnou; může být NaN nebo Null.
PreviousValueTimedatetimeKdy se hodnota změnila na PreviousValue.
LastKnownValuelibovolnýNejnovější předchozí hodnota, která nebyla NaN ani Null.
LastKnownValueTimedatetimeKdy 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:

VlastnostTypObsah
ValueskolekceValues[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.
FirstPeriodStartTimedatetimeZačá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 minut36 (3 hodiny)3
10 minut18 (3 hodiny)3
15 minut12 (3 hodiny)3
1 hodina48 (2 dny)3
3 hodiny17 (asi 2 dny)3
1 den353
1 měsíc253
1 rok103

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 hours

Viz také — Proměnné a konstanty, MIN, MAX a AVG, COPY.