For the complete documentation index, see llms.txt. This page is also available as Markdown.

Fungsi Perimeter

Gunakan geofence yang sudah Anda miliki di Navixy di dalam alur IoT Logic, untuk memicu tindakan saat perangkat memasuki atau meninggalkan suatu area, atau untuk mencatat area tempat perangkat berada.

Fungsi perimeter memungkinkan aliran merespons lokasi perangkat, menggunakan perimeter yang sudah Anda miliki di Navixy. Anda mereferensikan sebuah perimeter alih-alih mendeskripsikan area dengan koordinat, sehingga batasnya tetap sama seperti yang sudah Anda gunakan untuk aturan peringatan dan laporan.

Fungsi yang diperlukan

Jika Anda ingin
Gunakan

Merespons satu perimeter tertentu saat perangkat berada di dalamnya, memasukinya, atau meninggalkannya

inGeofence(), enterGeofence(), leaveGeofence(). Lihat Merespons satu perimeter

Mengetahui perimeter mana yang ditempati perangkat, tanpa menyebut satu perimeter pun sebelumnya

geofenceName(). Lihat Mencatat perimeter saat ini

Merespons satu perimeter

Gunakan ketiga fungsi ini saat Anda sudah tahu perimeter mana yang relevan. Masing-masing menjawab ya atau tidak untuk sebagian besar paket data yang dikirim perangkat, sehingga aliran dapat mengirim data tersebut ke salah satu cabang atau cabang lainnya. Pada beberapa paket, fungsi tidak dapat menjawab, dan sebagai gantinya fungsi mengembalikan nilai kosong. Lihat Saat fungsi perimeter tidak memberikan jawaban.

Fungsi
Menjawab ya ketika

inGeofence(id)

Perangkat saat ini berada di dalam perimeter

enterGeofence(id)

Perangkat baru saja memasuki perimeter

leaveGeofence(id)

Perangkat baru saja keluar dari perimeter

Tambahkan ke kondisi sebuah node Logika . id adalah ID numerik perimeter di akun Navixy Anda, dan pemilih akan mengisinya untuk Anda, sehingga Anda jarang mengetiknya secara manual. Lihat Cara menambahkan kondisi perimeter.

Saat fungsi perimeter tidak memberikan jawaban

inGeofence(), enterGeofence(), dan leaveGeofence() mengembalikan nilai kosong alih-alih ya atau tidak saat fungsi tidak dapat menjawab. Fungsi tidak dapat menjawab dalam kasus berikut:

  • Paket data tidak membawa koordinat. Posisi dengan kualitas buruk tetap diuji, jadi sinyal GPS yang lemah memberikan jawaban ya atau tidak yang nyata.

  • Perimeter dihapus dari akun Navixy Anda, atau menjadi tidak dapat diakses, setelah aliran disimpan. Perimeter yang sudah tidak ada saat Anda menyimpan aliran akan ditolak pada saat penyimpanan, bukan setelahnya.

Nilai kosong menghentikan kondisi yang menjadi bagiannya. Saat fungsi merupakan keseluruhan kondisi, data masuk ke jalur ELSE. Perutean itu biasanya memang yang Anda inginkan. Saat fungsi digabungkan dengan apa pun yang lain, nilai kosong dapat menghentikan seluruh kondisi, termasuk istilah yang sudah memiliki nilai. Untuk menjaga agar bagian lain dari kondisi tetap bekerja, bandingkan fungsi dengan == true:

Untuk aturan lengkapnya, lihat Nilai yang hilang dalam ekspresi.

Sintaks

Ini adalah format yang disisipkan secara otomatis oleh pemilih perimeter. Nama perimeter muncul sebagai komentar demi keterbacaan tetapi tidak memengaruhi evaluasi.

inGeofence() menerima dua parameter tambahan, sehingga dapat menguji posisi yang lebih awal alih-alih posisi saat ini:

Parameter kedua menunjukkan paket data mana yang diambil posisinya, dihitung mundur dari yang saat ini. Parameter ketiga menunjukkan apakah paket yang tidak membawa posisi harus dihitung. Keduanya opsional, dan mengikuti konvensi yang sama seperti value() fungsi.

