物联网平台提供设备任务的配置和管理服务。设备的自定义任务需要您根据实际需求,自行定义任务规则和设备端的实现逻辑。本文提供示例代码,通过手动输入命令,模拟设备上报自定义任务状态,为您介绍自定义任务运行过程。
本文以华东2(上海)地域公共实例下设备为例,模拟设备的自定义任务流程。
准备工作
您需先完成以下操作:
- 创建产品名称为任务管理演示产品,所属品类为自定义品类的产品。配置参数时,其他参数使用默认设置。具体操作,请参见创建产品。
- 为产品添加3个设备,分别命名为Device1、Device2、Device3。具体操作,请参见批量创建设备。
设备添加成功后,分别获取3个设备的设备证书信息(ProductKey、DeviceName和DeviceSecret)。
- 自定义JSON格式的任务规则文件。本文规则文件命名为任务执行规则.json,内容如下。
{
"fileName":"jobTest",
"fileVersion":"1",
"fileDescription":"任务管理演示使用"
}
创建自定义任务
- 登录物联网平台控制台。
- 在实例概览页面,单击公共实例。
- 在左侧导航栏,选择。
- 在任务管理页面,单击创建任务。
- 在创建任务页面,完成以下配置,单击下一步。

参数 |
说明 |
任务名称 |
输入任务演示。
|
任务类型 |
选择自定义任务。
|
目标设备,产品,或分组 |
选择产品的任务管理演示。
|
下发给设备的任务执行规则 |
上传规则文件:任务执行规则.json。
|
- 设置每分钟作业执行数量 (50-1000)为50,超时时间(分钟)为5。
- 单击完成,返回任务列表,单击该任务的查看,然后单击作业概览页签,查看任务状态。
如下图所示,任务已完成初始化,开始调度。

运行自定义任务
示例代码使用的开发环境如下:
示例代码支持的命令参见下表。
注意 命令、字段和字段后的参数值之间,必须使用单个空格分隔,但参数值中不能包含空格。
命令 |
支持字段 |
使用说明 |
get |
-h |
get -h :获取get命令的帮助信息。
|
-t |
get -t taskId:获取任务详情。 taskId有三种取值方式:
- 任务下作业的ID:获取作业ID对应任务的详细信息。
- $next:获取一个可执行任务的信息。
- $list:获取可执行的任务列表,默认最多返回10个。
|
update |
|
update -t taskId -s status -p progress -d detail :更新任务下作业的状态。
- taskId:任务下作业的ID。
- status:任务下作业的状态。
可取值如下:
- SUCCEEDED:成功
- FAILED:失败
- IN_PROGRESS:执行中
- REJECTED:已拒绝
- progress:任务下作业执行进度的百分数。
- detail:设备上报的详细信息。内容为JSON格式,且不能包含空格。
说明 -d 表示自定义任务的执行详情,为可选字段。您可在物联网平台控制台的页面查看。
|
-h |
update -h :获取update命令的帮助信息。
|
有关自定义任务执行流程及其Topic说明,请参见设备任务概述。
本文使用3个设备,分别模拟设备任务中可能出现的最终状态:已超时、失败和成功。
- 访问并下载alibabacloud-iot-java-demo,解压文件。然后打开IntelliJ IDEA,导入Demo包中的示例工程lp。
- 在src/main/java/com.aliyun.iotx.lp.demo/job目录下的CustomJobSample.java文件中,参照下表,设置设备信息。

参数 |
示例 |
说明 |
productKey |
a1f3*** |
您添加设备后,保存的设备证书信息。本示例添加设备Device1的信息。
您也可在控制台中设备Device1的设备详情页面查看。
|
deviceName |
Device1 |
deviceSecret |
b5c96d*** |
region |
cn-shanghai |
您的服务所在地域对应的Region ID。请在物联网平台控制台左上角,查看您服务所在的地域。Region ID的取值,请参见地域和可用区。
|
- 运行CustomJobSample程序文件。
设备接入物联网平台,并订阅设备任务相关Topic。

- 输入以下命令,获取设备的任务列表信息。
get -t $list

- 输入以下命令,获取指定的任务详情。
get -t 1a9300c10d7b41248cb657ca7191048d

- 开始执行任务并上报进度。输入以下命令,设置进度为26%。
update -t 1a9300c10d7b41248cb657ca7191048d -s IN_PROGRESS -p 26

您可返回物联网平台控制台的页签,查看任务状态和进度。

说明 如果更新任务状态时,status取值不合法,任务状态将更新失败。
不再继续上报进度,超出任务设置的超时时间后,任务最终状态更新为已超时。

- 参考步骤2,修改设备信息为设备Devie2的信息,然后按照步骤3~步骤5获取设备任务,最后输入以下命令,将任务状态更新为失败,并携带失败的提示信息。
update -t d3858707af6548cabe4ec2d6878e8639 -s FAILED -p 10 -d {"errorCode":"500","message":"SystemException"}

返回物联网平台控制台的页签,可查看到任务状态为
失败。

单击执行详情,可查看具体的错误提示信息。

- 参考步骤2,修改设备信息为设备Devie3的信息,然后按照步骤3~步骤6获取并执行任务,最后输入以下命令,更新任务状态为成功。
update -t 3b888b9f892b4d3ead6e2e34f0ccd3c2 -s SUCCEEDED -p 100

返回物联网平台控制台的页签,可查看到任务状态为
成功。
