更新时间:2022-02-17 06:17:59下载pdf
涂鸦智能提供了基本的定时能力,支持设备定时(包括 WiFi 设备,蓝牙 Mesh 子设备,Zigbee 子设备)和群组定时。并封装了针对设备 dp 点的定时器信息的增删改查接口。APP 通过定时接口设置好定时器信息后,硬件模块会自动根据定时要求进行预订的操作。每个定时任务下可以包含多个定时器。如下图所示:
类 | 说明 |
---|---|
ITuyaCommonTimer | 定时封装类 |
以下多个接口用到了 taskName 这个参数,具体可描述为一个分组,一个分组可以有多个定时器。每个定时属于或不属于一个分组,分组目前仅用于展示。例如一个开关可能有多个 dp 点,可以根据每个 dp 点设置一个定时分组,每个分组可以添加多个定时器,用于控制这个 dp 点各个时段的开启或关闭。
从3.18.0版本新增一套定时接口,解决老接口存在的问题,(见旧版接口)
新版定时都在TuyaHomeSdk.getTimerInstance()
中,
旧版定时接口在TuyaHomeSdk.getTimerManagerInstance()
中。
与旧版接口相比,新版接口有以下几点更新:
升级建议
旧版接口不再维护,建议升级到新版接口。升级需要将替换整套定时接口,使用旧版接口设置定时仍可以通过新版获取定时器列表获取。
接口说明
每个设备或群组定时添加上限为30个
为 device 或 group 新增一个定时 timer 到指定的 task 下
void addTimer(TuyaTimerBuilder builder, final IResultCallback callback);
参数说明
TuyaTimerBuilder 及 IResultCallback 说明
参数 | 说明 |
---|---|
taskName | 定时分组名称 |
devId | 设备 id 或群组 id |
loops | 一周7天定时执行次数,“0000000”, 每一位 0:关闭,1:开启, 从左至右依次表示: 周日 周一 周二 周三 周四 周五 周六 。“0000000” 表示只执行一次,“1111111” 表示每天执行。 |
actions | dps任务 json格式: {/“dps/”:{},/“time/”:””},其中 raw 类型的 dp 点需要格式转换:new String(Base64.encodeBase64(HexUtil.hexStringToBytes(dps))) |
status | 初始化定时器开关状态 0:关闭,1:开启 |
appPush | 是否支持定时执行结果推送 |
aliasName | 设置定时备注名 |
TimerDeviceTypeEnum | 枚举,定时类型:设备定时或群组定时 |
callback | 回调,返回成功或失败的结果,不能为 null |
示例代码
TuyaTimerBuilder builder = new TuyaTimerBuilder.Builder()
.taskName(mTaskName)
.devId(id)
.deviceType(TimerDeviceTypeEnum.DEVICE)
.actions(dps)
.loops("1100011")
.aliasName("Test")
.status(1)
.appPush(true)
.build();
TuyaOSTimer.getTimerInstance().addTimer(builder, new IResultCallback() {
@Override
public void onSuccess() {
}
@Override
public void onError(String errorCode, String errorMsg) {
}
});
接口说明
void updateTimerStatus(String devId,
TimerDeviceTypeEnum deviceTimerTypeEnum,
List<String> ids,
TimerUpdateEnum timerUpdateEnum,
final IResultCallback callback);
参数说明
参数 | 说明 |
---|---|
devId | 设备 id 或群组 id |
TimerDeviceTypeEnum | 枚举,定时类型:设备定时或群组定时 |
ids | 定时器 id 列表 |
TimerUpdateEnum | 枚举,操作类型:开启定时器、关闭定时器、删除定时器 |
callback | 回调,主要包括发送成功或失败的回调,不能为 null |
示例代码
TuyaOSTimer.getTimerInstance().updateTimerStatus(mDevId,
TimerDeviceTypeEnum.DEVICE,
list,
TimerUpdateEnum.DELETE,
new IResultCallback() {
@Override
public void onError(String code, String error) {
}
@Override
public void onSuccess() {
}
});
接口说明
更新 device 或群组下指定 task 下的指定 timer 信息
void updateTimer(TuyaTimerBuilder builder, final IResultCallback callback);
参数说明
TuyaTimerBuilder 及 IResultCallback 说明
参数 | 说明 |
---|---|
timerId | 更新的 timer id |
devId | 设备 id 或群组 id |
loops | 一周7天定时执行次数,“0000000”, 每一位 0:关闭,1:开启, 从左至右依次表示: 周日 周一 周二 周三 周四 周五 周六 。“0000000” 表示只执行一次,“1111111” 表示每天执行。 |
actions | dps任务 json格式: {/“dps/”:{},/“time/”:“”},其中 raw 类型的 dp 点需要格式转换:new String(Base64.encodeBase64(HexUtil.hexStringToBytes(dps))) |
status | 定时开关状态 0:关闭,1:开启 |
appPush | 是否支持定时执行结果推送 |
aliasName | 设置定时备注名 |
timerDeviceTypeEnum | 枚举,定时类型:设备定时或群组定时 |
callback | 回调,返回成功或失败的结果,不能为 null |
示例代码
TuyaTimerBuilder builder = new TuyaTimerBuilder.Builder()
.timerId(Long.parseLong(alarmTimerBean.getGroupId()))
.devId(id)
.deviceType(TimerDeviceTypeEnum.DEVICE)
.actions(dps)
.loops("1111111")
.aliasName("test")
.status(1)
.appPush(true)
.build();
TuyaOSTimer.getTimerInstance().updateTimer(builder,
new IResultCallback() {
@Override
public void onSuccess() {
}
@Override
public void onError(String errorCode, String errorMsg) {
}
});
接口说明
获取 device 或群组下指定的 task 下的定时 timer
void getTimerList(String taskName, String devId,
TimerDeviceTypeEnum deviceTimerTypeEnum,
final ITuyaDataCallback<TimerTask> callback);
参数说明
参数 | 说明 |
---|---|
taskname | 定时任务名称,可选 为空表示获取普通定时器列表 |
devId | 设备 id 或群组 id |
TimerDeviceTypeEnum | 枚举,定时类型:设备定时或群组定时 |
callback | 回调,主要包括发送成功或失败的回调,不能为 null |
回调参数 TimerTask 说明
参数 | 说明 |
---|---|
TimerTaskStatus | 定时器开关状态及名称 |
ArrayList |
单个定时器列表 |
示例代码
TuyaOSTimer.getTimerInstance().getTimerList(null, mGwId, TimerDeviceTypeEnum.DEVICE, new ITuyaDataCallback<TimerTask>() {
@Override
public void onSuccess(TimerTask timerTask) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
接口说明
void updateCategoryTimerStatus(String taskName, String devId,
TimerDeviceTypeEnum deviceTimerTypeEnum,
TimerUpdateEnum timerUpdateEnum,
IResultCallback callback);
参数说明
参数 | 说明 |
---|---|
taskname | 定时任务名称 |
devId | 设备 id 或群组 id |
TimerDeviceTypeEnum | 枚举,定时类型:设备定时或群组定时 |
TimerUpdateEnum | 枚举,操作类型:开启定时器、关闭定时器、删除定时器 |
callback | 回调,主要包括发送成功或失败的回调,不能为 null |
示例代码
TuyaOSTimer.getTimerInstance().
updateCategoryTimerStatus(taskname, mDevId,
TimerDeviceTypeEnum.DEVICE, TimerUpdateEnum.CLOSE,
new IResultCallback() {
@Override
public void onSuccess() {
}
@Override
public void onError(String errorCode, String errorMsg) {
}
});
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