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ść | Typ | Zawartość |
|---|---|---|
Current | currentvalueinfo | Bieżąca i poprzednia wartość, zobacz Bieżąca i poprzednia wartość. Wypełnione dla samej wartości urządzenia, Null dla statystyki. |
History | historyvalues | Wartoś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ść | Typ | Zawartość |
|---|---|---|
CurrentValueTime | datetime | Kiedy wartość zmieniła się na bieżącą. Gdy urządzenie ponownie wyśle tę samą wartość, czas się nie przesuwa. |
PreviousValue | dowolny | Wartość przed ostatnią zmianą; może być NaN lub Null. |
PreviousValueTime | datetime | Kiedy wartość zmieniła się na PreviousValue. |
LastKnownValue | dowolny | Najnowsza poprzednia wartość, która nie była ani NaN, ani Null. |
LastKnownValueTime | datetime | Kiedy 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ść | Typ | Zawartość |
|---|---|---|
Values | kolekcja | Values[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. |
FirstPeriodStartTime | datetime | Począ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:
| Okres | Przechowywane okresy, zapis historii włączony | Przechowywane okresy, zapis historii wyłączony |
|---|---|---|
| 5 minut | 36 (3 godziny) | 3 |
| 10 minut | 18 (3 godziny) | 3 |
| 15 minut | 12 (3 godziny) | 3 |
| 1 godzina | 48 (2 dni) | 3 |
| 3 godziny | 17 (około 2 dni) | 3 |
| 1 dzień | 35 | 3 |
| 1 miesiąc | 25 | 3 |
| 1 rok | 10 | 3 |
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 hoursZobacz też — Zmienne i stałe, MIN, MAX i AVG, COPY.