全部产品
Search
文档中心

IoT Platform:Gunakan topik kustom untuk komunikasi

更新时间:Nov 11, 2025

Perangkat yang menggunakan protokol MQTT untuk terhubung ke Platform IoT berkomunikasi dengan berlangganan ke topik atau menerbitkan pesan ke topik. Topik diklasifikasikan menjadi topik sistem, topik model TSL, dan topik kustom. Topik kustom harus didefinisikan di Konsol. Dokumen ini menjelaskan cara perangkat menggunakan topik kustom untuk berkomunikasi dengan Platform IoT serta bagaimana Platform IoT berkomunikasi dengan server bisnis.

Informasi latar belakang

Dalam contoh ini, termometer elektronik berlangganan ke topik kustom untuk menerima instruksi dan menerbitkan pesan ke topik kustom untuk melaporkan data suhu. Platform IoT meneruskan data suhu tersebut ke server pengguna melalui server AMQP. Server pengguna memanggil operasi Pub untuk menerbitkan pesan ke topik kustom guna mengatur presisi perangkat dari jarak jauh.

自定义Topic通信

Persiapkan lingkungan pengembangan

Dalam contoh ini, perangkat dan Platform IoT menggunakan SDK untuk Java. Oleh karena itu, Anda harus menyiapkan lingkungan pengembangan Java. Anda dapat mengunduh dan menginstal lingkungan pengembangan Java dari situs web resmi Java.

Dalam contoh ini, lingkungan pengembangan terdiri atas komponen-komponen berikut:

Buat produk dan perangkat

  1. Masuk ke Konsol Platform IoT.

  2. Pada halaman Overview, temukan instans yang ingin Anda kelola lalu klik ID instans atau nama instans tersebut.

  3. Di panel navigasi sebelah kiri, pilih Devices > Products.

  4. Klik Create Product untuk membuat produk termometer dan mendapatkan Productkey, misalnya a1uzcH0****.

    Untuk informasi selengkapnya, lihat Buat produk.

  5. Setelah produk dibuat, klik View di samping produk tersebut.

  6. Pada halaman Product Details, klik tab Topic Categories. Lalu, klik Custom Topic untuk menambahkan kategori topik kustom.

    Untuk informasi selengkapnya, lihat Gunakan topik kustom untuk komunikasi.

    Dalam contoh ini, kategori topik berikut diperlukan:

    • Topik penerbitan perangkat: /a1uzcH0****/${deviceName}/user/devmsg, dengan izin Publish.

    • Topik langganan perangkat: /a1uzcH0****/${deviceName}/user/cloudmsg, dengan izin Subscribe.

  7. Klik tab Server-side Subscription. Lalu, klik Create Subscription untuk mengonfigurasi langganan sisi server AMQP. Berlangganan ke Device Upstream Notification pada Default Consumer Group.

    Device Upstream Notification mencakup pesan topik kustom dan pesan model TSL. Untuk informasi selengkapnya, lihat Konfigurasi langganan sisi server AMQP.

  8. Di panel navigasi sebelah kiri, pilih Devices > Devices. Lalu, tambahkan perangkat bernama device1 ke produk termometer yang telah Anda buat. Dapatkan informasi sertifikat perangkat, termasuk ProductKey, DeviceName, dan DeviceSecret.

    Untuk informasi selengkapnya, lihat Buat perangkat.

Konfigurasikan perangkat untuk mengirim pesan ke server

Gambar berikut menunjukkan cara perangkat mengirim pesan ke server.

自定义Topic通信

