更新时间:2023-06-12 06:43:52下载pdf
类名 | 说明 |
---|---|
TuyaOptimusSdk |
初始化 SDK 入口,用来获取门锁管理类 |
ITuyaLockManager |
门锁管理类,可以获取不同类型的门锁类 |
ITuyaBleLock |
蓝牙门锁类,所有蓝牙门锁相关方法都在其中 |
示例代码
通过设备 ID 创建蓝牙门锁类。
// 初始化 SDK,仅需要调用一次
TuyaOptimusSdk.init(getApplicationContext());
// 获取 ITuyaLockManager
ITuyaLockManager tuyaLockManager = TuyaOptimusSdk.getManager(ITuyaLockManager.class);
// 创建 ITuyaBleLock
ITuyaBleLock tuyaLockDevice = tuyaLockManager.getBleLock(your_device_id);
名词列表 | 说明 |
---|---|
门锁劫持 | 指将特定的指纹、密码等,设置为劫持密码,当用户被劫持,并使用该密码开锁时,门会打开。同时,门锁将开门报警信息发送至家人手机或物业管理系统。 |
门锁成员 | 门锁成员分为 家庭成员 与 非家庭成员:
|
lockUserId | 创建门锁成员时,云端为设备分配的固件成员 ID,代表着固件内记录的用户 ID。 |
userId | 创建门锁成员时,云端分配的数据库记录 ID,代表着用户的唯一 ID。 |
dpCode | 设备功能的标识符。每个设备功能都有名称和编号,请参考下文 门锁功能列表。 |
本小节主要介绍门锁成员中 非家庭成员 的管理操作。
接口说明
/**
* get lock users
*/
public void getLockUsers(final ITuyaResultCallback<List<BLELockUser>> callback)
BLELockUser
数据模型
字段 | 类型 | 描述 |
---|---|---|
userId | String | 用户 ID |
lockUserId | Integer | 门锁中的用户 ID |
userContact | String | 联系方式 |
nickName | String | 昵称 |
avatarUrl | String | 头像 URL |
userType | Integer | 用户类型
|
supportUnlockTypes | List |
支持的解锁类型,可以查看 TuyaUnlockType 中的解锁方式 |
effectiveTimestamp | Long | 用户生效时间戳,单位 ms |
invalidTimestamp | Long | 用户失效时间戳,单位 ms |
示例代码
tuyaLockDevice.getLockUsers(new ITuyaResultCallback<List<BLELockUser>>() {
@Override
public void onError(String code, String message) {
Log.e(TAG, "get lock users failed: code = " + code + " message = " + message);
}
@Override
public void onSuccess(List<BLELockUser> user) {
Log.i(TAG, "get lock users success: lockUserBean = " + user);
}
});
创建非家庭成员,以供后续开锁记录关联操作。
该接口创建的是非家庭成员。有关家庭成员的管理,请参考 家庭管理。
接口说明
/**
* add lock user
*
* @param userName userName
* @param allowedUnlock Whether allowed unlock with bluetooth
* @param permanent Whether the user is permanent
* @param effectiveTimestamp User effective time
* @param invalidTimestamp User invalid time
* @param avatarFile avatar
* @param callback callback
*/
void addLockUser(final String userName, boolean allowedUnlock, boolean permanent, long effectiveTimestamp, long invalidTimestamp, File avatarFile, final ITuyaResultCallback<Boolean> callback);
参数说明
参数 | 说明 |
---|---|
userName | 用户名称 |
allowedUnlock | 是否允许用户使用蓝牙开锁 |
unlockType | 解锁方式,可查看 TuyaUnlockType 类 |
permanent | 是否是永久用户 |
effectiveTimestamp | 非永久用户(permanent 取值为 false 的用户)的生效时间戳,单位 ms |
invalidTimestamp | 非永久用户(permanent 取值为 false 的用户)的失效时间戳,单位 ms |
avatarFile | 用户头像文件 |
示例代码
tuyaLockDevice.addLockUser("your_user_name", true, true, 0, 0, null, new ITuyaResultCallback<Boolean>() {
@Override
public void onError(String code, String message) {
Log.e(TAG, "add lock user failed: code = " + code + " message = " + message);
}
@Override
public void onSuccess(Boolean result) {
Log.i(TAG, "add lock user success");
}
});
更新门锁成员信息,包括用户名、头像、解锁密码对应关系等。更新门锁成员会和硬件进行交互,请保持门锁设备的蓝牙连接。
接口说明
/**
* update lock user
*
* @param userId userId
* @param userName userName
* @param allowedUnlock Whether allowed unlock with bluetooth
* @param permanent Whether the user is permanent
* @param effectiveTimestamp User effective time
* @param invalidTimestamp User invalid time
* @param avatarFile avatar
* @param callback callback
*/
void updateLockUser(final String userId, boolean allowedUnlock, final String userName, final boolean permanent, long effectiveTimestamp, long invalidTimestamp, File avatarFile, final ITuyaResultCallback<Boolean> callback);
参数说明
参数 | 说明 |
---|---|
userId | 用户 ID |
allowedUnlock | 是否允许用户使用蓝牙开锁 |
userName | 用户名称 |
permanent | 是否是永久用户 |
effectiveTimestamp | 非永久用户(permanent 取值为 false 的用户)的生效时间戳,单位 ms |
invalidTimestamp | 非永久用户(permanent 取值为 false 的用户)的失效时间戳,单位 ms |
avatarFile | 用户头像文件 |
示例代码
tuyaLockDevice.updateLockUser("your_user_id", true, "your_user_name", true, 0, 0, null, new ITuyaResultCallback<Boolean>() {
@Override
public void onError(String code, String message) {
Log.e(TAG, "update lock user failed: code = " + code + " message = " + message);
}
@Override
public void onSuccess(Boolean aBoolean) {
Log.i(TAG, "update lock user success");
}
});
删除门锁成员会和硬件进行交互,会删除该用户下所有的开锁方式、密码等,需要门锁保持蓝牙连接。
接口说明
/**
* delete lock user
* @param user user bean
* @param callback callback
*/
public void deleteLockUser(BLELockUser user, final ITuyaResultCallback<Boolean> callback)
蓝牙门锁需要 App 开启蓝牙后,部分功能才能正常使用。
接口说明
SDK 在正常情况下会自动连接,通常使用以下方法进行门锁连接状态判断。
/**
* @return if lock online, return true
*/
public boolean isBLEConnected()
示例代码
boolean online = tuyaLockDevice.isBLEConnected();
接口说明
如果查询结果显示门锁未连接蓝牙,调用此接口可以连接到门锁。
/**
* connect to lock
*
* @param connectListener callback BLE lock connect status
*/
public void connect(ConnectListener connectListener)
参数说明
ConnectListener
为设备连接状态回调,其中的 onStatusChanged
将返回连接状态。
示例代码
tuyaLockDevice.connect(new ConnectListener() {
@Override
public void onStatusChanged(boolean online) {
Log.i(TAG, "onStatusChanged online: " + online);
}
});
在门锁上输入获取到的动态密码即可开锁,动态密码有效时间为五分钟。
接口说明
public void getDynamicPassword(final ITuyaResultCallback<String> callback)
参数说明
参数 | 说明 |
---|---|
callback | 接口回调 |
示例代码
tuyaLockDevice.getDynamicPassword(new ITuyaResultCallback<String>() {
@Override
public void onError(String code, String message) {
Log.e(TAG, "get lock dynamic password failed: code = " + code + " message = " + message);
}
@Override
public void onSuccess(String dynamicPassword) {
Log.i(TAG, "get lock dynamic password success: dynamicPassword = " + dynamicPassword);
}
});
接口说明
/**
* unlock the door
*/
public void unlock(String lockUserId)
参数说明
参数 | 说明 |
---|---|
lockUserId | 门锁设备中的用户 ID。所有用户在门锁中都会有一个对应的用户 ID。ID 从 1 开始,每添加一个新用户则 ID 自动加一。 |
示例代码
// "1"是当前用户在门锁设备中的 ID
tuyaLockDevice.unlock("1");
接口说明
蓝牙门锁与 App 连接后,可调用此接口落锁。
/**
* lock the door
*/
public void lock()
示例代码
tuyaLockDevice.lock();
接口说明
是否支持远程开门。
/**
* Whether to support remote unlock
* @param callback callback
*/
void isRemoteUnlockAvailable(IResultCallback callback);
示例代码
tuyaLockDevice.isRemoteUnlockAvailable(new IResultCallback() {
@Override
public void onError(String code, String message) {
Log.e(TAG, "get remote unlock available failed: code = " + code + " message = " + message);
}
@Override
public void onSuccess() {
Log.i(TAG, "get remote unlock available success");
}
});
接口说明
/**
* get alarm records
* @param offset page number
* @param limit item count
* @param callback callback
*/
void getAlarmRecords(int offset, int limit, final ITuyaResultCallback<Record> callback);
参数说明
参数 | 说明 |
---|---|
offset | 返回的记录页码数 |
limit | 返回的记录条目数 |
Record
数据模型
字段 | 类型 | 描述 |
---|---|---|
totalCount | Integer | 总条目 |
hasNext | Boolean | 是否有下一页 |
datas | List |
记录数据内容 |
DataBean
字段说明
字段 | 类型 | 描述 |
---|---|---|
userId | String | 成员 ID |
userName | String | 用户昵称 |
unlockType | String | 解锁类型 |
devId | String | 设备 ID |
createTime | Long | 该记录的时间戳 |
tags | Integer | 标位
|
unlockRelation | UnlockRelation | 解锁类型和解锁密码编号的关系实例,如不是开锁记录,可为空 |
示例代码
tuyaLockDevice. getAlarmRecords(0, 10, new ITuyaResultCallback<Record>() {
@Override
public void onError(String code, String message) {
Log.e(TAG, "get lock records failed: code = " + code + " message = " + message);
}
@Override
public void onSuccess(Record recordBean) {
Log.i(TAG, "get lock records success: recordBean = " + recordBean);
}
});
接口说明
/**
* get unlock records
* @param unlockTypes unlock type list
* @param offset page number
* @param limit item count
* @param callback callback
*/
void getUnlockRecords(int offset, int limit, final ITuyaResultCallback<Record> callback);
参数说明
参数 | 说明 |
---|---|
offset | 返回的记录页码数 |
limit | 返回的记录条目数 |
示例代码
tuyaLockDevice.getUnlockRecords(0, 10, new ITuyaResultCallback<Record>() {
@Override
public void onError(String code, String message) {
Log.e(TAG, "get unlock records failed: code = " + code + " message = " + message);
}
@Override
public void onSuccess(Record recordBean) {
Log.i(TAG, "get unlock records success: recordBean = " + recordBean);
}
});
解锁方式管理包括了添加、修改、删除解锁方式的接口。
下图为添加解锁方式的交互过程:
接口说明
/**
* get unlock mode by unlockType
*
* @param unlockType unlock type {@link com.tuya.smart.optimus.lock.api.TuyaUnlockType}
* @param callback callback
*/
void getUnlockModeList(String unlockType, final ITuyaResultCallback<ArrayList<UnlockMode>> callback);
UnlockMode
数据模型
字段 | 类型 | 描述 |
---|---|---|
userId | String | 用户 ID |
lockUserId | Integer | 门锁中的用户 ID |
userName | String | 用户昵称 |
unlockAttr | Integer | 解锁方式属性
|
userType | Integer | 用户类型
|
unlockModeId | String | 当前解锁方式在服务端的 ID |
unlockId | String | 当前解锁方式在门锁中的 ID |
unlockName | String | 当前解锁方式的名称 |
unlockType | String | 解锁方式类型,参考 TuyaUnlockType |
示例代码
tuyaLockDevice.getUnlockModeList(TuyaUnlockType.PASSWORD, new ITuyaResultCallback<ArrayList<UnlockMode>>() {
@Override
public void onSuccess(ArrayList<UnlockMode> result) {
Log.i(TAG, "getUnlockModeList onSuccess: " + result);
}
@Override
public void onError(String errorCode, String errorMessage) {
Log.e(TAG, "getUnlockModeList failed: code = " + errorCode + " message = " + errorMessage);
}
});
添加、修改、删除开锁方式的接口均为异步调用,监听结果从该接口返回。
接口说明
void setUnlockModeListener(UnlockModeListener unlockModeListener);
其中 UnlockModeListener
中代码如下:
public interface UnlockModeListener {
/**
* 解锁方式参数丢失
*/
int FAILED_STATUS_ILLEGAL_ARGUMENT = -1;
/**
* 当前操作不支持此开锁方式
*/
int FAILED_STATUS_NOT_SUPPORT_UNLOCK_TYPE = -2;
/**
* 控制指令发送失败
*/
int FAILED_STATUS_SEND_ERROR = -3;
/**
* 请求服务端失败
*/
int FAILED_STATUS_REQUEST_SERVER_ERROR = -4;
/**
* 指纹不完整
*/
int FAILED_STATUS_FINGERPRINT_INCOMPLETE = -5;
/**
* 服务端响应失败
*/
int FAILED_STATUS_SERVER_RESPONSE_FAILED = -6;
/**
* 门锁响应失败
*/
int FAILED_STATUS_LOCK_RESPONSE_FAILED = -7;
/*----以下状态为门锁中定义,创建开锁方式失败的返回码----*/
int FAILED_STATUS_TIMEOUT = 0x00;
int FAILED_STATUS_FAILED = 0x01;
int FAILED_STATUS_REPEAT = 0x02;
int FAILED_STATUS_LOCK_ID_EXHAUSTED = 0x03;
int FAILED_STATUS_PASSWORD_NOT_NUMBER = 0x04;
int FAILED_STATUS_PASSWORD_WRONG_LENGTH = 0x05;
int FAILED_STATUS_NOT_SUPPORT = 0x06;
int FAILED_STATUS_ALREADY_ENTERED = 0x07;
int FAILED_STATUS_ALREADY_BOUND_CARD = 0x08;
int FAILED_STATUS_ALREADY_BOUND_FACE = 0x09;
int FAILED_STATUS_PASSWORD_TOO_SIMPLE = 0x0A;
int FAILED_STATUS_WRONG_LOCK_ID = 0xFE;
/**
* 开门方式添加、删除、修改的回调方法
*
* @param devId 设备 ID
* @param userId 用户 ID
* @param unlockModeResponse 响应数据
*/
void onResult(String devId, String userId, UnlockModeResponse unlockModeResponse);
}
参数说明
字段 | 类型 | 描述 |
---|---|---|
unlockMethod | String | 当前操作门锁的方法类型,其值有以下三个:/** 添加开锁方式 */ |
unlockType | String | 解锁方式类型,参考 TuyaUnlockType |
stage | Integer | 当前操作门锁所处的阶段,其值定义在 BleLockConstant 中,详情如下:int STAGE_AFTER = -2; // 操作门锁完成之后,和服务端同步数据 |
lockUserId | Integer | 在门锁中的用户 ID |
unlockId | Integer | 当前解锁方式在门锁中的 ID |
unlockModeId | String | 当前解锁方式在服务端的 ID |
admin | Boolean | 用户是否是管理员 |
times | Integer | 密码有效次数
|
status | Integer | 失败的状态码,详情请参考 UnlockModeListener |
failedStage | Integer | 失败发生的阶段,即 stage 为 STAGE_FAILED 时,该参数有效 |
示例代码
tuyaLockDevice.setUnlockModeListener(new UnlockModeListener() {
@Override
public void onResult(String devId, String userId, UnlockModeResponse unlockModeResponse) {
Log.i(TAG, "UnlockModeListener devId: " + devId);
Log.i(TAG, "UnlockModeListener userId: " + userId);
Log.i(TAG, "UnlockModeListener unlockType: " + unlockModeResponse.unlockType);
Log.d(TAG, "UnlockModeListener: " + unlockModeResponse);
if (unlockModeResponse.success) {
if (TextUtils.equals(unlockModeResponse.unlockMethod, UnlockModeResponse.UNLOCK_METHOD_CREATE)) {
Log.i(TAG, "Create unlock mode success");
} else if (TextUtils.equals(unlockModeResponse.unlockMethod, UnlockModeResponse.UNLOCK_METHOD_MODIFY)) {
Log.i(TAG, "Modify unlock mode success");
} else if (TextUtils.equals(unlockModeResponse.unlockMethod, UnlockModeResponse.UNLOCK_METHOD_DELETE)) {
Log.i(TAG, "Delete unlock mode success");
}
} else if (unlockModeResponse.stage == BleLockConstant.STAGE_FAILED) {
if (TextUtils.equals(unlockModeResponse.unlockMethod, UnlockModeResponse.UNLOCK_METHOD_CREATE)) {
Log.w(TAG, "Create unlock mode failed.");
Log.w(TAG, "Create unlock mode failed reason: " + unlockModeResponse.status);
Log.w(TAG, "Create unlock mode failed stage: " + unlockModeResponse.failedStage);
} else if (TextUtils.equals(unlockModeResponse.unlockMethod, UnlockModeResponse.UNLOCK_METHOD_MODIFY)) {
Log.w(TAG, "Modify unlock mode failed.");
Log.w(TAG, "Modify unlock mode failed reason: " + unlockModeResponse.status);
Log.w(TAG, "Modify unlock mode failed stage: " + unlockModeResponse.failedStage);
} else if (TextUtils.equals(unlockModeResponse.unlockMethod, UnlockModeResponse.UNLOCK_METHOD_DELETE)) {
Log.w(TAG, "Delete unlock mode failed.");
Log.w(TAG, "Delete unlock mode failed reason: " + unlockModeResponse.status);
Log.w(TAG, "Delete unlock mode failed stage: " + unlockModeResponse.failedStage);
}
}
}
});
接口说明
按解锁类型给用户添加解锁方式。添加时,请保持门锁的蓝牙连接状态。
/**
* Add unlock method.
*
* @param unlockType TuyaUnlockType {@link com.tuya.smart.optimus.lock.api.TuyaUnlockType}
* @param user BLELockUser {@link com.tuya.smart.sdk.optimus.lock.bean.ble.BLELockUser}
* @param name Unlock mode name.
* @param password Unlock mode password. If it is not the password unlock method, this field can be null
* @param times Number of times the unlock mode can be used. The value range is 0 to 254, 0 means unlimited times, and 1 ~ 254 is the actual number of times.
* @param isHijack Hijack flag. If it is true, a hijacking alarm will be triggered when unlocking with this unlock mode.
*/
void addUnlockMode(final String unlockType, final BLELockUser user, String name, String password, int times, boolean isHijack);
参数说明
字段 | 描述 |
---|---|
unlockType | 解锁方式类型,参考 TuyaUnlockType |
user | 用户的数据模型(BLELockUser ) |
name | 解锁方式名称 |
password | 解锁密码
|
times | 密码有效次数
|
isHijack | 劫持标记,设置为 true 时,表示使用该密码解锁将触发劫持告警 |
示例代码
以下代码片段演示了给家庭用户添加密码:
tuyaLockDevice.getHomeUsers(new ITuyaResultCallback<List<BLELockUser>>() {
@Override
public void onSuccess(List<BLELockUser> result) {
Log.i(TAG, "getHomeUsers onSuccess: " + result);
// add password unlock mode
tuyaLockDevice.addUnlockMode(TuyaUnlockType.PASSWORD, result.get(0), "test_unlock_mode1", "431232", 0, false);
}
@Override
public void onError(String errorCode, String errorMessage) {
Log.e(TAG, "getHomeUsers failed: code = " + errorCode + " message = " + errorMessage);
}
});
接口说明
更新开锁方式的名称,以及修改劫持标记。调用该接口时,由于只和云端通信不与门锁交互,因此,不需要设备保持蓝牙连接。
/**
* Update name and hijack flag of the unlocking method. Only update server information, not communicate with door lock device
*
* @param unlockMode UnlockMode bean {@link com.tuya.smart.sdk.optimus.lock.bean.ble.UnlockMode}
* @param name Unlock mode name
* @param isHijack Hijack flag. If it is true, a hijacking alarm will be triggered when unlocking with this unlock mode.
*/
void updateUnlockModeServerInfo(UnlockMode unlockMode, String name, boolean isHijack);
参数说明
字段 | 描述 |
---|---|
unlockMode | 解锁方式数据模型 |
name | 解锁方式名称 |
isHijack | 劫持标记,设置为 true 时,表示使用该密码解锁将触发劫持告警 |
示例代码
tuyaLockDevice.getUnlockModeList(TuyaUnlockType.FINGERPRINT, new ITuyaResultCallback<ArrayList<UnlockMode>>() {
@Override
public void onSuccess(ArrayList<UnlockMode> result) {
Log.i(TAG, "getUnlockModeList onSuccess: " + result);
for (UnlockMode unlockMode : result) {
if (TextUtils.equals(unlockMode.unlockName, "test_unlock_mode1")) {
tuyaLockDevice.updateUnlockModeServerInfo(unlockMode, "test_unlock2", false);// rename unlock mode
}
}
}
@Override
public void onError(String errorCode, String errorMessage) {
Log.e(TAG, "getUnlockModeList failed: code = " + errorCode + " message = " + errorMessage);
}
});
接口说明
删除指定的开锁方式前,请保持门锁的蓝牙连接状态。
/**
* Delete unlockMode.
*
* @param unlockMode unlockMode
*/
void deleteUnlockMode(UnlockMode unlockMode);
示例代码
tuyaLockDevice.deleteUnlockMode(unlockMode);
接口说明
指纹解锁方式一般需要录入四到五次指纹,如果录入过程中需要取消,可以调用此接口。取消前,请保持门锁的蓝牙连接状态。
/**
* Cancel fingerprint entry.
* <p>
* The fingerprint entry process will be repeated multiple times and can be cancelled during the entry process.
*
* @param user BLELockUser {@link com.tuya.smart.sdk.optimus.lock.bean.ble.BLELockUser}
*/
void cancelFingerprintUnlockMode(final BLELockUser user);
接口说明
设置密码类型的解锁方式之后,支持更新密码。包括更新密码名称、密码、解锁次数和劫持标记。更新前,请保持门锁的蓝牙连接状态。
仅密码类型的解锁方式支持调用此接口。
/**
* Update the name, password, validity period and other information of the unlocking method
*
* @param unlockMode UnlockMode bean {@link com.tuya.smart.sdk.optimus.lock.bean.ble.UnlockMode}
* @param name Unlock mode name
* @param password Unlock mode password. If it is not the password unlock method, this field can be null
* @param times Number of times the unlock mode can be used. The value range is 0 to 254, 0 means unlimited times, and 1 ~ 254 is the actual number of times.
* @param isHijack Hijack flag. If it is true, a hijacking alarm will be triggered when unlocking with this unlock mode.
*/
void updatePasswordUnlockMode(UnlockMode unlockMode, String name, String password, int times, boolean isHijack);
参数说明
字段 | 描述 |
---|---|
unlockMode | 解锁方式数据模型 |
name | 解锁方式名称 |
password | 解锁密码
|
times | 密码有效次数
|
isHijack | 劫持标记,设置为 true 时使用该密码解锁将触发劫持告警 |
示例代码
tuyaLockDevice.getUnlockModeList(TuyaUnlockType.PASSWORD, new ITuyaResultCallback<ArrayList<UnlockMode>>() {
@Override
public void onSuccess(ArrayList<UnlockMode> result) {
Log.i(TAG, "getUnlockModeList onSuccess: " + result);
for (UnlockMode unlockMode : result) {
if (TextUtils.equals(unlockMode.unlockName, "test_password")) {
tuyaLockDevice.updatePasswordUnlockMode(unlockMode, "test_password", "131232", 0, false);// modify password
}
}
}
@Override
public void onError(String errorCode, String errorMessage) {
Log.e(TAG, "getUnlockModeList failed: code = " + errorCode + " message = " + errorMessage);
}
});
临时密码是门锁中临时生效的密码。临时密码分为一次性的临时密码和周期性的临时密码。
添加临时密码的的交互过程如下所示:
临时密码的添加、修改、删除通过统一的监听回调,首先您需要注册此监听。
接口说明
/**
* Set temporary password listener
*
* @param temporaryPasswordListener temporary password listener
*/
void setTemporaryPasswordListener(TemporaryPasswordListener temporaryPasswordListener);
参数说明
字段 | 描述 |
---|---|
temporaryPasswordListener | 临时密码添加、修改、删除的监听 |
监听详情
public interface TemporaryPasswordListener {
/**
* 临时密码创建
*/
String TEMPORARY_PASSWORD_CREATE = "temporary_password_creat";
/**
* 临时密码修改
*/
String TEMPORARY_PASSWORD_MODIFY = "temporary_password_modify";
/**
* 临时密码删除
*/
String TEMPORARY_PASSWORD_DELETE = "temporary_password_delete";
/*----添加、删除、修改失败的错误码----*/
/**
* illegal argument
*/
int FAILED_STATUS_ILLEGAL_ARGUMENT = -1;
/**
* Device not support such method
*/
int FAILED_STATUS_NOT_SUPPORT_UNLOCK_TYPE = -2;
/**
* Command send to device failed
*/
int FAILED_STATUS_SEND_FAILED = -3;
/**
* Request server failed
*/
int FAILED_STATUS_REQUEST_SERVER_FAILED = -4;
/**
* Device offline
*/
int FAILED_STATUS_DEVICE_OFFLINE = -5;
/**
* Server response failed
*/
int FAILED_STATUS_SERVER_RESPONSE_FAILED = -6;
/** Lock response failed */
int FAILED_STATUS_LOCK_RESPONSE_FAILED = 1;
/** Lock sequence number exhausted */
int FAILED_STATUS_SEQUENCE_NUMBER_EXHAUSTED = 2;
/**
* 开门方式添加、删除、修改的回调方法
*
* @param sn 密码对应的序列号
*/
void onSuccess(String type, int sn);
/**
* 临时密码添加、删除、修改的回调方法
*
* @param type 调用的类型,添加、删除、修改
* @param resultCode 响应码
*/
void onFailed(String type, int resultCode);
}
示例代码
tuyaLockDevice.setTemporaryPasswordListener(new TemporaryPasswordListener() {
@Override
public void onSuccess(String type, int sn) {
switch (type) {
case TemporaryPasswordListener.TEMPORARY_PASSWORD_CREATE:
Log.i(TAG, "temporary password create success, passsword sequence number: " + sn);
break;
case TemporaryPasswordListener.TEMPORARY_PASSWORD_MODIFY:
Log.i(TAG, "temporary password modify success, passsword sequence number: " + sn);
break;
case TemporaryPasswordListener.TEMPORARY_PASSWORD_DELETE:
Log.i(TAG, "temporary password delete success, passsword sequence number: " + sn);
break;
}
}
@Override
public void onFailed(String type, int resultCode) {
switch (type) {
case TemporaryPasswordListener.TEMPORARY_PASSWORD_CREATE:
Log.w(TAG, "temporary password create failed, resultCode: " + resultCode);
break;
case TemporaryPasswordListener.TEMPORARY_PASSWORD_MODIFY:
Log.w(TAG, "temporary password modify failed, resultCode: " + resultCode);
break;
case TemporaryPasswordListener.TEMPORARY_PASSWORD_DELETE:
Log.w(TAG, "temporary password delete failed, resultCode: " + resultCode);
break;
}
}
});
获取临时密码的列表,分为获取 一次性密码列表 和 周期性临时密码列表 两种。
接口说明
/**
* @param availTimes 区分一次性密码或周期性密码, 0 为周期性密码,1 为一次性密码
*/
public void getTempPasswordList(int availTimes, final ITuyaDataCallback<List<TempPasswordBeanV3>> dataCallback);
TempPasswordBeanV3
数据模型
字段 | 描述 | 类型 |
---|---|---|
effective | 临时密码的生效状态
|
Integer |
availTimes | 区分一次性密码或周期性密码
|
Integer |
passwordId | 临时密码在服务端的 ID | Integer |
sn | 临时密码在门锁中的序列号 | Integer |
name | 临时密码名称 | String |
scheduleBean | 密码可用周期,如果是一次性密码请忽略此字段 | ScheduleBean |
phone | 手机号码,如果购买了短信提醒服务,请让用户填写 | String |
effectiveTime | 密码生效时间戳,13 位 | Long |
invalidTime | 密码失效时间戳,13 位 | Long |
ScheduleBean
字段说明
字段 | 描述 | 类型 |
---|---|---|
allDay | 密码是否全天有效。如果此值为 true ,则 effectiveTime 、invalidTime 字段无需设置。 |
Boolean |
effectiveTime | 密码生效时间,一天中的第多少分钟生效 | Integer |
invalidTime | 密码失效时间,一天中的第多少分钟失效 | Integer |
dayOfWeeks | 密码在一周中的星期几可用。 | Set |
示例代码
// 获取周期性临时密码
tuyaLockDevice.getTempPasswordList(0, new ITuyaDataCallback<List<TempPasswordBeanV3>>() {
@Override
public void onSuccess(List<TempPasswordBeanV3> result) {
Log.i(TAG, "getTempPasswordList onSuccess: " + result);
}
@Override
public void onError(String errorCode, String errorMessage) {
Log.e(TAG, "getTempPasswordList failed: code = " + errorCode + " message = " + errorMessage);
}
});
// 获取一次性临时密码
tuyaLockDevice.getTempPasswordList(1, new ITuyaDataCallback<List<TempPasswordBeanV3>>() {
@Override
public void onSuccess(List<TempPasswordBeanV3> result) {
Log.i(TAG, "getTempPasswordList onSuccess: " + result);
}
@Override
public void onError(String errorCode, String errorMessage) {
Log.e(TAG, "getTempPasswordList failed: code = " + errorCode + " message = " + errorMessage);
}
});
校验临时密码参数的有效性。
接口说明
/**
* @param availTimes 区分一次性密码或周期性密码。`0`:周期性密码;`1`:一次性密码
* @param name 临时密码名称
* @param password 密码
* @param scheduleBean 密码可用周期。对于一次性密码,此字段可为空
* @param phone 手机号。如果您已购买短信提醒服务,可让用户填写此字段。否则,请传空
* @param countryCode 国家码。如果您已购买短信提醒服务,可让用户填写此字段。否则,请传空
* @param effectiveTime 密码生效时间戳,13 位
* @param invalidTime 密码失效时间戳,13 位
* @param callback 回调
*/
void validateTempPassword(int availTimes, String name, String password, ScheduleBean scheduleBean, String phone, String countryCode, long effectiveTime, long invalidTime, IResultCallback callback);
参数说明
字段 | 描述 | 是否可空 |
---|---|---|
availTimes | 区分一次性密码或周期性密码。0 :周期性密码;1 :一次性密码 |
否 |
name | 临时密码名称 | 否 |
password | 密码 | 否 |
scheduleBean | 密码可用周期。对于一次性密码,此字段可为空 | 是 |
phone | 手机号,如果您已购买短信提醒服务,可让用户填写此字段。否则,请传空 | 是 |
countryCode | 国家码,如果您已购买短信提醒服务,可让用户填写此字段。否则,请传空 | 是 |
effectiveTime | 密码生效时间戳,13 位 | 否 |
invalidTime | 密码失效时间戳,13 位 | 否 |
其中,scheduleBean
中的字段如下:
字段 | 描述 | 类型 |
---|---|---|
allDay | 密码是否全天有效。如果此值为 true ,则 effectiveTime 、invalidTime 字段无需设置。 |
Boolean |
effectiveTime | 密码生效时间,一天中的第多少分钟生效 | int |
invalidTime | 密码失效时间,一天中的第多少分钟失效 | int |
dayOfWeeks | 密码在一周中的星期几可用 | Set |
使用示例
tuyaLockDevice.validateTempPassword(1, "your_password_name", "111222", null, "", "", System.currentTimeMillis(), System.currentTimeMillis() + 24 * 60 * 60 * 1000, new IResultCallback() {
@Override
public void onError(String code, String message) {
Log.e(TAG, "validate temp password failed: code = " + code + " message = " + message);
}
@Override
public void onSuccess() {
Log.i(TAG, "validate temp password success");
}
});
创建临时密码,分为创建一次性密码和周期性密码。
接口说明
/**
* @param availTimes 区分一次性密码或周期性密码, 0 为周期性密码,1 为一次性密码
* @param name 临时密码名称
* @param password 密码
* @param scheduleBean 密码可用周期,一次性密码此字段可为空
* @param phone 手机号码。如果您已购买短信提醒服务,可让用户填写此字段。否则,请传空
* @param countryCode 国家码。如果您已购买短信提醒服务,可让用户填写此字段。否则,请传空
* @param effectiveTime 密码生效时间戳,13 位
* @param invalidTime 密码失效时间戳,13 位
*/
public void createTempPassword(final int availTimes, final String name, final String password, final ScheduleBean scheduleBean, final String phone, final String countryCode, final long effectiveTime, final long invalidTime);
参数说明
字段 | 描述 | 是否可空 |
---|---|---|
availTimes | 区分一次性密码或周期性密码
|
否 |
name | 临时密码名称 | 否 |
password | 密码 | 否 |
scheduleBean | 密码可用周期,一次性密码此字段可为空 | 是 |
phone | 手机号码。如果您已购买短信提醒服务,可让用户填写此字段。否则,请传空 | 是 |
countryCode | 国家码。如果您已购买短信提醒服务,可让用户填写此字段。否则,请传空 | 是 |
effectiveTime | 密码生效时间戳,13 位 | 否 |
invalidTime | 密码失效时间戳,13 位 | 否 |
其中,scheduleBean
中的字段如下:
字段 | 描述 | 类型 |
---|---|---|
allDay | 密码是否全天有效。如果此值为 true ,则 effectiveTime 、invalidTime 字段无需设置。 |
Boolean |
effectiveTime | 密码生效时间,一天中的第多少分钟生效 | Integer |
invalidTime | 密码失效时间,一天中的第多少分钟失效 | Integer |
dayOfWeeks | 密码在一周中的星期几可用。 | Set |
使用示例
添加一次性密码:
tuyaLockDevice.createTempPassword(1, "your_password_name", "111222", null, "", "", System.currentTimeMillis(), System.currentTimeMillis() + 24 * 60 * 60 * 1000);
添加周期性密码:
ScheduleBean scheduleBean = new ScheduleBean();
scheduleBean.allDay = false; // false 表示密码非全天生效
scheduleBean.effectiveTime = 480; // 一天中第 480 分钟生效,即 8 点生效
scheduleBean.invalidTime = 1080; // 一天中第 1080 分钟生效,即 18 点失效
// 添加一周中生效的天数
scheduleBean.dayOfWeeks.add(ScheduleBean.DayOfWeek.MONDAY);
scheduleBean.dayOfWeeks.add(ScheduleBean.DayOfWeek.TUESDAY);
scheduleBean.dayOfWeeks.add(ScheduleBean.DayOfWeek.WEDNESDAY);
scheduleBean.dayOfWeeks.add(ScheduleBean.DayOfWeek.THURSDAY);
scheduleBean.dayOfWeeks.add(ScheduleBean.DayOfWeek.FRIDAY);
scheduleBean.dayOfWeeks.add(ScheduleBean.DayOfWeek.SATURDAY);
scheduleBean.dayOfWeeks.add(ScheduleBean.DayOfWeek.SUNDAY);
tuyaLockDevice.createTempPassword(0, "your_password_name", "111222", scheduleBean, "", "", System.currentTimeMillis(), System.currentTimeMillis() + 24 * 60 * 60 * 1000);
接口说明
/**
* @param availTimes 区分一次性密码或周期性密码, 0 为周期性密码,1 为一次性密码
* @param passwordId 临时密码在服务端的 ID
* @param sn 临时密码在门锁中的序列号
* @param name 临时密码名称
* @param scheduleBean 密码可用周期,一次性密码此字段可为空
* @param phone 手机号码。如果您已购买短信提醒服务,可让用户填写此字段。否则,请传空
* @param countryCode 国家码。如果您已购买短信提醒服务,可让用户填写此字段。否则,请传空
* @param effectiveTime 密码生效时间戳,13 位
* @param invalidTime 密码失效时间戳,13 位
*/
public void modifyTempPassword(final int availTimes, int passwordId, int sn, final String name, final ScheduleBean scheduleBean, final String phone, final String countryCode, final long effectiveTime, final long invalidTime);
参数说明
字段 | 描述 | 是否可空 |
---|---|---|
availTimes | 区分一次性密码或周期性密码,
|
否 |
passwordId | 临时密码在服务端的 ID | 否 |
sn | 临时密码在门锁中的序列号 | 否 |
name | 临时密码名称 | 否 |
scheduleBean | 密码可用周期,如果是一次性密码此字段可为空 | 是 |
phone | 手机号码。如果您已购买短信提醒服务,可让用户填写此字段。否则,请传空 | 是 |
countryCode | 国家码。如果您已购买短信提醒服务,可让用户填写此字段。否则,请传空 | 是 |
effectiveTime | 密码生效时间戳,13 位 | 否 |
invalidTime | 密码失效时间戳,13 位 | 否 |
示例代码
修改一次性密码:
tuyaLockDevice.modifyTempPassword(1, 2202004, 2, "your_password_name", null, "", "", System.currentTimeMillis(), System.currentTimeMillis() + 24 * 60 * 60 * 1000);
修改周期性密码:
ScheduleBean scheduleBean = new ScheduleBean();
scheduleBean.allDay = true; // 全天生效,无需设置一天中的生效时间。
scheduleBean.effectiveTime = 0;
scheduleBean.invalidTime = 0;
scheduleBean.dayOfWeeks.add(ScheduleBean.DayOfWeek.FRIDAY);
tuyaLockDevice.modifyTempPassword(0, 2202005, 3, "your_password_name", scheduleBean, "", "", System.currentTimeMillis(), System.currentTimeMillis() + 24 * 60 * 60 * 1000);
接口说明
/**
* @param passwordId 临时密码在服务端的 ID
* @param sn 临时密码在门锁中的序列号
*/
public void deleteTempPassword(int passwordId, int sn);
参数说明
字段 | 描述 | 是否可空 |
---|---|---|
passwordId | 临时密码在服务端的 ID | 否 |
sn | 临时密码在门锁中的序列号 | 否 |
示例代码
tuyaLockDevice.deleteTempPassword(2202004, 2);
功能名称 | 功能标识符(dpCode) |
---|---|
添加开门方式 | unlock_method_create |
删除开门方式 | unlock_method_delete |
修改开门方式 | unlock_method_modify |
冻结开门方式 | unlock_method_freeze |
解冻开门方式 | unlock_method_enable |
蓝牙解锁 | bluetooth_unlock |
蓝牙解锁反馈 | bluetooth_unlock_fb |
剩余电量 | residual_electricity |
电量状态 | battery_state |
童锁状态 | child_lock |
上提反锁 | anti_lock_outside |
指纹解锁 | unlock_fingerprint |
普通密码解锁 | unlock_password |
动态密码解锁 | unlock_dynamic |
卡片解锁 | unlock_card |
钥匙解锁 | unlock_key |
开关门事件 | open_close |
从门内侧打开门锁 | open_inside |
蓝牙解锁记录 | unlock_ble |
门被打开 | door_opened |
告警 | alarm_lock |
劫持报警 | hijack |
门铃呼叫 | doorbell |
短信通知 | message |
门铃选择 | doorbell_song |
门铃音量 | doorbell_volume |
门锁语言切换 | language |
显示屏欢迎词管理 | welcome_words |
按键音量 | key_tone |
门锁本地导航音量 | beep_volume |
反锁状态 | reverse_lock |
自动落锁开关 | automatic_lock |
单一解锁与组合解锁切换 | unlock_switch |
同步成员开门方式 | synch_member |
自动落锁延时设置 | auto_lock_time |
定时自动落锁 | auto_lock_timer |
指纹录入次数 | finger_input_times |
人脸识别解锁 | unlock_face |
开合状态 | closed_opened |
虹膜解锁 | unlock_eye |
掌纹解锁 | unlock_hand |
指静脉解锁 | unlock_finger_vein |
硬件时钟 RTC | rtc_lock |
自动落锁倒计时上报 | auto_lock_countdown |
手动落锁 | manual_lock |
落锁状态 | lock_motor_state |
锁帖电机转动方向 | lock_motor_direction |
冻结用户 | unlock_user_freeze |
解冻用户 | unlock_user_enable |
蓝牙锁临时密码添加 | temporary password_creat |
蓝牙锁临时密码删除 | temporary password_delete |
蓝牙锁临时密码修改 | temporary password_modify |
同步开门方式(数据量大) | synch_method |
临时密码解锁 | unlock_temporary |
电机扭力 | motor_torque |
组合开锁记录 | unlock_double |
离家布防开关 | arming_mode |
配置新免密远程解锁 | remote_no_pd_setkey |
新免密远程开门-带密钥 | remote_no_dp_key |
远程手机解锁上报 | unlock_phone_remote |
远程语音解锁上报 | unlock_voice_remote |
离线密码 T0 时间下发 | password_offline_time |
单条离线密码清空上报 | unlock_offline_clear_single |
离线密码清空上报 | unlock_offline_clear |
离线密码解锁上报 | unlock_offline_pd |
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