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:
| Kennwert | Bedeutung |
|---|---|
| sum | Die Summe der Werte im Bucket |
| count | Wie viele Werte im Bucket eingegangen sind |
| min | Der kleinste Wert |
| max | Der größte Wert |
| last | Der Wert mit dem neuesten Zeitstempel im Bucket |
| Ebene | Bucket | Aufbewahrt für |
|---|---|---|
| 1-Minuten-Aggregate | 1 Minute | Ihre Aufbewahrungsklasse, höchstens 31 Tage |
| Stundenaggregate | 1 Stunde | Ihre volle Aufbewahrungsklasse |
| Tagesaggregate | 1 Tag, Mitternacht bis Mitternacht UTC | Ihre 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änge | Auflösung |
|---|---|
| Bis 24 Stunden | Rohwerte, 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änger | 1 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:
| Funktion | Wert pro Bucket | Verwendung |
|---|---|---|
avg (Standard) | sum / count | Temperaturen, Füllstände, Drücke |
min | Der kleinste Wert | Niedrigster Füllstand, kältester Punkt |
max | Der größte Wert | Spitzenwerte, „ist es passiert“ bei 0/1-Schlüsseln |
last | Der letzte Wert | Zählerstände, Zustände, Sollwerte |
sum | Die Summe der Werte | Werte, die bereits Mengen pro Intervall sind (Liter in diesem Intervall, Ereignisse als 1) |
count | Die Anzahl der Messwerte | Meldequote, Datenvollständigkeit |
increase | Wie stark ein Zähler gestiegen ist | Energie- 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
lastminus daslastdes vorherigen Buckets. - Ist der Wert gesunken (der Zähler wurde neu gestartet), wird das
lastdes Buckets als Anstieg gewertet, gezählt ab null. - Der erste Bucket des Fensters zählt, was innerhalb von ihm gestiegen ist: sein
lastminus seinmin.
Beispiel mit Stundenbuckets eines Energiezählers:
| Stunde | last | increase |
|---|---|---|
| 08:00 | 1,200.0 | 4.0 (erster Bucket: last 1,200.0 – min 1,196.0) |
| 09:00 | 1,212.5 | 12.5 |
| 10:00 | 1,221.0 | 8.5 |
| 11:00 | 3.0 | 3.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
increasenur auf dem Rohzähler, niemals auf einem Schlüssel, der bereits eine Menge pro Intervall ist; dafür verwenden Siesum.
Die Zusammenfassungen nutzen
| Wo | Wie Sie wählen |
|---|---|
| Dashboard-Diagrammkarten | Die Einstellung Aggregat der Karte und das Zeitfenster des Boards. Siehe Diagrammkarten und Datenquellen und Parameter. |
| Der Reiter Telemetrie des Geräts | Immer avg, mit dem von Ihnen gewählten Zeitfenster. Siehe Der Reiter Telemetrie des Geräts. |
| API | bucket und agg bei GET /api/telemetry/series. Siehe Die History-API. |
| Flows | Der 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.

