> For the complete documentation index, see [llms.txt](https://navixy.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://navixy.com/docs/user/id/guide/account/iot-logic/nodes/logic-node.md).

# Logika

Arahkan alur data IoT Logic berdasarkan kondisi dengan node Logika. Evaluasi nilai telemetri, picu aksi untuk catatan yang cocok, dan lewati sisanya.

## Ikhtisar teknis dan kapabilitas

{% columns %}
{% column %}
Sebuah **Logika** node membuat titik percabangan cerdas yang mengarahkan data masuk ke jalur berbeda berdasarkan kondisi logis. Node ini menerima data dari node lain, memvalidasinya terhadap kondisi yang Anda tentukan, lalu mengarahkan hasilnya ke jalur berbeda berdasarkan apakah validasi berhasil atau gagal. Node ini memungkinkan Anda membangun alur kerja IF->THEN/ELSE di mana tindakan berbeda terjadi secara otomatis berdasarkan kondisi data real-time.
{% endcolumn %}

{% column %}

<figure><img src="https://3001559198-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-82bc1f63ee59856cd086bcafb471df3874d45cb5%2Fiot-logic-logic-node-tile.png?alt=media" alt="IF/THEN Logic node tile"><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

{% hint style="info" %}
Sebuah **Logika** node dikonfigurasi secara terpisah untuk setiap aliran di UI platform Navixy. Setiap node hanya berisi satu rumus logis, dengan mengandalkan [Bahasa Ekspresi Navixy IoT Logic](/docs/iot-logic-api/technologies/navixy-iot-logic-expression-language.md).\
Untuk opsi sintaks spesifik terkait ekspresi logis, lihat [ekspresi dan sintaks Logika](/docs/user/id/guide/account/iot-logic/nodes/logic-node/logic-node-expressions-and-syntax.md).
{% endhint %}

<figure><img src="https://3001559198-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-4501f0ee515603cadec633c0b982378708c29190%2Fiot-logic-logic-node-in-flow.png?alt=media" alt="IF/THEN Logic node positioning in the flow architecture (with inbound and outbound connections)"><figcaption></figcaption></figure>

### Cara kerja node Logika

Saat data pertama kali mencapai sebuah **Logika** node, IoT Logic membuat atribut boolean yang ditentukan pengguna dan menyimpan hasil evaluasi. Setiap paket data berikutnya dievaluasi terhadap ekspresi logis Anda, memperbarui nilai atribut ini dan mengarahkan data sesuai dengan itu:

* **Hasil benar**: Data mengalir melalui koneksi THEN (hijau) dengan atribut boolean disetel ke `true`.
* **Hasil salah**: Data mengalir melalui koneksi ELSE (merah) dengan atribut boolean disetel ke `false`. Itu kasus yang umum, tetapi bukan satu-satunya: pada nilai yang hilang, beberapa operator mengarahkan ke ELSE sambil membiarkan atribut `null` alih-alih `false`. Lihat [Nilai yang hilang dan perutean null](/docs/user/id/guide/account/iot-logic/nodes/logic-node/logic-node-expressions-and-syntax.md#missing-values-and-null-routing).

Evaluasi ini berlangsung secara independen untuk setiap paket data, sehingga catatan berbeda dari perangkat yang sama dapat mengikuti jalur berbeda berdasarkan kondisi real-time.

### Integrasi arsitektur aliran

Atribut boolean yang dibuat oleh **Logika** node melampaui perutean aliran dan terintegrasi dengan kemampuan pemantauan Navixy yang lebih luas. Karena ini adalah atribut khusus yang ditentukan pengguna, atribut tersebut dapat:

* **Dipantau secara real-time**: Lihat hasil evaluasi di [Penganalisis Data](/docs/user/id/guide/account/iot-logic/data-stream-analyzer.md) untuk memecahkan masalah pada kondisi dan memverifikasi logika
* **Ditambahkan sebagai sensor kustom**: Terintegrasi dengan antarmuka utama Navixy untuk pemantauan berkelanjutan

Sebagai sensor kustom, atribut ini memungkinkan dua kapabilitas utama:

* **Memicu aturan peringatan**: Anda dapat membuat aturan kustom berdasarkan nilai sensor untuk menerima notifikasi jika terjadi penyimpangan. Untuk detail tentang pembuatan aturan, lihat [Aturan dan notifikasi](/docs/user/id/guide/events-and-notifications.md).
* **Entitas yang dipantau**: Anda dapat menambahkan atribut ke [widget daftar Pelacak](/docs/user/id/guide/tracking/objects-list.md) untuk memantau nilainya bersama pembacaan perangkat lainnya. Untuk detail tentang cara membuat sensor kustom dari atribut IoT Logic, lihat [Menampilkan atribut hasil perhitungan baru di platform Navixy](/docs/user/id/guide/account/iot-logic/nodes/initiate-attribute-node/displaying-new-calculated-attributes-on-the-navixy-platform.md).

{% hint style="info" %}
Sebuah **Logika** node memerlukan koneksi ke setidaknya satu node sebelumnya (**Sumber Data** atau node pemrosesan lainnya) untuk menerima data masukan guna validasi.
{% endhint %}

### Kapabilitas node

Sebuah **Logika** node menawarkan:

* **Perutean data bersyarat**: Buat alur kerja bercabang yang secara otomatis mengarahkan data berdasarkan ekspresi logis yang menghasilkan true atau false.
* **Validasi real-time**: Uji data perangkat yang masuk terhadap aturan bisnis dan ambang operasional saat data tiba.
* **Dukungan kondisi kompleks**: Gabungkan beberapa parameter menggunakan operator logis (AND, OR, dll.) untuk pengambilan keputusan yang canggih.
* **Kondisi berbasis Perimeter**: Rujuk Perimeter Navixy yang diberi nama secara langsung di ekspresi menggunakan `inGeofence()`, `enterGeofence()`, dan `leaveGeofence()` fungsi, tanpa perbandingan koordinat manual. `geofenceName()` mengembalikan nama Perimeter yang sedang ditempati perangkat, sehingga satu kondisi dapat mencakup banyak area. Lihat [Fungsi Perimeter](/docs/user/id/guide/account/iot-logic/nodes/geofence-functions.md).
* **Pembuatan atribut**: Hasilkan atribut boolean yang merekam hasil validasi untuk digunakan di node lain, sistem pemantauan Navixy, dan layanan pihak ketiga.
* **Jalur output fleksibel**: Arahkan data melalui koneksi THEN (true) dan ELSE (false, atau kadang-kadang null pada nilai yang hilang) untuk memicu tindakan lanjutan yang berbeda.

## Opsi konfigurasi

{% columns %}
{% column valign="middle" %}
Sebuah **Logika** node memungkinkan Anda mendefinisikan ekspresi bersyarat yang mengevaluasi data masuk dan membuat jalur bercabang dalam aliran Anda berdasarkan hasilnya.
{% endcolumn %}

{% column %}

<figure><img src="https://3001559198-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-b6c0a06da08316f5e17ead42e1e5b2083b59603a%2FLogic_node_edit.png?alt=media" alt=""><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

Mari lihat elemen apa yang digunakan node ini dan apa yang dapat Anda konfigurasikan saat bekerja dengannya.

### Langkah konfigurasi

{% stepper %}
{% step %}

#### Tentukan nama node

Masukkan nama deskriptif untuk **Logika** node ini.

* Gunakan nama yang dengan jelas mengidentifikasi tujuan validasi (misalnya, *Pemeriksaan aturan peringatan suhu*, *Deteksi pelanggaran kecepatan*).
* Nama ini akan ditampilkan di diagram aliran untuk memudahkan identifikasi.
  {% endstep %}

{% step %}

#### Tentukan nama ekspresi

Masukkan nama untuk atribut boolean yang akan menyimpan hasil validasi.

* Atribut ini akan muncul di [Penganalisis Data](/docs/user/id/guide/account/iot-logic/data-stream-analyzer.md) dan tersedia untuk digunakan di node berikutnya.
* Gunakan nama deskriptif seperti *high\_temperature\_alert* atau deteksi\_pelanggaran\_kecepatan.
* Sistem akan membuat nama secara otomatis seperti *logika\_1*, *logika\_2* jika tidak ditentukan.
  {% endstep %}

{% step %}

#### Buat ekspresi bersyarat

Susun pernyataan logis Anda menggunakan bidang ekspresi.

* Gunakan [operator logis sesuai sintaks Bahasa Ekspresi Navixy IoT Logic](/docs/user/id/guide/account/iot-logic/nodes/logic-node/logic-node-expressions-and-syntax.md) untuk merujuk parameter perangkat dan atribut hasil perhitungan.
* Ekspresi harus menghasilkan nilai boolean (true/false) agar node dapat beroperasi dengan benar. Nilai yang hilang dapat berperilaku berbeda. Lihat [Nilai yang hilang dan perutean null](/docs/user/id/guide/account/iot-logic/nodes/logic-node/logic-node-expressions-and-syntax.md#missing-values-and-null-routing).
* Gunakan fitur pelengkapan otomatis [fitur pelengkapan otomatis](/docs/user/id/guide/account/iot-logic/nodes/initiate-attribute-node/managing-attributes.md#autofill-attribute-names) untuk memilih atribut yang tersedia dari Sumber Data yang terhubung.
* Untuk mereferensikan Perimeter Navixy sebagai kondisi, gunakan [pemilih Perimeter](/docs/user/id/guide/account/iot-logic/nodes/geofence-functions.md#how-to-add-a-geofence-condition) di bidang ekspresi.
  {% endstep %}

{% step %}

#### Simpan konfigurasi node

Klik **Terapkan perubahan** untuk menyelesaikan pembuatan node.
{% endstep %}

{% step %}

#### Hubungkan jalur output

Setelah Anda mengonfigurasi node, Anda perlu membuat koneksi untuk hasil validasi.

* **Koneksi THEN** (hijau): Terhubung ke node yang harus memproses data saat ekspresi bernilai true.
* **Koneksi ELSE** (merah): Terhubung ke node yang harus memproses data setiap kali ekspresi tidak bernilai true. Ini mencakup hasil false atau nilai yang hilang yang tidak dapat dievaluasi oleh node.
* Koneksi THEN wajib, sedangkan koneksi ELSE bersifat opsional.
  {% endstep %}
  {% endstepper %}

{% hint style="warning" %}
Data yang hilang sering kali diarahkan ke jalur ELSE, tetapi tidak selalu. Sebuah `!=` perbandingan antara nilai yang hilang dan literal non-null bernilai `true` dan diarahkan ke THEN sebagai gantinya, begitu pula `!~`, dan `!^` dan `!$` ketika nilai berasal dari `value()`. Kesalahan sintaks juga diarahkan ke ELSE, tetapi menyimpan atribut sebagai `null`, bukan `false`. Lihat [Nilai yang hilang dan perutean null](/docs/user/id/guide/account/iot-logic/nodes/logic-node/logic-node-expressions-and-syntax.md#missing-values-and-null-routing) untuk daftar lengkap pola aman null dan tabel operator.
{% endhint %}

Untuk informasi terperinci tentang sintaks ekspresi, operator, dan perilaku aliran data, lihat [ekspresi dan sintaks Logika](/docs/user/id/guide/account/iot-logic/nodes/logic-node/logic-node-expressions-and-syntax.md).

## Koneksi output dan aliran data

Sebuah **Logika** node membuat dua jalur output berbeda berdasarkan hasil evaluasi ekspresi.

<figure><img src="https://3001559198-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-4501f0ee515603cadec633c0b982378708c29190%2Fiot-logic-logic-node-in-flow.png?alt=media" alt="IF/THEN Logic node showing THEN and ELSE connections with green and red color coding"><figcaption></figcaption></figure>

### Koneksi THEN (<mark style="color:hijau;">hijau</mark>)

* **Aktif saat**: Ekspresi logis menghasilkan `true`.
* **Persyaratan koneksi**: Wajib. Setiap node Logika harus memiliki setidaknya satu output THEN.
* **Beberapa koneksi**: Dapat terhubung ke beberapa node berikutnya untuk pemrosesan paralel.
* **Penggunaan umum**: Memicu aturan peringatan, pemrosesan khusus, perhitungan bersyarat, atau mengarahkan data ke titik akhir tertentu.

### Koneksi ELSE (<mark style="color:merah;">merah</mark>)

* **Aktif saat**: Ekspresi logis menghasilkan `false`, bernilai `null`, atau tidak dapat dievaluasi.
* **Pengecualian yang perlu diperhatikan**: Sebagian besar perbandingan nilai yang hilang diarahkan ke sini. Sebuah `!=` perbandingan antara nilai yang hilang dan literal non-null diarahkan ke THEN sebagai gantinya, begitu pula `!~`, dan `!^` dan `!$` pada hasil yang hilang. `value()` hasil.
* **Nilai yang disimpan tidak selalu `false`**: Pengarahan ke ELSE tidak menjamin atribut boolean disimpan sebagai `false`. Perbandingan relasional (`<`, `<=`, `>`, `>=`) dan referensi nilai yang hilang secara langsung berakhir di ELSE dengan atribut dibiarkan `null`. Lihat [Nilai yang hilang dan perutean null](/docs/user/id/guide/account/iot-logic/nodes/logic-node/logic-node-expressions-and-syntax.md#missing-values-and-null-routing).
* **Persyaratan koneksi**: Opsional. Gunakan hanya ketika Anda perlu menangani hasil negatif.
* **Penanganan kesalahan**: Memproses kasus ketika ekspresi tidak dapat dievaluasi karena kesalahan sintaks atau tipe data tidak valid. Perutean data hilang bergantung pada operator. Lihat [Nilai yang hilang dan perutean null](/docs/user/id/guide/account/iot-logic/nodes/logic-node/logic-node-expressions-and-syntax.md#missing-values-and-null-routing).
* **Penggunaan umum**: Mencatat validasi yang gagal, mengarahkan data melalui jalur pemrosesan alternatif, atau melanjutkan operasi normal.

### **Persyaratan node terminal**

Saat terhubung ke node terminal ([Tindakan](/docs/user/id/guide/account/iot-logic/nodes/action-node.md), [Webhook](/docs/user/id/guide/account/iot-logic/nodes/webhook-node.md)) yang tidak mendukung koneksi keluar, buat koneksi paralel untuk memastikan node terminal dan Titik Akhir Output sama-sama menerima data:

<figure><img src="https://3001559198-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-4501f0ee515603cadec633c0b982378708c29190%2Fiot-logic-logic-node-in-flow.png?alt=media" alt=""><figcaption></figcaption></figure>

**Mengapa kedua cabang memerlukan Titik Akhir Output:**

* Memastikan persistensi data dan visibilitas sistem
* Memungkinkan validasi aliran
* Kedua cabang dapat berbagi node Titik Akhir Output yang sama

{% hint style="danger" %}
**Kesalahan validasi:** Aliran tanpa Titik Akhir Output di semua cabang akan gagal disimpan dengan kesalahan ini.
{% endhint %}

## Pertanyaan yang sering diajukan

#### Apakah saya dapat menggunakan atribut yang dibuat oleh node lain dalam ekspresi Logika?

Ya. **Logika** node dapat merujuk ke atribut apa pun yang tersedia dari Sumber Data yang terhubung, termasuk parameter perangkat asli dan atribut yang dihitung oleh node **Inisiasi Atribut** node sebelumnya. Fitur pelengkapan otomatis membantu Anda memilih dari semua atribut yang tersedia.

#### Apa yang terjadi jika ekspresi saya mengandung kesalahan sintaks?

Jika ekspresi mengandung kesalahan sintaks atau tidak dapat dievaluasi, **Logika** node mengarahkan data melalui koneksi ELSE dan menyimpan atribut sebagai `null`, bukan `false`. Periksa sintaks ekspresi dan pastikan semua atribut yang dirujuk ada di aliran data Anda.

#### Apakah saya dapat menghubungkan beberapa node ke output node Logika yang sama?

Ya. Koneksi THEN dan ELSE mendukung beberapa koneksi keluar, sehingga Anda dapat memicu beberapa tindakan berbeda berdasarkan kondisi logis yang sama. Ini memungkinkan pemrosesan paralel untuk alur kerja bisnis yang kompleks.

#### Bagaimana cara memantau hasil node Logika?

Hasil node Logika muncul sebagai atribut boolean di [Penganalisis Data](/docs/user/id/guide/account/iot-logic/data-stream-analyzer.md) tabel. Pilih perangkat Anda dan cari nama atribut yang Anda tentukan di bidang nama ekspresi. Nilai biasanya ditampilkan sebagai `true` atau `false`, tetapi nilai yang hilang dapat membiarkan atribut `null` sebagai gantinya, tergantung pada operator. Lihat [Nilai yang hilang dan perutean null](/docs/user/id/guide/account/iot-logic/nodes/logic-node/logic-node-expressions-and-syntax.md#missing-values-and-null-routing).

#### Mengapa kondisi saya terpicu padahal atribut belum memiliki nilai?

Kemungkinan besar kondisi tersebut menggunakan `!=` terhadap literal non-null, atau `!~`, pada nilai yang belum pernah diterima. Kedua operator memperlakukan "tidak ada nilai" sebagai berbeda dari literal yang Anda bandingkan, sehingga keduanya bernilai `true` dan mengarahkan ke THEN. Default yang aman akan melakukan sebaliknya. Operator `!^` dan `!$` melakukan hal yang sama pada hasil yang hilang, `value()` dan menghasilkan `null` ketika atribut dirujuk dengan nama. Tambahkan penjaga keberadaan (`value('attr', 0, 'all') != null && ...`) atau pemeriksaan eksplisit `== null` untuk memeriksa apakah kondisi hanya boleh terpicu setelah atribut memiliki nilai nyata. Lihat [Nilai yang hilang dan perutean null](/docs/user/id/guide/account/iot-logic/nodes/logic-node/logic-node-expressions-and-syntax.md#missing-values-and-null-routing) untuk rincian lengkap per operator.

#### Apakah saya dapat merangkai beberapa node Logika?

Ya. Anda dapat menghubungkan **Logika** node secara berurutan untuk membuat pohon keputusan yang kompleks. Setiap **Logika** node dapat merujuk pada atribut boolean yang dibuat oleh node sebelumnya, **Logika** sehingga memungkinkan alur kerja validasi multi-tahap yang canggih.

<figure><img src="https://3001559198-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F446mKak1zDrGv70ahuYZ%2Fuploads%2Fgit-blob-ee4829400641ec381aa3dec65b7dbb1d01d6ebc1%2Fiot-logic-logic-node-chained.png?alt=media" alt="Example flow showing multiple IF/THEN Logic nodes connected in sequence for complex decision trees"><figcaption></figcaption></figure>

#### Mengapa cabang Logika harus terhubung ke Titik Akhir Output?

Setiap cabang Logika harus berakhir di Titik Akhir Output untuk validasi aliran data dan visibilitas sistem. Saat menggunakan node terminal (Action, Webhook) yang tidak mendukung koneksi keluar, buat koneksi paralel dari node Logika langsung ke Titik Akhir Output. Kedua cabang dapat berbagi Titik Akhir Output yang sama jika diperlukan.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://navixy.com/docs/user/id/guide/account/iot-logic/nodes/logic-node.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
