All Products
Search
Document Center

IoT Platform:Kirim perintah dari IoT Platform ke perangkat

Last Updated:Jul 06, 2025

Setelah perangkat mengirimkan data ke IoT Platform, Anda dapat mengirim perintah dari IoT Platform ke perangkat untuk menguji pengiriman pesan downstream. Topik ini menjelaskan cara memanggil operasi Pub untuk mengirim perintah dari aplikasi cloud ke perangkat termostat.

Prasyarat

Perangkat termostat telah terhubung ke IoT Platform. Untuk informasi lebih lanjut, lihat Hubungkan Perangkat ke IoT Platform dan Kirimkan Data.

Siapkan lingkungan pengembangan

Dalam contoh ini, program sampel yang memanggil operasi API cloud untuk mengirim perintah ke perangkat dikembangkan dalam proyek amqp-demo yang berada di server bisnis yang sama dengan klien Advanced Message Queuing Protocol (AMQP). Untuk informasi lebih lanjut tentang konfigurasi lingkungan, lihat Siapkan Lingkungan Pengembangan.

Prosedur

Catatan

Dalam contoh ini, topik kustom digunakan untuk mengirim perintah. Anda dapat menggunakan topik spesifik Thing Specification Language (TSL) untuk mengirim data TSL. Untuk informasi lebih lanjut, lihat Apa Itu Model TSL?

  1. Dalam file amqp-demo/pom.xml, tambahkan dependensi berikut untuk mengimpor SDK cloud:

    • Dependensi Maven yang digunakan untuk mengimpor IoT Platform SDK for Java:

      <!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-iot -->
      <dependency>
          <groupId>com.aliyun</groupId>
          <artifactId>aliyun-java-sdk-iot</artifactId>
          <version>7.41.0</version>
      </dependency>
    • Dependensi Maven yang digunakan untuk mengimpor Alibaba Cloud SDK for Java.

      <dependency>
          <groupId>com.aliyun</groupId>
          <artifactId>aliyun-java-sdk-core</artifactId>
          <version>4.6.3</version>
      </dependency>
  2. Dalam direktori src/main/java/com.aliyun.iotx.demo, buat file kelas bernama PubDemo.java dan salin kode sampel berikut ke dalam file tersebut.

    import com.aliyuncs.DefaultAcsClient;
    import com.aliyuncs.IAcsClient;
    import com.aliyuncs.exceptions.ClientException;
    import com.aliyuncs.exceptions.ServerException;
    import com.aliyuncs.profile.DefaultProfile;
    import com.google.gson.Gson;
    import com.aliyuncs.iot.model.v20180120.*;
    
    
    public class PubDemo {
    
         public static void main(String[] args) throws Exception {
    
             DefaultProfile profile = DefaultProfile.getProfile("${RegionId}", System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
    
             IAcsClient client = new DefaultAcsClient(profile);
    
    
             PubRequest request = new PubRequest();
             request.setIotInstanceId("iot-cn-******");
             request.setProductKey("a2******");
             request.setTopicFullName("/a2******/Device1/user/get");
             request.setMessageContent("eyJ0ZXN0IjoidGFzayBwdWIgYnJvYWRjYXN0In0=");
    
             try {
                 PubResponse response = client.getAcsResponse(request);
                 System.out.println(new Gson().toJson(response));
             } catch (ServerException e) {
                 e.printStackTrace();
             } catch (ClientException e) {
                 System.out.println("ErrCode:" + e.getErrCode());
                 System.out.println("ErrMsg:" + e.getErrMsg());
                 System.out.println("RequestId:" + e.getRequestId());
             }
        }
    }

    Dalam skenario nyata, Anda harus memodifikasi parameter tertentu dalam kode sampel di atas. Tabel berikut menjelaskan parameter-parameter tersebut:

    Parameter

    Contoh

    Deskripsi

    RegionId

    ap-northeast-1

    Ganti variabel ${RegionId} dalam file DefaultProfile.getProfile dengan ID wilayah tempat Anda mengaktifkan IoT Platform. Untuk informasi lebih lanjut tentang ID wilayah Alibaba Cloud, lihat Wilayah yang didukung.

    TopicFullName

    /a2******/Device1/user/get

    Topik kustom tempat Anda ingin mempublikasikan pesan.

    Dalam contoh ini, topik kustom /${productKey}/${deviceName}/user/get digunakan.

    Ganti ${productKey} dengan ProductKey dari perangkat termostat dan ${deviceName} dengan Device1.

    Untuk informasi lebih lanjut, lihat Gunakan topik kustom untuk komunikasi.

    ProductKey

    a2******

    ProductKey dari produk tempat perangkat termostat termasuk.

    IotInstanceId

    iot-cn-******

    ID dari instance IoT_Test_Environment.

    Anda dapat melihat ID instance pada tab Overview di konsol IoT Platform.

    MessageContent

    eyJ0ZXN0IjoidGFzayBwdWIgYnJvYWRjYXN0In0=

    Isi pesan yang ingin Anda kirim. Isi pesan dibuat saat Anda mengonversi pesan asli menjadi data biner dan melakukan pengkodean Base64 pada data tersebut. Dalam contoh ini, nilai parameter MessageContent dikodekan dari isi pesan “washingMode: 2, washingTime: 30”.

  3. Jika informasi berikut dikembalikan setelah Anda menjalankan file PubMessage.java, pesan dikirim ke perangkat.

    {"requestId":"6EF6****-****-5***-***7-D2********48","success":true,"messageId":"170440***********"}
  4. Pergi ke halaman Instance Details dari instance yang sesuai di konsol IoT Platform. Di panel navigasi sisi kiri, pilih Maintenance > Device Log > Cloud run log. Pada tab Cloud run log, lihat log yang terkait dengan pemanggilan API perangkat.

    API调用日志

    Anda juga dapat melihat nilai parameter MessageContent pada perangkat.

    [1695199345.900][LK-0309] pub: /a2******/Device1/user/get
    
    [LK-030A] < 77 61 73 68 69 6E 67 4D  6F 64 65 3A 20 32 2C 20 | washingMode: 2, 
    [LK-030A] < 77 61 73 68 69 6E 67 54  69 6D 65 3A 20 33 30    | washingTime: 30