All Products
Search
Document Center

IoT Platform:Struktur data ThingModelJson

Last Updated:Jun 17, 2026

Parameter ThingModelJson, yang digunakan dalam permintaan dan respons API model TSL tertentu, merepresentasikan cara IoT Platform menyimpan definisi fitur model TSL secara internal. Struktur ini berbeda dari struktur data TSL, dengan semua field diurutkan secara alfabetis berdasarkan kunci.

Untuk batasan definisi fitur TSL pada produk dan perangkat, lihat Batasan Definisi Fitur TSL untuk Produk dan Perangkat.

Struktur data

Modul TSL bawaan dan kustom memiliki struktur data yang berbeda.

  • Modul TSL bawaan
    {
      "_ppk":{
           "description":"test",
           "version":"159244410****"
      }
      "events":[],
      "productKey":"al12345****",
      "properties":[],
      "services":[],
      "functionBlocks":[{
          "productKey":"al12345****",
          "functionBlockId":"location0",
          "functionBlockName":"Location module 0"
        }]
    }
    Parameter Type Description
    productKey String ProductKey dari produk tempat model TSL tersebut berada.
    _ppk String Informasi versi model TSL, yang mencakup field berikut:
    • version: Nomor versi model TSL. Parameter ini hanya dikembalikan untuk model TSL yang telah dipublikasikan.
    • description: Deskripsi versi modul TSL bawaan. Parameter ini hanya dikembalikan untuk model TSL yang telah dipublikasikan.
    properties List Daftar properti dalam model TSL. Untuk informasi lebih lanjut mengenai struktur data properti, lihat Spesifikasi struktur data properti.

    Gunakan extendConfig dalam setiap struktur data properti untuk mendefinisikan informasi tambahan. Untuk informasi lebih lanjut, lihat Spesifikasi struktur data extendConfig. Jika suatu properti tidak memiliki informasi tambahan, Anda tidak perlu meneruskan extendConfig.

    services List Daftar layanan dalam model TSL. Untuk informasi lebih lanjut mengenai struktur data layanan, lihat Spesifikasi format data layanan.

    Gunakan extendConfig dalam setiap struktur data layanan untuk mendefinisikan informasi tambahan. Untuk informasi lebih lanjut, lihat Spesifikasi struktur data extendConfig. Jika suatu layanan tidak memiliki informasi tambahan, Anda tidak perlu meneruskan extendConfig.

    events List Daftar event dalam model TSL. Untuk informasi lebih lanjut mengenai struktur data event, lihat Spesifikasi format data event.

    Gunakan extendConfig dalam setiap struktur data event untuk mendefinisikan informasi tambahan. Untuk informasi lebih lanjut, lihat Spesifikasi struktur data extendConfig. Jika suatu event tidak memiliki informasi tambahan, Anda tidak perlu meneruskan extendConfig.

    functionBlocks List Daftar modul TSL kustom. Hanya disertakan jika produk memiliki modul kustom. Berisi field berikut:
    • productKey: ProductKey dari produk tempat model TSL tersebut berada.
    • functionBlockId: Pengidentifikasi unik untuk modul TSL kustom dalam suatu produk.
    • functionBlockName: Nama modul TSL kustom.
  • Modul TSL kustom
    {
      "productKey":"al12345****", 
      "identifier":"location0",
      "name":"Location module 0",
      "properties":[],
      "services":[],
      "events":[],
      "description":""
    }

    Tabel berikut mencantumkan parameter dasar modul TSL kustom. Untuk parameter lainnya, lihat deskripsi modul TSL bawaan.

    Parameter Type Description
    identifier String Pengidentifikasi unik untuk modul TSL kustom dalam suatu produk.

    Pengidentifikasi dapat terdiri dari maksimal 30 karakter dan boleh berisi huruf kapital, huruf kecil, angka, serta garis bawah (_).

    name String Nama modul TSL kustom.

    Nama harus terdiri dari 4 hingga 30 karakter dan boleh berisi karakter Tionghoa, Jepang, huruf Latin, angka, serta garis bawah (_). Satu karakter Tionghoa atau Jepang dihitung sebagai satu karakter.

    description String Deskripsi modul, dengan panjang maksimum 100 karakter.

Struktur data properti

Tabel berikut mencantumkan parameter untuk mendefinisikan sebuah properti.

