异步命令下发
概述
异步命令下发主要用于LwM2M/CoAP设备接入物联网平台,平台或应用侧可通过以下方式进行命令下发:
异步命令立即下发
按照上述使用流程,进行对应步骤的示例如下:
- 应用调用下发异步设备命令接口,下发请求到物联网平台,携带send_strategy为immediately。消息样例如下:
POST https://{endpoint}/v5/iot/{project_id}/devices/{device_id}/async-commands Content-Type: application/json X-Auth-Token: ******** { "service_id" : "WaterMeter", "command_name" : "ON_OFF", "paras" : { "value" : "ON" }, "expire_time": 0, "send_strategy": immediately }
- 物联网平台调用编解码插件对命令请求进行编码后,会通过LwM2M协议定义的设备管理和服务实现接口的Execute操作下发命令,消息体为二进制格式。
- 物联网平台向应用返回200 OK,携带命令状态为SENT。(如果设备不在线或者设备没收到指令则下发失败,命令状态为FAILED)
- 设备收到命令后返回ACK响应。
- 若应用订阅了命令的状态变更通知,物联网平台通过命令状态更新通知接口推送消息给应用,携带命令状态为DELIVERED。消息样例如下:
Method: POST request: Body: { "resource": "device.commmad.status", "event": "update", "event_time": "20200811T080745Z", "notify_data": { "header": { "app_id": "8d4a34e5363a49bfa809c6bd788e6ffa", "device_id": "5f111a5a29c62ac7edc88828_test0001", "node_id": "test0001", "product_id": "5f111a5a29c62ac7edc88828", "gateway_id": "5f111a5a29c62ac7edc88828_test0001", "tags": [] }, "body": { "command_id": "49ca40af-7e14-4f7b-b97b-78cdd347a6b9", "created_time": "20200811T080738Z", "sent_time": "20200811T080738Z", "delivered_time": "20200811T080745Z", "response_time": "", "status": "DELIVERED", "result": null } } }
- 设备执行命令后通过205 Content响应返回命令执行结果。
- 若应用订阅了命令的状态变更通知,物联网平台会调用编解码插件对设备响应进行解码,然后通过命令状态更新通知接口推送消息给应用,携带命令状态为SUCCESSFUL。消息样例如下:
Method: POST request: Body: { "resource": "device.commmad.status", "event": "update", "event_time": "20200811T080745Z", "notify_data": { "header": { "app_id": "8d4a34e5363a49bfa809c6bd788e6ffa", "device_id": "5f111a5a29c62ac7edc88828_test0001", "node_id": "test0001", "product_id": "5f111a5a29c62ac7edc88828", "gateway_id": "5f111a5a29c62ac7edc88828_test0001", "tags": [] }, "body": { "command_id": "49ca40af-7e14-4f7b-b97b-78cdd347a6b9", "created_time": "20200811T080738Z", "sent_time": "20200811T080738Z", "delivered_time": "20200811T080745Z", "response_time": "20200811T081745Z", "status": "SUCCESSFUL", "result": { "resultCode":"SUCCESSFUL", "resultDetail": { "value": "ON" } } } } }
LwM2M/CoAP设备命令执行状态说明
命令执行状态以及状态变化机制如下所示。
命令执行状态 |
说明 |
---|---|
等待(PENDING) |
|
超期(EXPIRED) |
|
已发送(SENT) |
|
超时(TIMEOUT) |
LwM2M/CoAP设备收到命令后,物联网平台在180秒内未收到设备反馈的收到命令响应,此时状态会变为“超时”。 |
已送达(DELIVERED) |
物联网平台收到设备反馈的已收到下发命令响应后,状态变为“已送达”。 |
成功(SUCCESSFUL) |
如果设备在执行完命令后,会给物联网平台反馈命令执行成功的结果,将任务状态变更为“成功”。 |
失败(FAILED) |
|