Bagian ini menjelaskan cara mengonfigurasi server dan perangkat untuk mengimplementasikan proses pengiriman pesan.

  • Sambungkan klien AMQP Anda ke Platform IoT, dan konfigurasikan klien tersebut untuk mendengarkan pesan dari perangkat. Server menerima pesan dengan menggunakan klien AMQP. Untuk informasi selengkapnya, lihat Sambungkan klien AMQP ke Platform IoT menggunakan SDK untuk Java.

    Penting

    Kelompok konsumen klien AMQP harus berada dalam instans Platform IoT yang sama dengan perangkat.

  • Konfigurasikan SDK perangkat untuk menyambungkan perangkat ke Platform IoT dan mengaktifkan perangkat untuk mengirim pesan.

    • Konfigurasikan parameter untuk mengautentikasi perangkat.

      final String productKey = "a1*********";
      final String deviceName = "device1";
      final String deviceSecret = "***************";
      final String region = "cn-shanghai";
      final String iotInstanceId = "iot-2w****";

      Anda harus mengonfigurasi parameter yang dijelaskan dalam tabel berikut berdasarkan kebutuhan bisnis Anda.

      Parameter

      Contoh

      Deskripsi

      productKey

      a1uzcH0****

      Informasi sertifikat perangkat. Anda dapat melihat informasi tersebut pada halaman Device Details di Konsol Platform IoT.Untuk informasi selengkapnya, lihat Lihat detail perangkat.

      deviceName

      device1

      deviceSecret

      uwMTmVAMnxB****

      region

      cn-shanghai

      ID wilayah tempat perangkat Platform IoT Anda berada. Untuk informasi selengkapnya tentang ID wilayah, lihat Wilayah dan zona.

      iotInstanceId

      iot-2w****

      ID instans tempat perangkat tersebut berada.

      Anda dapat melihat ID instans pada halaman Overview di Konsol Platform IoT.

      • Jika ID instans ditampilkan, Anda harus menentukan parameter ini.

      • Jika tidak ada Overview atau ID yang dihasilkan untuk instans Anda, tentukan string kosong (iotInstanceId = "") untuk parameter ini.

    • Konfigurasikan parameter untuk menginisialisasi koneksi, termasuk parameter koneksi MQTT, parameter perangkat, dan parameter model TSL.

      LinkKitInitParams params = new LinkKitInitParams();
      //Konfigurasikan parameter koneksi MQTT. Link SDK menggunakan protokol MQTT.
      IoTMqttClientConfig config = new IoTMqttClientConfig();
      config.productKey = productKey;
      config.deviceName = deviceName;
      config.deviceSecret = deviceSecret;
      config.channelHost = productKey + ".iot-as-mqtt." + region + ".aliyuncs.com:1883";
      //Konfigurasikan parameter perangkat.
      DeviceInfo deviceInfo = new DeviceInfo();
      deviceInfo.productKey = productKey;
      deviceInfo.deviceName = deviceName;
      deviceInfo.deviceSecret = deviceSecret;
      //Tentukan status awal perangkat.
      Map<String, ValueWrapper> propertyValues = new HashMap<String, ValueWrapper>();
      
      params.mqttClientConfig = config;
      params.deviceInfo = deviceInfo;
      params.propertyValues = propertyValues;

      Anda harus mengonfigurasi parameter yang dijelaskan dalam tabel berikut berdasarkan kebutuhan bisnis Anda.

      Parameter

      Contoh

      Deskripsi

      config.channelHost

      config.channelHost = productKey + ".iot-as-mqtt." + region + ".aliyuncs.com:1883";

      Nama domain untuk koneksi perangkat MQTT.

      • Instans publik lama: config.channelHost = productKey + ".iot-as-mqtt." + region + ".aliyuncs.com:1883";.

      • Instans publik baru dan instans Edisi Perusahaan: config.channelHost = iotInstanceId + ".mqtt.iothub.aliyuncs.com:1883";.

    • Inisialisasi parameter koneksi.

      //Sambungkan dan konfigurasikan fungsi callback yang dipanggil setelah koneksi berhasil dibuat.
      LinkKit.getInstance().init(params, new ILinkKitConnectListener() {
           @Override
           public void onError(AError aError) {
               System.out.println("Init error:" + aError);
           }
      
           //Implementasikan fungsi callback.
           @Override
           public void onInitDone(InitResult initResult) {
               System.out.println("Init done:" + initResult);
           }
       });
    • Kirim pesan dari perangkat.

      Setelah perangkat terhubung ke Platform IoT, Anda dapat menggunakan perangkat tersebut untuk mengirim pesan ke topik kustom. Anda harus mengganti konten fungsi onInitDone dengan konten berikut:

      @Override
       public void onInitDone(InitResult initResult) {
           //Tentukan topik tempat pesan diterbitkan dan isi pesannya.
           MqttPublishRequest request = new MqttPublishRequest();
           request.topic = "/" + productKey + "/" + deviceName + "/user/devmsg";
           request.qos = 0;
           request.payloadObj = "{\"temperature\":35.0, \"time\":\"sometime\"}";
           //Terbitkan pesan dan konfigurasikan fungsi callback yang digunakan setelah pesan diterbitkan.
           LinkKit.getInstance().publish(request, new IConnectSendListener() {
               @Override
               public void onResponse(ARequest aRequest, AResponse aResponse) {
                   System.out.println("onResponse:" + aResponse.getData());
               }
      
               @Override
               public void onFailure(ARequest aRequest, AError aError) {
                   System.out.println("onFailure:" + aError.getCode() + aError.getMsg());
               }
           });
       }

      Anda harus memodifikasi kode dan menentukan parameter berdasarkan kebutuhan bisnis Anda.

      Parameter

      Contoh

      Deskripsi

      request.topic

      "/" + productKey + "/" + deviceName + "/user/devmsg"

      Topik kustom tempat perangkat memiliki izin Publish.

      request.payloadObj

      "{\"temperature\":35.0, \"time\":\"sometime\"}"

      Isi pesan.

      Server menerima pesan berikut:

      Message
      {payload={"temperature":35.0, "time":"sometime"},
      topic='/a1uzcH0****/device1/user/devmsg',
      messageId='1131755639450642944',
      qos=0,
      generateTime=1558666546105}