Penting Parameter std dan customFlag sudah tidak digunakan lagi (deprecated). Parameter ini tidak memengaruhi panggilan API yang sudah ada, dan Anda tidak perlu menentukannya untuk panggilan baru.
Parameter Type Required Description
productKey String Yes ProductKey dari produk tempat model TSL tersebut berada.
createTs Long No Waktu pembuatan fitur, dalam bentuk timestamp 13 digit. Jika Anda tidak menentukan parameter ini, sistem akan menghasilkan nilai tersebut. Fitur diurutkan berdasarkan timestamp ini secara menaik.
Catatan Untuk model TSL yang sudah ada, waktu pembuatan adalah waktu ketika model TSL pertama kali dimodifikasi setelah dipublikasikan.
identifier String Yes Pengidentifikasi unik properti. Panjangnya maksimal 50 karakter dan boleh berisi huruf kapital, huruf kecil, angka, serta garis bawah (_).
Catatan Pengidentifikasi tidak boleh merupakan kata kunci yang dicadangkan, seperti set, get, post, property, event, time, atau value.
dataType String Yes Tipe data properti.

Nilai yang valid: ARRAY, STRUCT, INT, FLOAT, DOUBLE, TEXT, DATE, ENUM, dan BOOL.

Parameter yang harus Anda tentukan bervariasi tergantung tipe datanya. Untuk informasi lebih lanjut, lihat spesifikasi data untuk setiap tipe data dalam topik ini.

name String Yes Nama tampilan properti. Panjangnya maksimal 30 karakter dan boleh berisi karakter Tionghoa, huruf kapital, huruf kecil, angka, tanda hubung (-), garis bawah (_), serta titik (.). Nama harus dimulai dengan karakter Tionghoa, huruf, atau angka. Satu karakter Tionghoa dihitung sebagai satu karakter.
rwFlag String Yes Apakah properti bersifat read-only atau read-write di IoT Platform.
  • READ_WRITE: Baca dan tulis.
  • READ_ONLY: Hanya baca.
dataSpecs Object No Jika dataType diatur ke INT, FLOAT, DOUBLE, TEXT, DATE, atau ARRAY, spesifikasi data disimpan dalam parameter dataSpecs. Untuk contoh, lihat blok kode di bawah tabel ini.
Catatan
  • Spesifikasi data berlaku untuk semua data kecuali definisi properti, layanan, event, dan parameter.
  • Anda harus menentukan salah satu dari parameter dataSpecs atau dataSpecsList berdasarkan tipe datanya. Anda tidak boleh menentukan keduanya sekaligus.
dataSpecsList List No Jika dataType diatur ke ENUM, BOOL, atau STRUCT, spesifikasi data disimpan dalam parameter dataSpecsList. Untuk contoh, lihat blok kode di bawah tabel ini.
Catatan
  • Spesifikasi data berlaku untuk semua data kecuali definisi properti, layanan, event, dan parameter.
  • Anda harus menentukan salah satu dari parameter dataSpecs atau dataSpecsList berdasarkan tipe datanya. Anda tidak boleh menentukan keduanya sekaligus.
required Boolean Yes Menentukan apakah properti tersebut wajib untuk kategori standar.
  • true: Ya
  • false: Tidak
custom Boolean Yes Menentukan apakah ini merupakan fitur kustom.
  • true: Ya
  • false: Tidak
  • Contoh dataSpecs ketika dataType adalah INT:
    {
      "dataSpecs": {
        "custom": true,
        "dataType": "INT",
        "defaultValue": "30",
        "max": "1440",
        "min": "0",
        "step": "10",
        "unit": "min"
      }
    }
  • Contoh dataSpecs ketika dataType adalah TEXT:
    {
      "dataSpecs": {
        "custom": true,
        "dataType": "TEXT",
        "id": 2412127,
        "length": 2048
      }
    }
  • Contoh dataSpecs ketika dataType adalah ARRAY:
    {
      "dataSpecs": {
        "childDataType": "INT",
        "custom": true,
        "dataType": "ARRAY",
        "size": 1
      }
    }
  • Contoh dataSpecsList ketika dataType adalah ENUM:
    {
      "dataSpecsList": [
        {
          "custom": false,
          "dataType": "ENUM",
          "defaultValue": "true",
          "name": "Open",
          "value": 1
        },
        {
          "custom": false,
          "dataType": "ENUM",
          "defaultValue": "false",
          "name": "Close",
          "value": 0
        }
      ]
    }
  • Contoh item dalam dataSpecsList ketika dataType adalah STRUCT:
    {
      "childDataType": "TEXT",
      "childName": "Card number",
      "dataSpecs": {
        "custom": true,
        "dataType": "TEXT",
        "length": 128
      },
      "dataType": "STRUCT",
      "identifier": "CardNo",
      "name": "NVR chip information"
    }

