全部产品
Search
文档中心

IoT Platform:Sintaksis Skrip

更新时间:Jul 02, 2025

IoT Platform menyediakan parser untuk memproses data pesan yang kompleks dan mendukung komunikasi antar layanan cloud. Parser digunakan untuk mengekstrak isi pesan, mengonversi format data, dan meneruskan data. Parser dapat memproses string, data berformat JSON, serta data biner. Topik ini menjelaskan cara menulis skrip parser.

Informasi latar belakang

IoT Platform memproses dan mentransmisikan data berdasarkan format data dalam topik. Untuk informasi lebih lanjut tentang format data, lihat Format Data.

Parser yang disediakan oleh IoT Platform menggunakan sintaksis mirip dengan JavaScript. Anda dapat menulis skrip parser berdasarkan sintaksis JavaScript, namun tidak semua fitur JavaScript didukung. Bagian berikut menjelaskan cara menulis skrip tersebut.

Tulis sebuah skrip

Berikut adalah langkah-langkah untuk menulis skrip:

  1. Gunakan fungsi payload() untuk mendapatkan data yang dikirimkan oleh perangkat, lalu konversikan ke format JSON.
    var data = payload("json");
    Penting Data yang ingin di-parse harus dikonversi ke array JSON atau data JSON bersarang.
  2. Definisikan sebuah bidang dan atur nilainya berdasarkan properti yang diperoleh dari payload.
    • Untuk informasi lebih lanjut tentang cara mendefinisikan bidang menggunakan pengenal dan menetapkan tipe data, lihat bagian "Pengenal" dan "Tipe Data".
    • Anda dapat menggunakan ekspresi JSONPath atau fungsi dalam skrip untuk mendapatkan nilai bidang. Untuk informasi lebih lanjut tentang penggunaan JSONPath atau fungsi getOrNull()LanguageManual UDF dan getOrNull().

      Dalam contoh skrip berikut, Anda dapat menggunakan getOrNull(data, "items", "Humidity", "value"); untuk mendapatkan nilai 25, gunakan data.items.Temperature.value untuk mendapatkan nilai 38, dan gunakan data.iotId untuk mendapatkan nilai JCp9***.

    Penting Ketika menggunakan skrip untuk mendapatkan nilai bidang tertentu dari data perangkat yang dikirimkan:
    • Jika pengenal bidang dimulai dengan angka, Anda harus menggunakan fungsi getOrNull(). Ekspresi JSONPath tidak didukung. Sebagai contoh, Anda hanya dapat menggunakan fungsi getOrNull(data, "items", "2Co", "value") dalam contoh skrip untuk mendapatkan nilai 10 dari bidang 2Co. Ekspresi data.items.2Co.value tidak didukung.
    • Jika bidang yang nilainya ingin Anda dapatkan tidak ada dalam data perangkat yang dikirimkan, salah satu dari skenario berikut mungkin terjadi:
      • Jika Anda menggunakan fungsi getOrNull(), nilai null akan dikembalikan dan skrip dapat terus berjalan.
      • Jika Anda menggunakan ekspresi JSONPath, pointer null muncul dan skrip berhenti berjalan.

    Anda juga dapat memproses data atau melakukan perhitungan sesuai kebutuhan bisnis. Untuk informasi tentang operator dan fungsi yang didukung dalam skrip parser, lihat Operator dan Fungsi.

  3. Gunakan fungsi untuk meneruskan data.

    Untuk informasi lebih lanjut tentang fungsi tersebut, lihat Teruskan data ke tujuan.

    Anda juga dapat menggunakan pernyataan kontrol untuk menetapkan kondisi penerusan data. Dalam contoh skrip berikut, pernyataan if digunakan untuk menetapkan kondisi. Untuk informasi lebih lanjut tentang pernyataan kontrol yang didukung dalam skrip parser, lihat bagian "Pernyataan Kontrol".

Contoh skrip

Data properti berikut telah dikirimkan:

