Cara menerapkan penjadwalan berbasis kejadian menggunakan waktu Unix di IoT Logic
Jadwalkan tindakan output berbasis timer di IoT Logic menggunakan stempel waktu Unix. Picu perintah perangkat pada waktu yang tepat dengan pelaporan perangkat berkelanjutan diaktifkan.
Di bagian ini, konfigurasikan timer di IoT Logic untuk mengendalikan aktivasi keluaran pada perangkat. Ini berfungsi sebagai penjadwal dengan menggunakan waktu Unix untuk kontrol berbasis waktu.

Pertama, logika penjadwal dibangun berdasarkan waktu Unix, karena itu adalah satu-satunya parameter andal dan konsisten yang selalu dapat kami andalkan. Elemen kunci kedua adalah cap waktu dari paket valid yang diterima oleh platform Navixy. Perlu dicatat bahwa logika ini mengharuskan perangkat terus-menerus mengirim paket data valid ke platform. Frekuensinya sendiri tidak kritis; namun, jika tidak ada Pesan masuk yang diterima, mustahil untuk mengevaluasi waktu atau memicu tindakan terjadwal apa pun.
Sekarang, beralih ke node perhitungan atribut logika yang diimplementasikan. Node ini mengambil:
Waktu kejadian saat ini (current_time) dari paket terbaru
Waktu kejadian sebelumnya (prev_time) dari paket sebelumnya
Kedua nilai dikonversi dari milidetik menjadi detik.
Perlu dicatat bahwa genTime disediakan dalam waktu Unix (milidetik) dan harus dibagi 1000 untuk memperoleh waktu Unix dalam detik, yang merupakan format yang digunakan untuk semua perhitungan.
Dari sini, sistem menghitung:
current_sod (detik dalam sehari)
prev_sod (detik dalam sehari untuk paket sebelumnya)
Ini dilakukan menggunakan operasi modulo, yang mengekstrak jumlah detik yang berlalu sejak tengah malam, sehingga secara efektif mengonversi waktu Unix menjadi acuan waktu dalam sehari.
Pergeseran waktu mungkin terlihat dalam rumus-rumus ini. Pergeseran ini ditentukan oleh zona waktu UTC tempat perhitungan dilakukan.
Dalam skenario pengujian, perhitungan dilakukan pada UTC -6, menghasilkan selisih 6 jam. Jika dikonversi ke detik, nilainya menjadi: 6 jam × 60 menit × 60 detik = 21.600 detik.
Dengan nilai-nilai ini, sistem mendeteksi peralihan waktu, bukan keadaan berkelanjutan.
Sebagai contoh:
Kondisi mengaktifkan keluaran (misalnya, pukul 20.00): Sistem memeriksa saat waktu melewati ambang batas:
Kondisi menonaktifkan keluaran (misalnya, pukul 05.00):
Ini memastikan bahwa tindakan dipicu hanya sekali pada saat transisi, bukan terus-menerus selama seluruh jendela waktu.
Setelah logika terpenuhi, node aksi akan memicu perintah keluaran untuk mengubah status keluaran. Beberapa keterbatasan dapat muncul sepanjang aliran ini, dan penting untuk menyorotinya agar dapat dipertimbangkan:
Tergantung pada data masuk:
Jika perangkat berhenti mengirim data, tidak ada tindakan yang dipicu. Inilah sebabnya pemantauan kontinu atas unit diperlukan. Jika perangkat terputus, terganggu sinyalnya, atau berada dalam Mode Sleep tanpa mengirim data valid, perubahan status tidak pernah terdeteksi.
Tidak ada jaminan waktu eksekusi yang tepat:
Tindakan dieksekusi saat paket data berikutnya tiba setelah ambang batas terpenuhi, bukan tepat pada waktu terjadwal. Misalnya, jika perangkat melaporkan setiap 5 menit dan paket terakhir diterima pada 20.58, Pesan berikutnya akan tiba pada 21.03. Pada saat itu, logika akan terpenuhi dan tindakan (misalnya, aktivasi keluaran) akan dipicu.
Penanganan zona waktu diperlukan:
Karena waktu Unix berada dalam UTC, offset harus diterapkan untuk menyelaraskannya dengan waktu lokal yang diinginkan.
Tidak ada status Penjadwalan persisten:
Sistem tidak menyimpan waktu pemicu di masa depan; sistem sepenuhnya bergantung pada perbandingan waktu nyata antara paket-paket yang masuk secara berurutan.
Solusi ini mensimulasikan penjadwal dalam sistem berbasis peristiwa dengan menggunakan cap waktu Unix dan mendeteksi transisi waktu antara paket data berurutan. Walaupun ini bukan penjadwal sejati, solusi ini menyediakan cara yang andal dan dapat diskalakan untuk menerapkan otomasi berbasis waktu tanpa memerlukan dukungan Penjadwalan bawaan.
Terakhir diperbarui
Apakah ini membantu?