Format data layanan

Tabel berikut mencantumkan parameter untuk mendefinisikan sebuah layanan.

Parameter Type Required Description
productKey String Yes ProductKey dari produk yang berisi model TSL.
createTs
Long
No
Waktu pembuatan fitur, dalam bentuk timestamp 13 digit. Jika Anda tidak menentukan parameter ini, sistem akan menghasilkan nilai tersebut. Fitur diurutkan berdasarkan timestamp ini secara menaik.
Catatan Untuk model TSL yang sudah ada, waktu pembuatan adalah waktu ketika model TSL pertama kali dimodifikasi setelah dipublikasikan.
identifier String Yes Pengidentifikasi layanan dapat terdiri dari maksimal 50 karakter dan boleh berisi huruf kapital, huruf kecil, angka, serta garis bawah (_).
Catatan Pengidentifikasi tidak boleh merupakan kata kunci yang dicadangkan, seperti set, get, post, property, event, time, atau value.
serviceName String Yes Nama layanan dapat terdiri dari maksimal 30 karakter dan boleh berisi karakter Tionghoa, huruf kapital dan kecil, angka, tanda hubung (-), garis bawah (_), serta titik (.). Nama harus dimulai dengan karakter Tionghoa, huruf, atau angka. Setiap karakter Tionghoa dihitung sebagai satu karakter.
inputParams List No Daftar parameter input. Untuk detail struktur data, lihat Struktur data parameter input dan output.
outputParams List No Daftar parameter output. Untuk detail struktur data, lihat Struktur data parameter input dan output.
required Boolean Yes Menentukan apakah layanan tersebut wajib untuk kategori standar.
  • true: Ya
  • false: Tidak
callType String Yes Tipe pemanggilan layanan.
  • ASYNC: panggilan asinkron
  • SYNC: panggilan sinkron
custom Boolean Yes Menentukan apakah ini merupakan fitur kustom.
  • true: Ya
  • false: Tidak

Format data event

Tabel berikut mencantumkan parameter untuk mendefinisikan sebuah event.

Parameter Type Required Description
productKey String Yes ProductKey dari produk yang berisi model TSL.
createTs
Long
No
Waktu pembuatan fitur, dalam bentuk timestamp 13 digit. Jika Anda tidak menentukan parameter ini, sistem akan menghasilkan nilai tersebut. Fitur diurutkan berdasarkan timestamp ini secara menaik.
Catatan Untuk model TSL yang sudah ada, waktu pembuatan adalah waktu ketika model TSL pertama kali dimodifikasi setelah dipublikasikan.
identifier String Yes Pengidentifikasi event. Panjangnya maksimal 50 karakter dan boleh berisi huruf kapital, huruf kecil, angka, serta garis bawah (_).
Catatan Pengidentifikasi tidak boleh merupakan kata kunci yang dicadangkan, seperti set, get, post, property, event, time, atau value.
eventName String Yes Nama event. Panjangnya maksimal 30 karakter dan harus dimulai dengan karakter Tionghoa, huruf, atau angka. Nama boleh berisi karakter Tionghoa, huruf kapital, huruf kecil, angka, tanda hubung (-), garis bawah (_), serta titik (.). Setiap karakter Tionghoa dihitung sebagai satu karakter.
eventType String Yes Tipe event. Nilai yang valid:
  • INFO_EVENT_TYPE: informasi
  • ALERT_EVENT_TYPE: alert
  • ERROR_EVENT_TYPE: error
outputdata List No Parameter output event. Untuk detail struktur data, lihat Struktur data parameter input dan output.
required Boolean Yes Apakah ini merupakan event wajib untuk kategori standar. Nilai yang valid:
  • true: Ya
  • false: Tidak
custom Boolean Yes Apakah ini merupakan fitur kustom. Nilai yang valid:
  • true: Ya
  • false: Tidak

Struktur parameter input dan output

Tabel berikut mencantumkan field untuk mendefinisikan parameter input dan output layanan atau event.

