全部产品
Search
文档中心

IoT Platform:Membuat Koneksi MQTT

更新时间:Jul 02, 2025

Topik ini menjelaskan cara membuat koneksi Message Queuing Telemetry Transport (MQTT) menggunakan klien MQTT.

Informasi latar belakang

Saat menggunakan klien MQTT untuk mengirim pesan CONNECT MQTT, perhatikan hal-hal berikut:

  • Jika sertifikat perangkat (ProductKey, DeviceName, dan DeviceSecret) atau kombinasi ProductKey, DeviceName, ClientID, dan DeviceToken digunakan untuk menghubungkan beberapa perangkat fisik ke IoT Platform, klien MQTT Anda mungkin terus-menerus online dan offline. Jika perangkat baru mengirim permintaan verifikasi ke IoT Platform, perangkat asli dipaksa offline. Setelah perangkat offline, ia secara otomatis mencoba membangun kembali koneksi.
  • Dalam mode koneksi MQTT, Link SDK secara otomatis mencoba membangun kembali koneksi setelah perangkat terputus. Anda dapat melihat informasi tentang perilaku perangkat dengan menggunakan Log Service.

Menghubungkan klien MQTT ke IoT Platform

  1. Untuk memastikan keamanan komunikasi, gunakan Transport Layer Security (TLS) untuk mengenkripsi data yang ditransmisikan antara IoT Platform dan perangkat.
    Penting Mulai 2 Agustus 2022, perangkat baru tidak dapat lagi terhubung ke IoT Platform melalui saluran TCP tanpa enkripsi. Batasan ini memastikan keamanan IoT Platform dan bisnis Anda. Batasan ini tidak berlaku untuk perangkat dari akun Alibaba Cloud yang sudah ada. Kami menyarankan Anda mengaktifkan enkripsi TLS untuk perangkat yang ingin dihubungkan ke IoT Platform sesegera mungkin.
    • Link SDK mengintegrasikan fitur enkripsi TLS. Anda tidak perlu mengonfigurasi fitur ini.
    • Jika Anda ingin mengembangkan SDK sisi perangkat Anda sendiri, unduh sertifikat root. Untuk informasi tentang cara menggunakan sertifikat root, lihat CA Certificates.
      Penting Sertifikat root berlaku hingga 12:00:00 pada 28 Januari 2028. Setelah sertifikat root kedaluwarsa, Anda tidak dapat menggunakan sertifikat tersebut untuk memverifikasi server Certificate Authority (CA). Pastikan semua perangkat yang memiliki enkripsi TLS diaktifkan dapat memperbarui sertifikat root.
  2. Hubungkan klien MQTT ke server. Untuk informasi lebih lanjut tentang metode koneksi, kunjungi GitHub.
    Untuk informasi lebih lanjut tentang protokol MQTT, lihat Dokumentasi Resmi MQTT.
    Catatan Alibaba Cloud tidak menyediakan dukungan teknis untuk kode pihak ketiga.
  3. Buat koneksi MQTT.

    Kami menyarankan Anda menggunakan SDK sisi perangkat untuk menghubungkan perangkat ke IoT Platform. Jika Anda menggunakan SDK untuk C untuk menghubungkan perangkat ke IoT Platform, lihat Koneksi melalui MQTT. Jika Anda menggunakan SDK perangkat Anda sendiri untuk menghubungkan perangkat, konfigurasikan parameter. Tabel berikut menjelaskan parameter tersebut.

    ParameterDeskripsi
    Titik AkhirTitik akhir dari instance publik atau instance Enterprise Edition yang ingin Anda hubungkan dengan klien MQTT. Untuk informasi lebih lanjut tentang titik akhir yang didukung, lihat Kelola titik akhir sebuah instance.
    Header variabel: Keep Alive Pesan CONNECT harus mencakup parameter Keep Alive. Periode keep-alive bisa 30 hingga 1.200 detik. Kami menyarankan Anda menetapkan periode keep-alive yang lebih dari 300 detik. Jika koneksi jaringan tidak stabil, kami menyarankan Anda menetapkan periode keep-alive yang lebih panjang. Jika nilai parameter Keep Alive tidak dalam rentang ini, IoT Platform menolak koneksi.

    Untuk informasi lebih lanjut, lihat Mekanisme keep-alive MQTT.

    Parameter dalam pesan CONNECT MQTTVerifikasi sertifikat unik per perangkat dan pra-pendaftaran verifikasi sertifikat unik per produk: Gunakan sertifikat perangkat (ProductKey, DeviceName, dan DeviceSecret) untuk menghubungkan perangkat ke IoT Platform.
    mqttClientId: clientId+"|securemode=3,signmethod=hmacsha1,timestamp=132323232|"
    mqttUsername: deviceName+"&"+productKey
    mqttPassword: sign_hmac(deviceSecret,content)
    • mqttClientId: Parameter tambahan ditempatkan di antara tanda vertikal (| |).
    • clientId: ID klien. Anda dapat menentukan ID klien berdasarkan persyaratan bisnis Anda. ID klien tidak boleh melebihi 64 karakter. Kami menyarankan Anda menggunakan alamat MAC atau nomor seri (SN) perangkat sebagai ID klien.
    • securemode: Mode keamanan saat ini. Nilai valid: 2 (koneksi TLS langsung) dan 3 (koneksi TCP langsung).
    • signmethod: Algoritma tanda tangan. Nilai valid: hmacmd5, hmacsha1, hmacsha256, dan sha256. Nilai default: hmacmd5.
    • timestamp: Waktu saat ini, dalam milidetik. Parameter ini opsional.
    • mqttPassword: Kata sandi. Metode perhitungan: Urutkan parameter yang dikirimkan ke server secara alfabetis dan enkripsi parameter berdasarkan algoritma tanda tangan yang ditentukan. Untuk informasi lebih lanjut tentang contoh perhitungan tanda tangan, lihat Contoh pembuatan tanda tangan untuk koneksi MQTT.
    • content: String gabungan yang terdiri dari parameter yang dikirimkan ke server. Parameter ini mencakup productKey, deviceName, timestamp, dan clientId. Parameter diurutkan secara alfabetis dan digabungkan tanpa pemisah.
      Penting productKey dan deviceName wajib. timestamp dan clientId opsional. Jika Anda mengonfigurasi parameter timestamp atau clientId, nilai parameter harus sama dengan nilai yang ditentukan untuk parameter mqttClientId.

    Contoh:

    Nilai berikut ditentukan: clientId=12345, deviceName=device, productKey=pk, timestamp=789, signmethod=hmacsha1, deviceSecret=secret. Kode berikut menunjukkan parameter dalam pesan CONNECT MQTT yang dikirim melalui TCP:

    mqttclientId=12345|securemode=3,signmethod=hmacsha1,timestamp=789|
    mqttUsername=device&pk
    mqttPassword=hmacsha1("secret","clientId12345deviceNamedeviceproductKeypktimestamp789").toHexString(); 

    Kata sandi yang dienkripsi adalah string heksadesimal yang dikonversi dari string biner. Kode berikut menunjukkan hasilnya:

    FAFD82A3D602B37FB0FA8B7892F24A477F85****

    Untuk informasi lebih lanjut tentang cara mendapatkan parameter tanda tangan MQTT, lihat Bagaimana cara mendapatkan parameter MQTT untuk autentikasi?.

    Verifikasi sertifikat unik per produk tanpa pra-pendaftaran: Gunakan ProductKey, DeviceName, ClientID, dan DeviceToken untuk menghubungkan perangkat ke IoT Platform.
    mqttClientId: clientId+"|securemode=-2,authType=connwl|"
    mqttUsername: deviceName+"&"+productKey
    mqttPassword: deviceToken
    • mqttClientId: Parameter tambahan ditempatkan di antara tanda vertikal (| |).
    • clientId, deviceToken: ClientID dan DeviceToken yang diperoleh saat perangkat didaftarkan secara dinamis. Untuk informasi lebih lanjut, lihat Pendaftaran dinamis berbasis MQTT.
    • securemode: Mode keamanan saat ini. Jika Anda menggunakan verifikasi sertifikat unik per produk tanpa pra-pendaftaran, atur nilainya menjadi -2.
    • authType: Metode verifikasi. Jika Anda menggunakan verifikasi sertifikat unik per produk tanpa pra-pendaftaran, atur nilainya menjadi connwl.

