更新时间: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 | 设备异常 |
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