Parameter Type Required Description
dataType String Yes Tipe data parameter.

Nilai yang valid: ARRAY, STRUCT, INT, FLOAT, DOUBLE, TEXT, DATE, ENUM, dan BOOL.

Untuk spesifikasi data setiap tipe data, lihat bagian terkait dalam topik ini.

identifier String Yes Pengidentifikasi unik untuk parameter. Panjangnya maksimal 50 karakter dan boleh berisi huruf kapital dan kecil, angka, serta karakter garis bawah (_).
Catatan Pengidentifikasi tidak boleh merupakan kata kunci yang dicadangkan, seperti set, get, post, property, event, time, atau value.
name String Yes Nama tampilan parameter. Panjangnya maksimal 30 karakter dan boleh berisi karakter Tionghoa, huruf kapital, huruf kecil, angka, tanda hubung (-), garis bawah (_), serta titik (.). Nama harus dimulai dengan karakter Tionghoa, huruf, atau angka. Setiap karakter Tionghoa dihitung sebagai satu karakter.
direction String Yes Menunjukkan apakah parameter tersebut merupakan parameter input atau output.
  • PARAM_INPUT: Parameter input.
  • PARAM_OUTPUT: Parameter output.
paraOrder Integer Yes Nomor urutan unik berbasis nol untuk parameter tersebut.
dataSpecs Object No Jika dataType merupakan tipe sederhana seperti INT, FLOAT, DOUBLE, TEXT, DATE, atau BOOL, spesifikasi data disimpan dalam parameter dataSpecs.
Catatan
  • Spesifikasi ini berlaku untuk data parameter, bukan untuk definisi komponen TSL lain seperti properti, layanan, atau event.
  • Anda harus menentukan salah satu dari parameter dataSpecs atau dataSpecsList berdasarkan tipe datanya. Anda tidak boleh menentukan keduanya sekaligus.
dataSpecsList List No Jika dataType merupakan tipe kompleks seperti ENUM, ARRAY, atau STRUCT, spesifikasi data disimpan dalam parameter dataSpecsList.
Catatan
  • Spesifikasi ini berlaku untuk data parameter, bukan untuk definisi komponen TSL lain seperti properti, layanan, atau event.
  • Anda harus menentukan salah satu dari parameter dataSpecs atau dataSpecsList berdasarkan tipe datanya. Anda tidak boleh menentukan keduanya sekaligus.
custom Boolean Yes Menunjukkan apakah parameter tersebut termasuk dalam fitur TSL kustom.
  • true: Ya
  • false: Tidak

Struktur data INT, FLOAT, dan DOUBLE

Jika fitur atau parameter memiliki tipe data INT, FLOAT, atau DOUBLE, struktur datanya mencakup parameter berikut.

Parameter Type Required Description
dataType String Yes Tipe data. Nilai yang valid: INT, FLOAT, atau DOUBLE.
max String Yes Nilai maksimum. Nilai ini harus sesuai dengan tipe yang ditentukan dalam parameter dataType.

Nilai harus diteruskan sebagai string. Misalnya, jika dataType adalah INT, gunakan "max":"200" alih-alih "max":200.

min String Yes Nilai minimum. Nilai ini harus sesuai dengan tipe yang ditentukan dalam parameter dataType.

Nilai harus diteruskan sebagai string. Untuk informasi lebih lanjut, lihat deskripsi untuk max.

step String Yes Ukuran langkah, yaitu perubahan inkremental untuk nilai tersebut. Nilai ini harus sesuai dengan tipe yang ditentukan dalam parameter dataType.

Nilai harus diteruskan sebagai string. Untuk informasi lebih lanjut, lihat deskripsi untuk max.

precise String No Presisi. Parameter ini hanya digunakan untuk tipe data FLOAT dan DOUBLE.
defaultValue String No Nilai default untuk parameter tersebut.
unit String Yes Simbol satuan.
unitName String Yes Nama satuan.
custom Boolean Yes Menunjukkan apakah ini merupakan fitur kustom.
  • true: Ya
  • false: Tidak

Struktur data DATE dan TEXT

Struktur data untuk tipe data DATE dan TEXT mencakup parameter berikut.

