RRPC支持调用自定义Topic与物联网平台通信,且相关Topic中包含了您自定义的完整的Topic。

前提条件

支持使用以下Link SDK开发的设备,通过自定义Topic与物联网平台通信:

自定义Topic

RRPC调用自定义Topic的格式如下:

  • RRPC请求消息Topic:/ext/rrpc/${messageId}/${topic}
  • RRPC响应消息Topic:/ext/rrpc/${messageId}/${topic}
  • RRPC订阅Topic:/ext/rrpc/+/${topic}

其中${messageId}是物联网平台生成的唯一的RRPC消息ID,${topic}是您的自定义Topic。

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 SDK、Android SDk、Python SDK的设备,无需做任何特殊操作。
    • 对于使用Node.js SDK的设备,需要在开发设备前,将SDK下载到本地,修改src文件夹中的model.js文件,在genConnectPrarms函数的clientId中添加ext=1,再使用该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语言,调用设备端SDK响应RRPC的方法,请参见RRPC能力