功能概述
资源管理主要是用于开发者向设备端下发人脸识别库、图片库、音乐库等标准的设备资源,实现平台与设备间资源内容的上传及下载。
实现此类功能需利用如下两个 Topic:
数据上行 Topic(用于发布):
$resource/up/service/${productid}/${devicename}
。数据下行 Topic(用于订阅):
$resource/down/service/${productid}/${devicename}
。设备资源上传
步骤1:设备端创建资源上传任务
1. 设备端通过 MQTT 协议发布一条消息到
$resource/up/service/${productid}/${devicename}
,进行创建设备资源上传任务,消息为 json 格式,内容如下:{"type":"create_upload_task","size":100,"name":"file","md5sum":"************",}
2. 创建成功,后台通过
$resource/down/service/${productid}/${devicename}
返回资源上传的链接,消息为 json 格式,内容如下:{"type":"create_upload_task_rsp","size":100,"name":"file","md5sum":"************","url":"https://iothub.cos.ap-guangzhou.myqcloud.com/********"}
步骤2:上报资源上传进度
1. 资源上传使用 HTTP PUT 请求,所以 header 需要添加 MD5 值(base64 编码)。资源上传过程中,设备端通过
$resource/up/service/${productid}/${devicename}
上报资源上传进度,消息为 json 格式,内容如下:{"type":"report_upload_progress","name":"file","progress":{"state":"uploading","percent":89,"result_code":0,"result_msg":""}}
2. 进度上报响应,通过
$resource/down/service/${productid}/${devicename}
下发给设备,消息为 json 格式,内容如下:{"type":"report_upload_progress_rsp","result_code":0,"result_msg":"ok"}
平台资源下发
步骤1:查询资源下载链接
1. 设备端通过
$resource/up/service/${productid}/${devicename}
上报消息,查询下载任务,消息为 json 格式,内容如下:{"type":"get_download_task"}
2. 如果存在下载任务,则通过
$resource/down/service/${productid}/${devicename}
下发结果,消息为 json 格式,内容如下:{"type":"get_download_task_rsp","size":372338,"name":"AAAA","md5sum":"a567907174*****3bb9a2bb20716fd97","url":"https://iothub.cos.ap-guangzhou.myqcloud.com/********"}
步骤2:上报资源下载进度
1. 资源下载进度通过
$resource/up/service/${productid}/${devicename}
进行上报,消息为 json 格式,内容如下:{"type":"report_download_progress","name":"file","progress":{"state":"downloading","percent":89,"result_code":0,"result_msg":""}}
2. 进度上报响应,通过
$resource/down/service/${productid}/${devicename}
下发给设备,消息为 json 格式,内容如下:{"type":"report_download_progress_rsp","result_code":0,"result_msg":"ok"}
步骤3:上报资源下载成功
1. 资源下载进度通过
$resource/up/service/${productid}/${devicename}
进行上报,消息为 json 格式,内容如下:{"type":"report_download_progress","name":"file","progress":{"state":"done","result_code":0,"result_msg":""}}
2. 进度上报响应,通过
$resource/down/service/${productid}/${devicename}
下发给设备,消息为 json 格式,内容如下:{"type":"report_download_progress_rsp","result_code":0,"result_msg":"ok"}