Parameter Type Required Description
dataType String Yes Tipe data. Nilai yang valid adalah DATE atau TEXT.
length Long Yes Panjang data maksimum adalah 2.048 byte. Parameter ini wajib jika dataType diatur ke TEXT.
defaultValue String No Nilai default.
custom Boolean Yes Menunjukkan apakah ini merupakan fitur kustom.
  • true: Ya
  • false: Tidak

Spesifikasi data ARRAY

Ketika tipe data fitur atau parameter adalah ARRAY, spesifikasi datanya mencakup parameter berikut.

Penting Tipe data ARRAY dan STRUCT bersarang mendukung paling banyak dua tingkat nesting rekursif (parent dan child).
Parameter Type Required Description
dataType String Yes Nilainya harus ARRAY.
size Long Yes Jumlah elemen dalam array.
childDataType String Yes Tipe data elemen dalam array. Nilai yang valid: STRUCT, INT, FLOAT, DOUBLE, atau TEXT.
dataSpecs Object No Jika childDataType merupakan tipe non-list seperti INT, FLOAT, DOUBLE, TEXT, DATE, atau ARRAY, gunakan parameter dataSpecs ini untuk mendefinisikan spesifikasi data.
Catatan
  • Spesifikasi data berlaku untuk semua data kecuali definisi properti, layanan, event, dan parameter.
  • Anda harus menentukan salah satu dari parameter dataSpecs atau dataSpecsList berdasarkan tipe data anak. Anda tidak boleh menentukan keduanya sekaligus.
dataSpecsList List No Jika childDataType merupakan tipe list seperti ENUM, BOOL, atau STRUCT, gunakan parameter dataSpecsList ini untuk mendefinisikan spesifikasi data.
Catatan
  • Spesifikasi data berlaku untuk semua data kecuali definisi properti, layanan, event, dan parameter.
  • Anda harus menentukan salah satu dari parameter dataSpecs atau dataSpecsList berdasarkan tipe data anak. Anda tidak boleh menentukan keduanya sekaligus.
custom Boolean Yes Menunjukkan apakah fitur tersebut kustom.
  • true: Ya
  • false: Tidak

Tipe ENUM dan BOOL

Jika fitur atau parameter bertipe BOOL atau ENUM, struktur datanya mencakup parameter berikut.

Parameter Type Required Description
dataType String Yes Nilainya harus BOOL atau ENUM.
name String Yes Nama item ENUM. Panjangnya maksimal 20 karakter dan harus dimulai dengan karakter Tionghoa, huruf Latin, atau angka. Nama boleh berisi karakter Tionghoa, huruf Latin, angka, garis bawah (_), dan tanda hubung (-). Setiap karakter Tionghoa dihitung sebagai satu karakter.
value Integer Yes Nilai enum.
custom Boolean Yes Menentukan apakah ini merupakan fitur kustom.
  • true: Fitur tersebut kustom.
  • false: Fitur tersebut tidak kustom.

Struktur data Struct

Ketika tipe data fitur atau parameter adalah struct, struktur datanya mencakup parameter berikut.

Penting
  • Parameter childSpecsDTO dan childEnumSpecsDTO sudah tidak digunakan lagi. Hal ini tidak memengaruhi panggilan API yang sudah ada. Untuk panggilan baru, jangan teruskan parameter ini. Gunakan parameter dataSpecsList sebagai gantinya.
  • Ketika tipe data array dan struct bersarang, paling banyak dua tingkat nesting rekursif (parent dan child) didukung.
Parameter Type Required Description
dataType String Yes Nilainya harus struct.
identifier String Yes Pengidentifikasi sub-parameter dalam struct. Boleh berisi huruf kapital, huruf kecil, angka, dan garis bawah (_). Panjang maksimum 50 karakter.
Catatan Pengidentifikasi tidak boleh merupakan kata-kata yang dicadangkan berikut: set, get, post, property, event, time, atau value.
name String Yes Nama sub-parameter dalam struct. Nama harus dimulai dengan karakter Tionghoa, huruf, atau angka. Nama boleh berisi karakter Tionghoa, huruf kapital, huruf kecil, angka, tanda hubung (-), garis bawah (_), dan titik (.). Panjang maksimum 30 karakter. Setiap karakter Tionghoa dihitung sebagai satu karakter.
Catatan childNameParameter ini memiliki definisi yang sama dan saat ini tidak digunakan.
childDataType String No Tipe data sub-parameter dalam struct.

Nilai yang valid: INT, FLOAT, DOUBLE, TEXT, DATE, ENUM, BOOL.

