Her okuma bir zamana kaydedilir. Bu sayfa, bunun hangi zaman olduğunu, hangi okumaların zamanları nedeniyle reddedildiğini, yinelenenlerin nasıl ele alındığını ve geç gelen okumalara ne olduğunu açıklar.
Cihaz zamanı veya alım zamanı
| Cihazın gönderdikleri | Kaydedilme zamanı |
|---|---|
Düz bir nesne, örneğin {"temperature": 21.5} | Platformun mesajı aldığı zaman |
{"ts": 1759572000000, "values": {...}} | ts: cihazın kendi zamanı |
| İki biçimin bir dizisi | Her öğe kendi zamanında |
ts, 1 Ocak 1970 UTC’den bu yana geçen milisaniyeyi gösteren bir tam sayıdır. Başka herhangi bir ts (saniye, metin, negatif sayı) kaydın bad_ts olarak düşürülmesine neden olur. Bkz. MQTT topics and payload reference.
Yalnızca cihazın saati senkronize olduğunda ts gönderin. Güvenilir bir saati olmayan cihaz düz nesneler göndermeli ve platformun bunlara zaman damgası atmasına izin vermelidir. Kayan bir saat, okumaların grafiklerde yanlış yere düşmesine neden olur ve reddedilebilir.
Bir akışta kayıt zamanı msg.metadata.recordTs, alım zamanı ise msg.metadata.ts‘tir. Save telemetry bloğu varsayılan olarak kayıt zamanını kaydeder; ts ayarı alım zamanına geçirilebilir ve ts_path, bir kaydı mesajdaki bir değerden yeniden zamanlayabilir.
Gelecekteki okumalar
Geliş zamanından 10 dakikadan fazla ileri zaman damgalı bir kayıt bad_ts olarak düşürülür. Asla “şimdi” olarak düzeltilmez. Toleransı Settings > Telemetry (IoT Telemetry Settings) bölümünden değiştirebilirsiniz:
| Ayar | Varsayılan | Aralık |
|---|---|---|
| Gelecekteki zaman damgası toleransı (dakika) | 10 | 1 ila 1.440 |
| Kabul edilen en eski ölçüm (gün) | 0 (her yaş) | 0 ila 36.500 |
Gelişinden önce Oldest accepted reading (days) değerinden daha eski bir kayıt bad_ts olarak düşürülür. Bir cihazın çok eski tamponlanmış verileri yeniden göndermesini engellemek için kullanın. Sayfa için View IoT telemetry settings ve Change IoT telemetry settings izinleri gerekir (varsayılan olarak Admin). Değişiklikler bir dakika içinde veri alımına ulaşır.
Geçmişten gelen okumalar
Saklama sınıfınızın ham veriyi tuttuğu süreden daha eski bir okuma, yukarıdaki ayarlar ne derse desin, depo tarafından too_old olarak reddedilir:
| Saklama sınıfı | Bir okuma şundan eskiyse reddedilir |
|---|---|
| 7 gün | 7 gün |
| 30 gün | 7 gün |
| 90 gün | 30 gün |
| 365 gün | 90 gün |
| 1.095 gün | 90 gün |
Ham veri penceresi içindeki okumalar eski olsalar bile saklanır ve dakika, saat ve gün özetlerine katılır. Bkz. How long data is kept.
Yinelenenler
Bir cihaz, bir ağ geçidi veya bir yeniden deneme aynı okumayı iki kez gönderebilir. Hermetry bunu iki noktada ele alır:
- Akıştan önce. Mesaj kimliği 60 saniye içinde zaten görülmüş bir cihaz mesajı veya kimliği olmayıp kendi
tsdeğerini taşıyan ve içeriği daha önce görülmüş bir mesaj, çalıştırılmadan onaylanır. Ne kimliği ne detsdeğeri olan bir okuma asla tekrar sayılmaz: aynı değer iki kez, iki okumadır. - Depoda. Aynı cihaz için aynı zamanda aynı değerleri taşıyan bir mesaj bir kez kaydedilir. Yeniden teslim edilen veya yeniden oynatılan bir mesaj hiçbir şeyi değiştirmez.
Aynı zaman damgasına sahip iki farklı mesaj da tutulur. API ham değerleri okuduğunda, zaman damgası başına bir nokta döndürür. En son değer, o zaman damgası için gördüğü ilk değeri korur.
Sıra dışı okumalar
Çevrimdışıyken okumaları tamponlayıp daha sonra gönderen bir cihaz, bunları daha yeni verilerden sonra teslim eder. Bunlar geçmişte kendi zamanlarında saklanır. En son değerin yerini almazlar. Alarm kuralları, son değerlendirilenden daha eski kayıtları geriye dönük veri olarak ele alır: canlı olarak değerlendirilmezler ve geriye dönük veri açık olan bir kural, bunlardan kimseye bildirim göndermeden alarm üretir. Bkz. Clear conditions and late readings.
Kesintinin geciktirdiği okumalar
Bir işleme çalışanı devre dışıyken mesajlar bir kuyrukta bekler. Platform yetiştiğinde, yaşam süresinden (varsayılan olarak 5 dakika) daha uzun bekleyen bir cihaz mesajı bir geç mesajdır:
- Yine de kök akışından geçer ve kaydedilir. Birikmiş veri sizin verinizdir, bu yüzden orada asla atılmaz.
- Geç olarak işaretlenir (
msg.metadata.late). Platform dışında eylem yapan bloklar bunu atlar: bildirim yok, cihaz komutu yok, HTTP çağrısı veya MQTT yayını yok (bloğun late ayarısenddeğilse), yayılan olay yok. - Alarm rules bloğu bunu geriye dönük veri olarak değerlendirir: alarmlar geçmişe yazılır, Backfilled olarak işaretlenir ve geçmiş için kimse çağrılmaz. Canlı okumalar devam ettiğinde hâlâ açık olan bir alarm o zaman duyurulur.
- Buna tepki verecek diğer akışlar (örneğin bir
alarmdinleyicisi) onu düşürür ve Too old olarak sayar.
Bkz. Protections and failed messages.
Saat dilimleri
Her şey UTC olarak saklanır. Konsol, panolar ve dışa aktarımlar saatleri görüntüleyenin saat diliminde gösterir. Günlük toplamlar UTC ile gece yarısından gece yarısına çalışır; yerel günleri okumak için bkz. Aggregates and rollups.
Sorun giderme
| Belirti | Olası neden |
|---|---|
| Bir okuma eksik, aynı cihazın diğerleri mevcut | ts değeri gelecekte veya aralık dışındaydı (bad_ts) ya da ham veri penceresinden eskiydi (too_old). Kök akışın çalışma kayıtlarını kontrol edin. |
| Okumalar saatler veya bir gün kadar kayık görünüyor | Cihaz ts değerini yerel saatte veya saniye cinsinden gönderiyor. UTC milisaniye veya düz nesneler gönderin. |
| Yeni okumalar gelmesine rağmen en son değer değişmiyor | Yeni okumalar, kayıtlı olandan daha eski veya eşit bir ts taşıyor. |
| Düzeltilmiş bir değer görünmüyor | Orijinaliyle aynı ts ile gönderildi; en son değer ilkini korur. Düzeltmeyi yeni bir ts ile gönderin. |
Ayrıca bkz. Wrong times and gaps.

