全部产品
Search
文档中心

IoT Platform:Gunakan fitur lanjutan

更新时间:Jul 02, 2025

Topik ini menjelaskan cara mengonfigurasi IoT as Bridge SDK untuk menggunakan fitur lanjutan. Anda dapat menentukan jalur file konfigurasi dan mendaftarkan jembatan secara dinamis. Selain itu, Anda dapat memanggil operasi yang dienkapsulasi dalam IoT as Bridge SDK untuk mengirimkan data Thing Specification Language (TSL), mengirimkan properti atau peristiwa, menetapkan properti, serta memanggil layanan.

Tentukan jalur file konfigurasi

Secara default, file konfigurasi untuk jembatan adalah application.conf, sedangkan file konfigurasi pemetaan sertifikat perangkat adalah devices.conf.

IoT as Bridge SDK memungkinkan Anda menentukan jalur file kustom. Sebelum memanggil metode bootstrap(), Anda dapat memanggil metode ConfigFactory.init() untuk menentukan jalur file konfigurasi. Anda juga dapat membuat instance dan mengimplementasikan metode sesuai kebutuhan bisnis Anda.

Contoh kode:

private static DeviceConfigManager selfDefineDeviceConfigManager = new DeviceConfigManager() {
    @Override
    public DeviceIdentity getDeviceIdentity(String originalIdentity) {
        return devicesMap.get(originalIdentity);
    }

    @Override
    public String getOriginalIdentity(String productKey, String deviceName) {
        return null;
    }
};
BridgeBootstrap bridgeBootstrap = new BridgeBootstrap();
ConfigFactory.init(ConfigFactory.getBridgeConfigManager("application-self-define.conf"),selfDefineDeviceConfigManager);
bridgeBootstrap.bootstrap();

Daftarkan jembatan secara dinamis

Saat menyebarkan jembatan pada sejumlah besar server, proses penyebarannya menjadi kompleks jika Anda harus menentukan jembatan berbeda untuk setiap server. Untuk menyederhanakan proses ini, Anda dapat mengonfigurasi file konfigurasi jembatan application.conf untuk mendaftarkan jembatan secara dinamis.

Anda perlu menentukan parameter productKey dan popClientProfile dari sebuah jembatan dalam file konfigurasi. Kemudian, IoT as Bridge SDK akan memanggil Operasi API dari IoT Platform untuk mendaftarkan jembatan dan menggunakan alamat MAC server jembatan sebagai DeviceName dari jembatan tersebut.

Catatan
  • Untuk mendaftarkan jembatan secara dinamis, cukup konfigurasikan file konfigurasi jembatan. Untuk informasi lebih lanjut tentang contoh kode, lihat Gunakan Fitur Dasar.

  • Semua bidang dalam parameter popClientProfile harus ditentukan. Jika alamat MAC telah digunakan sebagai DeviceName dari perangkat yang ada, perangkat tersebut akan digunakan sebagai jembatan.

  • Parameter deviceName dan deviceSecret harus dibiarkan kosong. Jika Anda telah menentukan informasi terkait jembatan, jembatan tersebut tidak dapat didaftarkan secara dinamis.

  • Kami merekomendasikan penggunaan perangkat uji khusus untuk debugging. Hindari melakukan debugging program di mesin lokal untuk mencegah dampak yang mungkin terjadi pada lingkungan produksi.

    Jika Anda mendebag program di beberapa mesin lokal, alamat MAC mesin-mesin tersebut akan didaftarkan sebagai nama jembatan. Jembatan-jembatan tersebut akan dikaitkan dengan semua perangkat yang ditentukan dalam file devices.conf.

Tabel 1. Parameter

Parameter

Diperlukan

Deskripsi

productKey

Ya

ProductKey dari produk tempat jembatan tersebut termasuk.

subDeviceConnectMode

Tidak

Tipe jembatan.

  • Jika parameter ini disetel ke 3, jembatan ukuran besar dibuat. Maksimal 500.000 perangkat dapat terhubung ke jembatan.

  • Jika parameter ini tidak ditentukan, jembatan ukuran kecil dibuat. Maksimal 1.500 perangkat dapat terhubung ke jembatan.

Jembatan ukuran besar dan kecil menggunakan kebijakan berbeda untuk memutuskan perangkat. Untuk informasi lebih lanjut, lihat bagian Putuskan koneksi perangkat dari IoT Platform dari topik "Gunakan fitur dasar".

http2Endpoint

Ya

Titik akhir gateway HTTP/2. Titik akhir ini digunakan untuk membentuk koneksi persisten antara jembatan dan IoT Platform melalui protokol HTTP/2.

Format titik akhir:

  • Instans Enterprise Edition: https://${IotInstanceId}.http2.iothub.aliyuncs.com:443.

    Ganti ${IotInstanceId} dengan ID instans yang Anda beli.

    Sebagai contoh, jika ID instans adalah iot-cn-g06kwb****, titik akhirnya adalah https://iot-cn-g06kwb****.http2.iothub.aliyuncs.com:443.

  • Instans Publik: Format titik akhir untuk instans publik versi baru berbeda dari format titik akhir untuk instans publik versi sebelumnya.

    • Instans publik versi baru menggunakan format titik akhir yang sama dengan instans Enterprise Edition.

    • Instans publik versi sebelumnya: https://${productKey}.iot-as-http2.${RegionId}.aliyuncs.com:443.

      Ganti ${productKey} dengan ProductKey dari produk tempat jembatan Anda termasuk.

      Ganti ${RegionId} dengan ID wilayah tempat layanan IoT Platform Anda berada. Untuk informasi lebih lanjut tentang ID wilayah, lihat Wilayah dan Zona.

      Sebagai contoh, jika ProductKey dari sebuah jembatan adalah a1abcab**** dan instans publik berada di wilayah China (Shanghai), titik akhirnya adalah https://a1abcab****.iot-as-http2.cn-shanghai.aliyuncs.com:443.

    Untuk informasi lebih lanjut tentang instans IoT Platform, lihat Ikhtisar.

authEndpoint

Ya

Titik akhir layanan verifikasi perangkat.

Format titik akhir:

  • Instans Enterprise Edition: https://${IotInstanceId}.auth.iothub.aliyuncs.com/auth/bridge.

    Ganti ${IotInstanceId} dengan ID instans yang Anda beli.

    Sebagai contoh, jika ID instans adalah iot-cn-g06kwb****, titik akhirnya adalah https://iot-cn-g06kwb****.auth.iothub.aliyuncs.com/auth/bridge.

  • Instans Publik: Format titik akhir untuk instans publik versi baru berbeda dari format titik akhir untuk instans publik versi sebelumnya.

    • Instans publik versi baru menggunakan format titik akhir yang sama dengan instans Enterprise Edition.

    • Instans publik versi sebelumnya: https://iot-auth.${RegionId}.aliyuncs.com/auth/bridge.

      Ganti ${RegionId} dengan ID wilayah tempat layanan IoT Platform Anda berada. Untuk informasi lebih lanjut tentang ID wilayah, lihat Wilayah dan Zona.

      Sebagai contoh, jika sebuah instans berada di wilayah China (Shanghai), titik akhirnya adalah https://iot-auth.cn-shanghai.aliyuncs.com/auth/bridge.

popClientProfile

Ya

Jika Anda menentukan parameter ini, IoT as Bridge SDK secara otomatis memanggil operasi IoT Platform untuk membuat jembatan.

Tabel berikut menjelaskan bidang-bidang dari popClientProfile.

Tabel 2. popClientProfile

Bidang

Diperlukan

Deskripsi

accessKey

Ya

ID AccessKey dari akun Alibaba Cloud Anda.

Masuk ke Konsol IoT Platform, arahkan pointer ke foto profil Anda, lalu klik AccessKey Management. Di halaman Pasangan AccessKey, Anda dapat membuat atau melihat pasangan AccessKey.