childName String Yes Nama sub-parameter dalam struct. Nama harus dimulai dengan karakter Tionghoa, huruf, atau angka. Nama boleh berisi karakter Tionghoa, huruf kapital, huruf kecil, angka, tanda hubung (-), garis bawah (_), dan titik (.). Panjang maksimum 30 karakter. Setiap karakter Tionghoa dihitung sebagai satu karakter.
dataSpecs Object No

Spesifikasi data untuk tipe data non-list (dataType) seperti INT, FLOAT, DOUBLE, TEXT, DATE, dan ARRAY disimpan dalam dataSpecs.

Catatan
  • Spesifikasi data mengacu pada semua definisi data selain definisi properti, layanan, event, dan parameter.
  • dataSpecsdataSpecsListAnda harus memberikan nilai untuk salah satu saja, tetapi tidak keduanya. Gunakan parameter yang sesuai dengan tipe datanya.
dataSpecsList List No dataTypeENUMBOOLSTRUCTdataSpecsListJika dari sub-parameter merupakan tipe list (seperti , , atau ), spesifikasi datanya disimpan dalam parameter .
Catatan
  • Spesifikasi data mengacu pada semua definisi data selain definisi properti, layanan, event, dan parameter.
  • dataSpecsdataSpecsListAnda harus memberikan nilai untuk salah satu saja, tetapi tidak keduanya. Gunakan parameter yang sesuai dengan tipe datanya.
custom Boolean Yes Menentukan apakah ini merupakan fitur kustom.
  • true: Ya
  • false: Tidak

Struktur data extendConfig

Dalam struktur data setiap properti, event, atau layanan, gunakan extendConfig untuk mendefinisikan informasi tambahan yang memetakan protokol komunikasi perangkat ke model TSL standar.

Catatan configCode dalam respons adalah pengidentifikasi unik yang dihasilkan sistem untuk informasi tambahan satu fitur.

IoT Platform mendukung informasi tambahan untuk perangkat yang menggunakan protokol Modbus, OPC UA, atau gateway kustom. Spesifikasi data berbeda-beda tergantung protokolnya:

Tipe Modbus

Modbus hanya mendukung informasi tambahan untuk properti.

Catatan Contoh berikut mencakup semua parameter yang mungkin untuk menunjukkan struktur extendConfig. Parameter aktual tergantung kasus penggunaan Anda.
{
  "identifier":"extend1",
  "writeFunctionCode":0,
  "writeOnly":0,
  "registerAddress":"0xFE",
  "operateType":"coilStatus",
  "scaling":0.1,
  "pollingTime":1000,
  "trigger":1,
  "bitMask":128,
  "originalDataType":{
     "type":"uint64",
     "specs":{
        "swap":0,
        "reverseRegister":0}
  }
}
Parameter Type Description
identifier String Pengidentifikasi unik untuk properti dalam produk tersebut.
registerAddress String Alamat register. Nilainya harus dimulai dengan 0x dan berada dalam rentang 0x0 hingga 0xFFFF. Contohnya, 0xFE.
operateType String Tipe operasi. Nilai yang valid meliputi:
  • coilStatus: status coil
  • inputStatus: input diskrit
  • holdingRegister: holding register
  • inputRegister: input register
writeFunctionCode Integer Kode fungsi untuk operasi tulis. Nilai yang valid bergantung pada operateType yang ditentukan.
  • coilStatus:
    • 5: baca dan tulis (baca: 0x01, tulis: 0x05)
    • 15: baca dan tulis (baca: 0x01, tulis: 0x0F)
    • 0: hanya baca (baca: 0x01)
  • inputStatus: 0: hanya baca (baca: 0x02)
  • holdingRegister:
    • 6: baca dan tulis (baca: 0x03, tulis: 0x06)
    • 16: baca dan tulis (baca: 0x03, tulis: 0x10)
    • 0: hanya baca (baca: 0x03)
  • inputRegister: 0: hanya baca (baca: 0x04)
writeOnly Integer Apakah operasi tersebut hanya tulis.
  • 0: Bukan hanya tulis.
    • writeFunctionCodewriteOnlyJika tidak 0 (menunjukkan baca dan tulis), nilai 0 berarti operasi baca dan tulis didukung.
    • writeFunctionCodewriteOnlyJika 0 (menunjukkan hanya baca), harus 0.
  • 1: Hanya tulis.

    Hanya ketika writeFunctionCode tidak 0 (menunjukkan baca dan tulis), writeOnly dapat bernilai 1 untuk menunjukkan dukungan hanya tulis.

