Satu Pembacaan Sensor Dapat Memiliki Lebih dari Satu Waktu
Satu nilai dapat memiliki waktu pengukuran, waktu diterima server, dan waktu tampil. Pilih timestamp yang tepat untuk setiap keputusan operasional.
Timestamp sensor tidak selalu menjawab pertanyaan yang sama. Satu nilai dapat membawa waktu ketika kondisi diukur, waktu ketika hasil dihitung, waktu ketika server menerimanya, dan waktu lokal yang ditampilkan kepada pengguna.
Perbedaannya menjadi penting saat data datang terlambat. Record yang diterima pagi ini bisa saja berasal dari pengukuran tadi malam; jika waktu kedatangan diperlakukan sebagai waktu kejadian, histori, freshness, analisis keterlambatan, dan urutan backlog dapat memberikan kesan yang keliru.
Satu record bisa membawa beberapa waktu
Ambil satu record level air sebagai contoh. Nilainya mungkin dibaca sensor atau logger pada pukul tertentu, disimpan lokal, dikirim setelah koneksi tersedia, diterima aplikasi pusat, lalu dikonversi ke zona waktu pengguna. Semua waktu itu sah selama nama field dan maknanya jelas. Masalah muncul ketika semuanya hanya disebut timestamp.
Standar juga memisahkan peristiwa tersebut. OGC SensorThings membedakan phenomenonTime, saat observasi berlangsung, dari resultTime, saat hasilnya tersedia. OPC UA membedakan sourceTimestamp yang berasal dari sumber data dan serverTimestamp yang berkaitan dengan penerimaan atau pengetahuan server atas nilai tersebut.
Istilah di dalam proyek tidak harus menyalin standar itu. Yang perlu dipertahankan adalah pemisahan makna: kapan kondisi terjadi, kapan record tiba, dan kapan suatu hasil baru benar-benar dibuat.
Gunakan timestamp sensor sesuai keputusan
Tidak ada satu field waktu yang tepat untuk semua tampilan dan perhitungan. Pilih bukti waktu dari pertanyaan operasional yang sedang dijawab.
| Keputusan | Waktu utama | Risiko jika salah memilih |
|---|---|---|
| Menyusun histori kondisi | Waktu pengukuran atau waktu sumber | Data terlambat tampak sebagai kejadian baru |
| Menilai umur nilai di dashboard | Waktu pengukuran yang terverifikasi | Backlog yang baru tiba tampak fresh |
| Mengukur waktu pengiriman | Selisih waktu pengukuran dan waktu diterima | Kesalahan dua jam dibaca sebagai latensi jaringan |
| Mengurutkan data setelah koneksi pulih | Waktu pengukuran, dibantu ID atau sequence | Record lama dapat tersisip pada urutan yang salah |
| Menelusuri hasil turunan | Waktu hasil atau pemrosesan, bersama waktu asal | Waktu transformasi menggantikan kejadian yang diwakili |
| Menampilkan waktu lokal | Konversi dari waktu dengan hubungan UTC yang jelas | Tampilan lokal mengubah atau menggandakan waktu tersimpan |
Untuk status online atau stale, timestamp tetap hanya salah satu bukti. Artikel sensor offline membahas mengapa umur data, heartbeat, dan status koneksi perlu dibedakan. Di sini fokusnya lebih sempit: memastikan umur data dihitung dari waktu yang memang mewakili pengukuran.
Pisahkan makna timestamp, format, dan sinkronisasi jam
Tiga masalah yang berbeda sering terlihat sama di dashboard.
Pertama, nama field dapat ambigu. created_at mungkin berarti record dibuat di server, bukan kondisi diukur. Kedua, representasinya dapat ambigu: angka waktu tidak menyebut zona atau hubungannya dengan UTC. Ketiga, jam yang menghasilkan timestamp dapat terlalu jauh berbeda untuk keputusan yang dibuat.
RFC 3339 menyediakan representasi tanggal dan waktu dengan hubungan eksplisit terhadap UTC, misalnya Z atau offset. Format yang jelas tetap tidak membuktikan jamnya benar. Sebaliknya, jam yang tersinkronisasi tidak membantu jika field-nya tidak menjelaskan peristiwa apa yang dicatat.
Karena itu, jangan memilih NTP, PTP, GNSS, atau metode lain hanya dari nama teknologinya. Tentukan lebih dulu seberapa dekat waktu antar perangkat harus dibandingkan untuk keputusan proyek, lalu verifikasi apakah sumber waktu dan arsitektur yang dipilih memenuhi kebutuhan tersebut. Artikel ini tidak menyatakan metode sinkronisasi yang digunakan oleh perangkat atau platform Fortuna Argatech.
Tulis kontrak waktu untuk sensor, logger, gateway, dan server
Kontrak timestamp adalah catatan singkat yang membuat setiap tim membaca field dengan arti yang sama. Kontrak ini bukan schema wajib dari OGC, OPC UA, atau Fortuna Argatech.

