Topik ini menjelaskan cara memanggil operasi API dari Link SDK untuk C guna mengimplementasikan fitur komunikasi siaran pada perangkat. Contoh ini menggunakan file kode bernama ./demos/mqtt_broadcast_demo.c.
Informasi latar belakang
Prosedur
Inisialisasi klien.
Untuk informasi lebih lanjut, lihat Langkah 1: Inisialisasi Klien.
Konfigurasikan fitur yang diperlukan.
Untuk informasi lebih lanjut, lihat Langkah 2: Konfigurasi Fitur.
Buat koneksi.
Untuk informasi lebih lanjut, lihat Langkah 3: Buat Koneksi.
Opsional. Jika Anda ingin mengirim pesan siaran ke semua perangkat dalam suatu produk, perangkat harus memanggil fungsi aiot_mqtt_sub untuk berlangganan topik tertentu.
Kode contoh:
{ char *sub_topic = "/broadcast/a18wP******/test"; res = aiot_mqtt_sub(mqtt_handle, sub_topic, NULL, 1, NULL); if (res < 0) { printf("aiot_mqtt_sub gagal, res: -0x%04X\n", -res); return -1; } }Parameter:
Parameter
Contoh
Deskripsi
sub_topic
/broadcast/a18wP******/test
Topik tempat pesan siaran dikirim. Format:
/broadcast/${productKey}/<bidang kustom>. Parameter dalam contoh ini:a18wP******adalah ProductKey dari perangkat.test menunjukkan bidang kustom.
Untuk informasi lebih lanjut, lihat Topik.
Terima pesan siaran.
Setelah perangkat terhubung ke IoT Platform, Anda dapat memanggil operasi PubBroadcast dari IoT Platform untuk mengirim pesan siaran ke perangkat.
PentingDisarankan untuk mengirim maksimal satu pesan siaran per menit untuk mencegah pembatasan laju.
Untuk informasi lebih lanjut, lihat Pesan Siaran.
Perangkat memanggil fungsi aiot_mqtt_recv untuk menerima pesan siaran. Kemudian, fungsi callback dipanggil untuk melakukan operasi yang diperlukan.
Dalam contoh ini, fungsi callback bernama demo_mqtt_default_recv_handler
digunakan.Tentukan fungsi callback untuk memproses pesan siaran.
Periksa apakah pesan tersebut merupakan pesan siaran berdasarkan format topik.
Jika Anda ingin mengirim pesan siaran ke semua perangkat online dari suatu produk, perangkat tidak perlu berlangganan topik siaran. Setelah setiap perangkat menerima pesan siaran, Anda dapat memeriksa apakah pesan tersebut merupakan pesan siaran berdasarkan format topik siaran. Format topik siaran adalah
/sys/${productKey}/${deviceName}/broadcast/request/${MessageId}.Jika Anda ingin mengirim pesan siaran ke semua perangkat yang berlangganan topik siaran kustom, perangkat harus berlangganan topik tersebut. Format topik siaran kustom adalah
/broadcast/${productKey}/<bidang kustom>.
Anda dapat menentukan logika pemrosesan callback sesuai dengan kebutuhan bisnis Anda. Dalam contoh ini, pesan siaran dicetak.
void demo_mqtt_default_recv_handler(void *handle, const aiot_mqtt_recv_t *packet, void *userdata) { switch (packet->type) { …… …… case AIOT_MQTTRECV_PUB: { printf("pub, qos: %d, topic: %.*s\n", packet->data.pub.qos, packet->data.pub.topic_len, packet->data.pub.topic); printf("pub, payload: %.*s\n", packet->data.pub.payload_len, packet->data.pub.payload); /* TODO: Cetak pesan siaran */ } break; …… …… default: { } } }
Tutup koneksi.
Untuk informasi lebih lanjut, lihat Langkah 8: Putuskan Koneksi Perangkat dari IoT Platform.
Keluar dari program.
Untuk informasi lebih lanjut, lihat Langkah 9: Keluar dari Program.
Apa yang harus dilakukan selanjutnya
Setelah mengonfigurasi file kode contoh, kompilasi file tersebut untuk menghasilkan file yang dapat dieksekusi. Dalam contoh ini, file yang dihasilkan adalah
demos/mqtt-broadcast-demo.Untuk informasi lebih lanjut, lihat Siapkan Lingkungan.
Untuk informasi lebih lanjut tentang hasil eksekusi, lihat Lihat Log.