All Products
Search
Document Center

IoT Platform:Contoh koneksi Paho MQTT untuk C#

Last Updated:Jun 17, 2026

Gunakan library Paho MQTT untuk C# guna terhubung ke Alibaba Cloud IoT Platform dan bertukar data menggunakan model Thing Specification Language (TSL).

Prasyarat

Anda telah membuat produk dan perangkat di IoT Platform serta menetapkan properti LightSwitch untuk produk tersebut pada tab Function Definition.

Untuk informasi selengkapnya, lihat Create a product, Create a single device, dan Add a TSL model for a single product.

Informasi latar belakang

Kode sumber terbuka Paho MQTT untuk C# mencakup proyek solusi Visual Studio. Setiap proyek dalam solusi tersebut menargetkan platform .NET yang berbeda dan menghasilkan class library yang sesuai.

Pada contoh ini, Anda membuat proyek aplikasi konsol dalam solusi tersebut yang memanggil class library Paho MQTT untuk terhubung ke Alibaba Cloud IoT Platform.

Siapkan lingkungan pengembangan

Contoh ini menggunakan sistem operasi dan alat pengembangan berikut:

  • Sistem operasi: Windows 10

  • Lingkungan pengembangan terintegrasi (IDE): Visual Studio 2019

Instal lingkungan pengembangan:

  1. Unduh Visual Studio Community 2019 dan ekstrak paketnya.

  2. Buka Visual Studio Installer, pilih .NET desktop development, lalu klik Install.

Unduh client Paho

Unduh kode sumber Paho MQTT untuk C#. Kode sumber tersebut mencakup file proyek solusi Visual Studio M2Mqtt.sln. Anda dapat menggunakan file proyek ini untuk mengembangkan client perangkat Anda. Untuk informasi selengkapnya, lihat Connect to IoT Platform.

Anda juga dapat mengunjungi Eclipse Paho untuk informasi lebih lanjut mengenai kode sumber Paho.

Demo ini menggunakan branch master dengan commit ID b2e64bc4485721a0bd5ae805d9f4917e8d040e81.

Terhubung ke IoT Platform

  1. Unduh MqttSign.cs untuk mendapatkan kode sumber yang disediakan Alibaba Cloud guna menghitung parameter koneksi MQTT.

    File MqttSign.cs mendefinisikan kelas MqttSign:

    • Prototipe:

      class MqttSign
    • Fungsi:

      Menghitung username, password, dan clientID yang diperlukan untuk menghubungkan perangkat ke IoT Platform melalui MQTT.

    • Anggota:

      Definisi tipe

      Deskripsi metode

      public bool

      calculate(String productKey, String deviceName, String deviceSecret)

      Menghitung parameter koneksi MQTT username, password, dan clientid berdasarkan productKey, deviceName, dan deviceSecret perangkat.

      public String

      getUsername()

      Mendapatkan parameter koneksi MQTT username.

      public String

      getPassword()

      Mendapatkan parameter koneksi MQTT password.

      public String

      getClientid()

      Mendapatkan parameter koneksi MQTT clientid.

  2. Buka Visual Studio, impor file solusi Visual Studio M2Mqtt.sln dari kode sumber Paho, lalu buat proyek aplikasi.

  3. Impor file MqttSign.cs yang telah Anda unduh pada Langkah 1 ke dalam proyek aplikasi.

  4. Dalam proyek aplikasi, tambahkan file program untuk menghubungkan perangkat ke IoT Platform.

    Panggil kelas MqttSign dalam file MqttSign.cs untuk menghitung parameter koneksi MQTT guna menghubungkan perangkat ke IoT Platform.

    Petunjuk pengembangan dan contoh kode berikut disediakan:

    • Hitung parameter koneksi MQTT.

      Panggil MqttSign dalam file MqttSign.cs untuk menghitung parameter koneksi MQTT.

      String productKey = "a1X2bEn****";
      String deviceName = "example1";
      String deviceSecret = "ga7XA6KdlEeiPXQPpRbAjOZXwG8y****";
      // Hitung parameter koneksi MQTT.
      MqttSign sign = new MqttSign();
      sign.calculate(productKey, deviceName, deviceSecret);
      Console.WriteLine("username: " + sign.getUsername());
      Console.WriteLine("password: " + sign.getPassword());
      Console.WriteLine("clientid: " + sign.getClientid());
    • Gunakan client Paho MQTT untuk terhubung ke IoT Platform.

      // Gunakan Paho untuk terhubung ke Alibaba Cloud IoT Platform.
      int port = 443;
      String broker = productKey + ".iot-as-mqtt.cn-shanghai.aliyuncs.com";
      MqttClient mqttClient = new MqttClient(broker, port, true, MqttSslProtocols.TLSv1_2, null, null);
      mqttClient.Connect(sign.getClientid(), sign.getUsername(), sign.getPassword());
      Console.WriteLine("Broker: " + broker + " Connected");
      Catatan

      Pada kode String broker = productKey + ".iot-as-mqtt.cn-shanghai.aliyuncs.com";, ganti titik akhir dengan yang sesuai dengan instans perangkat Anda.

      Untuk informasi selengkapnya mengenai format titik akhir untuk instans publik dan Enterprise, lihat View instance endpoints.

    • Kirim data dari perangkat ke IoT Platform.

      Kode contoh berikut menunjukkan cara mengirim properti model TSL LightSwitch.

      // Publikasikan pesan menggunakan client Paho MQTT.
      String topic = "/sys/" + productKey + "/" + deviceName + "/thing/event/property/post";
      String message = "{\"id\":\"1\",\"version\":\"1.0\",\"params\":{\"LightSwitch\":0}}";
      mqttClient.Publish(topic, Encoding.UTF8.GetBytes(message));

      Untuk informasi mengenai format data komunikasi model TSL, lihat Device properties, events, and services.

      Jika Anda ingin menggunakan topik kustom untuk komunikasi, lihat What is a topic?.

    • Berlangganan topik untuk menerima data dari IoT Platform.

      Pada contoh berikut, perangkat berlangganan topik yang digunakan IoT Platform untuk mengembalikan pesan acknowledgement setelah perangkat mengirim nilai properti.

      // Berlangganan pesan menggunakan client Paho MQTT.
      String topicReply = "/sys/" + productKey + "/" + deviceName + "/thing/event/property/post_reply";
      mqttClient.MqttMsgPublishReceived += MqttPostProperty_MqttMsgPublishReceived;
      mqttClient.Subscribe(new string[] { topicReply }, new byte[] { MqttMsgBase.QOS_LEVEL_AT_MOST_ONCE });
      ...
      private static void MqttPostProperty_MqttMsgPublishReceived(object sender, uPLibrary.Networking.M2Mqtt.Messages.MqttMsgPublishEventArgs e)
      {
          Console.WriteLine("reply topic  :" + e.Topic);
          Console.WriteLine("reply payload:" + e.Message.ToString());
      }

    Pelajari pola komunikasi perangkat-cloud dalam Overview of communications among devices, IoT platform, and servers.

  5. Kompilasi proyek.