Untuk setiap field waktu, catat nama schema dan label UI, peristiwa yang diwakili, pemilik jam, format atau basis waktu, perilaku saat waktu sumber hilang, aturan preservasi, serta penggunaan operasionalnya. Tambahkan status sinkronisasi, sumber waktu, atau ketidakpastian hanya jika perangkat dan platform memang mengekspos bukti tersebut.
Fallback perlu dinyatakan terbuka. Server dapat menerima record tanpa waktu pengukuran, tetapi mengganti field yang hilang dengan waktu saat ini mengubah makna data. Pilihan proyek bisa berupa menolak record, menyimpan nilai null, memberi quality flag, atau menyimpan waktu diterima sebagai field terpisah. Tidak ada satu pilihan yang otomatis benar untuk semua sistem.
Halaman Datalogger GEOVOS 1000 memverifikasi konteks RS485, komunikasi seluler, penyimpanan lokal, dan platform monitoring. Halaman publik tersebut tidak mendokumentasikan schema timestamp, sumber jam, fallback, atau metode sinkronisasinya. Detail itu perlu diperiksa dari konfigurasi dan data proyek, bukan diasumsikan dari artikel.
Pertahankan waktu pengukuran saat data terlambat tiba
Store-and-forward membuat waktu pengukuran dan waktu diterima semakin mudah tertukar. Ketika jaringan pulih, banyak record dapat tiba dalam waktu berdekatan. Histori tetap perlu menempatkan tiap nilai pada waktu kondisi yang diwakilinya, sementara waktu kedatangan dipertahankan untuk menilai keterlambatan dan jalur pengiriman.
Panduan memori data logger membahas kapasitas penyimpanan dan pembuktian recovery backlog. Untuk kontrak waktu, pemeriksaannya cukup tajam: apakah timestamp pengukuran tetap sama sebelum dan sesudah replay, apakah waktu terima disimpan terpisah, serta apakah ID atau sequence tersedia untuk menyelidiki urutan dan duplikasi.
Timestamp yang rapi tidak menjamin record lengkap, unik, berurutan, atau valid. Kualitas data, delivery, deduplikasi, dan identitas record tetap merupakan kontrol terpisah.
Uji jam hilang, reboot, jaringan pulih, dan zona waktu
Gunakan satu channel uji dan satu nilai yang dapat dikenali. Catat field yang tersedia pada sensor atau logger, gateway, API atau database, dashboard, dan ekspor. Kemudian jalankan hanya skenario yang aman dan disetujui untuk proyek.
- Bandingkan record normal pada setiap lapisan, termasuk format, offset, pemilik jam, dan ID jika tersedia.
- Uji kondisi waktu sumber hilang atau tidak valid. Pastikan sistem menolak, menandai, mengestimasi, atau mengganti waktu sesuai kontrak, bukan secara diam-diam.
- Lakukan reboot yang disetujui dan periksa apakah waktu pulih sebelum pengukuran baru dianggap current.
- Putuskan jaringan secara terkontrol, lalu bandingkan waktu pengukuran, waktu diterima, urutan, gap, dan duplikasi setelah backlog dikirim.
- Buka record yang sama melalui API atau ekspor serta dashboard desktop dan mobile untuk menemukan konversi zona waktu yang tidak konsisten.
Perhitungan latensi baru layak dipercaya ketika hubungan kedua jam cukup jelas untuk kebutuhan tersebut. Tanpa itu, selisih waktu dapat menggabungkan keterlambatan jaringan, antrean pemrosesan, dan perbedaan jam perangkat.
Bawa satu record ke review integrasi
Satu contoh record sering lebih berguna daripada diskusi umum tentang jam. Bawa payload atau ekspor, nama field, contoh nilai, zona atau offset, pemilik jam yang diketahui, perilaku saat offline, dan tangkapan tampilan pada lapisan yang relevan. Tandai yang belum terbukti sebagai UNVERIFIED.
Fortuna Argatech menangani data logger, telemetry, remote monitoring, dan integrasi dashboard. Untuk membahas kontrak timestamp terhadap perangkat, jaringan, database, serta keputusan operasi yang digunakan pada proyek Anda, hubungi tim Fortuna Argatech. Review teknis tetap diperlukan sebelum aturan waktu dipakai untuk alarm, pelaporan, atau keputusan berkonsekuensi tinggi.
Bagikan artikel ini
Sebarkan insight ini ke tim Anda.
Artikel Terkait
Topik serupa dari kategori yang sama.
Kurangi alarm yang aktif-mati berulang dengan membedakan sumber gangguan, deadband, on-delay, off-delay, serta bukti uji di staging.
Nilai terakhir dapat tetap terlihat saat pembaruan berhenti. Pisahkan umur data, heartbeat, dan status koneksi untuk mengenali sensor offline.
Tampilkan nilai sensor bersama status QC, alasan flag, dan aturan tindak lanjut agar data meragukan, gagal, atau hilang tidak dipakai tanpa review.