有奖捉虫:行业应用 & 管理与支持文档专题 HOT

功能概述

资源管理主要是用于开发者向设备端下发人脸识别库、图片库、音乐库等标准的设备资源,实现平台与设备间资源内容的上传及下载。
实现此类功能需利用如下两个 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"
}