Topik ini menjelaskan cara menggunakan C Link SDK untuk menghubungkan perangkat simulasi (dalam contoh ini, sakelar lampu malam) ke IoT Platform melalui MQTT dan memublikasikan data ke topik kustom.
Prasyarat
IoT Platform telah diaktifkan.
Buat produk dan perangkat
-
Login ke IoT Platform console dan klik kartu instans target.
-
Di panel navigasi sebelah kiri, pilih , lalu klik Create Product.
-
Di halaman Create Product, atur parameter Product Name menjadi NightLightSwitch dan parameter Category menjadi Custom Category. Gunakan nilai default untuk parameter lainnya, lalu klik OK.
Di halaman Create Product, klik Add pada bagian Add Device.
Di halaman Devices, klik Add Device.
-
Di kotak dialog Add Device, masukkan nama perangkat, misalnya LightSwitch, lalu klik OK.
Untuk Nickname, masukkan
Quick Start. Di kotak dialog The devices have been added., klik Copy Device Certificate, lalu simpan informasi sertifikat perangkat ke server lokal. Untuk informasi selengkapnya, lihat Device certificates.
Persiapkan lingkungan pengembangan
Dalam contoh ini, lingkungan pengembangan adalah Ubuntu 16.04, dan alat pengembangan yang digunakan adalah gcc dan make. Untuk informasi selengkapnya, lihat Project configurations.
Instal Ubuntu 16.04.
Untuk informasi selengkapnya, lihat Ubuntu.
Jalankan perintah berikut untuk menginstal gcc dan make:
sudo apt-get -y install gcc make
Konfigurasikan SDK
Unduh paket demo dari Demo file ke lingkungan pengembangan, lalu ekstrak paket tersebut.
IoT Platform memungkinkan Anda mengembangkan fitur kustom untuk Link SDK. Untuk informasi selengkapnya, lihat Obtain Link SDK for C.
-
Buka file
./LinkSDK/demos/mqtt_basic_demo.cdan konfigurasikan parameter terkait.-
Konfigurasikan parameter yang digunakan untuk menentukan informasi koneksi perangkat agar perangkat dapat terhubung ke IoT Platform. Tabel berikut menjelaskan parameter tersebut. Contoh kode:
char *product_key = "a18wP******"; char *device_name = "LightSwitch"; char *device_secret = "uwMTmVAMnGGHaAkqmeDY6cHxxB******"; char *mqtt_host = "a18wP******.iot-as-mqtt.cn-shanghai.aliyuncs.com";Parameter
Contoh
Deskripsi
mqtt_host
a18wP******.iot-as-mqtt.cn-shanghai.aliyuncs.com
Titik akhir (endpoint) tempat perangkat akan terhubung.
-
Untuk instans Edisi Perusahaan dan instans publik baru: Temukan endpoint di panel Development Configuration pada halaman Instance Details.
Jika Anda menggunakan instans publik versi sebelumnya, endpoint instans publik memiliki format
${YourProductKey}.iot-as-mqtt.${YourRegionId}.aliyuncs.com.
Untuk informasi selengkapnya tentang instans dan endpoint, lihat View instance endpoints.
product_key
a18wP******
Informasi sertifikat perangkat. Sertifikat perangkat disimpan di server lokal Anda setelah perangkat dibuat.
Anda dapat melihat sertifikat perangkat di halaman Device Details di IoT Platform console. Untuk informasi selengkapnya, lihat Obtain device verification information.
device_name
LightSwitch
device_secret
uwMTmVAMnGGHaAkqmeDY6cHxxB******
-
-
Tentukan topik tempat perangkat akan berlangganan untuk menerima pesan dari IoT Platform. Contoh:
/a18wP******/LightSwitch/user/get. Contoh kode:CatatanJika ingin menggunakan fitur ini, hapus komentar pada kode yang diapit oleh pasangan kombinasi garis miring dan tanda bintang (/**/).
{ char *sub_topic = "/a18wP******/LightSwitch/user/get"; res = aiot_mqtt_sub(mqtt_handle, sub_topic, NULL, 1, NULL); if (res < 0) { printf("aiot_mqtt_sub failed, res: -0x%04X\n", -res); return -1; } }Parameter
Contoh
Deskripsi
sub_topic
/a18wP******/LightSwitch/user/get
Topik tempat perangkat memiliki izin Subscribe. Perangkat dapat menerima pesan dari IoT Platform melalui topik ini.
Anda dapat melihat topik kustom di IoT Platform console. Di halaman Product Details, klik tab Topic Categories. Di tab yang muncul, klik Topic Category. Untuk informasi selengkapnya, lihat What is a topic.
Dalam contoh ini, topik kustom default digunakan. Penjelasan parameter:
a1oGs******menunjukkan ProductKey perangkat.LightSwitchmenunjukkan DeviceName perangkat.
-
Tentukan topik yang dapat digunakan perangkat untuk mengirim pesan. Contoh:
/a18wP******/LightSwitch/user/update. Lalu, tentukan konten pesan yang ingin dikirim. Contoh kode:CatatanJika ingin menggunakan fitur ini, hapus komentar pada kode yang diapit oleh pasangan kombinasi garis miring dan tanda bintang (/**/).
{ char *pub_topic = "/a18wP******/LightSwitch/user/update"; char *pub_payload = "{\"id\":\"1\",\"version\":\"1.0\",\"params\":{\"LightSwitch\":0}}"; res = aiot_mqtt_pub(mqtt_handle, pub_topic, (uint8_t *)pub_payload, (uint32_t)strlen(pub_payload), 0); if (res < 0) { printf("aiot_mqtt_sub failed, res: -0x%04X\n", -res); return -1; } }Parameter
Contoh
Deskripsi
pub_topic
/a18wP******/LightSwitch/user/update
Topik tempat perangkat memiliki izin Publish. Perangkat dapat menggunakan topik ini untuk mengirim pesan ke IoT Platform.
Anda dapat melihat topik kustom di IoT Platform console. Di halaman Product Details, klik tab Topic Categories. Di tab yang muncul, klik Topic Category. Untuk informasi selengkapnya, lihat What is a topic.
Dalam contoh ini, topik kustom default digunakan. Penjelasan parameter:
a1oGs******menunjukkan ProductKey perangkat.LightSwitchmenunjukkan DeviceName perangkat.
pub_payload
{\"id\":\"1\",\"version\":\"1.0\",\"params\":{\"LightSwitch\":0}}
Pesan yang dikirim ke IoT Platform.
Dalam contoh ini, topik kustom digunakan. Anda dapat menggunakan format pesan kustom.
-
Di direktori root SDK, jalankan perintah make.
File kode contoh yang dapat dieksekusi
./output/mqtt-basic-demodihasilkan.
Hasil eksekusi
Di direktori root SDK, jalankan perintah berikut untuk menjalankan file yang dapat dieksekusi:
./output/mqtt-basic-demo-
Anda dapat melihat hasil eksekusi di perangkat.
-
Data log berikut menunjukkan bahwa perangkat
LightSwitchterhubung ke IoT Platform.[1619768570.433][LK-0313] MQTT user calls aiot_mqtt_connect api, connect [1619768570.433][LK-0317] LightSwitch&a18wP****** [1619768570.433][LK-0318] 933FE333F78F42E2AAD384F629C771277E06D459577942EA1F04ACFDFE****** core_sysdep_network_establish host a18wP******.iot-as-mqtt.cn-shanghai.aliyuncs.com port 8883, type 0 establish tcp connection with server(host='a18wP******.iot-as-mqtt.cn-shanghai.aliyuncs.com', port=[8883]) success to establish tcp, fd=3 local port: 49122 [1619768570.599][LK-1000] establish mbedtls connection with server(host='a18wP******.iot-as-mqtt.cn-shanghai.aliyuncs.com', port=[8883]) [1619768570.600][LK-1000] success to establish mbedtls connection, (cost 45134 bytes in total, max used 47870 bytes) [1619768570.644][LK-0313] MQTT connect success in 212 ms AIOT_MQTTEVT_CONNECT -
Data log berikut menunjukkan bahwa perangkat
LightSwitchberlangganan topik/a18wP******/LightSwitch/user/get.[1620373302.144][LK-0309] sub: /a18wP******/LightSwitch/user/getSetelah perangkat berhasil berlangganan topik, Anda dapat kembali ke IoT Platform console. Di tab Topics pada halaman Device Details, temukan topik tersebut dan klik Publish Message di kolom Actions. Di kotak dialog Publish Message, masukkan pesan, misalnya, This is a test message from Alibaba Iot Platform., untuk mensimulasikan pengiriman pesan dari IoT Platform ke perangkat.
-
Data log berikut menunjukkan bahwa perangkat
LightSwitchmenggunakan topik/a18wP******/LightSwitch/user/updateuntuk mengirimkan pesan ke IoT Platform.[1619768570.644][LK-0309] pub: /a18wP******/LightSwitch/user/update [LK-030A] > 7B 22 69 64 22 3A 22 31 22 2C 22 76 65 72 73 69 | {"id":"1","versi [LK-030A] > 6F 6E 22 3A 22 31 2E 30 22 2C 22 70 61 72 61 6D | on":"1.0","param [LK-030A] > 73 22 3A 7B 22 4C 69 67 68 74 53 77 69 74 63 68 | s":{"LightSwitch [LK-030A] > 22 3A 30 7D 7D
-
Anda dapat login ke IoT Platform console untuk melihat status perangkat dan log operasi.
Di panel navigasi sebelah kiri, pilih . Lalu, temukan perangkat dan lihat status perangkat tersebut. Jika nilai di kolom State/Enabled adalah Online, berarti perangkat telah terhubung ke IoT Platform.
Di panel navigasi sebelah kiri, pilih . Di halaman Device Log, pilih produk NightLightSwitch. Anda dapat melihat log yang mencatat saat perangkat produk tersebut online, berlangganan topik, dan mengirimkan pesan.
Jika terjadi error selama debugging, perbaiki error tersebut sesuai petunjuk yang diberikan. Untuk informasi selengkapnya, lihat Error codes received by devices.