更新时间:2023-10-11 02:21:38下载pdf
本文介绍设备定时业务,即设置智能设备定时触发执行既定的设置。例如,有一个自动窗帘设备,设置每天晚上 7 点钟关闭、早上 9 点钟打开,那么到达对应的时间点后,设备就会自动执行相关的操作。
设备定时业务是通过 ThingTimerManager 类完成统一调度。每个的接口的入参均为 TimerManagerBuilder,不同接口需要组成的数据各不相同。下文会详细说明每个接口所需的参数。
接口说明
| 接口 | 说明 |
|---|---|
| getTimerList | 获取设备/群组定时列表 |
| addTimer | 添加设备/群组定时 |
| editTimer | 更新设备/群组定时 |
| deleteTimer | 删除设备/群组定时 |
| updateTimerStatus | 更新定时状态 |
参数说明
TimerManagerBuilder 说明
| 属性 | 类型 | 说明 |
|---|---|---|
| deviceId | String | 设备 ID。 |
| groupId | long | 群组 ID。 |
| category | String | 定时分组。 |
| timerId | String | 定时 ID。 |
| isOpen | boolean | 是否开启定时。 |
| loops | String | 循环次数,格式为 0000000,使用二进制格式,每一位数字的取值可以是 0(关闭定时)和 1(开启定时)。从左至右依次表示周日、周一、周二、周三、周四、周五、周六。例如,每个周一循环该任务,则取值为 0100000。0000000 表示只执行一次,1111111 表示每天执行。 |
| time | String | 定时时间。示例:18:00。 |
| dps | Map<String,Object> | 定时相关的 DP。当定时触发时,会执行的 DP。示例:{"1":true}。Raw 类型的 DP 需要转换格式,转换方式为:new String(Base64.encodeBase64(HexUtil.hexStringToBytes(dps)))。 |
| isAppPush | boolean | 是否支持定时执行结果推送。 |
| aliasName | String | 定时备注名。 |
| timezone | String | 定时时区。 |
| callback | IThingTimerCallBack | 回调。 |
接口说明
fun addTimer(builder: TimerManagerBuilder)
参数说明
| 属性 | 类型 | 说明 | 是否必传 |
|---|---|---|---|
| deviceId | String | 设备 ID。非必填,创建设备定时需传入。 | 否 |
| groupId | long | 群组 ID。非必填,创建群组定时需传入。 | 否 |
| category | String | 定时分组。 | 是 |
| isOpen | boolean | 是否开启定时。 | 是 |
| loops | String | 循环次数,格式为 0000000,每一位数字的取值可以是 0(关闭定时)和 1(开启定时)。从左至右依次表示周日、周一、周二、周三、周四、周五、周六。例如,每个周一循环该任务,则取值为 0100000。0000000 表示只执行一次,1111111 表示每天执行。 |
是 |
| time | String | 定时时间。示例:18:00。 |
是 |
| dps | Map<String,Object> | 定时相关的 DP。当定时触发时,会执行的 DP。示例:{"1":true}。Raw 类型的 DP 需要转换格式,转换方式为:new String(Base64.encodeBase64(HexUtil.hexStringToBytes(dps))) |
是 |
| isAppPush | boolean | 是否支持定时执行结果推送。 | 是 |
| aliasName | String | 定时备注名。 | 是 |
| callback | IThingTimerCallBack | 回调。 | 是 |
调用示例
HashMap<String, Object> dps = new HashMap<>();
dps.put("1",true);
TimerManagerBuilder builder = new TimerManagerBuilder.Builder()
.setDeviceId("xxxx")
.setCategory("test")
.setTime("08:00")
.setDps(dps)
.setLoops("1100011")
.setAliasName("Test")
.isOpen(true)
.isAppPush(true)
.setCallback(new IThingTimerCallBack() {
@Override
public void successful(@Nullable List<? extends AlarmTimerBean> list) {
}
@Override
public void fail(int errorCode, @NonNull String errorMsg) {
}
})
.build();
ThingDeviceDetailKit.getInstance().getDeviceTimerManager().addTimer(builder);
接口说明
fun editTimer(builder: TimerManagerBuilder)
参数说明
| 属性 | 类型 | 说明 | 是否必传 |
|---|---|---|---|
| deviceId | String | 设备 ID。非必填,更新设备定时需传入。 | 否 |
| groupId | long | 群组 ID。非必填,更新群组定时需传入。 | 否 |
| timerId | String | 定时 ID。 | 是 |
| loops | String | 循环次数,格式为 0000000,每一位数字的取值可以是 0(关闭定时)和 1(开启定时)。从左至右依次表示周日、周一、周二、周三、周四、周五、周六。例如,每个周一循环该任务,则取值为 0100000。0000000 表示只执行一次,1111111 表示每天执行。 |
是 |
| time | String | 定时时间。示例:18:00。 |
是 |
| dps | Map<String,Object> | 定时相关的 DP。当定时触发时,会执行的 DP。示例:{"1":true}。Raw 类型的 DP 需要转换格式,转换方式为:new String(Base64.encodeBase64(HexUtil.hexStringToBytes(dps)))。 |
是 |
| isAppPush | boolean | 是否支持定时执行结果推送。 | 是 |
| aliasName | String | 定时备注名。 | 是 |
| callback | IThingTimerCallBack | 回调。 | 是 |
调用示例
HashMap<String, Object> dps = new HashMap<>();
dps.put("1",true);
TimerManagerBuilder builder = new TimerManagerBuilder.Builder()
.setDeviceId("xxxx")
.setTimerId("xxxxx")
.setTime("08:00")
.setDps(dps)
.setLoops("1100011")
.setAliasName("Test")
.isAppPush(true)
.setCallback(new IThingTimerCallBack() {
@Override
public void successful(@Nullable List<? extends AlarmTimerBean> list) {
}
@Override
public void fail(int errorCode, @NonNull String errorMsg) {
}
})
.build();
ThingDeviceDetailKit.getInstance().getDeviceTimerManager().editTimer(builder);
接口说明
fun deleteTimer(builder: TimerManagerBuilder)
参数说明
| 属性 | 类型 | 说明 | 是否必传 |
|---|---|---|---|
| deviceId | String | 设备 ID。非必填,删除设备定时需传入。 | 否 |
| groupId | long | 群组 ID。非必填,删除群组定时需传入。 | 否 |
| timerId | String | 定时 ID。 | 是 |
| callback | IThingTimerCallBack | 回调。 | 是 |
调用示例
TimerManagerBuilder builder = new TimerManagerBuilder.Builder()
.setDeviceId("xxxx")
.setTimerId("xxxxxx")
.setCallback(new IThingTimerCallBack() {
@Override
public void successful(@Nullable List<? extends AlarmTimerBean> list) {
}
@Override
public void fail(int errorCode, @NonNull String errorMsg) {
}
})
.build();
ThingDeviceDetailKit.getInstance().getDeviceTimerManager().deleteTimer(builder);
接口说明
fun getTimerList(builder: TimerManagerBuilder)
参数说明
| 属性 | 类型 | 说明 | 是否必传 |
|---|---|---|---|
| deviceId | String | 设备 ID。非必填,获取设备定时需传入。 | 否 |
| groupId | long | 群组 ID。非必填,获取群组定时需传入。 | 否 |
| callback | IThingTimerCallBack | 回调。 | 是 |
调用示例
TimerManagerBuilder builder = new TimerManagerBuilder.Builder()
.setDeviceId("xxxx")
.setCallback(new IThingTimerCallBack() {
@Override
public void successful(@Nullable List<? extends AlarmTimerBean> list) {
}
@Override
public void fail(int errorCode, @NonNull String errorMsg) {
}
})
.build();
ThingDeviceDetailKit.getInstance().getDeviceTimerManager().getTimerList(builder);
返回数据说明
AlarmTimerBean 类说明
| 属性 | 类型 | 说明 |
|---|---|---|
| groupId | String | 定时 ID。更新定时的时候,需传入的 timerId 取的就是该字段。 |
| timezoneId | String | 设备时区。 |
| status | int | 是否开启定时。1 开启,0 关闭。 |
| loops | String | 循环次数,格式为 0000000,每一位数字的取值可以是 0(关闭定时)和 1(开启定时)。从左至右依次表示周日、周一、周二、周三、周四、周五、周六。例如,每个周一循环该任务,则取值为 0100000。0000000 表示只执行一次,1111111 表示每天执行。 |
| time | String | 定时时间。示例:18:00。 |
| value | String | 定时相关的 DP。例如:{"xx":true,"xxx":false}。及入参的 dps 字段。 |
| isAppPush | boolean | 是否支持定时执行结果推送。 |
| aliasName | String | 定时备注名。 |
接口说明
fun updateTimerStatus(builder: TimerManagerBuilder)
参数说明
| 属性 | 类型 | 说明 | 是否必传 |
|---|---|---|---|
| deviceId | String | 设备 ID。非必填,更新设备定时需传入。 | 否 |
| groupId | long | 群组 ID。非必填,更新群组定时需传入。 | 否 |
| timerId | long | 定时 ID。 | 是 |
| isOpen | boolean | 是否开启定时。 | 是 |
| callback | IThingTimerCallBack | 回调。 | 是 |
调用示例
TimerManagerBuilder builder = new TimerManagerBuilder.Builder()
.setDeviceId("xxxx")
.setTimerId("xxxxxx")
.isOpen(false)
.setCallback(new IThingTimerCallBack() {
@Override
public void successful(@Nullable List<? extends AlarmTimerBean> list) {
}
@Override
public void fail(int errorCode, @NonNull String errorMsg) {
}
})
.build();
ThingDeviceDetailKit.getInstance().getDeviceTimerManager().updateTimerStatus(builder);
| 错误码 | 说明 |
|---|---|
| 1 | 设备离线 |
| 2 | 操作定时失败 |
| 3 | 获取设备信息失败 |
| 4 | 超时 |
| 5 | 设备异常 |
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