Jede Messung wird zu einem Zeitpunkt gespeichert. Diese Seite erklärt, welcher Zeitpunkt das ist, welche Messwerte wegen ihrer Zeit abgelehnt werden, wie Duplikate behandelt werden und was mit Messwerten passiert, die verspätet eintreffen.
Gerätezeit oder Empfangszeit
| Was das Gerät sendet | Gespeichert um |
|---|---|
Ein flaches Objekt, zum Beispiel {"temperature": 21.5} | Der Zeitpunkt, zu dem die Plattform die Nachricht empfangen hat |
{"ts": 1759572000000, "values": {...}} | ts: die eigene Zeit des Geräts |
| Ein Array aus den beiden Formen | Jedes Element zu seiner eigenen Zeit |
ts ist eine ganze Zahl in Millisekunden seit dem 1. Januar 1970, UTC. Jedes andere ts (Sekunden, eine Zeichenkette, eine negative Zahl) verwirft diesen Datensatz als bad_ts. Siehe MQTT-Topics und Referenz der Nutzdaten.
Sende ts nur, wenn die Uhr des Geräts synchronisiert ist. Ein Gerät ohne verlässliche Uhr sollte flache Objekte senden und die Plattform den Zeitstempel setzen lassen. Eine driftende Uhr erzeugt Messwerte an der falschen Stelle in Diagrammen und kann abgelehnt werden.
In einem Flow ist die Datensatzzeit msg.metadata.recordTs und die Empfangszeit msg.metadata.ts. Der Block Telemetrie speichern speichert standardmäßig die Datensatzzeit; über seine Einstellung ts lässt sich auf die Empfangszeit umschalten, und mit ts_path kann ein Datensatz anhand eines Werts in der Nachricht neu datiert werden.
Messwerte aus der Zukunft
Ein Datensatz, dessen Zeitstempel mehr als 10 Minuten vor dem Zeitpunkt seines Eintreffens liegt, wird als bad_ts verworfen. Er wird nie auf „jetzt“ korrigiert. Die Toleranz ändern Sie unter Einstellungen > Telemetrie (IoT-Telemetrie-Einstellungen):
| Einstellung | Standard | Bereich |
|---|---|---|
| Toleranz für Zeitstempel in der Zukunft (Minuten) | 10 | 1 bis 1.440 |
| Ältester akzeptierter Messwert (Tage) | 0 (beliebiges Alter) | 0 bis 36.500 |
Ein Datensatz, der vor seinem Eintreffen älter ist als Ältester akzeptierter Messwert (Tage), wird als bad_ts verworfen. Damit verhindern Sie, dass ein Gerät sehr alte gepufferte Daten erneut einspielt. Die Seite benötigt die Berechtigungen IoT-Telemetrie-Einstellungen anzeigen und IoT-Telemetrie-Einstellungen ändern (standardmäßig Admin). Änderungen wirken innerhalb einer Minute auf die Aufnahme.
Messwerte aus der Vergangenheit
Ein Messwert, der älter ist als Ihre Aufbewahrungsklasse für Rohdaten, wird vom Speicher als too_old abgelehnt, unabhängig von den oben genannten Einstellungen:
| Aufbewahrungsklasse | Ein Messwert wird abgelehnt, wenn er älter ist als |
|---|---|
| 7 Tage | 7 Tage |
| 30 Tage | 7 Tage |
| 90 Tage | 30 Tage |
| 365 Tage | 90 Tage |
| 1.095 Tage | 90 Tage |
Messwerte innerhalb des Rohdatenfensters werden auch dann gespeichert, wenn sie alt sind, und in die Zusammenfassungen je Minute, Stunde und Tag übernommen. Siehe Wie lange Daten aufbewahrt werden.
Duplikate
Ein Gerät, ein Gateway oder ein Wiederholungsversuch kann denselben Messwert zweimal senden. Hermetry behandelt dies an zwei Stellen:
- Vor dem Flow. Eine Gerätenachricht, deren Nachrichten-ID innerhalb von 60 Sekunden bereits gesehen wurde, oder, wenn sie keine ID hat, aber eine eigene
tsmitführt, deren Inhalt bereits gesehen wurde, wird ohne Durchlauf quittiert. Ein Messwert ohne ID und ohnetsgilt nie als Wiederholung: Derselbe Wert zweimal sind zwei Messwerte. - Im Speicher. Eine Nachricht mit denselben Werten zur selben Zeit für dasselbe Gerät wird nur einmal gespeichert. Eine erneut zugestellte oder wiedergegebene Nachricht ändert nichts.
Zwei verschiedene Nachrichten mit demselben Zeitstempel werden beide behalten. Wenn die API Rohwerte liest, gibt sie je Zeitstempel einen Punkt zurück. Der neueste Wert behält den ersten Wert, den sie für diesen Zeitstempel gesehen hat.
Messwerte außer der Reihe
Ein Gerät, das Messwerte offline puffert und später sendet, liefert sie nach neueren Daten aus. Sie werden im Verlauf zu ihren eigenen Zeiten gespeichert. Sie ersetzen keinen neueren aktuellen Wert. Alarmregeln behandeln Datensätze, die älter sind als der zuletzt ausgewertete, als Nachtrag: Sie werden nicht live ausgewertet, und eine Regel mit aktivem Nachtrag löst aus diesen Daten Alarme aus, ohne jemanden zu benachrichtigen. Siehe Entwarnungsbedingungen und verspätete Messwerte.
Messwerte verzögert durch einen Ausfall
Nachrichten warten in einer Warteschlange, solange ein Verarbeitungsworker ausgefallen ist. Wenn die Plattform den Rückstand aufholt, ist eine Gerätenachricht, die länger gewartet hat als ihre Lebensdauer (standardmäßig 5 Minuten), eine verspätete Nachricht:
- Sie läuft trotzdem durch ihren Root-Flow und wird gespeichert. Ein Rückstand sind Ihre Daten, daher wird er dort nie verworfen.
- Sie wird als verspätet markiert (
msg.metadata.late). Blöcke, die außerhalb der Plattform handeln, überspringen sie: keine Benachrichtigung, kein Gerätebefehl, kein HTTP-Aufruf und keine MQTT-Veröffentlichung (sofern die Einstellung late des Blocks nichtsendist), kein ausgegebenes Ereignis. - Der Block Alarmregeln wertet sie als Nachtrag aus: Alarme werden in den Verlauf geschrieben, als Nachgetragen markiert, und für die Vergangenheit wird niemand alarmiert. Ein Alarm, der noch offen ist, wenn Livewerte wieder eintreffen, wird dann gemeldet.
- Andere Flows, die darauf reagieren würden (zum Beispiel ein
alarm-Listener), verwerfen sie und zählen sie als Zu alt.
Siehe Schutzmechanismen und fehlgeschlagene Nachrichten.
Zeitzonen
Alles wird in UTC gespeichert. Konsole, Dashboards und Exporte zeigen Zeiten in der Zeitzone des Betrachters. Tagesaggregationen laufen von Mitternacht bis Mitternacht UTC; für lokale Tage siehe Aggregate und Rollups.
Fehlerbehebung
| Symptom | Wahrscheinliche Ursache |
|---|---|
| Ein Messwert fehlt, andere desselben Geräts sind vorhanden | Seine ts lag in der Zukunft oder außerhalb des Bereichs (bad_ts), oder er ist älter als das Rohdatenfenster (too_old). Prüfen Sie die Laufprotokolle des Root-Flows. |
| Messwerte erscheinen stunden- oder tageweise versetzt | Das Gerät sendet ts in Ortszeit oder in Sekunden. Senden Sie UTC-Millisekunden oder flache Objekte. |
| Der aktuelle Wert ändert sich nicht, obwohl neue Messwerte eintreffen | Die neuen Messwerte tragen eine ältere oder gleiche ts als die gespeicherte. |
| Ein korrigierter Wert wird nicht angezeigt | Er wurde mit derselben ts wie das Original gesendet; der aktuelle Wert behält den ersten. Senden Sie die Korrektur mit einer neuen ts. |
Siehe auch Falsche Zeiten und Lücken.

