全部产品
Search
文档中心

IoT Platform:Gunakan Perpustakaan Paho MQTT untuk Go untuk Menghubungkan Perangkat ke IoT Platform

更新时间:Jul 02, 2025

Topik ini menjelaskan cara menggunakan perpustakaan Paho Message Queuing Telemetry Transport (MQTT) untuk Go guna menghubungkan perangkat ke IoT Platform dan mengaktifkan pengiriman pesan.

Catatan Penggunaan

Dalam topik ini, izin pengguna umum digunakan untuk semua operasi. Jika Anda memerlukan izin administrator untuk operasi tertentu, jalankan perintah sudo.

Prasyarat

Sebuah produk dan perangkat telah dibuat di Konsol IoT Platform. Sertifikat perangkat telah diperoleh, mencakup ProductKey, DeviceName, dan DeviceSecret. Untuk informasi lebih lanjut, lihat topik-topik berikut:

Siapkan Lingkungan Pengembangan

Instal paket bahasa Go.

  • Pada macOS, jalankan perintah berikut:

    brew install go
  • Pada Ubuntu, jalankan perintah berikut:

    sudo apt-get install golang-go
  • Pada Windows, unduh paket instalasi dari situs resmi Go dan instal paket bahasa Go.

    Catatan

    Jika Anda tinggal di Tiongkok daratan, gunakan jaringan pribadi virtual (VPN) untuk mengakses situs resmi Go.

Unduh Perpustakaan Paho MQTT untuk Go

Untuk informasi tentang proyek Paho dan bahasa pemrograman yang didukung, lihat Eclipse Paho Downloads.

Jalankan perintah berikut untuk mengunduh Perpustakaan Paho MQTT untuk Go dan dependensinya:

go get github.com/eclipse/paho.mqtt.golang
go get github.com/gorilla/websocket
go get golang.org/x/net/proxy

