更新时间:2024-05-20 10:05:58下载pdf
本文介绍 Zigbee 门锁的相关功能,包括家庭成员、解锁方式、临时密码、记录、远程操作、设置操作等。
类名 | 说明 |
---|---|
ThingOptimusSdk |
初始化门锁 SDK 入口,用来获取门锁管理类 |
IThingLockManager |
门锁管理类,可以获取不同类型的门锁类 |
IThingZigBeeLock |
Zigbee 门锁类,所有 Zigbee 门锁相关方法都包含在其中 |
示例代码
通过设备 ID,创建 Zigbee 门锁类。
// 初始化门锁 SDK,仅需要调用一次
ThingOptimusSdk.init(getApplicationContext());
// 获取 IThingLockManager
IThingLockManager thingLockManager = ThingOptimusSdk.getManager(IThingLockManager.class);
// 创建 IThingZigBeeLock
IThingZigBeeLock thingLockDevice = ThingLockManager.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(IThingDataCallback<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 IThingResultCallback<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(IThingDataCallback<MemberInfoBean> callback);
/**
* 指定家庭成员信息查询
*
* @param callback 回调
*/
void getMemberInfo(String userId, IThingDataCallback<MemberInfoBean> callback);
示例代码
//当前用户信息
zigBeeLock.getMemberInfo(new IThingDataCallback<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 IThingDataCallback<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, IThingDataCallback<MemberBean> callback);
MemberWrapperBean
数据模型
请参考 家庭成员信息。
示例代码
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 IThingDataCallback<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
数据模型
请参考 家庭成员信息。
示例代码
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, IThingResultCallback<ArrayList<OpModeBean>> callback);
示例代码
zigBeeLock.getMemberOpmodeList("userId", new IThingResultCallback<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 | 解锁方式
|
opmodeValue | String | 解锁方式在设备端编号,等同 SN |
unlockId | String | 解锁方式编号 |
lockUserId | Int | 锁成员 ID |
opmodeId | Long | 解锁方式云端序号 |
unlockAttr | Int | 解锁方式属性
|
unlockName | String | 解锁方式名称 |
userName | String | 所属用户昵称 |
userId | String | 所属用户 ID |
接口说明
/**
* 获取未被分配的解锁方式
*
* @param callback 回调
*/
void getUnAllocOpMode(IThingDataCallback<ArrayList<UnAllocOpModeBean>> callback);
示例代码
zigBeeLock.getUnAllocOpMode(new IThingDataCallback<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 | 解锁方式
|
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, IThingResultCallback<Boolean> callback);
请求参数
字段 | 类型 | 描述 |
---|---|---|
userId | String | 用户 ID |
unlockIds | List | 解锁方式列表 |
示例代码
iThingZigBeeLock.allocUnlockOpMode(userId, unlockIds, new IThingResultCallback<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 userId 用户 ID
* @param unlockIds 解锁方式
* @param callback 回调
*/
void bindOpModeToMember(String userId, List<String> unlockIds, IThingResultCallback<Boolean> callback);
请求参数
字段 | 类型 | 描述 |
---|---|---|
userId | String | 用户 ID |
unlockIds | List | 解锁方式列表 |
示例代码
iThingZigBeeLock.bindOpModeToMember(userId, unlockIds, new IThingResultCallback<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);
}
});
接口说明
/**
* 添加解锁方式
*
* @param opModeAddRequest 入参
* @param callback 回调
*/
void addUnlockOpmodeForMember(OpModeAddRequest opModeAddRequest, IThingResultCallback<OpModeAddBean> callback);
/**
* 添加解锁方式(带密码下发)
*
* @param opModeAddRequest 入参
* @param callback 回调
*/
void addPasswordOpmodeForMember(OpModeAddRequest opModeAddRequest, IThingResultCallback<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
值来判断两种接口的使用。如果返回为空,默认为 false
。
字段 | 描述 |
---|---|
true | 使用 addUnlockOpmodeForMember |
false | 使用 addPasswordOpmodeForMember |
private boolean tyabitmqxx = false;
zigBeeLock.getLockDeviceConfig(new IThingResultCallback<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 IThingResultCallback<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 IThingResultCallback<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 userId 用户 ID
* @param unlockName 解锁方式名称
* @param opModeId 解锁方式云端 ID
* @param unlockAttr 是否劫持:0 取消,1 开启
* @param unlockId 锁 ID
* @param callback 回调
*/
void modifyUnlockOpmodeForMember(String userId, String unlockName, long opModeId, int unlockAttr, String unlockId, IThingResultCallback<Boolean> callback);
示例代码
zigBeeLock.modifyUnlockOpmodeForMember(
"userId",
"unlockName",
"opmodeId",
"unlockAttr",
"unlockId",
new IThingResultCallback<Boolean>() {
@Override
public void onSuccess(Boolean result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
接口说明
/**
* 删除解锁方式
*
* @param removeRequest 入参
* @param callback 回调
*/
void removeUnlockOpmodeForMember(OpModeRemoveRequest removeRequest, IThingResultCallback<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 IThingResultCallback<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, IThingResultCallback<Boolean> callback);
在添加或更新成员解锁方式方法内,已经内置该接口调用。
接口说明
/**
* 删除劫持告警
*
* @param dpId 功能点
* @param unlockId 功能点设置值
* @param callback 回调
*/
void removeHijacking(String dpId, String unlockId, IThingResultCallback<Boolean> callback);
接口说明
/**
* 获取临时密码列表
*
* @param limit 分页数量
* @param offset 起始记录数
* @param callback 回调
*/
void getPasswordList(int offset, int limit, IThingResultCallback<PasswordBean> callback);
示例代码
zigBeeLock.getPasswordList(0, 50, new IThingResultCallback<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 |
根据列表返回的数据,展示对应的 UI 状态。
接口说明
/**
* 获取无效密码列表
*
* @param limit 分页数量
* @param offset 起始记录数
* @param callback 回调
*/
void getInvalidPasswordList(int offset, int limit, IThingResultCallback<PasswordBean> callback);
示例代码
zigBeeLock.getInvalidPasswordList(0, 100, new IThingResultCallback<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(IThingResultCallback<String> callback);
示例代码
zigBeeLock.removeInvalidPassword(new IThingResultCallback<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(IThingResultCallback<DynamicPasswordBean> callback);
DynamicPasswordBean
数据模型
字段 | 类型 | 描述 |
---|---|---|
dynamicPassword | String | 动态明文密码 |
示例代码
zigBeeLock.getDynamicPassword(new IThingResultCallback<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, IThingResultCallback<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 IThingResultCallback<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, IThingResultCallback<String> callback);
示例代码
PasswordRequest passwordRequest = new PasswordRequest();
passwordRequest.setName("昵称");
passwordRequest.setPassword("密码");//可以为空,云端生成
passwordRequest.setAvailTime(1);
zigBeeLock.addTemporaryPassword(passwordRequest, new IThingResultCallback<String>() {
@Override
public void onSuccess(String result) {
//如果未传密码,云端会生成随机密码,需自行解析展示返回的数据内容
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
接口说明
/**
* 重命名密码名称
*
* @param unlockName 密码名称
* @param opModeId 密码云端 ID(临时密码列表的 DataBean.id)
* @param callback 回调
*/
void updateTemporaryPassword(String unlockName, long opModeId, IThingResultCallback<Boolean> callback);
示例代码
zigBeeLock.updateTemporaryPassword("name", "id", new IThingResultCallback<Boolean>() {
@Override
public void onSuccess(Boolean result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
修改周期性临时密码。
接口说明
/**
* 编辑密码
*
* @param request 入参
* @param callback 回调
*/
void modifyTemporaryPassword(PasswordRequest request, IThingResultCallback<String> callback);
示例代码
PasswordRequest passwordRequest = new PasswordRequest();
passwordRequest.setId("id");
passwordRequest.setName("昵称");
passwordRequest.setSchedule("时效");
passwordRequest.setEffectiveTime("生效时间");
passwordRequest.setInvalidTime("失效时间");
passwordRequest.setAvailTime(0);
zigBeeLock.modifyTemporaryPassword(passwordRequest, new IThingResultCallback<String>() {
@Override
public void onSuccess(String result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
接口说明
/**
* 删除单个临时密码
*
* @param removeRequest 入参
* @param callback 回调
*/
void removeTemporaryPassword(PasswordRemoveRequest removeRequest, IThingResultCallback<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 IThingResultCallback<String>() {
@Override
public void onSuccess(String result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
接口说明
/**
* 冻结密码
*
* @param request 入参
* @param callback 回调
*/
void freezeTemporaryPassword(PasswordRequest request, IThingResultCallback<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 IThingResultCallback<String>() {
@Override
public void onSuccess(String result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
接口说明
/**
* 解冻密码
*
* @param request 入参
* @param callback 回调
*/
void unfreezeTemporaryPassword(PasswordRequest request, IThingResultCallback<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 IThingResultCallback<String>() {
@Override
public void onSuccess(String result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
接口说明
/**
* 告警未读数
*
* @param callback 回调
*/
void getUnreadAlarmNumber(IThingResultCallback<String> callback);
示例代码
zigBeeLock.getUnreadAlarmNumber(new IThingResultCallback<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 IThingResultCallback<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 IThingResultCallback<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 IThingResultCallback<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 IThingResultCallback<RecordBean>() {
@Override
public void onSuccess(RecordBean result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
您需要自行监听设备支持的门状态相关 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(IThingResultCallback<Boolean> callback);
示例代码
zigBeeLock.fetchRemoteUnlockType(new IThingResultCallback<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(IThingResultCallback<RemotePermissionEnum> callback);
示例代码
zigBeeLock.getRemoteUnlockPermissionValue(new IThingResultCallback<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(IThingResultCallback<Boolean> callback);
示例代码
zigBeeLock.fetchRemoteVoiceUnlock(new IThingResultCallback<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, IThingResultCallback<Boolean> callback);
示例代码
zigBeeLock.setRemoteVoiceUnlock(isOpen, password, new IThingResultCallback<Boolean>() {
@Override
public void onSuccess(Boolean result) {
}
@Override
public void onError(String code, String error) {
}
});
获取设备迄今为止的激活时间,例如,已安全守护多少天等功能。
接口说明
/**
* 获取设备迄今为止的激活时间
*
* @param callback 回调
*/
void getSecurityGuardDays(IThingResultCallback<String> callback);
示例代码
zigBeeLock.getSecurityGuardDays(new IThingResultCallback<String>() {
@Override
public void onSuccess(String result) {
}
@Override
public void onError(String errorCode, String errorMessage) {
}
});
获取设备的面板云能力。
接口说明
/**
* 获取设备云能力
*
* @param callback 回调
*/
void getLockDeviceConfig(IThingResultCallback<JSONObject> callback);
示例代码
zigBeeLock.getLockDeviceConfig(new IThingResultCallback<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 | 从门内打开 |
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