{
    "deviceType": "CustomCategory",
    "iotId": "JCp9***",
    "requestId": "1626948228247",
    "checkFailedData": {

    },
    "productKey": "a1o***",
    "gmtCreate": 1626948134445,
    "deviceName": "Device1",
    "items": {
        "Temperature": {
            "value": 38,
            "time": 1626948134319
        },
        "Humidity": {
            "value": 25,
            "time": 1626948134319
        },
        "2Co": {
            "value": 10,
            "time": 1626948134319
        }
    }
}

Skrip berikut digunakan untuk mengurai dan memproses data yang dikirimkan:

// Gunakan fungsi payload() untuk mendapatkan data yang dikirimkan oleh perangkat dan konversikan data tersebut ke data berformat JSON. 
var data = payload("json"); 
// Filter nilai suhu dan kelembapan yang dikirimkan. 
var h = getOrNull(data, "items", "Humidity", "value");
var t = data.items.Temperature.value;
var c = getOrNull(data, "items", "2Co", "value");
// Konfigurasikan aturan penerusan data. Jika nilai suhu lebih besar dari 38, aturan dipicu untuk mengirimkan data ke ApsaraDB RDS. 
// Tabel ApsaraDB RDS mencakup kolom-kolom berikut: id (primary key auto-increment), deviceName, temperature, humidity, 2Co, dan time. Anda dapat memanggil metode writeRds() dan menentukan beberapa pasangan <Nama kolom>:<Nilai> dalam metode untuk menulis nilai-nilai ke kolom yang ditentukan. 
if (t > 38) { 
    writeRds(1000, {"deviceName":deviceName(), "temperature":t, "humidity":h, "2Co":c, "time":timestamp()});  
}

Pengenal

Anda harus menggunakan pengenal untuk mendefinisikan konstanta, variabel, dan bidang kustom dalam skrip. Pengenal dapat berisi huruf, angka, dan garis bawah (_), tetapi tidak boleh dimulai dengan angka.

Kata kunci dan kata cadangan berikut tidak dapat digunakan sebagai pengenal:

  • Kata kunci: for, break, continue, if, else, true, false, var, new, null, dan return.
  • Kata cadangan: breakdo, instanceof, typeof, case, catch, finally, void, switch, while, debugger, function, this, with, default, throw, delete, in, try, as, from, classenum, extends, super, const, export, import, await, implementslet, let, private, public, interface, package, protected, static, dan yield.

Tipe Data

Number, Boolean, string, byte, map, dan array adalah tipe data yang didukung untuk konstanta, variabel, dan bidang kustom dalam skrip.

Nilai konstanta bisa bernilai null. Tipe data yang didukung untuk konstanta numerik meliputi bilangan bulat desimal, bilangan bulat heksadesimal, dan titik mengambang.

Pernyataan Kontrol

IoT Platform mendukung pernyataan for dan if...else. Pernyataan for mendukung kata kunci break dan continue.

Penting Jika Anda menggunakan pernyataan for untuk mengeksekusi fungsi penerusan data secara berulang, jumlah loop tidak boleh melebihi 100. Untuk informasi lebih lanjut tentang fungsi penerusan data, lihat Teruskan data ke tujuan.

Operator

  • Operator logika: && dan ||.

    Untuk nilai non-Boolean yang ditentukan dalam kondisi logis, nilai null menunjukkan false dan nilai lainnya menunjukkan true. Sebagai contoh, null && "x" mengembalikan false, dan null || "x" mengembalikan true.

  • Operator matematika: *, /, %, +, dan -.

    Hanya tipe data numerik yang didukung. Jika tidak, kesalahan akan terjadi.

  • Operator perbandingan: >, =>, <, <=, ==, dan !=. Operator perbandingan == hanya mendukung nilai numerik.

Komentar

Komentar multi-baris (/* ${komentar}*/) dan komentar satu baris (// ${komentar}) didukung.

Referensi

  • Untuk informasi tentang fungsi yang didukung dalam skrip, lihat Fungsi.
  • Untuk lebih banyak contoh tentang cara mengonfigurasi skrip parser untuk meneruskan data, lihat dokumentasi di direktori Contoh penerusan data.