设备定时

更新时间: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(开启定时)。从左至右依次表示周日、周一、周二、周三、周四、周五、周六。例如,每个周一循环该任务,则取值为 01000000000000 表示只执行一次,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(开启定时)。从左至右依次表示周日、周一、周二、周三、周四、周五、周六。例如,每个周一循环该任务,则取值为 01000000000000 表示只执行一次,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(开启定时)。从左至右依次表示周日、周一、周二、周三、周四、周五、周六。例如,每个周一循环该任务,则取值为 01000000000000 表示只执行一次,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(开启定时)。从左至右依次表示周日、周一、周二、周三、周四、周五、周六。例如,每个周一循环该任务,则取值为 01000000000000 表示只执行一次,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 设备异常