更新时间:2024-11-13 08:30:53下载pdf
本文介绍 Zigbee 门锁的相关功能,包括家庭成员、解锁方式、临时密码、记录、远程操作、设置操作等。
类名 | 说明 |
---|---|
TuyaOptimusSdk |
初始化门锁 SDK 入口,用来获取门锁管理类 |
ITuyaLockManager |
门锁管理类,可以获取不同类型的门锁类 |
ITuyaZigBeeLock |
Zigbee 门锁类,所有 Zigbee 门锁相关方法都包含在其中 |
示例代码
通过设备 ID,创建 Zigbee 门锁类。
// 初始化门锁 SDK,仅需要调用一次
TuyaOptimusSdk.init(getApplicationContext());
// 获取 ITuyaLockManager
ITuyaLockManager tuyaLockManager = TuyaOptimusSdk.getManager(ITuyaLockManager.class);
// 创建 ITuyaZigBeeLock
ITuyaZigBeeLock tuyaLockDevice = TuyaLockManager.getZigBeeLock("your_device_id");
名词 | 说明 |
---|---|
门锁劫持 | 指将特定的指纹、密码等,设置为劫持密码。当用户被劫持并使用该密码解锁时,门会打开。同时,门锁将开门报警信息发送至家人手机或物业管理系统。 |
门锁成员 | 门锁成员为 家庭成员,等同于智能生活 App SDK 中的家庭成员概念。门锁 SDK 将对应的门锁密码编号与该成员关联起来。更多详情,请参考 家庭管理。 |
lockUserId | 创建 门锁成员 时,云端为设备分配的固件成员 ID,代表着固件内记录的用户 ID。 |
userId | 创建 门锁成员 时,云端分配的数据库记录 ID,代表着用户的唯一 ID。 |
dpCode | 设备功能的标识符。每个设备功能都有名称和编号。 |
unlockId | 解锁方式编号,由解锁方式 DP ID 加硬件锁 ID 组合而成。例如 12-c ,其中 c 为 10 进制转换为十六进制。 |
opmodeId | 解锁方式云端序号。 |
本小节主要介绍 家庭成员 的管理操作。
接口说明
/**
* 家庭成员列表
*
* @param callback 回调
*/
void getMemberList(ITuyaDataCallback<ArrayList<MemberInfoBean>> callback);
MemberInfoBean
数据模型中部分字段定义
字段 | 类型 | 描述 |
---|---|---|
userId | String | 用户 ID |
avatarUrl | String | 头像 URL |
lockUserId | Integer | 用户在锁固件里的 ID |
nickName | String | 昵称 |
userType | Integer | 用户类型
|
userContact | String | 用户联系方式 |
unlockDetail | List | 用户拥有的解锁方式列表,查看 UnlockDetail 数据模型 |
UnlockDetail
数据模型
字段 | 类型 | 描述 |
---|---|---|
dpId | Integer | 解锁方式 DP ID |
count | Integer | 解锁方式个数 |
unlockList | List | 解锁方式详情列表,参考 UnlockInfoBean 数据模型 |
UnlockInfoBean
数据模型
字段 | 类型 | 描述 |
---|---|---|
unlockId | String | 解锁方式编号 |
opModeId | Long | 解锁方式云端序号 |
unlockName | String | 解锁方式名称 |
unlockAttr | Integer | 解锁方式属性
|
admin | Boolean | 是否是管理员指纹 |
示例代码
zigBeeLock.getMemberList(new ITuyaResultCallback<ArrayList<MemberInfoBean>>() {
@Override
public void onSuccess(ArrayList<MemberInfoBean> result) {
Log.i(Constant.TAG, "getMemberList success:" + result);
}
@Override
public void onError(String code, String message) {
Log.e(Constant.TAG, "getMemberList failed: code = " + code + " message = " + message);
}
});
获取当前用户或指定用户详细信息。
接口说明
/**
* 当前家庭成员信息查询
*
* @param callback 回调
*/
void getMemberInfo(ITuyaDataCallback<MemberInfoBean> callback);
/**
* 指定家庭成员信息查询
*
* @param callback 回调
*/
void getMemberInfo(String userId, ITuyaDataCallback<MemberInfoBean> callback);
示例代码
//当前用户信息
zigBeeLock.getMemberInfo(new ITuyaDataCallback<MemberInfoBean>() {
@Override
public void onSuccess(MemberInfoBean bean) {
Log.i(Constant.TAG, "getMemberInfo success:" + bean);
}
@Override
public void onError(String code, String message) {
Log.e(Constant.TAG, "getMemberInfo failed: code = " + code + " message = " + message);
}
});
//指定成员信息查询
zigBeeLock.getMemberInfo("userId", new ITuyaDataCallback<MemberInfoBean>() {
@Override
public void onSuccess(MemberInfoBean bean) {
Log.i(Constant.TAG, "getMemberInfo success:" + bean);
}
@Override
public void onError(String code, String message) {
Log.e(Constant.TAG, "getMemberInfo failed: code = " + code + " message = " + message);
}
});
该接口创建的是家庭成员,添加的用户需要真实的 App 账号。
接口说明
/**
* 添加家庭成员
*
* @param memberWrapperBean 信息
* @param callback 回调
*/
void addMember(MemberWrapperBean memberWrapperBean, ITuyaDataCallback<MemberBean> callback);
MemberWrapperBean
数据模型
字段 | 类型 | 描述 |
---|---|---|
homeId | long | 要添加成员的家庭的 ID |
nickName | String | 为受邀请者设置的昵称 |
admin | boolean | 是否为家庭管理员 |
memberId | long | 家庭成员 ID |
headPic | String | 为受邀请者设置的头像,nil 时使用受邀请者个人头像 |
account | String | 受邀请账号 |
countryCode | String | 受邀请者账号对应的国家或地区码 |
invitationCode | String | 邀请码 |
role | int | 成员角色,参考 MemberRole 定义类型 |
autoAccept | boolean | 是否需要受邀请者同意接受加入家庭邀请
|
详情请参考 家庭成员信息。
示例代码
MemberWrapperBean.Builder memberWrapperBean = new MemberWrapperBean.Builder();
memberWrapperBean.setNickName();//成员昵称
memberWrapperBean.setCountryCode();//国家或地区编号
memberWrapperBean.setAccount();//App 账号
memberWrapperBean.setRole();//成员角色
memberWrapperBean.setHomeId();//当前设备所属家庭 ID
memberWrapperBean.setAutoAccept(false);//true 为受邀请账号自动接受家庭加入邀请
zigBeeLock.addMember(memberWrapperBean.build(), new ITuyaDataCallback<MemberBean>() {
@Override
public void onSuccess(MemberBean result) {
Log.i(Constant.TAG, "add lock user success");
}
@Override
public void onError(String code, String message) {
Log.e(Constant.TAG, "add lock user failed: code = " + code + " message = " + message);
}
});
删除指定的家庭用户成员,并删除设备上该成员对应的所有解锁方式。
接口说明
/**
* 删除单个家庭成员
*
* @param memberInfoBean 成员信息
* @param callback 回调
*/
void removeMember(MemberInfoBean memberInfoBean, IResultCallback callback);
示例代码
其中入参 memberInfoBean
为成员列表接口 getMemberList
返回的数据模型。
zigBeeLock.removeMember(memberInfoBean, new IResultCallback() {
@Override
public void onError(String code, String error) {
Log.e(Constant.TAG, "removeMember failed: code = " + code + " message = " + error);
}
@Override
public void onSuccess() {
Log.i(Constant.TAG, "removeMember success");
}
});
该接口只能修改指定成员的昵称及成员角色。
接口说明
/**
* 修改单个成员信息
*
* @param memberWrapperBean 入参
* @param callback 回调
*/
void updateMember(MemberWrapperBean memberWrapperBean, IResultCallback callback);
示例代码
MemberWrapperBean.Builder memberWrapperBean = new MemberWrapperBean.Builder();
memberWrapperBean.setNickName();//成员昵称
memberWrapperBean.setRole();//成员角色(请在家庭成员查看 MemberRole 定义类型)
memberWrapperBean.setMemberId();//成员列表返回的 userId
zigBeeLock.updateMember(memberWrapperBean.build(), new IResultCallback() {
@Override
public void onError(String code, String error) {
Log.e(Constant.TAG, "updateMember failed: code = " + code + " message = " + error);
}
@Override
public void onSuccess() {
Log.i(Constant.TAG, "updateMember success");
}
});
接口说明
/**
* 获取成员已绑定的解锁方式列表
*
* @param userId 成员 ID
* @param callback 回调
*/
void getMemberOpmodeList(String userId, ITuyaResultCallback<ArrayList<OpModeBean>> callback);
示例代码
zigBeeLock.getMemberOpmodeList("userId", new ITuyaResultCallback<ArrayList<OpModeBean>>() {
@Override
public void onSuccess(ArrayList<OpModeBean> result) {
Log.i(Constant.TAG, "getMemberOpmodeList onSuccess:" + result);
}
@Override
public void onError(String code, String message) {
Log.e(Constant.TAG, "getMemberOpmodeList failed: code = " + code + " message = " + message);
}
});
OpModeBean
数据模型
字段 | 类型 | 描述 |
---|---|---|
opmode | String | 返回 dpId ,参考 功能定义 > 标准功能 > 开锁方式 DP ID |
opmodeValue | String | 解锁方式在设备端编号,等同 SN |
unlockId | String | 解锁方式编号 |
lockUserId | Int | 锁成员 ID |
opmodeId | Long | 解锁方式云端序号 |
unlockAttr | Int | 解锁方式属性
|
unlockName | String | 解锁方式名称 |
userName | String | 所属用户昵称 |
userId | String | 所属用户 ID |
接口说明
/**
* 获取成员未绑定的解锁方式列表
*
* @param callback 回调
*/
void getUnAllocOpMode(ITuyaDataCallback<ArrayList<UnAllocOpModeBean>> callback);
示例代码
zigBeeLock.getUnAllocOpMode(new ITuyaDataCallback<ArrayList<UnAllocOpModeBean>>() {
@Override
public void onSuccess(ArrayList<UnAllocOpModeBean> result) {
Log.i(Constant.TAG, "getUnAllocOpMode onSuccess:" + result);
}
@Override
public void onError(String code, String message) {
Log.e(Constant.TAG, "getUnAllocOpMode failed: code = " + code + " message = " + message);
}
});
UnAllocOpModeBean
数据模型
字段 | 类型 | 描述 |
---|---|---|
opmode | String | 返回 dpId ,参考 功能定义 > 标准功能 > 开锁方式 DP ID |
unlockInfo | List | 待分配的解锁方式详情,参考数据模型 UnAllocLockBean |
UnAllocLockBean 数据模型
字段 | 类型 | 描述 |
---|---|---|
devId | String | 设备 ID |
unlockSn | Int | 解锁方式在门锁设备上的 ID |
unlockId | String | 解锁方式编号 |
opmodeId | Long | 解锁方式云端序号 |
unlockName | String | 解锁方式名称 |
接口说明
/**
* 解锁方式分配到人
*
* @param userId 用户 ID
* @param unlockIds 解锁方式
* @param callback 回调
*/
void allocUnlockOpMode(String userId, List<String> unlockIds, ITuyaResultCallback<Boolean> callback);
请求参数
字段 | 类型 | 描述 |
---|---|---|
userId | String | 用户 ID |
unlockIds | List | 解锁方式列表 |
示例代码
iTuyaZigBeeLock.allocUnlockOpMode(userId, unlockIds, new ITuyaResultCallback<Boolean>() {
@Override
public void onSuccess(Boolean result) {
Log.i(Constant.TAG, "allocUnlockOpMode onSuccess: " + result);
}
@Override
public void onError(String code, String message) {
Log.e(Constant.TAG, "allocUnlockOpMode failed: code = " + code + " message = " + message);
}
});
接口说明
/**
* 添加解锁方式
*
* @param opModeAddRequest 入参
* @param callback 回调
*/
void addUnlockOpmodeForMember(OpModeAddRequest opModeAddRequest, ITuyaResultCallback<OpModeAddBean> callback);
/**
* 添加解锁方式(带密码下发)
*
* @param opModeAddRequest 入参
* @param callback 回调
*/
void addPasswordOpmodeForMember(OpModeAddRequest opModeAddRequest, ITuyaResultCallback<OpModeAddBean> callback);
OpModeAddRequest
数据模型
字段 | 类型 | 描述 |
---|---|---|
userId | String | 用户 ID |
lockUserId | Integer | 用户在门锁固件上的 ID |
unlockName | String | 解锁方式名称 |
unlockAttr | Integer | 是否开启特殊解锁通知(劫持)
|
password | String | 密码类型密码(带密码下发需要) |
unlockType | String | 解锁方式类型 dpCode |
userType | Integer | 用户类型
|
OpModeAddBean
数据模型
字段 | 类型 | 描述 |
---|---|---|
opModeId | long | 解锁方式云端 ID |
unlockName | String | 解锁方式名称 |
云能力获取示例代码
通过接口返回的 tyabitmqxx
值来判断两种接口的使用。如果返回为空,默认为 true
。
字段 | 描述 |
---|---|
true | 使用 addUnlockOpmodeForMember |
false | 使用 addPasswordOpmodeForMember |
private boolean tyabitmqxx = true;
zigBeeLock.getLockDeviceConfig(new ITuyaResultCallback<JSONObject>() {
@Override
public void onSuccess(JSONObject result) {
JSONObject powerCode = result.getJSONObject("powerCode");
if (powerCode != null) {
if (powerCode.containsKey("tyabitmqxx")) {
tyabitmqxx = powerCode.getBooleanValue("tyabitmqxx");
} else {
tyabitmqxx = true;
}
}
//特别注意:UI 展示输入框根据 tyabitmqxx=false 来判断
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
添加解锁方式示例代码
private void addUnlockMode() {
if (!tyabitmqxx) {
//正常解锁方式添加
zigBeeLock.addPasswordOpmodeForMember(request, new ITuyaResultCallback<OpModeAddBean>() {
@Override
public void onSuccess(OpModeAddBean result) {
Log.i(Constant.TAG, "addPasswordOpmodeForMember onSuccess:" + result);
}
@Override
public void onError(String errorCode, String errorMessage) {
Log.e(Constant.TAG, "addProUnlockOpModeForMember:" + errorMessage);
}
});
return;
}
//密码下发添加
zigBeeLock.addUnlockOpmodeForMember(request, new ITuyaResultCallback<OpModeAddBean>() {
@Override
public void onSuccess(OpModeAddBean result) {
Log.i(Constant.TAG, "addUnlockOpmodeForMember onSuccess:" + result);
}
@Override
public void onError(String errorCode, String errorMessage) {
Log.e(Constant.TAG, "addProUnlockOpModeForMember:" + errorMessage);
}
});
}
该方法只能更新解锁方式名称及劫持功能开关控制。
接口说明
/**
* 更新解锁方式信息
*
* @param unlockName 解锁方式名称
* @param opModeId 解锁方式云端 ID
* @param unlockAttr 是否劫持:0 取消,1 开启
* @param unlockId 锁 ID
* @param callback 回调
*/
void modifyUnlockOpmodeForMember(String unlockName, long opModeId, int unlockAttr, String unlockId, ITuyaResultCallback<Boolean> callback);
示例代码
zigBeeLock.modifyUnlockOpmodeForMember(
"unlockName",
"opmodeId",
"unlockAttr",
"unlockId",
new ITuyaResultCallback<Boolean>() {
@Override
public void onSuccess(Boolean result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
接口说明
/**
* 删除解锁方式
*
* @param removeRequest 入参
* @param callback 回调
*/
void removeUnlockOpmodeForMember(OpModeRemoveRequest removeRequest, ITuyaResultCallback<Boolean> callback);
OpModeRemoveRequest
数据模型
字段 | 类型 | 描述 |
---|---|---|
userId | String | 用户 ID |
lockUserId | String | 用户在锁固件里的 ID |
userType | Integer | 用户类型 |
unlockId | String | 解锁方式编号 |
opModeId | String | 解锁方式云端编号 |
示例代码
OpModeRemoveRequest removeRequest = new OpModeRemoveRequest();
removeRequest.setUserId(infoBean.getUserId());
removeRequest.setLockUserId(infoBean.getLockUserId());
removeRequest.setUnlockId(infoBean.getUnlockId());
removeRequest.setOpModeId(infoBean.getOpmodeId());
removeRequest.setUserType(infoBean.getUserType());
zigBeeLock.removeUnlockOpmodeForMember(removeRequest, new ITuyaResultCallback<Boolean>() {
@Override
public void onSuccess(Boolean result) {
Log.i(Constant.TAG, "removeUnlockOpmodeForMember onSuccess:" + result);
}
@Override
public void onError(String errorCode, String errorMessage) {
Log.e(Constant.TAG, "removeUnlockOpmodeForMember:" + errorMessage);
}
});
接口说明
/**
* 解锁方式取消录入
*
* @param unlockType 解锁方式 DpCode
* @param lockUserId 锁用户 ID
* @param userType 成员权限
* @param callback 回调
*/
void cancelUnlockOpMode(String dpCode, int lockUserId, int userType, IResultCallback callback);
示例代码
private void cancelUnlock() {
zigBeeLock.cancelUnlockOpMode(request.getUnlockType(), request.getLockUserId(), request.getUserType(), new IResultCallback() {
@Override
public void onError(String code, String error) {
}
@Override
public void onSuccess() {
}
});
}
在添加或更新成员解锁方式方法内,已经内置该接口调用。
接口说明
/**
* 防劫持设置
*
* @param dpId 功能点
* @param unlockId 功能点设置值
* @param callback 回调
*/
void addHijackingConfig(String dpId, String unlockId, ITuyaResultCallback<Boolean> callback);
在添加或更新成员解锁方式方法内,已经内置该接口调用。
接口说明
/**
* 移除防劫持设置
*
* @param dpId 功能点
* @param unlockId 功能点设置值
* @param callback 回调
*/
void removeHijacking(String dpId, String unlockId, ITuyaResultCallback<Boolean> callback);
接口说明
/**
* 临时密码列表
*
* @param limit 分页数量
* @param offset 起始记录数
* @param callback 回调
*/
void getPasswordList(int offset, int limit, ITuyaResultCallback<PasswordBean> callback);
示例代码
zigBeeLock.getPasswordList(0, 50, new ITuyaResultCallback<PasswordBean>() {
@Override
public void onSuccess(PasswordBean result) {
Log.i(Constant.TAG, "getPasswordList success: " + result);
}
@Override
public void onError(String errorCode, String errorMessage) {
Log.e(Constant.TAG, "getPasswordList failed: code = " + errorCode + " message = " + errorMessage);
}
});
PasswordBean
数据模型
字段 | 类型 | 描述 |
---|---|---|
hasNext | Boolean | 是否有下一页 |
totalCount | Integer | 总数量 |
datas | List | 数据列表,参考文档下模型 DataBean |
DataBean
数据模型
字段 | 类型 | 描述 |
---|---|---|
effectiveTime | long | 生效时间 |
invalidTime | long | 失效时间 |
password | String | 明文密码 |
phase | Integer | 状态阶段
|
oneTime | Integer | 密码类型
|
ifEffective | Boolean | 是否生效中 |
operate | Integer | 最近操作
|
name | String | 密码名称 |
deliveryStatus | Integer | 状态
|
modifyData | List | 数据列表,参考文档下模型 ModifyDataBean |
ModifyDataBean
数据模型
字段 | 类型 | 描述 |
---|---|---|
effectiveTime | long | 生效时间 |
invalidTime | long | 失效时间 |
ifEffective | Boolean | 是否生效中 |
name | String | 密码名称 |
scheduleList | List | 周期区间,模型参考ScheduleBean |
接口说明
/**
* 临时密码无效列表
*
* @param limit 分页数量
* @param offset 起始记录数
* @param callback 回调
*/
void getInvalidPasswordList(int offset, int limit, ITuyaResultCallback<PasswordBean> callback);
示例代码
zigBeeLock.getInvalidPasswordList(0, 100, new ITuyaResultCallback<PasswordBean>() {
@Override
public void onSuccess(PasswordBean result) {
Log.i(Constant.TAG, "getInvalidPasswordList success: " + result);
}
@Override
public void onError(String errorCode, String errorMessage) {
Log.e(Constant.TAG, "getInvalidPasswordList failed: code = " + errorCode + " message = " + errorMessage);
}
});
接口说明
/**
* 清空无效密码
*
* @param callback 回调
*/
void removeInvalidPassword(ITuyaResultCallback<String> callback);
示例代码
zigBeeLock.removeInvalidPassword(new ITuyaResultCallback<String>() {
@Override
public void onSuccess(String result) {
Log.i(Constant.TAG, "removeInvalidPassword success: " + result);
}
@Override
public void onError(String errorCode, String errorMessage) {
Log.e(Constant.TAG, "removeInvalidPassword failed: code = " + errorCode + " message = " + errorMessage);
}
});
接口说明
/**
* 获取动态密码
*
* @param callback 回调
*/
void getDynamicPassword(ITuyaResultCallback<DynamicPasswordBean> callback);
DynamicPasswordBean
数据模型
字段 | 类型 | 描述 |
---|---|---|
dynamicPassword | String | 动态明文密码 |
示例代码
zigBeeLock.getDynamicPassword(new ITuyaResultCallback<DynamicPasswordBean>() {
@Override
public void onSuccess(DynamicPasswordBean result) {
Log.i(Constant.TAG, "getDynamicPassword success: " + result.getDynamicPassword());
}
@Override
public void onError(String errorCode, String errorMessage) {
Log.e(Constant.TAG, "getDynamicPassword failed: code = " + errorCode + " message = " + errorMessage);
}
});
接口说明
/**
* 添加临时密码
*
* @param request 入参
* @param callback 回调
*/
void addTemporaryPassword(PasswordRequest request, ITuyaResultCallback<String> callback);
PasswordRequest
数据模型
字段 | 类型 | 描述 |
---|---|---|
id | Long | 云端序号 |
name | String | 密码名称 |
password | String | 密码内容 |
sn | Int | 临时密码在设备的编号 |
effectiveTime | Long | 生效时间 |
invalidTime | Long | 失效时间 |
availTime | Int | 可用次数
|
schedule | List | 定时数据,参考ScheduleBean |
ScheduleBean
数据模型
字段 | 类型 | 描述 |
---|---|---|
workingDay | Integer | 工作日选择,详见workingDay 特殊说明 |
allDay | Boolean | 是否全天 |
effectiveTime | Integer | 生效分钟 例如:当前早上 8 点整,值为 800 |
invalidTime | Integer | 失效分钟 例如:当前下午 18 点整,值为 1800 |
timeZoneId | String | 时区信息(选填) |
workingDay
特殊说明
周循环的选择字段 workingDay
由七个 1
或 0
组成。其中 1
为开启、0
为关闭,排序示例如下。由二进制转换为十进制存储。
周日 | 周一 | 周二 | 周三 | 周四 | 周五 | 周六 | 二进制表示 | 计算结果(十进制) |
---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1111111 | 127 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0000000 | 0 |
0 | 1 | 1 | 1 | 1 | 0 | 0 | 0111100 | 60 |
示例代码
PasswordRequest passwordRequest = new PasswordRequest();
passwordRequest.setName("昵称");
passwordRequest.setPassword("密码");
passwordRequest.setSchedule("周期");
passwordRequest.setEffectiveTime("生效时间");
passwordRequest.setInvalidTime("失效时间");
passwordRequest.setAvailTime(0);
zigBeeLock.addTemporaryPassword(passwordRequest, new ITuyaResultCallback<String>() {
@Override
public void onSuccess(String result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
使用前,需要通过设备是否存在该 dpCode single_use_password
,判断是否支持添加临时一次性密码。
接口说明
/**
* 添加临时一次性密码
*
* @param request 入参
* @param callback 回调
*/
void addTemporaryPassword(PasswordRequest request, ITuyaResultCallback<String> callback);
示例代码
PasswordRequest passwordRequest = new PasswordRequest();
passwordRequest.setName("昵称");
passwordRequest.setPassword("密码");//可以为空,云端生成
passwordRequest.setAvailTime(1);
zigBeeLock.addTemporaryPassword(passwordRequest, new ITuyaResultCallback<String>() {
@Override
public void onSuccess(String result) {
//如果未传密码,云端会生成随机密码,需自行解析展示返回的数据内容
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
接口说明
/**
* 临时密码重命名
*
* @param unlockName 密码名称
* @param pwdId 密码 ID(临时密码列表的 DataBean.id)
* @param callback 回调
*/
void updateTemporaryPassword(String unlockName, long pwdId, ITuyaResultCallback<Boolean> callback);
示例代码
zigBeeLock.updateTemporaryPassword("name", "id", new ITuyaResultCallback<Boolean>() {
@Override
public void onSuccess(Boolean result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
修改周期性临时密码。
接口说明
/**
* 修改临时密码
*
* @param request 入参
* @param callback 回调
*/
void modifyTemporaryPassword(PasswordRequest request, ITuyaResultCallback<String> callback);
示例代码
PasswordRequest passwordRequest = new PasswordRequest();
passwordRequest.setId("id");
passwordRequest.setName("昵称");
passwordRequest.setSchedule("时效");
passwordRequest.setEffectiveTime("生效时间");
passwordRequest.setInvalidTime("失效时间");
passwordRequest.setAvailTime(0);
zigBeeLock.modifyTemporaryPassword(passwordRequest, new ITuyaResultCallback<String>() {
@Override
public void onSuccess(String result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
接口说明
/**
* 删除临时密码
*
* @param removeRequest 入参
* @param callback 回调
*/
void removeTemporaryPassword(PasswordRemoveRequest removeRequest, ITuyaResultCallback<String> callback);
示例代码
PasswordRemoveRequest removeRequest = new PasswordRemoveRequest();
removeRequest.setId(dataBean.id);//密码 ID
removeRequest.setAvailTime(dataBean.oneTime);//一次性或周期性
removeRequest.setName(dataBean.name);//昵称
removeRequest.setEffectiveTime(dataBean.effectiveTime);//生效时间
removeRequest.setInvalidTime(dataBean.invalidTime);//失效时间
zigBeeLock.removeTemporaryPassword(removeRequest, new ITuyaResultCallback<String>() {
@Override
public void onSuccess(String result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
接口说明
/**
* 冻结临时密码
*
* @param request 入参
* @param callback 回调
*/
void freezeTemporaryPassword(PasswordRequest request, ITuyaResultCallback<String> callback);
示例代码
PasswordRequest passwordRequest = new PasswordRequest();
passwordRequest.setPassword(dataBean.password);
passwordRequest.setName(dataBean.name);
passwordRequest.setEffectiveTime(dataBean.effectiveTime);
passwordRequest.setInvalidTime(dataBean.invalidTime);
passwordRequest.setAvailTime(dataBean.oneTime);
passwordRequest.setId(dataBean.id);
zigBeeLock.freezeTemporaryPassword(passwordRequest, new ITuyaResultCallback<String>() {
@Override
public void onSuccess(String result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
接口说明
/**
* 解冻临时密码
*
* @param request 入参
* @param callback 回调
*/
void unfreezeTemporaryPassword(PasswordRequest request, ITuyaResultCallback<String> callback);
示例代码
PasswordRequest passwordRequest = new PasswordRequest();
passwordRequest.setPassword(dataBean.password);
passwordRequest.setName(dataBean.name);
passwordRequest.setEffectiveTime(dataBean.effectiveTime);
passwordRequest.setInvalidTime(dataBean.invalidTime);
passwordRequest.setAvailTime(dataBean.oneTime);
passwordRequest.setId(dataBean.id);
zigBeeLock.unfreezeTemporaryPassword(passwordRequest, new ITuyaResultCallback<String>() {
@Override
public void onSuccess(String result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
根据列表返回的数据,展示对应的 UI 状态。
接口说明
/**
* 告警未读数
*
* @param callback 回调
*/
void getUnreadAlarmNumber(ITuyaResultCallback<String> callback);
示例代码
zigBeeLock.getUnreadAlarmNumber(new ITuyaResultCallback<String>() {
@Override
public void onSuccess(String result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
接口说明
/**
* 告警记录
*
* @param devId 设备 ID
* @param dpIds 告警类型 dpId
* @param offset 起始记录数
* @param limit 分页数量
* @param callback 回调
*/
void getAlarmRecordList(String devId, List<String> dpIds, int offset, int limit, final ITuyaResultCallback<RecordBean> callback);
示例代码
List<String> dpIds = new ArrayList<>();
dpIds.add(zigBeeLock.convertCode2Id(ZigBeeDatePoint.HI_JACK));
dpIds.add(zigBeeLock.convertCode2Id(ZigBeeDatePoint.ALARM_LOCK));
dpIds.add(zigBeeLock.convertCode2Id(ZigBeeDatePoint.DOORBELL));
zigBeeLock.getAlarmRecordList(mDevId, dpIds, 0, 30, new ITuyaResultCallback<RecordBean>() {
@Override
public void onSuccess(RecordBean result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
接口说明
/**
* 开门记录
*
* @param devId 设备 ID
* @param dpIds 各种解锁方式对应 dpId
* @param offset 起始记录数
* @param limit 分页数量
* @param callback 回调
*/
void getUnlockRecordList(String devId, List<String> dpIds, int offset, int limit, final ITuyaResultCallback<RecordBean> callback);
示例代码
List<String> dpIds = new ArrayList<>();
dpIds.add(zigBeeLock.convertCode2Id(ZigBeeDatePoint.UNLOCK_CARD));
dpIds.add(zigBeeLock.convertCode2Id(ZigBeeDatePoint.UNLOCK_PASSWORD));
dpIds.add(zigBeeLock.convertCode2Id(ZigBeeDatePoint.UNLOCK_DYNAMIC));
dpIds.add(zigBeeLock.convertCode2Id(ZigBeeDatePoint.UNLOCK_FINGERPRINT));
dpIds.add(zigBeeLock.convertCode2Id(ZigBeeDatePoint.UNLOCK_TEMPORARY));
dpIds.add(zigBeeLock.convertCode2Id(ZigBeeDatePoint.UNLOCK_KEY));
dpIds.add(zigBeeLock.convertCode2Id(ZigBeeDatePoint.UNLOCK_REMOTE));
dpIds.add(zigBeeLock.convertCode2Id(ZigBeeDatePoint.OPEN_INSIDE));
zigBeeLock.getUnlockRecordList(mDevId, dpIds, 0, 30, new ITuyaResultCallback<RecordBean>() {
@Override
public void onSuccess(RecordBean result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
接口说明
/**
* 绑定开门记录到用户
*
* @param userId 用户 ID
* @param unlockIds 解锁方式
* @param callback 回调
*/
void bindOpModeToMember(String userId, List<String> unlockIds, ITuyaResultCallback<Boolean> callback);
请求参数
字段 | 类型 | 描述 |
---|---|---|
userId | String | 用户 ID |
unlockIds | List | 解锁方式列表 |
示例代码
iTuyaZigBeeLock.bindOpModeToMember(userId, unlockIds, new ITuyaResultCallback<Boolean>() {
@Override
public void onSuccess(Boolean result) {
Log.i(Constant.TAG, "bindOpModeToMember onSuccess: " + result);
}
@Override
public void onError(String code, String message) {
Log.e(Constant.TAG, "bindOpModeToMember failed: code = " + code + " message = " + message);
}
});
您需要自行监听设备支持的门状态相关 DP,用于展示是否正确开门,接口只返回执行成功。
接口说明
/**
* 远程解锁
*
* @param callback 回调
*/
void remoteUnlock(IResultCallback callback);
示例代码
zigBeeLock.remoteUnlock(new IResultCallback() {
@Override
public void onError(String code, String error) {
}
@Override
public void onSuccess() {
}
});
接口说明
/**
* 远程关锁
*
* @param callback 回调
*/
void remoteLock(IResultCallback callback);
示例代码
zigBeeLock.remoteLock(new IResultCallback() {
@Override
public void onError(String code, String error) {
}
@Override
public void onSuccess() {
}
});
接口说明
/**
* 查询远程解锁开关状态
*
* @param callback 回调
*/
void fetchRemoteUnlockType(ITuyaResultCallback<Boolean> callback);
示例代码
zigBeeLock.fetchRemoteUnlockType(new ITuyaResultCallback<Boolean>() {
@Override
public void onSuccess(Boolean result) {
Log.i(Constant.TAG, "fetchRemoteUnlockType success:" + result);
}
@Override
public void onError(String code, String message) {
Log.e(Constant.TAG, "fetchRemoteUnlockType failed: code = " + code + " message = " + message);
}
});
接口说明
/**
* 设置远程解锁开关
*
* @param isOpen 开关配置
* @param callback 回调
*/
void setRemoteUnlockType(boolean isOpen, IResultCallback callback);
示例代码
zigBeeLock.setRemoteUnlockType(isOpen, new IResultCallback() {
@Override
public void onError(String code, String error) {
}
@Override
public void onSuccess() {
}
});
前置条件:设备需要支持 remote_no_dp_key
和 remote_unlock
两个远程 dpCode
,其中 remote_unlock
为远程含密解锁的前置判断。如果不支持 remote_unlock
,需要隐藏含密相关功能。
接口说明
/**
* 获取远程解锁权限
*
* @param callback 回调
*/
void getRemoteUnlockPermissionValue(ITuyaResultCallback<RemotePermissionEnum> callback);
示例代码
zigBeeLock.getRemoteUnlockPermissionValue(new ITuyaResultCallback<RemotePermissionEnum>() {
@Override
public void onSuccess(RemotePermissionEnum result) {
}
}
RemotePermissionEnum
枚举解析
类型 | 描述 |
---|---|
REMOTE_NOT_DP_KEY_ALL | 所有人免密 |
REMOTE_NOT_DP_KEY_ADMIN | 管理员免密 |
REMOTE_UNLOCK_ALL | 所有人含密 |
REMOTE_UNLOCK_ADMIN | 管理员含密 |
注意,含密解锁的密码是成员解锁方式的密码,不是临时密码。
示例代码
zigBeeLock.remoteUnlock(password, new IResultCallback() {
@Override
public void onError(String code, String error) {
}
@Override
public void onSuccess() {
}
});
接口说明
/**
* 设置远程解锁权限
*
* @param permissionEnum 权限枚举
* @param callback 回调
*/
void setRemoteUnlockPermissionValue(RemotePermissionEnum permissionEnum, IResultCallback callback);
示例代码
zigBeeLock.setRemoteUnlockPermissionValue(RemotePermissionEnum.REMOTE_NOT_DP_KEY_ADMIN, new IResultCallback() {
@Override
public void onError(String code, String error) {
}
@Override
public void onSuccess() {
}
});
接口说明
/**
* 查询音箱密码开启状态
*
* @param callback 回调
*/
void fetchRemoteVoiceUnlock(ITuyaResultCallback<Boolean> callback);
示例代码
zigBeeLock.fetchRemoteVoiceUnlock(new ITuyaResultCallback<Boolean>() {
@Override
public void onSuccess(Boolean result) {
Log.i(Constant.TAG, "fetchRemoteVoiceUnlock success:" + result);
}
@Override
public void onError(String code, String message) {
Log.e(Constant.TAG, "fetchRemoteVoiceUnlock failed: code = " + code + " message = " + message);
}
});
接口说明
/**
* 设置或取消音箱密码
*
* @param isOpen 设置或取消
* @param password 密码
* @param callback 回调
*/
void setRemoteVoiceUnlock(boolean isOpen, String password, ITuyaResultCallback<Boolean> callback);
示例代码
zigBeeLock.setRemoteVoiceUnlock(isOpen, password, new ITuyaResultCallback<Boolean>() {
@Override
public void onSuccess(Boolean result) {
}
@Override
public void onError(String code, String error) {
}
});
获取设备迄今为止的激活时间,例如,已安全守护多少天等功能。
接口说明
/**
* 获取设备迄今为止的激活时间
*
* @param callback 回调
*/
void getSecurityGuardDays(ITuyaResultCallback<String> callback);
示例代码
zigBeeLock.getSecurityGuardDays(new ITuyaResultCallback<String>() {
@Override
public void onSuccess(String result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
获取设备的面板云能力。
接口说明
/**
* 获取设备云能力
*
* @param callback 回调
*/
void getLockDeviceConfig(ITuyaResultCallback<JSONObject> callback);
示例代码
zigBeeLock.getLockDeviceConfig(new ITuyaResultCallback<JSONObject>() {
@Override
public void onSuccess(JSONObject result) {
JSONObject powerCode = result.getJSONObject("powerCode");
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
错误码 | 说明 |
---|---|
-10002 | 设备离线 |
-10003 | 请求超时 |
-10004 | 数据校验失败 |
-10005 | 数据不存在 |
-10006 | DP 不存在 |
-11001 | 用户取消录入解锁方式 |
-11002 | 指纹不完整 |
-11003 | 设备上报添加开锁方式录入失败 |
-11004 | 删除解锁方式失败 |
-11005 | 解锁方式不可删除 |
-11007 | 添加解锁方式-重复录入 |
-11008 | 添加解锁方式-硬件编号分配完 |
-11009 | 添加开锁方式-添加密码非数字 |
-11010 | 添加开锁方式-密码长度错误 |
-11011 | 添加开锁方式-不支持添加的解锁方式类型 |
-11012 | 添加开锁方式-当前正处于指纹录入 |
-11013 | 添加开锁方式-错误的编号 |
-11014 | 密码为空 |
DP | 功能说明 |
---|---|
unlock_fingerprint | 指纹 |
unlock_password | 密码 |
unlock_temporary | 临时密码 |
unlock_dynamic | 动态密码 |
unlock_card | 门卡 |
unlock_face | 人脸 |
unlock_key | 钥匙 |
unlock_remote | 远程 |
open_inside | 从门内打开 |
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