enterGeofence() dan leaveGeofence() ambil ID perimeter dan tidak ada yang lain. Keduanya membandingkan posisi saat ini dengan posisi sebelumnya, jadi tidak ada indeks yang dapat dipilih. Sebuah aliran yang meneruskan parameter kedua ke salah satu fungsi tidak dapat disimpan, dan kesalahan akan menyebutkan nama fungsi.

Pertahankan indeks dalam rentang 0 hingga 11. inGeofence() menerima indeks yang lebih tinggi, menyimpan tanpa kesalahan, lalu mengembalikan nilai kosong untuk setiap paket.

Jangan membungkus fungsi perimeter di dalam value(). Parameter pertama dari value() adalah nama atribut, bukan ekspresi, jadi panggilan seperti value("inGeofence(35229)", 1, 'valid') mencari atribut dengan nama literal tersebut dan selalu mengembalikan nilai kosong.

Untuk value() detail fungsi, lihat Ekspresi dan sintaks Logika.

Cara menambahkan kondisi perimeter

Bidang ekspresi pada Logika panel konfigurasi node menyertakan pemilih perimeter khusus , terpisah dari pelengkapan otomatis atribut. Daftar ini menampilkan semua perimeter yang ditentukan di akun Navixy Anda, dikelompokkan berdasarkan nama dan ID.

Untuk menambahkan fungsi perimeter ke ekspresi Anda:

1

Buka konfigurasi node

Buka Logika node dengan mengekliknya di kanvas.

2

Buka pemilih perimeter

Di bidang ekspresi kondisi (JEXL) , klik ikon pemilih perimeter untuk membuka daftar perimeter.

Geofence picker list example, with all three options (in, enter, leave geofence)
3

Temukan dan pilih perimeter

Ketik sebagian nama perimeter untuk memfilter daftar. Setiap perimeter muncul tiga kali, masing-masing untuk setiap fungsi yang tersedia. Pilih entri yang menggabungkan perimeter yang Anda perlukan dengan fungsi yang sesuai dengan kondisi Anda:

  • inGeofence - gunakan saat Anda perlu memeriksa apakah perangkat saat ini berada di dalam zona yang dipilih.

  • enterGeofence - gunakan saat Anda perlu mendeteksi bahwa perangkat berpindah dari luar zona yang dipilih ke dalamnya.

  • leaveGeofence - gunakan saat Anda perlu mendeteksi bahwa perangkat berpindah dari dalam zona yang dipilih ke luar.

Pemilih menyisipkan seluruh panggilan fungsi di posisi kursor pada bidang ekspresi.

4

Gabungkan dengan kondisi lain jika perlu

Gunakan operator logika untuk menggabungkan fungsi perimeter dengan kondisi lain. Lihat Contoh kondisi.

5

Simpan konfigurasi

Klik Terapkan perubahan untuk mengonfirmasi konfigurasi node.

Pemilih perimeter hanya mencantumkan perimeter yang ada di akun Navixy Anda saat Anda membuka node. Jika Anda menambahkan perimeter baru setelah membuka node, tutup lalu buka kembali node untuk menyegarkan daftar.

Pemilih hanya menyisipkan tiga fungsi berbasis ID. Untuk menggunakan geofenceName(), ketikkan sendiri di bidang.

Contoh kondisi

Kondisi perimeter tunggal

Rute data berdasarkan apakah sebuah perangkat saat ini berada di dalam zona pengiriman:

  • Jalur THEN: Data dari perangkat di dalam zona mengalir ke sini. Gunakan cabang ini untuk memicu pemrosesan khusus zona, seperti menyesuaikan ambang batas kecepatan atau memulai atribut penghitung waktu singgah.

  • Jalur ELSE: Data dari perangkat di luar zona mengalir ke sini untuk pemrosesan standar.

Deteksi masuk

Picu tindakan saat kendaraan memasuki lokasi terbatas:

  • Jalur THEN: Hubungkan ke sebuah Webhook node untuk memberi tahu keamanan lokasi, atau ke sebuah Aksi node untuk mencatat peristiwa masuk.

  • Jalur ELSE: Lanjutkan pemrosesan data normal untuk perangkat yang tidak memasuki lokasi.

Deteksi keluar

Deteksi saat kendaraan meninggalkan area layanan yang diizinkan selama jam operasional:

  • Jalur THEN: Kirim peringatan melalui sebuah Webhook node ke sistem dispatch.

  • Jalur ELSE: Lanjutkan pemrosesan normal.

Menggabungkan beberapa perimeter