Menghubungkan Perangkat ke IoT Platform

  1. Unduh file MqttSign.go yang disediakan oleh Alibaba Cloud. File tersebut berisi kode sumber untuk mendapatkan parameter koneksi MQTT.

    File MqttSign.go mendefinisikan fungsi untuk mendapatkan parameter koneksi MQTT. Anda harus memanggil fungsi ini untuk menghubungkan perangkat ke IoT Platform.

    • Definisi:

      type AuthInfo struct {
          password, username, mqttClientId string;
      }
      
      func calculate_sign(clientId, productKey, deviceName, deviceSecret, timeStamp string) AuthInfo;
    • Deskripsi:

      Fungsi ini digunakan untuk mendapatkan parameter koneksi MQTT berikut: username, password, dan mqttClientId.

    • Parameter Input:

      Parameter

      Tipe

      Deskripsi

      productKey

      String

      ProductKey dari produk tempat perangkat tersebut termasuk. Parameter ini digunakan untuk mengidentifikasi perangkat dalam IoT Platform.

      deviceName

      String

      DeviceName dari perangkat. Parameter ini digunakan untuk mengidentifikasi perangkat dalam IoT Platform.

      deviceSecret

      String

      DeviceSecret dari perangkat. Parameter ini digunakan untuk mengidentifikasi perangkat dalam IoT Platform.

      clientId

      String

      ID dari perangkat. ID dapat memiliki panjang hingga 64 karakter. Kami menyarankan Anda menggunakan alamat Media Access Control (MAC) atau nomor seri (SN) perangkat sebagai ID.

      timeStamp

      String

      Timestamp waktu saat ini. Satuan: milidetik.

    • Parameter Output:

      Fungsi ini mengembalikan struktur AuthInfo. Struktur ini berisi parameter-parameter yang dijelaskan dalam tabel berikut.

      Parameter

      Tipe

      Deskripsi

      username

      String

      Nama pengguna yang digunakan untuk membangun koneksi MQTT.

      password

      String

      Kata sandi yang digunakan untuk membangun koneksi MQTT.

      mqttClientId

      String

      ID dari klien MQTT.

  2. Tambahkan file program yang dapat menghubungkan perangkat ke IoT Platform.

    Untuk mendapatkan parameter koneksi MQTT, tulis program untuk memanggil fungsi dalam file MqttSign.go.

    Bagian ini menjelaskan cara mengembangkan perangkat dan menyediakan contoh kode.

    • Tentukan informasi perangkat.

      // set the device info, include product key, device name, and device secret
          var productKey string = "a1Zd7n5***"
          var deviceName string = "testdevice"
          var deviceSecret string = "UrwclDV33NaFSmk0JaBxNTqgSrJW****"
      
          // set timestamp, clientid, subscribe topic and publish topic
          var timeStamp string = "1528018257135"
          var clientId string = "192.168.****"
          var subTopic string = "/" + productKey + "/" + deviceName + "/user/get";
          var pubTopic string = "/" + productKey + "/" + deviceName + "/user/update";
    • Tentukan informasi koneksi MQTT.

      Panggil fungsi calculate_sign() dalam file MqttSign.go. Fungsi ini mengembalikan parameter username, password, dan mqttClientId berdasarkan nilai parameter input clientId, productKey, deviceName, deviceSecret, dan timeStamp. Kemudian tambahkan hasilnya ke dalam struktur opts.

          // set the login broker url
          var raw_broker bytes.Buffer
          raw_broker.WriteString("tls://")
          raw_broker.WriteString(productKey)
          raw_broker.WriteString(".iot-as-mqtt.cn-shanghai.aliyuncs.com:1883")
          opts := MQTT.NewClientOptions().AddBroker(raw_broker.String());
      
          // calculate the login auth info, and set it into the connection options
          auth := calculate_sign(clientId, productKey, deviceName, deviceSecret, timeStamp)
          opts.SetClientID(auth.mqttClientId)
          opts.SetUsername(auth.username)
          opts.SetPassword(auth.password)
          opts.SetKeepAlive(60 * 2 * time.Second)
          opts.SetDefaultPublishHandler(f)
      Penting
      • Jika Anda menggunakan instans publik versi lama, ganti cn-shanghai dalam raw_broker.WriteString(".iot-as-mqtt.cn-shanghai.aliyuncs.com:1883") dengan ID wilayah tempat perangkat Anda berada. Untuk informasi tentang ID wilayah, lihat Wilayah.

      • Jika Anda menggunakan instans Enterprise Edition atau instans publik versi baru, ganti raw_broker.String() dalam opts := MQTT.NewClientOptions().AddBroker(raw_broker.String()); dengan $<MQTT endpoint>:1833. Contoh: opts := MQTT.NewClientOptions().AddBroker("iot-***.mqtt.iothub.aliyuncs.com:1883");.

        Untuk informasi tentang cara mendapatkan titik akhir MQTT, lihat Lihat titik akhir instans publik versi baru atau instans Enterprise Edition.

      Untuk informasi tentang instans IoT Platform, lihat Ikhtisar Instans.

    • Panggil fungsi Connect() dari Perpustakaan Paho MQTT untuk Go untuk menghubungkan perangkat ke IoT Platform.

          // create and start a client using the above ClientOptions
          c := MQTT.NewClient(opts)
          if token := c.Connect(); token.Wait() && token.Error() != nil {
              panic(token.Error())
          }
          fmt.Print("Connect aliyun IoT Cloud Success\n");
    • Panggil fungsi Publish() untuk menerbitkan pesan. Tentukan topik tempat Anda ingin menerbitkan pesan dan muatan pesan tersebut.

          // publish 5 messages to pubTopic("/a1Zd7n5****/deng/user/update")
          for i := 0; i < 5; i++ {
              fmt.Println("publish msg:", i)
              text := fmt.Sprintf("ABC #%d", i)
              token := c.Publish(pubTopic, 0, false, text)
              fmt.Println("publish msg: ", text)
              token.Wait()
              time.Sleep(2 * time.Second)
          }

      Untuk informasi tentang topik, lihat Apa itu topik?

    • Panggil fungsi Subscribe() untuk berlangganan topik dan menerima pesan dari IoT Platform.

          // subscribe to subTopic("/a1Zd7n5***/deng/user/get") and request messages to be delivered
          if token := c.Subscribe(subTopic, 0, nil); token.Wait() && token.Error() != nil {
              fmt.Println(token.Error())
              os.Exit(1)
          }
          fmt.Print("Subscribe topic " + subTopic + " success\n");
                                      

    Untuk informasi tentang metode komunikasi antara perangkat, server, dan IoT Platform, lihat Ikhtisar komunikasi antara perangkat, platform IoT, dan server.

  3. Kompilasi proyek.

