TapHome

Statystyki i Info wartości

Statystyki i Info wartości w skryptach TapHome: wartość statystyki, czas ostatniej zmiany, poprzednia i ostatnia znana wartość oraz wartości zakończonych okresów.

Oprócz samej wartości urządzenia zmienna skryptu może przechowywać statystykę urządzenia albo informacje o wartości: kiedy ostatnio się zmieniła, jej poprzednią wartość i wartości zakończonych okresów. Jedno i drugie wybiera się na liście wartości urządzenia w edytorze skryptu.

Statystyki

Oprócz samych wartości urządzenia lista wartości urządzenia oferuje też jego statystyki (sekcja Statystyki): statystyki, które użytkownik włączył w urządzeniu albo które udostępnia samo urządzenie, na przykład minimum, maksimum, średnią, liczbę lub sumę wartości w okresie. Zmienna wybrana w ten sposób przechowuje wartość tej statystyki:

  • Statystyka typu Bieżący okres, na przykład średnia bieżącej godziny, jest liczona od początku trwającego okresu — godziny, dnia lub miesiąca — do teraz.
  • Statystyka typu Okres do teraz, na przykład średnia z ostatnich 24 godzin, jest liczona w przesuwnym oknie o podanej długości, które kończy się teraz.
# Se was picked as the 1-hour average of Temperature (current period)
IF Se > 25
    RETURN(1);
END
0;

Wartości zakończonych okresów nie są częścią samej statystyki; odczytaj je z Info wartości statystyki.

Info wartości

Zmienne wejściowe smart rules Równanie, Formuła i Skrypt, warunku ograniczającego Formuła oraz tekstów powiadomień można wybrać także jako Info wartości; lista wyboru pokazuje je jako Info wartości nazwa wartości, zarówno dla samej wartości urządzenia, jak i dla statystyki typu Bieżący okres. Taka zmienna nie przechowuje liczby, lecz informacje o wartości:

WłaściwośćTypZawartość
CurrentcurrentvalueinfoBieżąca i poprzednia wartość, zobacz Bieżąca i poprzednia wartość. Wypełnione dla samej wartości urządzenia, Null dla statystyki.
HistoryhistoryvaluesWartości zakończonych okresów, zobacz Historia statystyki. Wypełnione dla statystyki z historią, Null dla samej wartości urządzenia.

Info wartości nie zawiera samej wartości. Aby pracować z wartością i informacjami o niej jednocześnie, dodaj wartość urządzenia do skryptu dwa razy: raz jako wartość (na przykład Se) i raz jako Info wartości (na przykład SeInfo).

Dostępność — Core 2026.1 w TapHome Next, kompilacja 36599 lub nowsza (jeszcze nie w oficjalnym wydaniu).

Bieżąca i poprzednia wartość

Current opisuje ostatnią zmianę wartości:

WłaściwośćTypZawartość
CurrentValueTimedatetimeKiedy wartość zmieniła się na bieżącą. Gdy urządzenie ponownie wyśle tę samą wartość, czas się nie przesuwa.
PreviousValuedowolnyWartość przed ostatnią zmianą; może być NaN lub Null.
PreviousValueTimedatetimeKiedy wartość zmieniła się na PreviousValue.
LastKnownValuedowolnyNajnowsza poprzednia wartość, która nie była ani NaN, ani Null.
LastKnownValueTimedatetimeKiedy wartość zmieniła się na LastKnownValue.

Current jest Null, dopóki wartość nie zmieni się po raz pierwszy — przed odczytem jego właściwości sprawdź go funkcją ISNULL.

Przykład — okno otwarte dłużej niż 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;

Przykład — czy wartość rośnie, czy spada

# 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;

Historia statystyki

Dla statystyki typu Bieżący okres History przechowuje wartości okresów, które już się zakończyły:

WłaściwośćTypZawartość
ValueskolekcjaValues[0] to ostatni zakończony okres, Values[1] okres przed nim i tak dalej. Okres bez danych to Null. Trwający okres nie jest uwzględniony — to wartość samej statystyki.
FirstPeriodStartTimedatetimePoczątek okresu Values[0].

Liczba przechowywanych okresów zależy od okresu statystyki i od tego, czy ma ona włączony zapis historii — przełącznik historii statystyki na stronie Statystyki urządzenia:

OkresPrzechowywane okresy, zapis historii włączonyPrzechowywane okresy, zapis historii wyłączony
5 minut36 (3 godziny)3
10 minut18 (3 godziny)3
15 minut12 (3 godziny)3
1 godzina48 (2 dni)3
3 godziny17 (około 2 dni)3
1 dzień353
1 miesiąc253
1 rok103

Dla każdego innego okresu (1, 2, 3 i 30 minut, 12 godzin, 2 i 3 dni, 1 tydzień, 1 kwartał) oraz dla statystyki typu Okres do teraz History jest Null. Values może być krótsza niż liczba przechowywanych okresów, na przykład tuż po włączeniu statystyki — przed odczytem indeksu, który może nie istnieć, sprawdź LENGTH.

Przykład — dzisiejsze dotychczasowe zużycie w porównaniu z całym wczorajszym dniem

# 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;

Przykład — średnie dzienne zużycie z ostatnich 7 dni

# EnInfo = Value info of the daily sum of Energy (current period)
AVG(COPY(EnInfo.History.Values, 0, MIN(7, LENGTH(EnInfo.History.Values))));

COPY bierze pierwsze 7 dni — MIN obejmuje historię krótszą niż 7 dni, bo COPY poza koniec kolekcji jest błędem — a AVG pomija dni bez danych. MIN, MAX i AVG pomijają Null, więc całą historię można też użyć bezpośrednio:

# SeInfo = Value info of the 1-hour maximum of Temperature (current period)
MAX(SeInfo.History.Values);
# Result: the highest temperature of the kept hours

Zobacz też — Zmienne i stałe, MIN, MAX i AVG, COPY.