Periksa apakah perangkat berada di salah satu dari beberapa zona terbatas:

Setiap fungsi dibandingkan dengan == true, sehingga paket di mana salah satunya tidak dapat menentukan tidak menghentikan seluruh kondisi. Tanpa perbandingan tersebut, fungsi pertama yang mengembalikan nilai kosong akan menghentikan kondisi, dan perimeter lainnya tidak pernah diuji. Lihat Saat fungsi perimeter tidak memberikan jawaban.

  • Jalur THEN: Terapkan aturan atau notifikasi khusus zona.

  • Jalur ELSE: Proses data dari perangkat di luar semua zona yang tercantum.

Perimeter dikombinasikan dengan parameter perangkat

Deteksi kecepatan berlebih di dalam zona perkotaan tertentu:

  • Jalur THEN: Catat Pelanggaran kecepatan yang dibatasi pada zona tersebut, atau kirim peringatan yang ditargetkan.

  • Jalur ELSE: Lanjutkan pemrosesan standar untuk data yang patuh atau berada di luar zona.

Membandingkan dengan posisi sebelumnya

Deteksi peralihan dari luar ke dalam dengan membandingkan posisi saat ini dengan posisi sebelumnya:

Ekspresi ini mengembalikan true hanya pada paket pertama setelah perangkat memasuki perimeter. enterGeofence() melakukan hal yang sama dalam satu panggilan, jadi gunakan bentuk ini hanya ketika Anda memerlukan indeks yang berbeda dari paket sebelumnya.

Panggilan kedua dibandingkan dengan == false, sehingga ekspresi dipicu hanya ketika posisi sebelumnya diketahui dan berada di luar perimeter. Perangkat tanpa posisi valid sebelumnya tidak cocok. Jangan tulis suku kedua sebagai !inGeofence(...), yang sama sekali tidak menghasilkan apa pun ketika tidak ada posisi sebelumnya untuk diuji.

Mencatat perimeter saat ini

geofenceName() memberi tahu Anda perimeter mana yang ditempati perangkat, alih-alih menguji satu perimeter yang Anda pilih sebelumnya. Fungsi ini mengembalikan nama sebagai teks, dan Anda menyimpan teks tersebut dalam atributnya sendiri.

Satu formula mencakup setiap perimeter yang Anda miliki. Anda tidak perlu menyusun rangkaian pemeriksaan per perimeter, dan Anda tidak perlu mengedit aliran setiap kali Anda menambahkan perimeter. Berikut adalah isi atribut tersebut untuk kendaraan pengiriman yang melaporkan sepanjang hari:

Paket data

current_zone

08:14

Depo utama

09:02

(kosong)

09:47

Lokasi klien 3

Anda membuatnya sebagai atribut terhitung dalam sebuah Inisiasi Atribut node. Dari sana, ia berperilaku seperti atribut terhitung lainnya: ia muncul di Penganalisis Data, dapat ditampilkan di platform sebagai sensor kustom, dan dapat diteruskan ke sistem eksternal.

Sebelum Anda mulai

Opsi ini harus diaktifkan untuk akun Anda. geofenceName() dijual terpisah dan dinonaktifkan secara default untuk semua orang. Hubungi penyedia layanan Anda dan minta mereka mengaktifkan fungsi nama Perimeter untuk akun Anda. Sebaiknya sebutkan nama fitur internal, iot_logic_Perimeter_search.

Sampai diaktifkan, aliran yang menggunakan fungsi ini tidak dapat disimpan. Node ditandai dengan kesalahan ini:

Hapus fungsi dari node untuk menyimpan aliran, atau tunggu hingga penyedia layanan Anda mengaktifkan opsi tersebut.

Anda juga memerlukan Perimeter untuk mencari.

  • Setidaknya satu Perimeter ada di akun Anda. Lihat Perimeter.

  • Untuk mencari hanya sebagian Perimeter Anda, beri tag pada Perimeter tersebut. Lihat Gunakan tagar dan Tagar.

Tambahkan atributnya

Buat atribut terhitung dengan cara biasa, seperti dijelaskan dalam Mengelola atribut, lalu masukkan salah satu rumus di bawah ini ke dalam Rumus bidang.

Ketik nama fungsi sendiri. Atribut autocomplete tidak menyediakan geofenceName, dan pemilih Perimeter hanya tersedia di Logika node.

Rumus

