日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

服務(wù)端下發(fā)指令

更新時(shí)間:

設(shè)備接入物聯(lián)網(wǎng)平臺(tái)并上報(bào)消息后,您也可以嘗試從服務(wù)端下發(fā)指令到設(shè)備端,設(shè)備接收指令后可處理對(duì)應(yīng)業(yè)務(wù)。例如通過服務(wù)端調(diào)用接口Pub向具有訂閱權(quán)限的自定義Topic下發(fā)消息,設(shè)備訂閱該Topic后,即可接收服務(wù)端下發(fā)的消息。本文介紹如何在服務(wù)端使用云端SDK下發(fā)指令給設(shè)備。

場(chǎng)景說明

假設(shè)服務(wù)端應(yīng)用需要下發(fā)一條自定義通知給設(shè)備,設(shè)備端接收通知后進(jìn)行消息打印,可使用云端SDK提供的接口Pub通過自定義Topic向設(shè)備發(fā)布消息,訂閱了該自定義Topic的在線設(shè)備可接收消息后打印。

image

前提條件

已開發(fā)設(shè)備接入物聯(lián)網(wǎng)平臺(tái),且設(shè)備已訂閱自定義Topic:/a2******/Device1/user/get(該Topic具備訂閱權(quán)限)。具體操作,請(qǐng)參見設(shè)備接入和上報(bào)數(shù)據(jù)。

背景信息

設(shè)備基于Topic與物聯(lián)網(wǎng)平臺(tái)進(jìn)行通信,設(shè)備可以通過Topic將消息發(fā)布到物聯(lián)網(wǎng)平臺(tái),物聯(lián)網(wǎng)平臺(tái)可以將消息發(fā)送給訂閱Topic的設(shè)備。設(shè)備通信的詳細(xì)說明,請(qǐng)參見使用Topic通信

說明

本文示例通過自定義Topic下發(fā)指令。您也可以通過物模型相關(guān)Topic,發(fā)送標(biāo)準(zhǔn)化的物模型數(shù)據(jù),更多信息,請(qǐng)參見什么是物模型設(shè)備使用物模型通信。

準(zhǔn)備開發(fā)環(huán)境

本示例與AMQP客戶端部署在相同業(yè)務(wù)服務(wù)端中,即在amqp-demo項(xiàng)目中開發(fā)調(diào)用云端API的示例程序下發(fā)指令給設(shè)備。環(huán)境配置信息,請(qǐng)參見準(zhǔn)備開發(fā)環(huán)境。

使用云端SDK的Pub接口下發(fā)消息

  1. amqp-demo/pom.xml文件中,添加云端SDK的依賴。

    • 阿里云IoT Java SDK的Maven依賴坐標(biāo)。

      <!-- 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>
    • 阿里云Java SDK公共包Maven依賴坐標(biāo)。

      <dependency>
          <groupId>com.aliyun</groupId>
          <artifactId>aliyun-java-sdk-core</artifactId>
          <version>4.6.3</version>
      </dependency>
  2. src/main/java/com.aliyun.iotx.demo下創(chuàng)建類文件PubDemo.java,輸入以下示例代碼。

    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());
             }
        }
    }

    實(shí)際場(chǎng)景中,需要修改示例代碼中的以下參數(shù)。

    參數(shù)

    示例

    說明

    RegionId

    cn-shanghai

    修改DefaultProfile.getProfile中的${RegionId}為您的物聯(lián)網(wǎng)平臺(tái)服務(wù)的地域代碼。阿里云地域代碼,請(qǐng)參見支持的地域。

    TopicFullName

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

    云端應(yīng)用要發(fā)布消息的自定義Topic。

    本示例使用物聯(lián)網(wǎng)平臺(tái)中的自定義Topic:/${productKey}/${deviceName}/user/get。

    其中${productKey}為產(chǎn)品家庭溫控器ProductKey值,${deviceName}為設(shè)備Device1。

    更多信息,請(qǐng)參見使用自定義Topic進(jìn)行通信。

    ProductKey

    a2******

    家庭溫控器ProductKey值。

    IotInstanceId

    iot-cn-******

    IoT測(cè)試環(huán)境的實(shí)例ID。

    您可在控制臺(tái)的實(shí)例概覽頁(yè)面查看。

    MessageContent

    eyJ0ZXN0IjoidGFzayBwdWIgYnJvYWRjYXN0In0=

    要發(fā)送的消息主體,通過將消息原文轉(zhuǎn)換成二進(jìn)制數(shù)據(jù),并進(jìn)行Base64編碼生成。本示例中消息為“washingMode: 2, washingTime: 30”編碼后的值。

  3. 運(yùn)行PubMessage.java示例代碼后,返回如下日志信息,表示消息下發(fā)成功。

    {"requestId":"6EF6****-****-5***-***7-D2********48","success":true,"messageId":"170440***********"}
  4. 返回物聯(lián)網(wǎng)平臺(tái)控制臺(tái)對(duì)應(yīng)實(shí)例下,在左側(cè)導(dǎo)航欄,單擊監(jiān)控運(yùn)維 > 日志服務(wù),在云端運(yùn)行日志頁(yè)簽,查看設(shè)備API調(diào)用的?志。

    API調(diào)用日志

設(shè)備接收消息

設(shè)備接收服務(wù)端應(yīng)用下發(fā)的消息后,打印消息內(nèi)容MessageContent,如下示例為設(shè)備C Link SDK打印自定義Topic:/a2******/Device1/user/get的消息日志。

[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 

相關(guān)文檔

  • 設(shè)備端基于自定義Topic通信的數(shù)據(jù)格式是自定義的,服務(wù)端應(yīng)用下發(fā)設(shè)備的消息可直接使用設(shè)備的數(shù)據(jù)格式,無需解析。

    如果設(shè)備數(shù)據(jù)格式透?jìng)?自定義,設(shè)備通過自定義Topic上報(bào)給物聯(lián)網(wǎng)平臺(tái)的自定義格式數(shù)據(jù)Payload需要解析為Alink JSON格式,具體內(nèi)容,請(qǐng)參見消息解析。

  • 設(shè)備使用物模型通信時(shí),物聯(lián)網(wǎng)平臺(tái)云端可直接下發(fā)指令給設(shè)備,設(shè)置物模型屬性和調(diào)用物模型服務(wù)。具體操作,請(qǐng)參見在線調(diào)試。

    如果使用設(shè)備模擬器,物聯(lián)網(wǎng)平臺(tái)下發(fā)指令到設(shè)備,包含:自定義Topic的消息下發(fā)、屬性調(diào)試(含獲取、設(shè)置)、服務(wù)調(diào)用。具體內(nèi)容,請(qǐng)參見設(shè)備模擬器的功能調(diào)試。

相關(guān)問題