Neu: Die KI-Firewall überwacht jedes Modul und erklärt jeden Vorfall in einfachen Worten. So funktioniert es

Aggregate und Rollups

Wie numerische Messwerte pro Minute, Stunde und Tag zusammengefasst werden, welche Auflösung ein Zeitfenster liest, die sieben Aggregatfunktionen und increase für Zähler.

Jeden Rohwert eines Jahres zu lesen wäre langsam und passte nicht in ein Diagramm. Hermetry fasst daher numerische Messwerte pro Minute, Stunde und Tag zusammen und liest die Zusammenfassung, die zum angefragten Zeitfenster passt. Diese Seite erklärt die Zusammenfassungen, wie die Auflösung gewählt wird und was jede Aggregatfunktion zurückgibt.

Die Zusammenfassungen

Für jeden numerischen Schlüssel jedes Geräts speichert der Speicher pro Bucket fünf Kennwerte:

KennwertBedeutung
sumDie Summe der Werte im Bucket
countWie viele Werte im Bucket eingegangen sind
minDer kleinste Wert
maxDer größte Wert
lastDer Wert mit dem neuesten Zeitstempel im Bucket
EbeneBucketAufbewahrt für
1-Minuten-Aggregate1 MinuteIhre Aufbewahrungsklasse, höchstens 31 Tage
Stundenaggregate1 StundeIhre volle Aufbewahrungsklasse
Tagesaggregate1 Tag, Mitternacht bis Mitternacht UTCIhre volle Aufbewahrungsklasse

Alle Buckets sind auf UTC ausgerichtet. Die Minutenzusammenfassungen werden von einem Job berechnet, der jede Minute läuft; die Stunden- und Tagesaggregate werden daraus abgeleitet. Ein Messwert, der nach der Zusammenfassung seiner Minute eintrifft, berechnet diese Minute erneut, sodass späte Messwerte enthalten sind. Ein neu gespeicherter Messwert kann eine oder zwei Minuten brauchen, bis er in Zusammenfassungen erscheint; Rohabfragen (Fenster bis 24 Stunden) sehen ihn sofort.

Text, true/false und JSON-Werte werden nicht zusammengefasst. Siehe Zahlen, Text und Wahr/Falsch-Werte.

Welche Auflösung ein Zeitfenster liest

Mit dem Bucket auto (der Standard für Diagramme und die API):

FensterlängeAuflösung
Bis 24 StundenRohwerte, jeder Messwert
Bis 10.000 Minuten (etwa 6,9 Tage, daher liest ein volles 7-Tage-Fenster bereits Stunden)1 Minute
Bis 10.000 Stunden (etwa 416 Tage)1 Stunde
Länger1 Tag

Ein Fenster darf bei der gewählten Auflösung höchstens 10.000 Buckets umfassen. Wenn Sie eine feste Auflösung anfordern, die mehr benötigen würde (zum Beispiel 1m über 30 Tage), antwortet die API mit 400 und dem Code range_too_large. Wählen Sie dann einen gröberen Bucket oder ein kürzeres Fenster.

Ein Fenster, das weiter zurückreicht als eine gespeicherte Ebene, liefert für den fehlenden Teil nichts. Zum Beispiel fehlen bei der 365-Tage-Klasse 1m-Buckets, die älter als 31 Tage sind; fragen Sie stattdessen 1h ab.

Die Aggregatfunktionen

Jeder Bucket liefert einen Wert, der aus seinen fünf Kennwerten berechnet wird:

FunktionWert pro BucketVerwendung
avg (Standard)sum / countTemperaturen, Füllstände, Drücke
minDer kleinste WertNiedrigster Füllstand, kältester Punkt
maxDer größte WertSpitzenwerte, „ist es passiert“ bei 0/1-Schlüsseln
lastDer letzte WertZählerstände, Zustände, Sollwerte
sumDie Summe der WerteWerte, die bereits Mengen pro Intervall sind (Liter in diesem Intervall, Ereignisse als 1)
countDie Anzahl der MesswerteMeldequote, Datenvollständigkeit
increaseWie stark ein Zähler gestiegen istEnergie- und Wasserzähler, Impulssummen

avg ist ein einfacher Mittelwert der Messwerte im Bucket, nicht nach Zeit gewichtet. Ein Gerät, das in manchen Zeiträumen häufiger meldet, zählt diese Zeiträume stärker.

Wenn ein Rohfenster gelesen wird (bis 24 Stunden), wird die Aggregation nicht angewendet: Sie erhalten jeden gespeicherten Wert. Diagramme, die Rohpunkte und eine Zusammenfassung nebeneinander zeigen, können daher für den letzten Tag mehr Details zeigen als für ältere Tage.

increase, für Zähler

Zähler wachsen nur (kWh, m³, Impulse), bis sie bei null neu starten. increase macht daraus den Verbrauch pro Bucket:

  • Der Wert eines Buckets ist sein last minus das last des vorherigen Buckets.
  • Ist der Wert gesunken (der Zähler wurde neu gestartet), wird das last des Buckets als Anstieg gewertet, gezählt ab null.
  • Der erste Bucket des Fensters zählt, was innerhalb von ihm gestiegen ist: sein last minus sein min.

Beispiel mit Stundenbuckets eines Energiezählers:

Stundelastincrease
08:001,200.04.0 (erster Bucket: last 1,200.0 – min 1,196.0)
09:001,212.512.5
10:001,221.08.5
11:003.03.0 (der Zähler wurde neu gestartet)

Hinweise:

  • Ein Anstieg über eine Lücke hinweg wird im ersten Bucket nach der Lücke gezählt.
  • Ein Zähler, der neu startet und dann innerhalb eines Buckets über seinen alten Wert steigt, wird nicht als Neustart erkannt.
  • Verwenden Sie increase nur auf dem Rohzähler, niemals auf einem Schlüssel, der bereits eine Menge pro Intervall ist; dafür verwenden Sie sum.

Die Zusammenfassungen nutzen

WoWie Sie wählen
Dashboard-DiagrammkartenDie Einstellung Aggregat der Karte und das Zeitfenster des Boards. Siehe Diagrammkarten und Datenquellen und Parameter.
Der Reiter Telemetrie des GerätsImmer avg, mit dem von Ihnen gewählten Zeitfenster. Siehe Der Reiter Telemetrie des Geräts.
APIbucket und agg bei GET /api/telemetry/series. Siehe Die History-API.
FlowsDer Block Statistics berechnet Kennzahlen über ein Nachrichtenfenster direkt im Flow. Siehe Zähler, Statistiken und Watchdogs.

Lokale Tage und Monate

Tagesaggregate sind UTC-Tage. Für eine Tagessumme in einer anderen Zeitzone lesen Sie 1h-Buckets und addieren die Stunden jedes lokalen Tages selbst; für Zeitzonen mit halbstündigem Versatz lesen Sie 1m-Buckets (bis 31 Tage zurück). Das Beispiel finden Sie in Die History-API.