客户应用服务器可以通过调用串口云IoT平台提供的远程调用接口,很便捷的实现远程控制设备。串口云IoT平台提供异步调用和同步调用的两种方式,两种方式的调用会有所不同
1、异步调用
异步调用是指第三方服务通过异步调用接口,给设备下发命令,接口响应的结果并不是设备返回的结果,而设备上报的结果需要通过另外的方式(如数据推送、消息推送、数据调用)获得设备被调用之后的结果。
具体流程如下:
(1)串口云平台收到来自用户服务器的异步调用请求,响应客户服务器后下发一条请求消息给智能终端。消息体为客户传入的ujson格式的数据,Topic为串口云平台定义的Topic,其中含有唯一的消息ID(msgid)。
(2)智能终端收到串口云下发消息后,把msgid保存起来,如果有需要的通过回调回复客户服务器则使用次msgid回复;同时把数据通过串口下发给客户设备
后续全部使用新版本api,功能更加完善
接口post
/iot/v1/application/device/rpc/async
请求参数
param参数
| 参数名 | 必填 | 示例值 | 说明 |
|---|---|---|---|
| apikey | 是 | 2313123 | |
| product_uuid | 是 | krPVmHSxi35cjzp1 | |
| device_uuid | 是 | O59wNZiK |
Body 参数 (application/json)
| 参数名 | 说明 |
|---|---|
| method | 在创建物模型时,平台生成 |
| cmd | 根据不同协议而定 |
| groupid | 创建物模型的功能组id |
| para | 数据点 |
示例
{"method": "","datapoint": {"cmd": "irure sed","groupid": "12","para": {"key1": 9,"key2": 70,"keyn": 80}}}
响应参数
{"code": 200,"msg": "OK","type": 34,"data": {"msgid": "2a16LUTGsErS","topic": "sub-raw-private"},"ts": 1606101246445}
2、同步调用
同步调用是指第三方服务通过异步调用接口,给设备下发命令,设备端上报的处理结果直接响应给第三方。
具体流程如下:
(1)串口云屏台收到来自客户服务器的同步调用,下发一条同步调用请求消息给智能终端。消息体为客户传入的ujson数据,Topic为串口云平台定义的Topic,其中含有唯一的msgid。
(2)智能终端收到串口云平台下发消息后,把msgid保存起来,并且把数据通过串口下发给客户设备。
(3)客户设备5秒内执行完命令后,要回复智能终端,智能终端把msgid带上被上报串口云平台
(4)平台根据上报的msgid匹配调用消息,并响应给客户服务器。
如果调用时智能终端不在线,串口云平台会给客户服务器返回设备不在线的错误;如果设备端没有在超时时间内(5秒内)回同步调用响应消息,串口云平台会给客户服务器返回超时错误。
接口post
/iot/v1/application/device/rpc/synch
请求参数
param参数
| 参数名 | 必填 | 示例值 | 说明 |
|---|---|---|---|
| apikey | 是 | 2313123 | |
| product_uuid | 是 | krPVmHSxi35cjzp1 | |
| device_uuid | 是 | O59wNZiK |
Body 参数 (application/json)
ujson1.0.1数据结构
| 参数名 | 说明 |
|---|---|
| method | 根据模型而定 |
| cmd | 根据不同协议而定 |
| groupid | 创建物模型的功能组id |
| para | 数据点 |
示例
{"method": "","datapoint": {"cmd": "irure sed","groupid": "12","para": {"key1": 9,"key2": 70,"keyn": 80}}}
响应参数
{"code": 200,"msg": "OK","type": 16,"data": {"cmd": "82","groupid": "a017b6f46745","para": {"int32": 4,"int16": 3}},"ts": 1606965000482}
