物联网平台提供设备任务的配置和管理服务。设备的自定义任务需要您根据实际需求,自行定义任务规则和设备端的实现逻辑。本文提供示例代码,通过手动输入命令,模拟设备上报自定义任务状态,为您介绍自定义任务运行过程。
本文以华东2(上海)地域企业版实例下设备为例,模拟设备的自定义任务流程。
准备工作
您需先完成以下操作:
创建自定义任务
登录物联网平台控制台。
在实例概览页面,单击目标实例名称或ID。
在左侧导航栏,选择 。
在任务页面,单击创建任务。
在创建任务向导页面,完成以下配置,单击下一步。
参数
说明
任务名称
输入任务演示。
任务类型
选择自定义任务。
目标设备,产品,或分组
选择产品的任务管理演示。
下发给设备的任务执行规则
上传规则文件:任务执行规则.json。
设置每分钟作业执行数量 (50-1000)为50,超时时间(分钟)为5。
单击完成,返回任务列表,单击该任务的查看,然后单击作业概览页签,查看任务状态。
如下图所示,任务已完成初始化,开始调度。
运行自定义任务
示例代码使用的开发环境如下:
操作系统:Windows 10
JDK版本:JDK8
集成开发环境:IntelliJ IDEA社区版
示例代码支持的命令参见下表。
命令、字段和字段后的参数值之间,必须使用单个空格分隔,但参数值中不能包含空格。
命令 | 支持字段 | 使用说明 |
get |
|
|
|
taskId有三种取值方式:
| |
update |
|
说明
|
|
|
有关自定义任务执行流程及其Topic说明,请参见设备任务概述。
本文使用3个设备,分别模拟设备任务中可能出现的最终状态:已超时、失败和成功。
访问并下载alibabacloud-iot-java-demo,解压文件。然后打开IntelliJ IDEA,导入Demo包中的示例工程lp。
在src/main/java/com.aliyun.iotx.lp.demo/job目录下的CustomJobSample.java文件中,参照下表,设置设备信息。
运行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
返回物联网平台控制台的
页签,可查看到任务状态为成功。