Konfigurasikan server untuk mengirim pesan ke perangkat

Gambar berikut menunjukkan cara server mengirim pesan ke perangkat.

自定义Topic通信

  • Konfigurasikan SDK perangkat untuk berlangganan ke topik kustom.

    Untuk informasi tentang cara mengonfigurasi parameter untuk mengautentikasi perangkat, menginisialisasi koneksi, dan menyambung ke Platform IoT, lihat kode contoh di Konfigurasikan perangkat untuk mengirim pesan ke server.

    Anda harus mengonfigurasi perangkat untuk berlangganan ke topik kustom.

    Kode contoh berikut memberikan contoh cara mengonfigurasi perangkat untuk berlangganan ke topik:

    //Implementasikan fungsi callback.
    @Override
    public void onInitDone(InitResult initResult) {
        //Tentukan topik tempat perangkat berlangganan.
        MqttSubscribeRequest request = new MqttSubscribeRequest();
        request.topic = "/" + productKey + "/" + deviceName + "/user/cloudmsg";
        request.isSubscribe = true;
        //Kirim permintaan langganan dan konfigurasikan fungsi callback yang dipanggil setelah langganan berhasil atau gagal.
        LinkKit.getInstance().subscribe(request, new IConnectSubscribeListener() {
            @Override
            public void onSuccess() {
                System.out.println("");
            }
    
            @Override
            public void onFailure(AError aError) {
    
            }
        });
    
        //Konfigurasikan pendengar untuk pesan downstream.
        IConnectNotifyListener notifyListener = new IConnectNotifyListener() {
            //Konfigurasikan fungsi callback yang digunakan setelah pesan downstream diterima.
            @Override
            public void onNotify(String connectId, String topic, AMessage aMessage) {
                System.out.println(
                    "received message from " + topic + ":" + new String((byte[])aMessage.getData()));
            }
    
            @Override
            public boolean shouldHandle(String s, String s1) {
                return false;
            }
    
            @Override
            public void onConnectStateChange(String s, ConnectState connectState) {
    
            }
        };
        LinkKit.getInstance().registerOnNotifyListener(notifyListener);
    }

    Anda harus mengatur request.topic ke topik kustom tempat perangkat memiliki izin Subscribe.

  • Konfigurasikan SDK cloud untuk memanggil operasi Pub Platform IoT guna menerbitkan pesan. Untuk informasi selengkapnya tentang parameter, lihat Pub. Untuk informasi selengkapnya tentang cara menggunakan SDK, lihat Gunakan SDK untuk Java.

    • Konfigurasikan parameter untuk mengautentikasi perangkat.

       String regionId = "cn-shanghai";
       String accessKey = "LTAI****************";
       String accessSecret = "yourAccessKeySecret";
       final String productKey = "a1uzcH0****";
       final String deviceName = "device1";
       final String iotInstanceId = "iot-2w****";

      Anda harus mengonfigurasi parameter yang dijelaskan dalam tabel berikut berdasarkan kebutuhan bisnis Anda.

      Parameter

      Contoh

      Deskripsi

      accessKey

      LTAIyourAccessKeySecretyourAccessKeySecret

      ID AccessKey dan Rahasia AccessKey akun Alibaba Cloud Anda.

      Masuk ke Konsol Platform IoT, arahkan penunjuk mouse ke gambar profil, lalu klik AccessKey Management untuk mendapatkan ID AccessKey dan Rahasia AccessKey.

      Catatan

      Jika Anda menggunakan Pengguna RAM, Anda harus menyambungkan kebijakan izin AliyunIOTFullAccess ke Pengguna RAM tersebut. Kebijakan ini memungkinkan Pengguna RAM untuk mengelola sumber daya Platform IoT. Jika Anda tidak menyambungkan kebijakan izin AliyunIOTFullAccess ke Pengguna RAM, koneksi ke Platform IoT akan gagal. Untuk informasi selengkapnya tentang cara memberikan izin kepada Pengguna RAM, lihat Akses Pengguna RAM.

      accessSecret

      yourAccessKeySecret

      productKey

      a1uzcH0****

      Informasi sertifikat perangkat. Anda dapat melihat informasi tersebut pada halaman Device Details di Konsol Platform IoT.Untuk informasi selengkapnya, lihat Lihat detail perangkat.

      deviceName

      device1

      region

      cn-shanghai

      ID wilayah tempat perangkat Platform IoT Anda berada. Untuk informasi selengkapnya tentang ID wilayah, lihat Wilayah dan zona.

      iotInstanceId

      iot-2w****

      ID instans tempat perangkat tersebut berada.

      Anda dapat melihat ID instans pada halaman Overview di Konsol Platform IoT.

      • Jika ID instans ditampilkan, Anda harus menentukan parameter ini.

      • Jika tidak ada Overview atau ID yang dihasilkan untuk instans Anda, tentukan string kosong (iotInstanceId = "") untuk parameter ini.

    • Konfigurasikan parameter koneksi.

      //Konfigurasikan parameter klien.
      DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKey, accessSecret);
      IAcsClient client = new DefaultAcsClient(profile);
    • Konfigurasikan parameter yang digunakan untuk menerbitkan pesan.

      PubRequest request = new PubRequest();
      request.setIotInstanceId(iotInstanceId);
      request.setQos(0);
      //Tentukan topik tempat pesan diterbitkan.
      request.setTopicFullName("/" + productKey + "/" + deviceName + "/user/cloudmsg");
      request.setProductKey(productKey);
      //Konfigurasikan parameter MessageContent. Isi pesan harus dikodekan dalam Base64. Jika tidak, isi pesan akan ditampilkan sebagai karakter acak.
      request.setMessageContent(Base64.encode("{\"accuracy\":0.001,\"time\":now}"));

      Saat memanggil operasi ini, Anda harus mengonfigurasi parameter berdasarkan kebutuhan bisnis Anda. Untuk informasi selengkapnya, lihat Pub.

    • Kirim pesan.

      try {
           PubResponse response = client.getAcsResponse(request);
           System.out.println("pub success?:" + response.getSuccess());
       } catch (Exception e) {
           System.out.println(e);
       }

      Perangkat menerima pesan berikut:

      msg = [{"accuracy":0.001,"time":now}]

Lampiran: Kode contoh

Penting

Anda harus memodifikasi kode dan menentukan parameter berdasarkan kebutuhan bisnis Anda.

Unduh demo Pub/Sub, yang berisi kode contoh untuk konfigurasi SDK cloud dan SDK perangkat dalam contoh ini.

Untuk informasi tentang cara menyambungkan klien AMQP ke Platform IoT, lihat topik-topik berikut: