IoT Platform mendukung komunikasi siaran. Anda dapat menyiarkan pesan ke semua perangkat dalam suatu produk tanpa memerlukan langganan topik siaran oleh perangkat. Anda juga dapat menyiarkan pesan ke semua perangkat yang berlangganan ke topik tertentu. Perangkat harus online untuk menerima pesan yang disiarkan oleh server bisnis. Bagian ini menjelaskan cara mengonfigurasi fitur komunikasi siaran untuk menyiarkan pesan ke semua perangkat online.
Informasi latar belakang
- Menyiarkan Pesan ke Semua Perangkat Online dalam Suatu Produk
Server bisnis memanggil operasi PubBroadcast dan mengonfigurasi parameter ProductKey serta MessageContent. Kemudian, semua perangkat online menerima pesan dari topik siaran berikut:
/sys/${productKey}/${deviceName}/broadcast/request/${MessageId}.ID pesan dalam topik siaran dibuat oleh IoT Platform. Setelah pesan dikirim, ID pesan dikembalikan ke server bisnis yang memanggil operasi PubBroadcast.
Sebagai contoh, sebuah produsen memiliki beberapa kunci pintu pintar yang terhubung ke IoT Platform. Produsen menggunakan server bisnis untuk mengirimkan perintah ke semua perangkat online guna membatalkan kata sandi.

- Menyiarkan Pesan ke Semua Perangkat yang Berlangganan ke Topik Tertentu
Perangkat berlangganan ke topik siaran yang sama. Server bisnis memanggil operasi PubBroadcast dan mengonfigurasi parameter ProductKey, MessageContent, serta Topic. Format topik siaran adalah
/broadcast/${productKey}/Custom field. Kemudian, semua perangkat online menerima pesan dari topik tersebut.Penting- Saat mengembangkan perangkat, gunakan kode untuk mendefinisikan topik siaran. Anda tidak perlu membuat topik di konsol IoT Platform.
- Maksimal 1.000 perangkat dapat berlangganan ke suatu topik. Jika jumlah perangkat melebihi batas, Anda dapat membagi perangkat menjadi beberapa grup. Misalnya, Anda dapat membagi 5.000 perangkat menjadi 5 grup, masing-masing berisi 1.000 perangkat. Dalam hal ini, Anda harus memanggil operasi PubBroadcast sebanyak lima kali. Setiap kali Anda memanggil operasi tersebut, atur bidang kustom dalam topik siaran menjadi group1, group2, group3, group4, dan group5. Pastikan setiap grup perangkat berlangganan ke topik siaran yang diperlukan.
Untuk informasi lebih lanjut tentang cara memanggil operasi PubBroadcast, lihat PubBroadcast.
Batasan
- Pesan hanya dapat disiarkan ke perangkat online dalam suatu produk.
- Saat Anda menyiarkan pesan ke perangkat online tertentu, Anda harus menentukan topik siaran yang dilanggan oleh perangkat tersebut. Dalam hal ini, Anda dapat memanggil operasi PubBroadcast sekali per detik.
- Saat Anda menyiarkan pesan ke semua perangkat online, perangkat tidak perlu berlangganan ke topik siaran. Dalam hal ini, Anda dapat memanggil operasi PubBroadcast sekali per menit.
- Ukuran badan pesan dapat mencapai hingga 64 KB.
Menyiapkan lingkungan pengembangan
Dalam contoh ini, perangkat dan IoT Platform menggunakan SDK untuk Java. Oleh karena itu, Anda harus menyiapkan lingkungan pengembangan Java. Anda dapat mengunduh Java dari situs resmi Java dan menyebarkan lingkungan pengembangan Java.
Menambahkan dependensi ke proyek Maven
Buat proyek di Maven. Tambahkan dependensi berikut ke file pom.xml dari proyek Maven:
<dependencies>
<dependency>
<groupId>com.aliyun.alink.linksdk</groupId>
<artifactId>iot-linkkit-java</artifactId>
<version>1.2.0.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.6</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-iot</artifactId>
<version>7.41.0</version>
</dependency>
<dependency>
<groupId>com.aliyun.openservices</groupId>
<artifactId>iot-client-message</artifactId>
<version>1.1.2</version>
</dependency>
</dependencies>Membuat produk dan perangkat
- Masuk ke konsol IoT Platform.
Di halaman Overview, klik All environment. Pada tab All environment, temukan instance yang ingin Anda kelola dan klik ID instance atau nama instance.
- Di panel navigasi sisi kiri, pilih .
- Klik Create Product untuk membuat produk kunci pintu pintar. Untuk informasi lebih lanjut, lihat Membuat Produk.
- Di panel navigasi sisi kiri, pilih . Anda dapat membuat tiga perangkat kunci pintu pintar dalam produk yang telah dibuat. Untuk informasi lebih lanjut, lihat Membuat Beberapa Perangkat Sekaligus.
Mengonfigurasi SDK perangkat
- Menghubungkan Perangkat ke IoT Platform.
- Tentukan informasi sertifikat perangkat.
final String productKey = "<yourProductKey>"; final String deviceName = "<yourDeviceName>"; final String deviceSecret = "<yourDeviceSecret>"; final String region = "<yourRegionID>";Informasi sertifikat perangkat ditentukan oleh parameter berikut: productKey, deviceName, dan deviceSecret. Untuk melihat informasi tersebut, lakukan langkah-langkah berikut: Masuk ke konsol IoT Platform. Di halaman Overview, klik kartu instance tempat perangkat tersebut berada. Di halaman navigasi sisi kiri, pilih . Di halaman yang muncul, temukan perangkat dan klik View di kolom Actions. Informasi tersebut ditampilkan di halaman Device Details.
region: ID wilayah tempat perangkat berada. Untuk informasi lebih lanjut tentang format nilai parameter region, lihat Regions.
- Konfigurasikan parameter untuk menginisialisasi koneksi. Parameter tersebut mencakup parameter koneksi Message Queuing Telemetry Transport (MQTT), informasi perangkat, dan status awal perangkat.
LinkKitInitParams params = new LinkKitInitParams(); // Konfigurasikan parameter koneksi MQTT. Link SDK menggunakan MQTT sebagai protokol dasar. IoTMqttClientConfig config = new IoTMqttClientConfig(); config.productKey = productKey; config.deviceName = deviceName; config.deviceSecret = deviceSecret; config.channelHost = productKey + ".iot-as-mqtt." + region + ".aliyuncs.com:1883"; // Tentukan informasi perangkat. DeviceInfo deviceInfo = new DeviceInfo(); deviceInfo.productKey = productKey; deviceInfo.deviceName = deviceName; deviceInfo.deviceSecret = deviceSecret; // Tentukan status awal perangkat. Map<String, ValueWrapper> propertyValues = new HashMap<String, ValueWrapper>(); params.mqttClientConfig = config; params.deviceInfo = deviceInfo; params.propertyValues = propertyValues;channelHost menentukan titik akhir untuk koneksi MQTT ke instance. Untuk informasi tentang cara memperoleh titik akhir instance publik dan instance Enterprise Edition, lihat Kelola Titik Akhir Suatu Instance.
- Inisialisasi koneksi.
// Inisialisasi koneksi dan konfigurasikan fungsi panggilan balik yang digunakan setelah koneksi diinisialisasi. LinkKit.getInstance().init(params, new ILinkKitConnectListener() { @Override public void onError(AError aError) { System.out.println("Init error:" + aError); } // Implementasikan fungsi panggilan balik. @Override public void onInitDone(InitResult initResult) { System.out.println("Init done:" + initResult); } });
- Tentukan informasi sertifikat perangkat.
- Fungsi panggilan balik onInitDone() menggunakan awalan untuk mengidentifikasi topik siaran. Sintaks awalan topik adalah
/sys/${productKey}/${deviceName}/broadcast/request/.public void onInitDone(InitResult initResult) { // Konfigurasikan fungsi panggilan balik yang digunakan saat pesan downstream dikirim. IConnectNotifyListener notifyListener = new IConnectNotifyListener() { // Konfigurasikan fungsi panggilan balik yang digunakan setelah pesan downstream diterima. @Override public void onNotify(String connectId, String topic, AMessage aMessage) { // Filter pesan yang diterima untuk mendapatkan pesan siaran. if(topic.startsWith(broadcastTopic)){ System.out.println( "received broadcast message from topic=" + topic + ",\npayload=" + new String((byte[])aMessage.getData())); } } @Override public boolean shouldHandle(String s, String s1) { return false; } @Override public void onConnectStateChange(String s, ConnectState connectState) { } }; LinkKit.getInstance().registerOnNotifyListener(notifyListener); }
Mengonfigurasi SDK IoT Platform
Konfigurasikan SDK IoT Platform untuk Java untuk menyiarkan pesan.
- Tentukan informasi identitas untuk verifikasi.
String regionId = "<yourRegionID>"; String accessKey = "<yourAccessKey>"; String accessSecret = "<yourAccessSecret>"; final String productKey = "<yourProductKey>"; - Panggil operasi PubBroadcast dari IoT Platform untuk menyiarkan pesan.
// Konfigurasikan parameter klien. DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKey, accessSecret); IAcsClient client = new DefaultAcsClient(profile); PubBroadcastRequest request = new PubBroadcastRequest(); // Konfigurasikan parameter productKey dari produk. request.setProductKey(productKey); // Konfigurasikan parameter MessageContent. Konten pesan harus dikodekan dalam Base64. Jika tidak, konten pesan akan ditampilkan sebagai karakter acak. request.setMessageContent(Base64.encode("{\"pwd\":\"2892nd6Y\"}")); // Tentukan ID instance. request.setIotInstanceId("iot-cn-***"); - Siarkan pesan.
try { PubBroadcastResponse response = client.getAcsResponse(request); System.out.println("broadcast pub success: broadcastId =" + response.getMessageId()); } catch (Exception e) { System.out.println(e); }
Verifikasi operasi
Konfigurasikan Link SDK pada perangkat untuk menghubungkan perangkat ke IoT Platform. Kemudian, konfigurasikan SDK IoT Platform untuk memanggil operasi PubBroadcast untuk menyiarkan pesan ke perangkat.
Gunakan SDK IoT Platform untuk mengirim pesan berikut ke perangkat: "{\"pwd\":\"2892nd6Y\"}".
Pesan berikut muncul di log lokal perangkat: {\"pwd\":\"2892nd6Y\"}.
Kunci Pintu 1:

Kunci Pintu 2:

Kunci Pintu 3:

Lampiran: Contoh kode
Anda dapat melihat contoh kode berikut dari SDK IoT Platform dan SDK perangkat:
- PubBroadcastDemo. Contoh kode digunakan untuk menyiarkan pesan ke semua perangkat online.
- BroadcastDemo. Contoh kode digunakan untuk menyiarkan pesan ke semua perangkat yang berlangganan ke topik tertentu.