accessSecret

Ya

Rahasia AccessKey dari akun Alibaba Cloud Anda.

name

Ya

ID wilayah tempat jembatan tersebut termasuk.

Untuk informasi lebih lanjut tentang ID wilayah, lihat Wilayah dan zona.

region

Ya

product

Ya

Nama produk. Tetapkan nilainya menjadi Iot.

endpoint

Ya

Titik akhir API di wilayah tertentu. Nilainya harus ditentukan dalam format iot.${RegionId}.aliyuncs.com.

Ganti ${RegionId} dengan ID wilayah tempat layanan IoT Platform Anda berada. Untuk informasi lebih lanjut tentang ID wilayah, lihat Wilayah dan Zona.

Sebagai contoh, jika layanan IoT Platform Anda berada di wilayah China (Shanghai), titik akhirnya adalah iot.cn-shanghai.aliyuncs.com.

Contoh kode berikut menunjukkan cara mengonfigurasi jembatan ukuran kecil. Dalam contoh ini, instans Enterprise Edition digunakan.

// Titik akhir layanan.
http2Endpoint = "https://${IotInstanceId}.http2.iothub.aliyuncs.com:443"
authEndpoint = "https://${IotInstanceId}.auth.iothub.aliyuncs.com/auth/bridge"

// Parameter jembatan.
productKey = ${YourProductKey}

popClientProfile = {
    accessKey = ${YourAliyunAccessKey}
    accessSecret = ${YourAliyunAccessSecret}
    name = cn-shanghai
    region = cn-shanghai
    product = Iot
    endpoint = iot.cn-shanghai.aliyuncs.com
}

Panggil operasi untuk mengirimkan data TSL

IoT as Bridge SDK mengenkapsulasi operasi untuk mengirimkan data. Anda dapat memanggil operasi reportProperty untuk mengirimkan properti, operasi fireEvent untuk mengirimkan peristiwa, dan operasi updateDeviceTag untuk memperbarui tag. Perangkat dapat menggunakan operasi-operasi ini untuk melaporkan properti, melaporkan peristiwa, serta memperbarui tag perangkat.

Catatan
  • Sebelum memanggil operasi reportProperty dan fireEvent, Anda harus mendefinisikan properti dan peristiwa di Konsol IoT Platform. Masuk ke Konsol IoT Platform dan buka halaman detail produk. Kemudian, definisikan properti dan peristiwa di tab Define Feature. Untuk informasi lebih lanjut, lihat Tambahkan Fitur TSL.

  • Jika tag sudah ada saat Anda memanggil operasi updateDeviceTag, nilai tag akan diperbarui. Untuk melihat tag yang ada, buka halaman detail perangkat di Konsol IoT Platform. Jika tag tidak ada, IoT Platform akan secara otomatis membuat tag tersebut.

Contoh kode:

TslUplinkHandler tslUplinkHandler = new TslUplinkHandler();
// Kirim properti.
// Properti testProp telah didefinisikan.
String requestId = String.valueOf(random.nextInt(1000));
// Timestamp tidak disertakan dalam data properti yang dikirimkan.
tslUplinkHandler.reportProperty(requestId, originalIdentity, "testProp", random.nextInt(100));
// Timestamp disertakan dalam data properti yang dikirimkan.
//tslUplinkHandler.reportProperty(requestId, originalIdentity, "testProp", random.nextInt(100), System.currentTimeMillis());

// Kirim peristiwa.
// Peristiwa testEvent telah didefinisikan.
requestId = String.valueOf(random.nextInt(1000));
HashMap<String, Object> params = new HashMap<String, Object>();
params.put("testEventParam", 123);
// Timestamp tidak disertakan dalam data peristiwa yang dikirimkan.
tslUplinkHandler.fireEvent(originalIdentity, "testEvent", ThingEventTypes.INFO, params);
// Timestamp disertakan dalam data peristiwa yang dikirimkan.
//tslUplinkHandler.fireEvent(originalIdentity, "testEvent", ThingEventTypes.INFO, params, System.currentTimeMillis());

