全部产品
Search
文档中心

IoT Platform:Menggunakan pustaka MQTT Paho untuk Python untuk menghubungkan perangkat ke IoT Platform

更新时间:Jul 02, 2025

Topik ini menjelaskan cara menggunakan pustaka MQTT Paho untuk Python guna menghubungkan perangkat ke IoT Platform dan mengaktifkan pengiriman pesan.

Prasyarat

Produk dan perangkat telah dibuat dalam suatu instans di Konsol IoT Platform. Sertifikat perangkat dan Titik akhir MQTT telah diperoleh. Informasi sertifikat mencakup ProductKey, DeviceName, dan DeviceSecret. Untuk informasi lebih lanjut, lihat topik-topik berikut:

Siapkan lingkungan pengembangan

Disarankan menggunakan Python 3.6.

  • Linux

    Jalankan perintah berikut untuk menginstal Python:

    Penting

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

    sudo add-apt-repository ppa:deadsnakes/ppa 
    sudo apt-get update 
    sudo apt-get install python3.6 
    wget https://bootstrap.pypa.io/get-pip.py 
    sudo python3.6 get-pip.py 
    python3.6 -m pip install --upgrade pip setuptools wheel 
    sudo apt-get install python3.6-venv
  • Windows

    Instal salah satu paket berikut sesuai dengan sistem operasi Anda:

  • macOS

    Unduh paket python-3.6.7-macosx10.9.pkg.

Unduh pustaka MQTT Paho untuk Python

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

Jalankan perintah berikut untuk menginstal pustaka MQTT Paho untuk Python. Untuk informasi lebih lanjut, lihat Paho-MQTT.

pip install paho-mqtt==1.6.1
Penting

Demo ini tidak mendukung pustaka MQTT Paho versi 2.0.0.

Menghubungkan perangkat ke IoT Platform

  • File MqttSign.py mendefinisikan fungsi yang dipanggil untuk mendapatkan parameter koneksi MQTT. Anda harus memanggil fungsi ini untuk menghubungkan perangkat ke IoT Platform.

    Fungsi:

    • 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 di IoT Platform.

      deviceName

      String

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

      deviceSecret

      String

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

      clientId

      String

      ClientID dari perangkat. Untuk mengidentifikasi perangkat secara efisien, kami sarankan Anda menggunakan alamat MAC atau nomor seri (SN) perangkat sebagai ClientID.

      timeStamp

      String

      Timestamp yang menunjukkan waktu saat ini dalam milidetik. Parameter ini opsional.

    • Parameter output:

      Parameter

      Tipe

      Deskripsi

      mqttUsername

      String

      Nama pengguna yang digunakan untuk membuat koneksi MQTT.

      mqttPassword

      String

      Kata sandi yang digunakan untuk membuat koneksi MQTT.

      mqttClientId

      String

      ID dari klien MQTT.

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

    Untuk mendapatkan parameter koneksi MQTT, Anda harus menulis program untuk memanggil fungsi dalam file MqttSign.py.

    Bagian ini memberikan instruksi pengembangan dan kode contoh.

    • Tentukan informasi perangkat.

      # atur info perangkat, termasuk product key, device name, dan device secret
      productKey = "a1LhUsK***"
      deviceName = "python***"
      deviceSecret = "bdd043d193782d11***"
      
      # atur timestamp, clientid, topik langganan, dan topik publikasi
      timeStamp = str((int(round(time.time() * 1000))))
      clientId = "192.168.****"
      subTopic = "/" + productKey + "/" + deviceName + "/user/get"
      pubTopic = "/" + productKey + "/" + deviceName + "/user/update"
    • Tentukan informasi koneksi MQTT.

      Panggil fungsi calculate_sign_time dalam file MqttSign.py. Fungsi ini mengembalikan parameter mqttUsername, mqttPassword, dan mqttClientId berdasarkan nilai-nilai parameter input berikut: deviceSecret, timeStamp, clientId, productKey, dan deviceName.

      Dalam contoh ini, koneksi TCP berbasis Transport Layer Security (TLS) dibuat. Anda harus unduh sertifikat root untuk mengonfigurasi parameter koneksi.

      # atur host, port
      host = productKey + ".iot-as-mqtt.cn-shanghai.aliyuncs.com"
      # instanceId = "***"
      # host = instanceId + ".mqtt.iothub.aliyuncs.com"
      port = 1883
      
      # atur tls crt, keepalive
      tls_crt = "root.crt"
      keepAlive = 300
      
      # hitung info login auth, dan atur ke dalam opsi koneksi
      m = AuthIfo()
      m.calculate_sign_time(productKey, deviceName, deviceSecret, clientId, timeStamp)
      client = mqtt.Client(m.mqttClientId)
      client.username_pw_set(username=m.mqttUsername, password=m.mqttPassword)
      client.tls_set(tls_crt)
      Catatan
      • Jika Anda menggunakan instans publik versi lama, ganti cn-shanghai dalam host = productKey + ".iot-as-mqtt.cn-shanghai.aliyuncs.com" dengan ID wilayah tempat perangkat berada. Untuk informasi lebih lanjut tentang format ID wilayah, lihat Wilayah yang Didukung.

      • Jika Anda menggunakan instans publik versi baru atau instans Edisi Perusahaan, ganti instanceId dalam host = instanceId + ".mqtt.iothub.aliyuncs.com" dengan ID instans.

        Untuk mendapatkan Titik akhir MQTT, lakukan langkah-langkah berikut: Masuk ke IoT Platform console. Di halaman Overview, klik kartu instans yang ingin Anda kelola. Titik akhir MQTT ditampilkan di halaman Detail Instans. Untuk informasi lebih lanjut, lihat Lihat Titik Akhir dari Sebuah Instans.

        Untuk informasi lebih lanjut tentang instans IoT Platform, lihat Ikhtisar.

    • Panggil fungsi Connect() untuk menghubungkan perangkat ke IoT Platform.

      def on_connect(client, userdata, flags, rc):
          if rc == 0:
              print("koneksi berhasil!")
          else:
              print("koneksi gagal... kode kesalahan adalah:" + str(rc))
      
      def connect_mqtt():
          client.on_connect = on_connect
          client.connect(host, port, keepAlive)
          return client
    • Panggil fungsi Publish() untuk menerbitkan pesan. Anda harus menentukan topik tempat pesan diterbitkan dan muatan pesan.

      def publish_message():
          # terbitkan 5 pesan ke pubTopic("/a1LhUsK****/python***/user/update")
          for i in range(5):
              message = "ABC" + str(i)
              client.publish(pubTopic, message)
              print("terbitkan pesan:" + str(i))
              time.sleep(2)

      Untuk informasi lebih lanjut tentang topik, lihat Apa Itu Topik?

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

      def subscribe_topic():
          # berlangganan ke subTopic("/a1LhUsK****/python***/user/get") dan minta pesan dikirim
          client.subscribe(subTopic)

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

  2. Jalankan proyek.

