All Products
Search
Document Center

IoT Platform:Contoh koneksi Paho MQTT untuk Java

Last Updated:Jun 04, 2026

Gunakan library Paho MQTT untuk Java guna menghubungkan perangkat ke IoT Platform dan berkomunikasi melalui model thing.

Prasyarat

Anda telah membuat produk dan perangkat di IoT Platform. Untuk produk tersebut, Anda telah menetapkan properti LightSwitch pada tab Feature Definitions.

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

Persiapkan lingkungan pengembangan

Lingkungan pengembangan:

Unduh library Paho MQTT untuk Java

Tambahkan dependensi berikut ke proyek Maven Anda sesuai versi MQTT yang digunakan:

Penting

Kunjungi situs resmi untuk memeriksa versi library terbaru dan perbarui nilai version secara sesuai.

  • MQTT 3.1 dan 3.1.1

    <dependencies>
      <dependency>
          <groupId>org.eclipse.paho</groupId>
          <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
          <version>1.2.1</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 ke IoT Platform

  1. Klik MqttSign.java untuk mendapatkan kode sumber guna menghitung parameter koneksi MQTT.

    File MqttSign.java mendefinisikan kelas MqttSign:

    • Prototipe:

      class MqttSign
    • Fungsi

      Menghitung parameter koneksi MQTT username, password, dan clientid untuk koneksi ke IoT Platform.

    • Anggota:

      Type

      Deskripsi metode

      public void

      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 IntelliJ IDEA dan buat proyek.

  3. Impor file MqttSign.java ke dalam proyek Anda.

  4. Di proyek Anda, tambahkan file program untuk menghubungkan perangkat ke IoT Platform.

    Buat program yang memanggil kelas MqttSign dalam file MqttSign.java guna menghitung parameter koneksi MQTT dan terhubung ke IoT Platform.

    Petunjuk pengembangan dan contoh kode:

    • Panggil MqttSign 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);
      System.out.println("username: " + sign.getUsername());
      System.out.println("password: " + sign.getPassword());
      System.out.println("clientid: " + sign.getClientid());
    • Gunakan client Paho MQTT untuk terhubung ke IoT Platform.

      // Titik akhir untuk koneksi ke IoT Platform.
      String port = "443";
      String broker = "ssl://" + productKey + ".iot-as-mqtt.cn-shanghai.aliyuncs.com" + ":" + port;
      // Client Paho MQTT.
      MqttClient sampleClient = new MqttClient(broker, sign.getClientid(), persistence);
      // Parameter koneksi Paho 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 + " Connected");
      Penting

      Ubah titik akhir pada baris kode String broker = "ssl://" + productKey + ".iot-as-mqtt.cn-shanghai.aliyuncs.com" + ":" + port;. Nilai broker harus dalam format "ssl://" + "${MQTT endpoint for your instance}" + ":" + port.

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

    • Publikasikan pesan.

      Laporkan properti LightSwitch yang didefinisikan dalam model thing:

      // 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);

      Untuk MQTT 5.0, tambahkan properti kustom saat mempublikasikan pesan:

      // Fitur MQTT 5.0: Properti yang ditentukan pengguna
      MqttProperties properties = new MqttProperties();
      List<UserProperty> userPropertys = new ArrayList<>();
      userPropertys.add(new UserProperty("key1","value1"));
      properties.setUserProperties(userPropertys);
      // Fitur MQTT 5.0: mode request-response
      properties.setCorrelationData("requestId12345".getBytes());
      properties.setResponseTopic("/" + productKey + "/" + deviceName + "/user/get");
      message.setProperties(properties);
      // SDK Paho untuk MQTT 5.0 menggunakan alias topik secara default.
      sampleClient.publish(topic, message);

      Format data model thing didefinisikan dalam Device properties, events, and services.

      Komunikasi topik kustom dijelaskan dalam What is a topic?.

    • Berlangganan topik untuk menerima pesan dari IoT Platform.

      Berlangganan topik untuk menerima tanggapan pengiriman properti dari IoT Platform:

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

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

  5. Klik tombol Build Project build untuk mengompilasi proyek.

Jalankan proyek contoh

Hubungkan perangkat ke IoT Platform menggunakan proyek contoh yang telah disediakan.

  1. Unduh paket kode (v3.1.1Demo atau v5.0Demo) dan ekstrak.

  2. Buka IntelliJ IDEA dan impor proyek contoh aiot-java-demo dari paket hasil ekstraksi.

  3. Pada file pom.xml, perbarui versi dependensi Maven seperti yang ditentukan pada bagian Download the Paho MQTT library for Java.

    Penting

    Jika versi dependensi tidak tersedia, periksa repositori resminya, seperti Maven Central, untuk versi yang valid.

  4. Di direktori src/main/java/com.aliyun.iot, buka file App atau Mqtt5App dan ganti kredensial perangkat contoh dengan milik Anda sendiri.

    Catatan

    Gunakan file App untuk komunikasi melalui MQTT 3.1 atau 3.1.1. Gunakan file Mqtt5App untuk komunikasi melalui MQTT 5.0.

    • 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 baris kode String broker = "ssl://" + productKey + ".iot-as-mqtt.cn-shanghai.aliyuncs.com" + ":" + port;, seperti yang dijelaskan pada Langkah 4 bagian Connect to IoT Platform.

  5. Jalankan program App atau Mqtt5App.

    Jika berhasil, log berikut akan muncul:

    username: example1&a1xxx
    password: 5c9d47198d9d09050043e1f3xxx
    clientid: a1Xxxx.example1|timestamp=1576140939022,_v=paho-java-1.0.0,securemode=2,signmethod=hmacsha256|
    broker: ssl://a1X2bxxx.iot-as-mqtt.cn-shanghai.aliyuncs.com:443 Connected
    subscribe: /sys/a1X2bxxx/example1/thing/event/property/post_reply
    publish: {"id":"1","version":"1.0","params":{"LightSwitch":1}}
    reply topic  : /sys/a1Xxxx/example1/thing/event/property/post_reply
    reply payload: {"code":200,"data":{},"id":"1","message":"success","method":"thing.event.property.post","version":"1.0"}
    Disconnected
    Process finished with exit code 0

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

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

    • Di panel navigasi sebelah kiri, pilih Maintenance > Device Log. Anda dapat melihat Cloud-side Log dan Device-side Log. Cloud-side Log. Device-side Log.

      Jika Anda menggunakan file Mqtt5App, Anda dapat melihat properti kustom yang dilaporkan dalam detail log.

      Pada bidang Property di detail log, Anda dapat menemukan nilai properti kustom yang dilaporkan, seperti [{"Value":"value1","Key":"key1"}].

Kode kesalahan

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