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.

Ostatnia aktualizacja:

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 wybrano jako średnią godzinową urządzenia Temperatura (bieżący okres)
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ść — TapHome Next 2026.1.36599+.

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 = kontaktron okna (1 = otwarte), WiInfo = Info wartości kontaktronu okna
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 = Temperatura, SeInfo = Info wartości urządzenia Temperatura
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 = suma dzienna urządzenia Energia (bieżący okres), EnInfo = Info wartości tej samej statystyki
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 = Info wartości sumy dziennej urządzenia Energia (bieżący okres)
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 = Info wartości maksimum godzinowego urządzenia Temperatura (bieżący okres)
MAX(SeInfo.History.Values);
# Result: the highest temperature of the kept hours

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