RRPC支持調用自定義Topic與物聯網平臺通信,且相關Topic中包含了您自定義的完整Topic,可實現不同場景的通信需求。本文介紹RRPC自定義Topic和接入方法。

前提條件

已完成開發設備,支持設備通過自定義Topic與物聯網平臺通信。您可使用以下Link SDK開發設備:

自定義Topic

Topic格式說明
RRPC訂閱/ext/rrpc/+/${topic}您需訂閱物聯網平臺下發的RRPC請求消息中的自定義Topic。
RRPC請求消息/ext/rrpc/${messageId}/${topic}物聯網平臺下發的RRPC請求消息。
RRPC響應消息/ext/rrpc/${messageId}/${topic}設備上行的RRPC響應消息。

以上Topic格式中:

  • ${topic}:您在物聯網平臺的完整自定義Topic,即為/${productKey}/${deviceName}/user/${TopicShortName}

    其中${TopicShortName}為自定義的Topic類,即自定義Topic的后綴。更多信息,請參見自定義Topic

  • ${messageId}:服務端調用物聯網平臺的RRpc接口向設備下發消息時,物聯網平臺生成的唯一的RRPC消息ID,可用于區分不同的RRPC消息。

例如設備device1的自定義Topica18wP***/device1/user/get,發起RRPC消息的Topic為/ext/rrpc/121307410***/a18wP***/device1/user/get

RRPC接入

  1. 從物聯網平臺發送RRPC消息。

    服務端調用物聯網平臺API的RRpc接口向設備發送消息。更多信息,請參見RRpc

    以使用物聯網平臺云端Java SDK為例,調用方式如下。

    使用自定義Topic格式時,您需要確保使用的物聯網平臺云端Java SDK(aliyun-java-sdk-iot)為6.0.0及以上版本。

    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-iot</artifactId>
        <version>6.0.0</version>
    </dependency>

    調用RRpc接口的示例:

    RRpcRequest request = new RRpcRequest();
    request.setProductKey("testProductKey");
    request.setDeviceName("testDeviceName");
    request.setRequestBase64Byte(Base64.getEncoder().encodeToString("hello world"));
    request.setTopic("/testProductKey/testDeviceName/user/get");//如果是自定義Topic調用方式,在這里傳遞自定義Topic。
    request.setTimeout(3000);
    RRpcResponse response = client.getAcsResponse(request);
    說明 請登錄OpenAPI開發者門戶,在線調用RRpc接口,查看物聯網平臺的多種語言云端SDK調用示例。
  2. 設備端接入。
    • 對于使用C Link SDK、Android Link SDK、Python Link SDK的設備,無需做任何特殊操作。
    • 對于使用Node.js Link SDK的設備,需要在開發設備前,將Link SDK下載到本地,修改src文件夾中的model.js文件,在genConnectPrarms函數的clientId中添加ext=1,再使用該Link SDK進行設備開發。

      clientId為:

      clientId:`${this.clientId}|securemode=${this.securemode },signmethod=hmac${this.signAlgorithm},timestamp=${this.timestamp},${extra}`,

      添加ext=1后,clientId為:

      clientId:`${this.clientId}|securemode=${this.securemode },signmethod=hmac${this.signAlgorithm},timestamp=${this.timestamp},${extra},ext=1`,
  3. 設備端返回RRPC響應的Topic。

    RRPC請求Topic和響應Topic格式一樣,直接將請求Topic作為響應Topic即可。

    說明 目前,僅支持設備端返回QoS=0的RRPC響應消息。

    關于通過Python語言,調用設備端Link SDK響應RRPC的方法,請參見RRPC能力