scaling Number Faktor penskalaan. Nilainya tidak boleh 0.

Parameter ini tidak berlaku untuk tipe data string atau bool.

pollingTime Integer Interval pengumpulan, dalam milidetik (ms). Jika parameter ini tidak ditentukan, interval pengumpulan default perangkat akan digunakan.
trigger Integer Metode pelaporan data. 1: Melaporkan data secara berkala. 2: Melaporkan data saat terjadi perubahan.
bitMask Integer Parameter khusus untuk tipe data bool.

Mask. Nilai yang valid: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, dan 32768. Nilai-nilai ini sesuai dengan 1<<(0 hingga 15).

originalDataType Object Tipe data asli.
type String Tipe data asli. Nilainya harus salah satu dari tipe dasar berikut: int16, uint16, int32, uint32, int64, uint64, float, double, string, bool, atau data kustom (mengembalikan data heksa dalam urutan big-endian).
specs Object Parameter khusus untuk tipe data tertentu.
registerCount Integer Parameter khusus untuk tipe data string dan data kustom.

Jumlah register.

swap Integer Parameter untuk semua tipe data kecuali string dan data kustom.

Menentukan apakah byte tinggi dan rendah dalam register 16-bit ditukar (misalnya, byte1byte2 menjadi byte2byte1).

  • 0: Jangan tukar.
  • 1: Tukar.
reverseRegister Integer Parameter untuk semua tipe data kecuali string dan data kustom.
Menentukan apakah urutan register 16-bit dalam data 32-bit dibalik (misalnya, byte1byte2byte3byte4 menjadi byte3byte4byte1byte2).
  • 0: Jangan balik.
  • 1: Balik.

Tipe OPC UA

OPC UA mendukung informasi tambahan untuk properti, layanan, dan event.

{
  "identifier":"extend2",
  "displayName":"Action",
  "inputData":[
    {
      "identifier":"xxxx",
      "index":1
    },
    {
      "identifier":"xxxx",
      "index":2 
    }
  ],
  "outputData":[
     {
      "identifier":"xxxx",
      "index":1
    },
    {
      "identifier":"xxxx",
      "index":2
    }
  ]
}
Parameter Type Description
identifier String Pengidentifikasi unik untuk properti, layanan, atau event dalam suatu produk.
displayName String Nama tampilan. Parameter ini wajib untuk properti dan event, tetapi opsional untuk layanan.
inputData List Parameter data input.
outputData List Parameter data output.
identifier String Pengidentifikasi unik untuk parameter input atau output dalam produk tersebut.
index Integer Indeks unik untuk parameter dalam daftar induknya (inputData atau outputData).

Tipe kustom

Tipe kustom mendukung informasi tambahan untuk properti, layanan, dan event.

{
  "identifier":"xxx",
  "customize":{}
}
Parameter Type Description
identifier String Pengidentifikasi unik untuk properti, layanan, atau event dalam suatu produk.
customize Object Data kustom yang ditentukan pengguna dalam format objek JSON.

Validasi

Anda dapat menggunakan json-schema untuk memvalidasi parameter input dalam ThingModelJson.

Untuk definisi skema, lihat schema.json.