// Perbarui tag perangkat.
// Kunci tag diatur menjadi testDeviceTag.
requestId = String.valueOf(random.nextInt(1000));
tslUplinkHandler.updateDeviceTag(requestId, originalIdentity, "testDeviceTag", String.valueOf(random.nextInt(1000)));

Tabel berikut menjelaskan parameter-parameter tersebut.

Parameter

Deskripsi

requestId

ID permintaan.

originalIdentity

Pengenal asli perangkat.

testProp

Pengenal properti. Dalam contoh ini, pengenal properti yang didefinisikan adalah testProp. Properti testProp dikirimkan ke IoT Platform.

random.nextInt(100)

Nilai properti. Saat Anda mendefinisikan properti, Anda dapat menetapkan rentang nilai. Dalam contoh ini, random.nextInt(100) menunjukkan bilangan bulat acak yang kurang dari 100.

testEvent

Pengenal peristiwa. Dalam contoh ini, pengenal peristiwa yang didefinisikan adalah testEvent. Peristiwa testEvent dikirimkan ke IoT Platform.

ThingEventTypes.INFO

Tipe peristiwa. ThingEventTypes menentukan tipe peristiwa. Nilai INFO menunjukkan bahwa tipe peristiwa adalah INFO.

Dalam contoh ini, tipe peristiwa diatur ke INFO saat peristiwa testEvent didefinisikan di Konsol IoT Platform.

Jika tipe peristiwa adalah ERROR, atur parameter ini ke ThingEventTypes.ERROR.

params

Parameter keluaran peristiwa. Pengenal, tipe data, dan rentang nilai parameter keluaran didefinisikan di Konsol IoT Platform. Dalam contoh ini, identifier parameter keluaran adalah testEventParam, dan nilainya adalah 123.

testDeviceTag

Kunci tag. Tipe datanya adalah string. Dalam contoh ini, kuncinya adalah testDeviceTag. Tetapkan kunci tag berdasarkan aturan konfigurasi untuk kunci tag dan kebutuhan bisnis Anda. Untuk informasi lebih lanjut, lihat Tag.

String.valueOf(random.nextInt(1000))

Nilai tag. Tipe datanya adalah string. Dalam contoh ini, String.valueOf(random.nextInt(1000)) menunjukkan bilangan bulat acak yang kurang dari 1.000. Tetapkan nilai tag berdasarkan aturan konfigurasi untuk nilai tag dan kebutuhan bisnis Anda. Untuk informasi lebih lanjut, lihat Tag.

System.currentTimeMillis()

Timestamp sistem. Tentukan timestamp UNIX yang mewakili jumlah milidetik yang telah berlalu sejak 1 Januari 1970, 00:00:00 Waktu Universal Terkoordinasi (UTC).

Panggil operasi untuk mengirimkan beberapa properti dan peristiwa sekaligus

IoT as Bridge SDK mengenkapsulasi operasi untuk mengirimkan beberapa properti dan peristiwa sekaligus. Anda perlu membuat objek BatchPostEventPropertyMessage dan memanggil metode addProperty() serta addEvent() untuk menambahkan data properti dan peristiwa. Kemudian, buat objek TslUplinkHandler dan panggil metode BatchPostEventPropertyMessage() untuk mengirimkan data.

Catatan

Sebelum memanggil operasi reportProperty dan fireEvent, Anda harus mendefinisikan properti dan peristiwa di Konsol IoT Platform. Masuk ke Konsol IoT Platform dan buka halaman detail produk. Kemudian, definisikan properti dan peristiwa di tab Define Feature. Untuk informasi lebih lanjut, lihat Tambahkan Fitur TSL.

Contoh kode:

