> 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/data-source-node.md).

# Sumber Data

## Ikhtisar teknis dan kapabilitas

{% columns %}
{% column %}
**Sumber Data** Simpul adalah titik masuk untuk data telemetri dari perangkat IoT dan platform OEM dalam sistem IoT Logic. Simpul ini berfungsi sebagai penerjemah universal, menerima data melalui protokol TCP/UDP/HTTP pada antarmuka jaringan dan melalui antrean MQTT, lalu mendekode aliran data masuk sesuai dengan protokol yang dipilih. Simpul mengubah pesan perangkat menjadi format terstandarisasi yang dapat diproses lebih lanjut dalam aliran Anda.
{% endcolumn %}

{% column %}

<figure><img src="/files/74486dd93b8f650d30160728c760eafc675a8939" alt="Data source node in the flow workspace"><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

Selain menerima telemetri, sebuah  **Sumber Data** simpul juga dapat memperkaya perangkat yang telah Anda tambahkan ke dalamnya. Sistem eksternal, seperti platform telematika terpisah yang secara default tidak mengirim data ke Navixy, mendorong atribut tambahan ke aliran perangkat. Terkadang platform eksternal tersebut adalah milik produsen perangkat itu sendiri. Alih-alih memigrasikan perangkat ke pengambilan data bawaan Navixy,  **Software** tab mempertahankannya tetap terdaftar apa adanya. Tab ini terus memperkaya aliran perangkat dengan data dari platform lain tersebut, sehingga kedua aliran berjalan paralel. Lihat  [Cara penanganan data yang didorong](#how-pushed-data-is-handled) untuk mekanismenya, dan  [Opsi konfigurasi](#configuration-options) untuk menyiapkannya.

### Integrasi arsitektur aliran

<figure><img src="/files/4064dac14ab1c97ecd00b4c1b02c7e75f8e00d3a" alt="Data source node included in a flow on workspace"><figcaption></figcaption></figure>

**node Sumber Data** berfungsi sebagai titik masuk data dalam aliran IoT Logic. Satu aliran dapat berisi beberapa simpul sumber, masing-masing dengan konfigurasi independen. Arsitektur ini memungkinkan:

* Pengambilan data awal dari berbagai jenis perangkat dan format protokol
* Transformasi data terstandar dari berbagai produsen menjadi format terpadu
* Jalur pemrosesan paralel dengan menghubungkan satu sumber data ke beberapa simpul hilir
* Penyaringan perangkat secara selektif untuk hanya menyertakan sumber data yang relevan dalam aliran Anda
* Pengayaan aliran untuk perangkat yang sudah terhubung, menggunakan atribut yang didorong dari sistem eksternal melalui HTTP

### Kapabilitas node

Laporan **node Sumber Data** sendiri menyediakan:

* **Keragaman protokol**: Mendukung berbagai produsen perangkat, termasuk Teltonika, Queclink, Suntech, Jimi, dan lainnya, melalui parser dan dekoder bawaan Navixy
* **Fleksibilitas transportasi**: Mendukung protokol TCP, UDP, HTTP, dan koneksi broker MQTT
* **Transformasi data terpadu**: Mengonversi pesan spesifik perangkat ke format terstandar untuk pemrosesan yang konsisten
* **Penyaringan perangkat**: Menyediakan kemampuan penyaringan untuk memilih model atau protokol tertentu
* **Pemrosesan waktu nyata**: Menangani aliran data telemetri masuk secara waktu nyata untuk pemrosesan segera
* **Pengayaan push HTTP**: Menggabungkan atribut yang didorong dari sistem eksternal ke aliran perangkat yang sudah dipilih di simpul ini. HTTP saat ini adalah satu-satunya jenis push yang didukung, dengan arsitektur yang dirancang untuk mendukung lebih banyak di masa mendatang

## Opsi konfigurasi

{% columns %}
{% column width="58.333333333333336%" valign="middle" %}
Mengonfigurasi sebuah **Sumber Data** Simpul menentukan perangkat mana yang mengirim data ke aliran Anda dan, secara opsional, bagaimana sistem eksternal dapat memperkaya perangkat tersebut dengan data yang didorong.

Dialog konfigurasi diatur dalam dua tab:

* **Perangkat**: memilih perangkat yang mengirim telemetri ke aliran. Wajib, dan berfungsi persis seperti sebelumnya.
* **Software** : mengonfigurasi pengayaan push HTTP untuk perangkat yang Anda pilih di tab Perangkat. Opsional, dan bergantung pada pilihan tersebut.
  {% endcolumn %}

{% column width="41.666666666666664%" %}

<figure><img src="/files/e03397096a962ff7d4ea53f2f895dff569712723" alt=""><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

{% hint style="info" %}
Laporan **Software** tab ini bergantung pada  **Perangkat** tab Perangkat. Pemilihnya  **Perangkat sumber** hanya mencantumkan perangkat yang sudah dipilih di  **Perangkat**, dan tidak menampilkan data yang tersedia sampai Anda memilih setidaknya satu di sana.
{% endhint %}

Mari lihat elemen yang digunakan node ini dan hal yang dapat Anda konfigurasi saat menggunakannya:

### Langkah konfigurasi

{% stepper %}
{% step %}

#### Tentukan nama node

Masukkan nama deskriptif untuk sumber data ini:

* Gunakan nama yang membantu Anda mengidentifikasi produsen, model, atau informasi relevan lainnya.
* Nama ini akan ditampilkan di diagram aliran agar mudah dikenali.
  {% endstep %}

{% step %}

#### Pilih sumber data

Dari daftar yang difilter, pilih perangkat yang akan disertakan. Hanya perangkat yang terdaftar di akun pengguna Navixy Anda yang tersedia untuk dipilih. Pilihan ini juga merupakan prasyarat untuk **Software** tab, yang hanya dapat memetakan perangkat yang dipilih di sini.
{% endstep %}

{% step %}

#### Simpan konfigurasi node

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

{% step %}

#### Konfigurasi pengayaan push HTTP (opsional)

Beralih ke **Software** tab untuk memperkaya perangkat yang Anda pilih di tab Perangkat dengan data yang didorong dari sistem eksternal. Langkah ini opsional. Lihat  [Mengonfigurasi pengayaan push HTTP](#configuring-http-push-enrichment) untuk pengaturan lengkap.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
Jika Anda mengubah pengaturan produsen atau model setelah memilih perangkat, Navixy akan memberi tahu Anda jika ada perangkat yang dipilih yang tidak cocok dengan parameter baru, tetapi tidak akan otomatis menghapusnya dari pilihan Anda.
{% endhint %}

### Mengonfigurasi pengayaan push HTTP

Pengayaan push HTTP memungkinkan sistem eksternal menambahkan atribut ke perangkat yang sudah dipilih di simpul ini **Perangkat** tab, dengan mendorong data ke URL yang dihasilkan. Ini opsional, dan memerlukan setidaknya satu perangkat yang dipilih di bawah  [Langkah konfigurasi](#configuration-steps) terlebih dahulu.

Ini berguna ketika sebuah perangkat sudah melaporkan ke sistem terpisah yang secara default tidak mengirim data ke Navixy, misalnya platform manajemen baterai yang melacak tingkat pengisian daya kendaraan yang sama. Alih-alih memigrasikan perangkat ke pengambilan data bawaan Navixy, Anda dapat membiarkannya tetap terdaftar apa adanya dan membiarkan platform lain itu mengirim pembacaannya ke sini. Sebuah push dengan  `vehicle_id: "truck_12"`, `bms_battery_soc: 76`, dan `bms_battery_temp: 34.2` menambahkan `bms_battery_soc` dan `bms_battery_temp` sebagai atribut baru pada perangkat yang dipetakan, bersama telemetri GPS bawaannya.

{% stepper %}
{% step %}

#### Setel jenis konektor

Beralih ke **Software** tab dan setel **Jenis Konektor** menjadi **HTTP**, saat ini satu-satunya opsi.
{% endstep %}

{% step %}

#### Simpan aliran dan salin URL yang dihasilkan

Simpan seluruh aliran, bukan hanya node ini. Kolom **URL** hanya menghasilkan nilai setelah aliran disimpan dengan **Jenis Konektor** disetel. Sampai saat itu, kolom menampilkan placeholder yang meminta Anda menyimpan aliran. Setelah URL muncul, klik ikon salin di sebelahnya, yang nonaktif hanya saat kolom kosong.
{% endstep %}

{% step %}

#### Autentikasi sistem eksternal

Berikan sistem eksternal [kunci API Navixy](/docs/user/id/guide/account/api-keys.md), dan konfigurasikan agar mengirim `Authorization: NVX <api_key>` dalam setiap permintaan push, bersama dengan URL. Push tanpa header ini akan gagal, jadi URL dan header sama-sama diperlukan sebelum data dapat masuk.
{% endstep %}

{% step %}

#### Tentukan kunci utama dan pemetaan

Masukkan sebuah **Kunci utama**: nama bidang yang digunakan sistem eksternal untuk mengidentifikasi perangkat mana yang menjadi milik rekaman yang dikirim. Bidang ini menerima hingga 64 karakter, hanya huruf, digit, dan garis bawah.

Tambahkan satu **Pemetaan** baris per perangkat yang akan diperkaya. Untuk setiap baris, pilih **Perangkat sumber**, yang dibatasi pada perangkat yang sudah dipilih di Perangkat, dan masukkan **Nilai kunci** yang mengidentifikasi perangkat tersebut dalam push masuk. Bidang ini menyimpan hingga 255 karakter, tetapi endpoint push itu sendiri hanya menerima hingga 100 karakter per bidang, jadi dalam praktiknya pertahankan nilai jauh di bawah 100 karakter.

{% hint style="warning" %}
Baik Kunci utama maupun Nilai kunci hanya menerima huruf, digit, dan garis bawah, tanpa tanda hubung atau tanda baca lainnya. Validasi bidang umum pada endpoint push lebih permisif dan menerima tanda hubung di bidang apa pun tanpa masalah, tetapi nilai yang mengandung tanda hubung tidak akan pernah cocok dengan Nilai kunci yang disimpan, sehingga push yang menggunakannya dibuang secara diam-diam, persis seperti saat nilainya tidak cocok. Jika pengenal sistem eksternal Anda menggunakan tanda hubung (misalnya `truck-12`), lalu terjemahkan, misalnya menjadi `truck_12`, sebelum melakukan push.
{% endhint %}
{% endstep %}

{% step %}

#### Terapkan dan simpan

Klik **Terapkan perubahan**, lalu simpan aliran itu lagi jika Anda mengonfigurasi tab Software setelah penyimpanan awal.
{% endstep %}
{% endstepper %}

### Detail pemrosesan data

**Node Sumber Data** mewarisi semua parser dan decoder dari Navixy, sehingga memberikan kompatibilitas dengan berbagai perangkat IoT. Saat data tiba di simpul ini, data tersebut melalui proses berikut:

1. Aliran data masuk diterima melalui protokol transport yang ditentukan
2. Data diteruskan ke decoder protokol yang sesuai berdasarkan konfigurasi Anda
3. Pesan perangkat diubah menjadi format standar yang dapat diproses oleh IoT Logic
4. Data terpadu diteruskan ke node berikutnya dalam aliran Anda

Proses standarisasi ini memungkinkan Anda membangun alur pemrosesan yang konsisten terlepas dari format data asli dari berbagai produsen perangkat.

### Cara penanganan data yang didorong

Navixy mencocokkan setiap push masuk berdasarkan nilai primary key-nya terhadap yang dikonfigurasi pada node **Pemetaan**, lalu menggabungkan field yang tersisa ke dalam aliran data perangkat yang dipetakan sebagai atribut: baru jika nama field baru, atau ditulis ke riwayat atribut yang sudah ada jika nama tersebut cocok dengan salah satu yang sudah ada, baik dilaporkan secara native oleh perangkat maupun didorong oleh konektor aliran lain. Itu tidak memengaruhi lokasi atau telemetri lainnya. Field yang disebutkan dalam **Kunci utama**, bersama dengan `aliran_id` dan `node_id`, digunakan untuk perutean dan tidak pernah menjadi atribut itu sendiri. Sebuah permintaan dapat berakhir dalam salah satu dari tiga status:

| Hasil                                                 | Respons HTTP        | Data berhasil digabung?                                                                                                                           |
| ----------------------------------------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| Nilai kunci utama cocok dengan pemetaan               | 200, `sukses: true` | Ya. Bidang yang tersisa digabungkan sebagai atribut baru jika namanya baru, atau ke riwayat yang sudah ada jika cocok dengan yang sudah digunakan |
| Nilai kunci utama tidak cocok dengan pemetaan apa pun | 200, `sukses: true` | Tidak. Dibuang tanpa pemberitahuan                                                                                                                |
| Hilang atau tidak valid `Authorization` header        | galat 400           | Tidak. Ditolak sebelum Navixy memeriksa kunci utama                                                                                               |

{% hint style="info" %}
Respons 200 hanya menegaskan bahwa Navixy menerima permintaan, bukan bahwa data telah digabungkan. Nilai kunci utama yang tidak cocok dibuang tanpa pemberitahuan, tanpa galat yang menandainya. Jika Anda tidak yakin bahwa push telah cocok, periksa atribut perangkat yang dipetakan di [Penganalisis Data](/docs/user/id/guide/account/iot-logic/data-stream-analyzer.md) alih-alih mengandalkan responsnya.
{% endhint %}

{% hint style="warning" %}
Nama bidang yang dikirim berbagi satu namespace dengan atribut asli perangkat itu sendiri, dan dengan nama yang dikirim oleh konektor dari aliran lain yang memperkaya perangkat yang sama. Jika nama tersebut cocok dengan salah satu yang sudah digunakan, baik yang asli pada perangkat maupun yang dikirim oleh aliran lain, push akan menimpa riwayat atribut tersebut yang sudah ada alih-alih membuat yang terpisah.

Sensor, laporan, dan aturan peringatan membaca nilai yang digabung sebagai pembacaan nyata, jadi nama yang bertabrakan dapat menghasilkan data palsu di hilir. Misalnya, bidang yang dikirim bernama `level Bahan bakar` yang cocok dengan atribut bahan bakar asli perangkat akan menyuntikkan pembacaan palsu, menghasilkan kejadian penurunan bahan bakar atau pengisian ulang palsu dalam laporan.

Untuk menghindarinya, beri awalan pada nama bidang yang dikirim agar tidak bertabrakan dengan atribut asli perangkat atau nama yang dikirim dari aliran lain, misalnya `bms_battery_soc` sebagai ganti `battery_soc`.

Bidang pesan sistem seperti `kecepatan`, `lintang`, `bujur`, `arah`, `satelit`, dan `hdop` tidak dapat ditimpa dengan cara ini. Push hanya pernah membuat atau memperbarui atribut, bukan telemetri tingkat pesan. Bidang yang dikirim yang menggunakan salah satu nama itu tetap muncul dengan nama tersebut di [Penganalisis Data](/docs/user/id/guide/account/iot-logic/data-stream-analyzer.md), terpisah dari telemetri asli perangkat.
{% endhint %}

Atribut yang digabung menjadi entri sesaat dalam riwayat atribut perangkat, bukan nilai aktif yang melekat. Jika perangkat melaporkan telemetrinya sendiri jauh lebih sering daripada saat sistem eksternal mengirim pembaruan, paket perangkat sendiri dapat mendorong riwayat atribut melewati nilai yang dikirim dalam hitungan detik, meskipun penggabungan berhasil.

{% hint style="info" %}
Ini adalah konsekuensi yang diharapkan dari dua aliran data yang berjalan dengan kecepatan berbeda, bukan cacat. Rujuk atribut di hilir sebagai `value('attribute_name', 0, 'valid')` alih-alih nama mentahnya. `'valid'` menelusuri kembali riwayat atribut hingga pembacaan terakhir yang tidak null, sehingga simpul di hilir mendapatkan nilai yang dikirim tanpa memandang waktu. 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 melihat bagaimana `'valid'` dibandingkan dengan `'all'` dalam kondisi node Logic.
{% endhint %}

Endpoint push menerima hingga 1 permintaan per detik per kunci API, dengan ukuran burst 1. Atur laju permintaan sistem eksternal sesuai dengan itu.

## Pertanyaan yang sering diajukan

#### Dapatkah saya menggunakan beberapa node Sumber Data dalam satu aliran?

Ya, Anda dapat menggunakan beberapa **Node Sumber Data** dalam satu ruang kerja. Ini berguna ketika Anda perlu memproses data dari berbagai jenis perangkat dengan cara yang berbeda atau ingin menggabungkan beberapa aliran data setelah transformasi tertentu.

#### Apa yang terjadi jika perangkat sudah digunakan di aliran lain?

Perangkat dapat menjadi milik beberapa aliran sekaligus. Jika Anda menambahkan perangkat yang sudah digunakan di aliran lain, kedua aliran memproses datanya secara bersamaan dan hasilnya digabung untuk menghindari kehilangan data. Ditetapkan ke aliran lain bukanlah batasan. Namun, jika konektor dari dua aliran mengirim nama atribut yang sama ke perangkat itu, keduanya tidak digabungkan tanpa dampak. Riwayat satu push menimpa riwayat yang lain. Lihat [Cara penanganan data yang didorong](#how-pushed-data-is-handled) untuk menghindari nama yang bertabrakan.

#### Apakah semua perangkat Navixy saya otomatis tersedia di IoT Logic?

Ya, semua perangkat dari akun pengguna Navixy Anda dapat digunakan dalam pemrosesan IoT Logic. Ini mencakup perangkat GPS, platform OEM, perangkat dan gateway MQTT, serta konektor MQTT/Kafka. Perangkat yang sudah dipilih dalam sebuah **Sumber Data** node juga dapat diperkaya dengan atribut yang dikirim dari sistem eksternal melalui HTTP, lewat node itu **Software** tab.

#### Bagaimana saya mengetahui produsen mana yang harus dipilih untuk perangkat saya?

Protokol harus sesuai dengan protokol komunikasi yang digunakan oleh produsen perangkat Anda. Sebagian besar perangkat menggunakan protokol yang terkait dengan produsennya (misalnya, perangkat Teltonika menggunakan protokol Teltonika). Periksa dokumentasi perangkat Anda atau hubungi penyedia perangkat Anda jika Anda tidak yakin.

#### Dapatkah saya menghubungkan node Sumber Data ke beberapa node hilir?

Ya, Anda dapat menghubungkan sebuah **node Sumber Data** ke beberapa node pemrosesan untuk membuat jalur pemrosesan paralel. Ini memungkinkan Anda menerapkan transformasi yang berbeda pada aliran data yang sama. Berikut contohnya:

<figure><img src="/files/089de899546bdb5a3ccdb87a90aa4cc331f0c642" alt="Example showing the Data source node in context with multiple outbound connections and outputs"><figcaption></figcaption></figure>

#### Dapatkah saya memasukkan data dari sistem yang bukan perangkat Navixy?

Ya, melalui **Software** tab, tetapi hanya untuk memperkaya perangkat yang sudah Anda tambahkan di **Perangkat** tab. Itu bukan cara untuk membuat aliran tanpa perangkat di dalamnya.

#### Sistem yang saya kirimkan data darinya melaporkan lebih jarang daripada perangkat saya, apakah data yang dikirim akan hilang?

Tidak, tetapi atribut yang dikirim dapat dengan cepat berhenti menjadi nilai saat ini jika perangkat melaporkan jauh lebih sering, karena kedua kontributor berbagi riwayat bergulir yang sama. Rujuk atribut di hilir sebagai `value('attribute_name', 0, 'valid')` alih-alih nama mentahnya untuk mendapatkan pembacaan aktual terakhir secara andal, apa pun waktunya. Ini merupakan konsekuensi yang diharapkan dari dua aliran yang berjalan dengan kecepatan berbeda, bukan cacat. Lihat [Cara penanganan data yang didorong](#how-pushed-data-is-handled) dan [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 `'valid'` vs `'all'` perbedaan dalam kondisi simpul Logic.

#### Saya mengirim data, tetapi data itu tidak muncul. Apa yang salah?

Periksa hal-hal berikut secara berurutan:

1. Pastikan permintaan menyertakan yang valid `Authorization: NVX <api_key>` header. Header yang hilang atau tidak valid akan langsung gagal dengan kesalahan HTTP 400.
2. Pastikan nama field yang dikirim cocok dengan **Kunci utama** pengaturan simpul secara persis, dan nilainya cocok dengan salah satu yang dikonfigurasi **Pemetaan** secara persis, hanya huruf, digit, dan garis bawah. Nilai dengan tanda hubung adalah penyebab paling umum: nilai itu lolos validasi endpoint push sendiri tanpa kesalahan, tetapi tidak akan pernah cocok dengan nilai Key yang tersimpan, sehingga permintaan tetap mengembalikan sukses sementara tidak ada yang digabungkan.
3. Periksa riwayat atribut di Penganalisis Data, bukan hanya nilai saat ini. Perangkat yang sering melaporkan telemetrinya sendiri dapat menggeser nilai gabungan keluar dari slot saat ini dalam hitungan detik, meskipun penggabungan berhasil.

#### Saya mengirim sebuah field dan pembacaan perangkat itu sendiri terlihat salah

Nama field yang dikirim kemungkinan cocok dengan atribut bawaan yang sudah dilaporkan perangkat, atau yang dikirim oleh konektor aliran lain, dan menimpa riwayatnya alih-alih membuat atribut terpisah. Ubah nama field yang dikirim dengan awalan yang berbeda, lalu periksa riwayat atribut di [Penganalisis Data](/docs/user/id/guide/account/iot-logic/data-stream-analyzer.md) untuk memastikan nilai yang dikirim dan nilai bawaan tidak lagi tercampur.


---

# 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/data-source-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.
