Statistiken und Wertinfo
Statistiken und Wertinfo in TapHome-Skripten: der Wert einer Statistik, der Zeitpunkt der letzten Änderung, der vorherige und der letzte bekannte Wert und die Werte abgeschlossener Zeiträume.
Zuletzt aktualisiert:
Außer dem reinen Wert eines Geräts kann eine Skriptvariable eine Statistik des Geräts enthalten oder Informationen über einen Wert: wann er sich zuletzt geändert hat, seinen vorherigen Wert und die Werte abgeschlossener Zeiträume. Beides wird in der Auswahl der Gerätewerte im Skripteditor gewählt.
Statistiken
Außer den reinen Gerätewerten bietet die Auswahl der Gerätewerte auch die Statistiken des Geräts an (Abschnitt Statistiken): die Statistiken, die der Benutzer am Gerät aktiviert hat oder die das Gerät selbst bereitstellt, zum Beispiel Minimum, Maximum, Durchschnitt, Anzahl oder Summe eines Werts über einen Zeitraum. Eine so ausgewählte Variable enthält den Wert dieser Statistik:
- Eine Statistik vom Typ Aktueller Zeitraum, zum Beispiel der Durchschnitt der aktuellen Stunde, wird vom Beginn des laufenden Zeitraums — der Stunde, des Tages oder des Monats — bis jetzt berechnet.
- Eine Statistik vom Typ Zeitraum bis jetzt, zum Beispiel der Durchschnitt der letzten 24 Stunden, wird über ein gleitendes Fenster der angegebenen Länge berechnet, das jetzt endet.
# Se wurde als Stundendurchschnitt von Temperatur ausgewählt (aktueller Zeitraum)
IF Se > 25
RETURN(1);
END
0;Die Werte abgeschlossener Zeiträume sind nicht Teil der Statistik selbst; lesen Sie sie aus der Wertinfo der Statistik.
Wertinfo
Eingangsvariablen der smart rules Gleichung, Formel und Skript, der Begrenzungsbedingung Formel und der Benachrichtigungstexte können auch als Wertinfo ausgewählt werden; die Auswahl zeigt sie als Wertinfo von Name des Werts, sowohl für einen reinen Gerätewert als auch für eine Statistik vom Typ Aktueller Zeitraum. Eine solche Variable enthält keine Zahl, sondern Informationen über den Wert:
| Eigenschaft | Typ | Inhalt |
|---|---|---|
Current | currentvalueinfo | Der aktuelle und der vorherige Wert, siehe Aktueller und vorheriger Wert. Gefüllt bei einem reinen Gerätewert, Null bei einer Statistik. |
History | historyvalues | Werte der abgeschlossenen Zeiträume, siehe Verlauf einer Statistik. Gefüllt bei einer Statistik mit Verlauf, Null bei einem reinen Gerätewert. |
Die Wertinfo enthält nicht den Wert selbst. Um mit dem Wert und seinen Informationen zusammen zu arbeiten, fügen Sie den Gerätewert zweimal zum Skript hinzu: einmal als Wert (zum Beispiel Se) und einmal als Wertinfo (zum Beispiel SeInfo).
Verfügbar — TapHome Next 2026.1.36599+.
Aktueller und vorheriger Wert
Current beschreibt die letzte Änderung des Werts:
| Eigenschaft | Typ | Inhalt |
|---|---|---|
CurrentValueTime | datetime | Wann sich der Wert auf seinen aktuellen Wert geändert hat. Sendet das Gerät denselben Wert erneut, verschiebt sich der Zeitpunkt nicht. |
PreviousValue | beliebig | Der Wert vor der letzten Änderung; er kann NaN oder Null sein. |
PreviousValueTime | datetime | Wann sich der Wert auf PreviousValue geändert hat. |
LastKnownValue | beliebig | Der jüngste vorherige Wert, der weder NaN noch Null war. |
LastKnownValueTime | datetime | Wann sich der Wert auf LastKnownValue geändert hat. |
Current ist Null, bis sich der Wert zum ersten Mal ändert — prüfen Sie es mit ISNULL, bevor Sie seine Eigenschaften lesen.
Beispiel — ein Fenster, das länger als 10 Minuten offen ist
# Wi = Fensterkontakt (1 = offen), WiInfo = Wertinfo des Fensterkontakts
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;Beispiel — steigt oder fällt der Wert
# Se = Temperatur, SeInfo = Wertinfo von Temperatur
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;Verlauf einer Statistik
Bei einer Statistik vom Typ Aktueller Zeitraum enthält History die Werte der bereits abgeschlossenen Zeiträume:
| Eigenschaft | Typ | Inhalt |
|---|---|---|
Values | Sammlung | Values[0] ist der letzte abgeschlossene Zeitraum, Values[1] der Zeitraum davor und so weiter. Ein Zeitraum ohne Daten ist Null. Der laufende Zeitraum ist nicht enthalten — er ist der Wert der Statistik selbst. |
FirstPeriodStartTime | datetime | Beginn des Zeitraums von Values[0]. |
Wie viele Zeiträume erhalten bleiben, hängt vom Zeitraum der Statistik ab und davon, ob für sie die Verlaufsaufzeichnung aktiviert ist — der Verlaufsschalter der Statistik auf der Seite Statistiken des Geräts:
| Zeitraum | Erhaltene Zeiträume, Verlaufsaufzeichnung ein | Erhaltene Zeiträume, Verlaufsaufzeichnung aus |
|---|---|---|
| 5 Minuten | 36 (3 Stunden) | 3 |
| 10 Minuten | 18 (3 Stunden) | 3 |
| 15 Minuten | 12 (3 Stunden) | 3 |
| 1 Stunde | 48 (2 Tage) | 3 |
| 3 Stunden | 17 (etwa 2 Tage) | 3 |
| 1 Tag | 35 | 3 |
| 1 Monat | 25 | 3 |
| 1 Jahr | 10 | 3 |
Bei jedem anderen Zeitraum (1, 2, 3 und 30 Minuten, 12 Stunden, 2 und 3 Tage, 1 Woche, 1 Quartal) und bei einer Statistik vom Typ Zeitraum bis jetzt ist History Null. Values kann kürzer sein als die Anzahl der erhaltenen Zeiträume, zum Beispiel kurz nach dem Aktivieren der Statistik — prüfen Sie LENGTH, bevor Sie einen Index lesen, der möglicherweise nicht existiert.
Beispiel — der heutige Verbrauch bis jetzt im Vergleich zum ganzen gestrigen Tag
# En = Tagessumme von Energie (aktueller Zeitraum), EnInfo = Wertinfo derselben Statistik
VAR yesterday := GETAT(EnInfo.History.Values, 0);
IF ISNULL(yesterday)
RETURN(NaN);
END
En - yesterday;Beispiel — durchschnittlicher Tagesverbrauch der letzten 7 Tage
# EnInfo = Wertinfo der Tagessumme von Energie (aktueller Zeitraum)
AVG(COPY(EnInfo.History.Values, 0, MIN(7, LENGTH(EnInfo.History.Values))));COPY nimmt die ersten 7 Tage — MIN deckt einen Verlauf ab, der kürzer als 7 Tage ist, denn COPY über das Ende der Sammlung hinaus ist ein Fehler — und AVG überspringt die Tage ohne Daten. MIN, MAX und AVG überspringen Null, sodass ein ganzer Verlauf auch direkt verwendet werden kann:
# SeInfo = Wertinfo des Stundenmaximums von Temperatur (aktueller Zeitraum)
MAX(SeInfo.History.Values);
# Result: the highest temperature of the kept hoursSiehe auch — Variablen und Konstanten, MIN, MAX und AVG, COPY.