全部产品
Search
文档中心

IoT Platform:Menggunakan Klien Paho MQTT Java

更新时间:Jul 02, 2025

Topik ini menjelaskan cara menggunakan pustaka Paho Message Queuing Telemetry Transport (MQTT) untuk Java guna terhubung dan berkomunikasi dengan IoT Platform.

Catatan Penggunaan

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

Prasyarat

Sebuah produk dan perangkat telah dibuat di konsol IoT Platform. Properti LightSwitch didefinisikan pada tab Define Feature halaman Detail Produk.

Untuk informasi lebih lanjut, lihat Buat sebuah produk, Buat sebuah perangkat, dan Tambahkan fitur TSL.

Siapkan Lingkungan Pengembangan

Lingkungan pengembangan dalam contoh ini mencakup komponen-komponen berikut:

Unduh Pustaka Paho MQTT untuk Java

Tambahkan dependensi ke proyek Maven sesuai dengan versi protokol MQTT.

  • MQTT 3.1 dan 3.1.1

    <dependencies>
      <dependency>
          <groupId>org.eclipse.paho</groupId>
          <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
          <version>1.2.0</version>
        </dependency>
    </dependencies>
  • MQTT 5.0

    <dependency>
       <groupId>org.eclipse.paho</groupId>
       <artifactId>org.eclipse.paho.mqttv5.client</artifactId>
       <version>1.2.5</version>
    </dependency>

Hubungkan Perangkat ke IoT Platform

  1. Klik MqttSign.java untuk mendapatkan kode sumber yang disediakan oleh Alibaba Cloud. Kode sumber ini diperlukan untuk mendapatkan parameter koneksi MQTT.

    Berkas MqttSign.java menentukan kelas MqttSign.

    • Sintaks

      class MqttSign
    • Deskripsi

      Anda dapat menggunakan kelas ini untuk mendapatkan parameter koneksi MQTT berikut: username, password, dan clientid.

    • Anggota

      Tipe

      Metode

      public void

      calculate(String productKey, String deviceName, String deviceSecret)

      Mendapatkan parameter username, password, dan clientid berdasarkan parameter productKey, deviceName, dan deviceSecret.

      public String

      getUsername()

      Mendapatkan parameter username.

      public String

      getPassword()

      Mendapatkan parameter password.

      public String

      getClientid()

      Mendapatkan parameter clientid.

  2. Buka IntelliJ IDEA dan buat sebuah proyek.

  3. Impor berkas MqttSign.java ke dalam proyek.

  4. Di dalam proyek, tambahkan berkas program yang dapat menghubungkan perangkat ke IoT Platform.

    Anda harus menulis sebuah program untuk menggunakan kelas MqttSign di dalam berkas MqttSign.java. Dengan cara ini, Anda dapat memperoleh parameter-parameter yang digunakan untuk menetapkan koneksi MQTT ke IoT Platform.

    Bagian ini menyediakan instruksi pengembangan dan contoh kode untuk menetapkan koneksi tersebut.

    • Gunakan kelas MqttSign untuk mendapatkan parameter koneksi MQTT.

      String productKey = "a1X2bEn****";
      String deviceName = "example1";
      String deviceSecret = "ga7XA6KdlEeiPXQPpRbAjOZXwG8y****";
      
      // Mendapatkan parameter koneksi MQTT. 
      MqttSign sign = new MqttSign();
      sign.calculate(productKey, deviceName, deviceSecret);
      
      System.out.println("username: " + sign.getUsername());
      System.out.println("password: " + sign.getPassword());
      System.out.println("clientid: " + sign.getClientid());
    • Buat klien Paho MQTT untuk terhubung ke IoT Platform.

      // Tentukan titik akhir yang ingin Anda gunakan untuk menghubungkan perangkat ke IoT Platform. 
      String port = "443";
      String broker = "ssl://" + productKey + ".iot-as-mqtt.cn-shanghai.aliyuncs.com" + ":" + port;
      
      // Buat klien Paho MQTT. 
      MqttClient sampleClient = new MqttClient(broker, sign.getClientid(), persistence);
      
      // Konfigurasikan parameter koneksi MQTT. 
      MqttConnectOptions connOpts = new MqttConnectOptions();
      connOpts.setCleanSession(true);
      connOpts.setKeepAliveInterval(180);
      connOpts.setUserName(sign.getUsername());
      connOpts.setPassword(sign.getPassword().toCharArray());
      sampleClient.connect(connOpts);
      System.out.println("Broker: " + broker + " Terhubung");
      Penting

      Ubah titik akhir di String broker = "ssl://" + productKey + ".iot-as-mqtt.cn-shanghai.aliyuncs.com" + ":" + port;. Nilai parameter broker harus dalam format berikut: "ssl://" + "${Endpoint of the IoT Platform instance to which the device wants to connect over MQTT}" + ":" + port.

      Untuk informasi lebih lanjut tentang titik akhir instansi publik dan instansi Enterprise Edition serta format titik akhir, lihat Lihat titik akhir sebuah instansi.

    • Publikasikan pesan.

      Kode berikut menunjukkan cara mengirim properti LightSwitch.

      // Publikasikan pesan menggunakan Paho MQTT. 
      String topic = "/sys/" + productKey + "/" + deviceName + "/thing/event/property/post";
      String content = "{\"id\":\"1\",\"version\":\"1.0\",\"params\":{\"LightSwitch\":1}}";
      MqttMessage message = new MqttMessage(content.getBytes());
      message.setQos(0);
      sampleClient.publish(topic, message);

      Jika Anda menggunakan MQTT 5.0, Anda dapat menambahkan kode contoh berikut untuk mempublikasikan pesan yang berisi properti kustom.

      // Fitur baru di MQTT 5.0: Buat properti kustom.
      MqttProperties properties = new MqttProperties();
      List<UserProperty> userPropertys = new ArrayList<>();
      userPropertys.add(new UserProperty("key1","value1"));
      properties.setUserProperties(userPropertys);
      
      // Fitur baru di MQTT 5.0: Tentukan mode permintaan dan respons.
      properties.setCorrelationData("requestId12345".getBytes());
      properties.setResponseTopic("/" + productKey + "/" + deviceName + "/user/get");
      
      message.setProperties(properties);
      
      // Secara default, Paho SDK yang mendukung MQTT 5.0 menggunakan alias topik.
      sampleClient.publish(topic, message);

      Untuk informasi tentang format data TSL, lihat Properti perangkat, event, dan layanan.

      Untuk informasi tentang cara menggunakan topik kustom untuk komunikasi, lihat Topik.

    • Berlangganan ke sebuah topik untuk mendapatkan pesan dari IoT Platform.

      Kode berikut menunjukkan cara berlangganan ke sebuah topik. IoT Platform akan mengembalikan pesan balasan ke topik setelah properti dikirimkan.

      class MqttPostPropertyMessageListener implements IMqttMessageListener {
          @Override
          public void messageArrived(String var1, MqttMessage var2) throws Exception {
              System.out.println("topik balasan  : " + var1);
              System.out.println("payload balasan: " + var2.toString());
          }
      }
      ...
      // Berlangganan ke sebuah topik menggunakan Paho MQTT. 
      String topicReply = "/sys/" + productKey + "/" + deviceName + "/thing/event/property/post_reply";
      sampleClient.subscribe(topicReply, new MqttPostPropertyMessageListener());

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

  5. Klik tombol Build Project yang ikonnya adalah build untuk mengompilasi proyek.