Contoh

Untuk informasi lebih lanjut tentang cara menggunakan klien MQTT open source untuk terhubung ke IoT Platform, lihat topik berikut:

Mekanisme keep-alive MQTT

Selama periode keep-alive, perangkat harus mengirim setidaknya satu pesan, termasuk permintaan ping.

Nilai valid untuk periode keep-alive adalah 30 hingga 1.200 detik. Kami menyarankan Anda menetapkan periode keep-alive ke nilai lebih dari 300 detik.

Pengatur waktu dimulai ketika IoT Platform mengirim pesan CONNACK sebagai respons terhadap pesan CONNECT. Ketika IoT Platform menerima pesan PUBLISH, SUBSCRIBE, PING, atau PUBACK, pengatur waktu diatur ulang. IoT Platform memeriksa denyut jantung koneksi MQTT setiap 30 detik. Waktu tunggu untuk pemeriksaan denyut jantung adalah periode antara saat perangkat terhubung ke IoT Platform dan saat pemeriksaan denyut jantung berikutnya dilakukan. Periode timeout maksimum dihitung menggunakan rumus berikut: Interval denyut jantung × 1.5 + Waktu tunggu untuk pemeriksaan denyut jantung. Jika server tidak menerima pesan dari perangkat dalam periode timeout maksimum, server mengakhiri koneksi dengan perangkat.