TslUplinkHandler tslUplinkHandler = new TslUplinkHandler();
// Kirim beberapa properti dan peristiwa sekaligus.
String requestId = String.valueOf(random.nextInt(1000));
long startTime = System.currentTimeMillis() - 3000;

// Buat pesan untuk mengirimkan data.
BatchPostEventPropertyMessage batchPostEventPropertyMessage = new BatchPostEventPropertyMessage();
Map<String, Object> aiEventParams = new HashMap<>();
aiEventParams.put("EventContent", "hello world");
batchPostEventPropertyMessage
    .addProperty("PowerConsumption", 1000, startTime)
    .addProperty("PowerConsumption", 123, startTime + 1000)
    .addProperty("LightAdjustLevel", 23, startTime)
    .addProperty("LightAdjustLevel", 44, startTime + 1000)
    .addProperty("LightAdjustLevel", 47, startTime + 2000)
    .addEvent("AIEvent", aiEventParams, startTime);
batchPostEventPropertyMessage.setId(requestId);

// Kirimkan data.
tslUplinkHandler.batchPostEventPropertyMessage(originalIdentity, batchPostEventPropertyMessage);

Tabel berikut menjelaskan parameter-parameter tersebut.

Parameter

Deskripsi

requestId

ID permintaan.

startTime

Timestamp properti dan peristiwa yang akan dikirimkan. Tentukan timestamp UNIX yang mewakili jumlah milidetik yang telah berlalu sejak 1 Januari 1970, 00:00:00 UTC. Anda dapat menentukan nilai kustom untuk parameter ini berdasarkan kebutuhan bisnis Anda.

aiEventParams

Informasi tentang peristiwa.

PowerConsumption

Pengenal properti. Dalam contoh ini, pengenal properti yang didefinisikan mencakup PowerConsumption dan LightAdjustLevel. Nilai kedua properti pada titik waktu yang berbeda dikirimkan.

LightAdjustLevel

AIEvent

Pengenal peristiwa. Dalam contoh ini, pengenal peristiwa yang didefinisikan adalah AIEvent. Peristiwa AIEvent dikirimkan ke IoT Platform.

originalIdentity

Pengenal asli perangkat.

Panggil operasi untuk menetapkan properti dan memanggil layanan

IoT as Bridge SDK mengenkapsulasi operasi PropertySetHandler untuk menetapkan properti dan operasi ServiceInvokeHandler untuk memanggil layanan. Perangkat dapat menggunakan operasi-operasi ini untuk menerima perintah dari IoT Platform guna memperbarui data.

Contoh kode:

BridgeBootstrap bridgeBootstrap = new BridgeBootstrap();
// Tetapkan properti.
bridgeBootstrap.setPropertySetHandler(new PropertySetHandler() {
    @Override
    public void onPropertySet(PropertySetMessage msg) {
        log.info("on property set, {}", msg.getParams());
        // Jika Anda memanggil metode replySuccess(), SDK akan mengirimkan pesan /property/set_reply ke IoT Platform. Kode responsnya adalah 200.
        msg.replySuccess();
        // Jika Anda memanggil metode replyFail(), SDK akan mengirimkan pesan /property/set_reply ke IoT Platform. Anda dapat menentukan kode respons berdasarkan kebutuhan bisnis Anda.
        //msg.replyFail(400);
    }
});

// Panggil layanan.
bridgeBootstrap.setServiceInvokeHandler(new ServiceInvokeHandler() {
    @Override
    public void onServiceInvoke(ServiceInvokeMessage message) {
        log.info("on service invoke, {}", message.getParams());
        // Jika Anda memanggil metode replySuccess(), SDK akan mengirimkan pesan /service/{service.identifier}_reply ke IoT Platform. Kode responsnya adalah 200.
        message.replySuccess();
        // Jika Anda memanggil metode replyFail(), SDK akan mengirimkan pesan /service/{service.identifier}_reply ke IoT Platform. Anda dapat menentukan kode respons berdasarkan kebutuhan bisnis Anda.
        //msg.replyFail(400);
    }
});