Contoh kode

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

  1. Unduh paket demo dari Demo v3.1.1 atau Demo v5.0 dan ekstrak paket tersebut.

  2. Buka IntelliJ IDEA dan impor proyek contoh aiot-java-demo di dalam paket demo.

  3. Di direktori src/main/java/com.aliyun.iot, ganti informasi perangkat contoh dengan informasi perangkat Anda di dalam berkas App atau Mqtt5App.

    Catatan

    Jika Anda menggunakan MQTT 3.1 atau 3.1.1, ganti informasi perangkat contoh di dalam berkas App dengan informasi perangkat Anda. Jika Anda menggunakan MQTT 5.0, ganti informasi perangkat contoh di dalam berkas Mqtt5App dengan informasi perangkat Anda.

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

      String productKey = "${ProductKey}";
      String deviceName = "${DeviceName}";
      String deviceSecret = "${DeviceSecret}";
    • Ubah titik akhir di String broker = "ssl://" + productKey + ".iot-as-mqtt.cn-shanghai.aliyuncs.com" + ":" + port;. Untuk informasi lebih lanjut, lihat Langkah 4 di bagian "Hubungkan Perangkat ke IoT Platform" dari topik ini.

  4. Jalankan program App atau Mqtt5App.

    Gambar berikut menunjukkan log sukses. result

    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 platform IoT dan Log lokal perangkat.

      Jika Anda menjalankan program Mqtt5App, Anda dapat melihat properti kustom yang dikirimkan perangkat dalam log.

      Property

Kode kesalahan

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