Dua bentuk pertama mencakup sebagian besar kasus. Bentuk ketiga membaca posisi sebelumnya, bukan posisi saat ini.

Rumus
Apa yang dikembalikan

geofenceName()

Nama Perimeter mana pun yang saat ini sedang ditempati perangkat

geofenceName('depots')

Nama Perimeter yang diberi Tag depot yang saat ini sedang berada di dalamnya

geofenceName('', 1, 'valid')

Nama Perimeter mana pun tempat perangkat berada satu paket data sebelumnya

Ketiga parameter bersifat opsional:

  • Tag, pertama, membatasi pencarian ke Perimeter yang Anda beri Tag dengan nama tersebut. Huruf besar atau kecil tidak berpengaruh, dan Tag kosong berarti semua Perimeter. Pemberian Tag penting ketika Anda memiliki banyak Perimeter dan hanya sebagian di antaranya yang relevan untuk atribut ini, misalnya depot tetapi bukan situs pelanggan.

  • Nomor paket, kedua, menyatakan seberapa jauh ke belakang yang akan dicari: 0 adalah paket yang sedang diproses, 1 yang sebelumnya, dan seterusnya. Abaikan untuk posisi saat ini.

  • Filter posisi, yang ketiga, adalah 'valid' untuk melewati paket yang tidak membawa posisi, atau 'all' untuk menghitungnya. Abaikan, dan paket tanpa posisi akan dihitung.

Untuk batas pasti setiap parameter, lihat Fungsi nama Perimeter di dokumentasi API IoT Logic.

Apa yang dikembalikan

Atribut ini menyimpan nama perimeter sebagai teks, atau nilai kosong ketika tidak ada nama yang dapat diberikan. Nilainya kosong ketika:

  • Perangkat berada di luar semua perimeter yang dicari.

  • Paket data tidak memuat posisi.

  • Tidak ada perimeter di akun Anda yang memiliki tag yang Anda berikan.

Nilai kosong terlihat sama dalam ketiga kasus. Dalam formula, nilai kosong ini ditulis sebagai null, yang digunakan oleh contoh perutean di bawah untuk mengujinya.

Untuk mendapatkan teks yang dapat dibaca alih-alih kosong, tambahkan fallback dengan ?: operator:

Ketika suatu posisi berada di dalam dua perimeter yang saling tumpang tindih, fungsi mengembalikan salah satu dari dua nama tersebut. Navixy tidak memberi peringkat pada perimeter yang tumpang tindih, dan nama yang sama dikembalikan selama perangkat tetap berada di area tumpang tindih.

Contoh formula

Nama perimeter saat ini sebagai atribut

Dalam sebuah Inisiasi Atribut node, buat atribut bernama current_zone dengan formula ini:

Setiap paket data yang direkam di dalam perimeter akan mendapatkan nama perimeter tersebut. Paket yang direkam di luar semua perimeter akan mendapatkan nilai kosong.

Hanya perimeter yang Anda beri tag

Beri tag perimeter depot Anda dengan depot, lalu buat atribut dengan formula ini:

Perangkat di dalam depot mendapatkan nama depot tersebut. Perangkat di tempat lain mendapatkan Dalam perjalanan, termasuk perangkat di dalam perimeter yang tidak memiliki depot tag.

Perutean berdasarkan area di node Logika

geofenceName() juga berfungsi sebagai kondisi, yang berguna ketika banyak perimeter berbagi satu aturan. Untuk mengirim data yang direkam di dalam perimeter apa pun yang diberi tag restricted ke jalur THEN, gunakan kondisi ini:

  • Jalur THEN: Data yang direkam di dalam area restricted. Hubungkan ke sebuah Webhook node untuk memberi tahu dispatcher.

  • Jalur ELSE: Semua data lainnya.

Bandingkan hasilnya dengan == atau != saja. <, >, <=, dan >= operator tidak memberikan hasil yang dapat digunakan ketika nilainya kosong.

Mendeteksi perubahan area

Agar hanya terpicu pada paket saat perangkat berpindah perimeter, bandingkan nama saat ini dengan nama pada posisi sebelumnya:

Parameter pertama yang kosong berarti semua perimeter, dan 'valid' membuat perbandingan melewati paket yang tidak membawa posisi. Tanpa 'valid', paket tanpa posisi dibaca sebagai nama perimeter kosong, dan kondisi melaporkan perubahan yang sebenarnya tidak terjadi.