Kode contoh

Jalankan program kode contoh yang sudah dikompilasi untuk menghubungkan perangkat ke IoT Platform.

  1. Unduh paket yang mencakup kode contoh dari tautan dan ekstrak paket ke direktori aiot-python-demo. Tabel berikut menjelaskan file-file yang disertakan dalam direktori.

    File sertifikat

    Deskripsi

    MqttSign.py

    File ini berisi kode yang digunakan untuk mendapatkan parameter koneksi yang diperlukan untuk menghubungkan perangkat ke IoT Platform melalui MQTT. Saat Anda menjalankan file ini, fungsi calculate_sign_time dipanggil untuk mendapatkan nilai parameter mqttUsername, mqttPassword, dan mqttClientId.

    iot.py

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

    root.crt

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

  2. Dalam file iot.py, ganti informasi perangkat dengan informasi perangkat Anda.

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

      # atur info perangkat, termasuk product key, device name, dan device secret
      productKey = "a1LhUsK***"
      deviceName = "python***"
      deviceSecret = "bdd043d193782d11***"
    • Opsional. Ganti nilai parameter timeStamp dan clientId. Anda bisa mengganti nilai parameter clientId dengan alamat MAC atau SN perangkat Anda.

      Catatan

      Jika Anda tidak mengganti nilai-nilai tersebut, Anda masih bisa menghubungkan perangkat ke IoT Platform. Dalam skenario nyata, kami sarankan Anda mengganti nilai-nilai parameter dengan nilai sebenarnya.

    • Ganti .iot-as-mqtt.cn-shanghai.aliyuncs.com dalam host = productKey + ".iot-as-mqtt.cn-shanghai.aliyuncs.com" dengan Titik akhir MQTT sebenarnya.

      Untuk informasi lebih lanjut, lihat Langkah 2 dalam bagian "Menghubungkan Perangkat ke IoT Platform" dari topik ini.

  3. Jalankan file iot.py.

    Setelah Anda menjalankan file tersebut, log lokal berikut akan dihasilkan:

    Hubungkan Sukses ke Awan IoT Alibaba
    berlangganan topik: /a1LhUsK***/python***/user/get
    terbitkan pesan: 0
    terbitkan pesan: ABC0
    terbitkan pesan: 1
    terbitkan pesan: ABC1
    terbitkan pesan: 2
    terbitkan pesan: ABC2
    terbitkan pesan: 3
    terbitkan pesan: ABC3
    terbitkan pesan: 4
    terbitkan pesan: ABC4

    Masuk ke Konsol IoT Platform. Anda dapat melihat status dan log perangkat pada instans.

    • Pilih Devices > Devices. Halaman Perangkat menunjukkan bahwa perangkat 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 terhubung ke IoT Platform melalui MQTT, Anda dapat mendiagnosis masalah berdasarkan kode kesalahan. Untuk informasi lebih lanjut, lihat Pemecahan Masalah.