Contoh berikut menunjukkan cara melakukan validasi:

  • Untuk mengunduh library json-schema, tambahkan dependensi berikut ke proyek Maven Anda.
    <dependency>
        <groupId>com.github.everit-org.json-schema</groupId>
        <artifactId>org.everit.json.schema</artifactId>
        <version>1.11.0</version>
    </dependency>
  • Kode contoh:
    package com.aliyun.iot.thingmodel;
    import java.io.InputStream;
    import java.net.URL;
    import java.util.ArrayList;
    import java.util.Arrays;
    import org.everit.json.schema.Schema;
    import org.everit.json.schema.ValidationException;
    import org.everit.json.schema.loader.SchemaLoader;
    import org.json.JSONObject;
    import org.json.JSONTokener;
    /**
     * @author: ***
     * @date: 2020-01-14 15:11
     */
    public class ThingModelJsonValidator {
        public static void main(String[] args) throws Exception {
            try (InputStream inputStream = new URL("https://iotx-thing-model-schema.oss-ap-southeast-1.aliyuncs.com/schema.json").openStream()) {
                JSONObject rawSchema = new JSONObject(new JSONTokener(inputStream));
                Schema schema = SchemaLoader.load(rawSchema);
                long start = System.currentTimeMillis();
                JSONObject object = new JSONObject();
                String jsonStr = "{\n"
                        + "\t\t\t\"productKey\": \"a1Q1Yrc****\",\n"
                        + "\t\t\t\"name\": \"Alert event\",\n"
                        + "\t\t\t\"identifier\": \"alarmEvent\",\n"
                        + "\t\t\t\"eventName\": \"Alert event\",\n"
                        + "\t\t\t\"eventType\": \"ALERT_EVENT_TYPE\",\n"
                        + "\t\t\t\"outputData\": [\n"
                        + "\t\t\t\t{\n"
                        + "\t\t\t\t\t\"paraOrder\": 0,\n"
                        + "\t\t\t\t\t\"direction\": \"PARAM_OUTPUT\",\n"
                        + "\t\t\t\t\t\"dataSpecsList\": [\n"
                        + "\t\t\t\t\t\t{\n"
                        + "\t\t\t\t\t\t\t\"dataType\": \"ENUM\",\n"
                        + "\t\t\t\t\t\t\t\"name\": \"Anti-detachment alert\",\n"
                        + "\t\t\t\t\t\t\t\"value\": 0\n"
                        + "\t\t\t\t\t\t},\n"
                        + "\t\t\t\t\t\t{\n"
                        + "\t\t\t\t\t\t\t\"dataType\": \"ENUM\",\n"
                        + "\t\t\t\t\t\t\t\"name\": \"Anti-detachment alert resolved\",\n"
                        + "\t\t\t\t\t\t\t\"value\": 1\n"
                        + "\t\t\t\t\t\t}\n"
                        + "\t\t\t\t\t],\n"
                        + "\t\t\t\t\t\"dataType\": \"ENUM\",\n"
                        + "\t\t\t\t\t\"identifier\": \"alarmType\",\n"
                        + "\t\t\t\t\t\"name\": \"Alert type\",\n"
                        + "\t\t\t\t\t\"index\": 0,\n"
                        + "\t\t\t\t\t\"custom\": true\n"
                        + "\t\t\t\t}\n"
                        + "\t\t\t],\n"
                        + "\t\t\t\"outputParams\": [\n"
                        + "\t\t\t\t{\n"
                        + "\t\t\t\t\t\"index\": 0,\n"
                        + "\t\t\t\t\t\"identifier\": \"alarmType\"\n"
                        + "\t\t\t\t}\n"
                        + "\t\t\t],\n"
                        + "\t\t\t\"custom\": true\n"
                        + "\t\t}";
                object.put("properties", new ArrayList<>());
                object.put("services", new ArrayList<>());
                object.put("events", Arrays.asList(com.alibaba.fastjson.JSONObject.parseObject(jsonStr)));
                object.put("productKey", "a1Q1Yrc****");
                schema.validate(object); // melempar ValidationException jika objek ini tidak valid
                System.out.println(System.currentTimeMillis() - start);
            }
            catch (ValidationException exception) {
                System.out.println(exception);
            }
        }
    }

Menulis ThingModelJson

Gunakan Visual Studio Code untuk menulis ThingModelJson dengan dukungan auto-completion.

  1. Buka situs resmi Visual Studio Code untuk mengunduh dan menginstal versi terbaru Visual Studio Code.
  2. Buka Visual Studio Code, klik tombol 设置 di pojok kiri bawah, lalu pilih Settings.
  3. Pada tab User Settings, pilih Extensions > JSON. Di bawah Schemas, klik Edit in settings.json, tambahkan konfigurasi berikut, lalu simpan file tersebut.
     "json.schemas": [{
            "fileMatch": ["/.json"],
            "url": "https://iotx-tsl.oss-ap-southeast-1.aliyuncs.com/schema.json"
    }]

    Setelah Anda menyimpan konfigurasi, prompt auto-completion akan muncul saat Anda mendefinisikan Thing Model.

    "$schema": "https://iotx-tsl.oss-ap-southeast-1.aliyuncs.com/schema.json"
    ""
      events
      functionBlockId
      functionBlockName
      functionBlocks
      properties
      services