Pertanyaan yang sering diajukan

Di mana saya dapat menemukan ID perimeter?

Pemilih perimeter menampilkan nama dan ID numerik setiap perimeter di daftar. Anda juga dapat menemukan ID di antarmuka perimeter Navixy. Saat Anda memilih perimeter dari pemilih, ID akan disisipkan ke dalam ekspresi secara otomatis.

Dapatkah saya menyimpan pemeriksaan perimeter dalam atribut?

Ya. Keempat fungsi tersebut berfungsi dalam formula atribut maupun dalam kondisi perutean. geofenceName() merupakan pilihan yang alami, karena memberikan teks yang dapat dibaca. Tiga yang lain memberi Anda nilai ya atau tidak, atau nilai kosong ketika posisi tidak diketahui. Nilai ya atau tidak biasanya lebih berguna untuk perutean daripada untuk penyimpanan.

Pemilih perimeter hanya muncul di Logika node, jadi dalam formula atribut Anda mengetik fungsi dan ID perimeter secara manual.

Mengapa saya tidak dapat menyimpan aliran yang menggunakan geofenceName?

geofenceName() merupakan opsi berbayar dan dinonaktifkan secara default. Hubungi penyedia layanan Anda agar fitur ini diaktifkan untuk akun Anda. Lihat Sebelum Anda mulai.

Apa yang terjadi jika perimeter yang dirujuk dihapus?

Jika perimeter yang dirujuk dalam sebuah ekspresi dihapus dari akun Navixy Anda, fungsi tidak lagi dapat memberikan jawaban dan mengembalikan nilai kosong. Dalam sebuah Logika node yang menggunakan fungsi tersebut sendiri, data mengalir melalui koneksi ELSE. Node menyimpan atributnya sendiri sebagai nilai kosong, bukan sebagai false. Dalam kondisi yang menggabungkan fungsi dengan istilah lain, nilai kosong dapat menghentikan seluruh kondisi. Dalam sebuah Inisiasi Atribut node, atribut tersebut tidak memiliki nilai untuk paket itu. Lihat Nilai yang hilang dalam ekspresi.

Aliran tetap berjalan, tetapi Anda tidak dapat menyimpannya lagi sampai Anda memperbaiki ekspresi tersebut. Menyimpannya kembali gagal dengan Node "<node title>" (#<node id>) berisi perimeter yang tidak ada atau tidak dapat diakses. Perbarui atau hapus ekspresi tersebut untuk memulihkan perutean dan kemampuan menyimpan.

Apakah inGeofence mengevaluasi posisi GPS terkini perangkat?

Ya. inGeofence() memeriksa posisi yang dilaporkan dalam paket data saat ini terhadap batas perimeter. Setiap paket dievaluasi secara independen, sehingga hasilnya mencerminkan posisi perangkat pada saat paket itu diterima. Paket yang tidak membawa posisi akan mendapatkan nilai kosong, bukan true atau false.

Apa perbedaan antara inGeofence dan enterGeofence?

inGeofence() mengembalikan true untuk setiap paket yang melaporkan posisi di dalam perimeter. enterGeofence() mengembalikan true hanya untuk paket yang merekam momen perangkat melintasi batas perimeter. Gunakan inGeofence ketika Anda perlu menerapkan logika pada semua data dari dalam area. Gunakan enterGeofence ketika Anda perlu bereaksi secara spesifik terhadap peristiwa melintasi batas.

Mengapa atribut geofenceName saya selalu kosong?

Periksa penyebab berikut secara berurutan:

  1. Opsi ini tidak diaktifkan untuk akun Anda. Aliran yang disimpan sebelumnya tetap berjalan, dan fungsi mengembalikan nilai kosong untuk setiap paket. Lihat Sebelum Anda mulai.

  2. Tag yang Anda berikan tidak ditetapkan ke perimeter mana pun. Nama tag harus cocok dengan tag yang ada di akun Anda.

  3. Perangkat memang berada di luar semua perimeter yang Anda cari.

  4. Anda memiliki jumlah perimeter yang sangat besar dan formula tidak meneruskan tag apa pun. Berikan tag untuk mencari himpunan yang lebih kecil. Ambang batas pastinya ada di Fungsi nama Perimeter.

Terakhir diperbarui

Apakah ini membantu?