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

Zeitstempel, verspätete und doppelte Messwerte

Zu welchem Zeitpunkt ein Messwert gespeichert wird, Messwerte aus der Zukunft oder Vergangenheit, die Zeitstempel-Einstellungen, Duplikate und Messwerte, die durch einen Ausfall verzögert sind.

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 sendetGespeichert 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 FormenJedes 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):

EinstellungStandardBereich
Toleranz für Zeitstempel in der Zukunft (Minuten)101 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:

AufbewahrungsklasseEin Messwert wird abgelehnt, wenn er älter ist als
7 Tage7 Tage
30 Tage7 Tage
90 Tage30 Tage
365 Tage90 Tage
1.095 Tage90 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:

  1. 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 ts mitführt, deren Inhalt bereits gesehen wurde, wird ohne Durchlauf quittiert. Ein Messwert ohne ID und ohne ts gilt nie als Wiederholung: Derselbe Wert zweimal sind zwei Messwerte.
  2. 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 nicht send ist), 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

SymptomWahrscheinliche Ursache
Ein Messwert fehlt, andere desselben Geräts sind vorhandenSeine 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 versetztDas 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 eintreffenDie neuen Messwerte tragen eine ältere oder gleiche ts als die gespeicherte.
Ein korrigierter Wert wird nicht angezeigtEr 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.