Contoh Kode

Anda dapat menggunakan contoh kode untuk menghubungkan perangkat ke IoT Platform.

  1. Unduh dan ekstrak paket demo.

    Tabel berikut menjelaskan file dalam paket aiot-go-demo.

    File

    Deskripsi

    MqttSign.go

    File ini berisi kode yang digunakan untuk mendapatkan parameter koneksi MQTT. Saat Anda mengeksekusi file iot.go, fungsi calculate_sign() dipanggil untuk mendapatkan parameter username, password, dan mqttClientId.

    iot.go

    File ini berisi kode logika yang digunakan untuk menghubungkan perangkat ke IoT Platform dan mengaktifkan komunikasi.

    x509

    Sertifikat root IoT Platform. Sertifikat ini diperlukan untuk menghubungkan perangkat ke IoT Platform.

    Catatan

    Jika Anda menghubungkan perangkat ke IoT Platform menggunakan gateway cloud MQTT, Anda dapat menggunakan sertifikat kustom untuk memverifikasi identitas perangkat. Untuk informasi lebih lanjut, lihat Langkah 1: Buat sertifikat kustom.

  2. Ganti informasi perangkat dalam file iot.go dengan informasi perangkat Anda.

    Anda dapat menggunakan alat seperti Linux vi untuk memodifikasi file iot.go.

    • Ganti nilai parameter productKey, deviceName, dan deviceSecret dengan informasi sertifikat perangkat Anda.

    • Opsional. Konfigurasikan parameter timeStamp dan clientId. Anda dapat mengganti nilai parameter clientId dengan alamat MAC atau SN perangkat Anda.

      Jika Anda tidak mengonfigurasi parameter sebelumnya, Anda masih dapat terhubung ke IoT Platform. Namun, kami menyarankan Anda mengganti nilai parameter dengan nilai aktual.

    • Ubah parameter koneksi MQTT yang digunakan untuk menghubungkan perangkat ke IoT Platform. Untuk informasi lebih lanjut, lihat Langkah 2 dalam bagian "Menghubungkan Perangkat ke IoT Platform" dari topik ini.

  3. Jalankan perintah berikut di Command Prompt untuk mengeksekusi file iot.go:

    go run iot.go MqttSign.go 

    Setelah Anda mengeksekusi file, log lokal berikut akan dihasilkan:

    clientId192.168.****deviceNametestdeviceproductKeya1Zd7n5****timestamp1528018257135
    1b865320fc183cc747041c9faffc9055fc45****
    Connect aliyun IoT Cloud Success
    Subscribe topic /a1Zd7n5****/testdevice/user/get success
    publish msg: 0
    publish msg:  ABC #0
    publish msg: 1
    publish msg:  ABC #1
    publish msg: 2
    publish msg:  ABC #2
    publish msg: 3
    publish msg:  ABC #3
    publish msg: 4
    publish msg:  ABC #4
    publish msg: 5
    publish msg:  ABC #5

    Di Konsol IoT Platform, Anda dapat melihat status perangkat dan log.

    • Pilih Devices > Devices. Halaman Perangkat menunjukkan bahwa perangkat berada dalam keadaan Online.

    • Pilih Maintenance > Device Log. Lalu, klik tab Cloud run log atau Device local log untuk melihat log. Untuk informasi lebih lanjut, lihat Log IoT Platform dan Log lokal perangkat.

Kode Kesalahan

Jika perangkat gagal membangun koneksi MQTT ke IoT Platform, Anda dapat mendiagnosis masalah berdasarkan kode kesalahan. Untuk informasi lebih lanjut, lihat Pemecahan Masalah.