Demo

Gunakan kode demo untuk terhubung ke IoT Platform.

  1. Unduh paket kode demo dan ekstrak ke folder aiot-csharp-demo.

    Folder aiot-csharp-demo\paho.mqtt.m2mqtt-master\aiot-csharp-demo berisi program lengkap untuk menghubungkan perangkat ke IoT Platform dan mengirim properti model TSL.

    File

    Deskripsi

    MqttSign.cs

    Kode sumber yang disediakan oleh Alibaba Cloud untuk menghasilkan parameter koneksi MQTT. Saat waktu proses, Program.cs memanggil fungsi MqttSign() yang didefinisikan dalam file ini untuk menghitung parameter username, password, dan clientId.

    Program.cs

    Berisi logika untuk menghubungkan perangkat ke IoT Platform dan mengirim data properti.

  2. Jalankan Visual Studio Community 2019, pilih Open a project or solution, lalu buka file aiot-csharp-demo\paho.mqtt.m2mqtt-master\M2Mqtt.sln.

    File proyek aiot-csharp-demo kemudian diimpor ke Visual Studio.

  3. Dalam file Program.cs, ganti informasi perangkat contoh dengan informasi perangkat aktual Anda.

    • Pada kode berikut, ganti nilai productKey, deviceName, dan deviceSecret dengan kredensial perangkat Anda.

      String productKey = "${ProductKey}";
      String deviceName = "${DeviceName}";
      String deviceSecret = "${DeviceSecret}";
    • Ubah titik akhir pada kode String broker = productKey + ".iot-as-mqtt.cn-shanghai.aliyuncs.com";. Untuk informasi selengkapnya, lihat Langkah 4 pada bagian "Connect to IoT Platform".

  4. Tetapkan aiot-csharp-demo sebagai proyek startup dan jalankan proyek tersebut untuk menghubungkan perangkat ke IoT Platform.

    username: lxxx3
    password: E251xxx
    clientid: g1xxx|timestamp=1606810137987, _v=paho-c#-1.0.0, securemode=2, signmethod=hmacsha256|
    broker: iotxxxn Connected
    subscribe: /sys/gxxx/thing/event/property/post_reply
    publish: {"id":"1","version":"1.0","params":{"LightSwitch":0}}
    reply topic :/sys/gxxxp/thing/event/property/post_reply
    reply payload:{"code":200,"data":{},"id":"1","message":"success","method":"thing.event.property.post","version":"1.0"}

    Setelah perangkat terhubung, log lokal menampilkan koneksi berhasil, pengiriman data, dan langganan pesan.

    ...
    broker: a1X2bEn****.iot-as-mqtt.cn-shanghai.aliyuncs.com Connected
    ...
    publish: {"id":"1","version":"1.0","params":{"LightSwitch":0}}
    ...
    subscribe: /sys/a1X2bEn****/example1/thing/event/property/post_reply
    ...

    Login ke IoT Platform console untuk melihat status dan log perangkat dalam instans Anda.

    • Pada panel navigasi kiri, pilih Device Management > Devices. Anda dapat melihat bahwa status perangkat adalah Online.

    • Pilih Monitoring & O&M > Log Service. Anda dapat melihat IoT Platform logs dan on-premises device logs. Untuk informasi selengkapnya, lihat IoT Platform logs dan On-premises device logs.

Kode kesalahan

Jika perangkat gagal terhubung ke IoT Platform melalui MQTT, gunakan kode kesalahan untuk melakukan troubleshooting. Untuk informasi selengkapnya mengenai kode kesalahan sisi server, lihat Troubleshooting.