更新时间:2023-06-12 07:51:08下载pdf
类名 | 说明 |
---|---|
TuyaSmartLockDevice |
Wi-Fi 门锁设备操作类,继承自 TuyaSmartDevice |
TuyaSmartLockDeviceDelegate |
Wi-Fi 门锁设备协议代理,拓展自 TuyaSmartDeviceDelegate |
名词列表 | 说明 |
---|---|
门锁劫持 | 指将特定的指纹、密码等,设置为劫持密码,当用户被劫持,并使用该密码开锁时,门会打开。同时,门锁将开门报警信息发送至家人手机或物业管理系统。 |
门锁成员 | 门锁成员分为 家庭成员 与 非家庭成员:
|
dpCode | 设备功能的标识符。每个设备功能都有名称和编号,请参考下文 门锁功能列表。 |
本小节介绍门锁成员中 非家庭成员 的管理操作。
接口说明
- (void)getLockMemberListWithSuccess:(nullable void(^)(NSArray<TuyaSmartLockMemberModel *> *lockMemberModels))success
failure:(nullable TYFailureError)failure;
参数说明
参数 | 说明 |
---|---|
success | 接口成功回调,返回结果为门锁内成员用户信息 |
failure | 接口失败回调 |
TuyaSmartLockMemberModel
数据模型
字段 | 类型 | 描述 |
---|---|---|
userId | NSString | 成员 ID |
userName | NSString | 用户昵称 |
avatarUrl | NSString | 头像地址 |
contact | NSString | 联系方式 |
unlockRelations | NSArray<TuyaSmartLockRelationModel *> | 开锁对应编号关系 |
devId | NSString | 门锁设备 ID |
ownerId | NSString | 所属家庭 ID |
userType | NS_ENUM | 门锁成员类型
|
示例代码
Objective-C:
TuyaSmartLockDevice *lock = [TuyaSmartLockDevice deviceWithDeviceId:@"your_lock_device_id"];
[lock getLockMemberListWithSuccess:^(id result) {
NSLog(@"result %@", result);
} failure:^(NSError *error) {
NSLog(@"error %@", error);
}];
Swift:
let lockDevice = TuyaSmartLockDevice(deviceId: "your_lock_device_id")
lockDevice?.getLockMemberList(success: { (members) in
print("门锁成员列表 \(members)")
}, failure: { (error) in
if let e = error {
print("error \(e)")
}
})
创建非家庭成员,以供后续开锁记录关联操作。
接口说明
- (void)addLockNormalUserWithUserName:(NSString *)userName
avatarImage:(nullable UIImage *)avatarImage
unlockRelations:(nullable NSArray<TuyaSmartLockRelationModel *> *)unlockRelations
success:(nullable TYSuccessString)success
failure:(nullable TYFailureError)failure;
参数说明
参数 | 说明 |
---|---|
userName | 成员名称 |
avatarImage | 成员头像,不传则为默认头像 |
unlockRelations | 成员解锁方式与密码 SN 的关联关系 |
success | 接口成功回调,返回结果为创建的成员用户 ID,为字符串类型 |
failure | 接口失败回调 |
TuyaSmartLockRelationModel
数据模型
字段 | 类型 | 描述 |
---|---|---|
unlockType | TYLockUnlockType | 解锁方式 |
sn | NSInteger | 关联的密码编号,范围为 0~999 |
typedef NS_ENUM(NSUInteger, TYLockUnlockType) {
TYLockUnlockTypeFingerprint, // 指纹解锁
TYLockUnlockTypePassword, // 普通密码解锁
TYLockUnlockTypeTemporary, // 临时密码解锁
TYLockUnlockTypeDynamic, // 动态密码解锁
TYLockUnlockTypeCard, // 卡片解锁
TYLockUnlockTypeFace, // 人脸识别解锁
TYLockUnlockTypeKey, // 钥匙解锁
};
示例代码
Objective-C:
TuyaSmartLockRelationModel *fingerModel = [[TuyaSmartLockRelationModel alloc] init];
fingerModel.unlockType = TYLockUnlockTypeFingerprint; // 指纹解锁
fingerModel.sn = 123;
TuyaSmartLockRelationModel *faceModel = [[TuyaSmartLockRelationModel alloc] init];
faceModel.unlockType = TYLockUnlockTypeFace; // 人脸解锁
faceModel.sn = 23;
// TuyaSmartLockDevice *lock
// 注意: 这里需要强引用持有
self.lock = [TuyaSmartLockDevice deviceWithDeviceId:@"your_lock_device_id"];
[self.lock addLockNormalUserWithUserName:@"user name"
avatarImage:[UIImage imageNamed:@"xxx.png"]
unlockIds:@[fingerModel, faceModel]
success:^(NSString *userId) {
NSLog(@"result %@", userId);
} failure:^(NSError *error) {
NSLog(@"error %@", error);
}];
Swift:
let finger = TuyaSmartLockRelationModel()
finger.unlockType = .fingerprint // 指纹解锁
finger.sn = 123
let face = TuyaSmartLockRelationModel()
face.unlockType = .face // 人脸解锁
face.sn = 23
// 注意: 这里需要强引用持有
self.lockDevice = TuyaSmartLockDevice(deviceId: "your_lock_device_id")
self.lockDevice?.addLockNormalUser(withUserName: "user name", avatarImage: UIImage(named: "xxx.png"), unlockIds: [finger, face], success: { (userId) in
print("添加用户成功 \(userId)")
}, failure: { (error) in
if let e = error {
print("error \(e)")
}
})
更新门锁成员信息,包括用户名、头像、解锁密码对应关系等。
接口说明
- (void)updateLockNormalUserWithUserId:(NSString *)userId
userName:(nullable NSString *)userName
avatarImage:(nullable UIImage *)avatarImage
unlockRelations:(nullable NSArray<TuyaSmartLockRelationModel *> *)unlockRelations
success:(nullable TYSuccessBOOL)success
failure:(nullable TYFailureError)failure;
参数说明
参数 | 说明 |
---|---|
userId | 成员用户 ID,必填 |
userName | 成员用户名称,可选,不传则不修改 |
avatarImage | 成员用户头像,可选,不传则不修改 |
unlockRelations | 成员解锁方式与密码 SN 的关联关系,可选,不传则不修改 |
success | 接口成功回调,返回结果为创建的成员用户 ID,为字符串类型 |
failure | 接口失败回调 |
示例代码
Objective-C:
TuyaSmartLockRelationModel *fingerModel = [[TuyaSmartLockRelationModel alloc] init];
fingerModel.unlockType = TYLockUnlockTypeFingerprint; // 指纹解锁
fingerModel.sn = 123;
TuyaSmartLockRelationModel *faceModel = [[TuyaSmartLockRelationModel alloc] init];
faceModel.unlockType = TYLockUnlockTypeFace; // 人脸解锁
faceModel.sn = 23;
// TuyaSmartLockDevice *lock
// 注意: 这里需要强引用持有
self.lock = [TuyaSmartLockDevice deviceWithDeviceId:@"your_lock_device_id"];
[self.lock updateLockNormalUserWithUserId:@"user id" userName:@"" avatarImage:nil unlockRelations:@[fingerModel,faceModel] success:^(BOOL result) {
NSLog(@"result %d", result);
} failure:^(NSError *error) {
NSLog(@"error %@", error);
}];
Swift:
let finger = TuyaSmartLockRelationModel()
finger.unlockType = .fingerprint // 指纹解锁
finger.sn = 123
let face = TuyaSmartLockRelationModel()
face.unlockType = .face // 人脸解锁
face.sn = 23
// 注意: 这里需要强引用持有
self.lockDevice = TuyaSmartLockDevice(deviceId: "your_lock_device_id")
self.lockDevice?.updateLockNormalUser(withUserId: "user id", userName: "new user name", avatarImage: nil, unlockRelations: [finger, face], success: { (result) in
print("更新结果 \(result)")
}, failure: { (error) in
if let e = error {
print("error \(e)")
}
})
删除门锁成员信息。删除成员后,并不会删除已有的密码。
接口说明
- (void)deleteLockUserWithUserId:(NSString *)userId
success:(nullable TYSuccessBOOL)success
failure:(nullable TYFailureError)failure;
参数说明
参数 | 说明 |
---|---|
userId | 门锁成员用户 ID |
success | 接口成功回调,返回结果为对应的删除结果,为布尔类型 |
failure | 接口失败回调 |
示例代码
Objective-C:
TuyaSmartLockDevice *lock = [TuyaSmartLockDevice deviceWithDeviceId:@"your_lock_device_id"];
[lock deleteLockUserWithUserId:@"0000004zl1" success:^(BOOL result) {
NSLog(@"删除结果 %d", result);
} failure:^(NSError *error) {
NSLog(@"error %@", error);
}];
Swift:
let lockDevice = TuyaSmartLockDevice(deviceId: "your_lock_device_id")
lockDevice?.deleteLockUser(withUserId: "0000004zl1", success: { (result) in
print("删除结果 \(result)")
}, failure: { (error) in
if let e = error {
print("error \(e)")
}
})
创建临时密码,并在门锁上进行输入后即可开锁。
获取临时密码列表的同时,可以查看临时密码的使用状态情况。
接口说明
- (void)getLockTempPwdListWithSuccess:(nullable void (^)( NSArray<TuyaSmartLockTempPwdModel *> *lockTempPwdModels))success
failure:(nullable TYFailureError)failure;
参数说明
参数 | 说明 |
---|---|
success | 接口成功回调,返回结果为对应获取的临时密码数据列表 |
failure | 接口失败回调 |
TuyaSmartLockTempPwdModel
数据模型
字段 | 类型 | 描述 |
---|---|---|
phone | NSString | 手机号 |
name | NSString | 临时密码名称 |
invalidTime | NSTimeInterval | 失效时间戳,10 位 |
effectiveTime | NSTimeInterval | 生效时间戳,10 位 |
createTime | NSTimeInterval | 创建时间戳,13 位 |
code | NSInteger | 密码唯一 ID |
sn | NSInteger | 密码编号,关联账号使用 |
phase | TYLockTempPwdStatusType | 密码状态 |
effective | TYLockTempPwdEffectiveType | 密码有效性状态 |
// 密码状态
typedef NS_ENUM(NSUInteger, TYLockTempPwdStatusType) {
TYLockTempPwdStatusTypeRemoved = 0, // 已删除
TYLockTempPwdStatusTypeToBeDeleted = 3, // 待删除
TYLockTempPwdStatusTypeToBePubilsh = 1, // 待下发
TYLockTempPwdStatusTypePublished = 2, // 已下发
};
// 密码有效性状态
typedef NS_ENUM(NSUInteger, TYLockTempPwdEffectiveType) {
TYLockMemberStatusTypeInvalid = 1, // 失效
TYLockMemberStatusTypeToBePubilsh = 2, // 待下发
TYLockMemberStatusTypeWorking = 3, // 使用中
TYLockMemberStatusTypeToBeDeleted = 4, // 待删除
TYLockTempPwdEffectiveTypeExpired = 5, // 已过期
};
示例代码
Objective-C:
TuyaSmartLockDevice *lock = [TuyaSmartLockDevice deviceWithDeviceId:@"your_lock_device_id"];
[lock getLockTempPwdListWithSuccess:^(NSArray<TuyaSmartLockTempPwdModel *> * _Nullable lockTempPwdModels) {
NSLog(@"result %@", lockTempPwdModels);
} failure:^(NSError *error) {
NSLog(@"error %@", error);
}];
Swift:
let lockDevice = TuyaSmartLockDevice(deviceId: "your_lock_device_id")
lockDevice?.getLockTempPwdList(success: { (lockTempPwdModels) in
print("获取临时密码列表结果 \(lockTempPwdModels)")
}, failure: { (error) in
if let e = error {
print("error \(e)")
}
})
临时密码可以自定义密码的有效期间。当创建临时密码后,需要在门锁设备上进行同步。
接口说明
- (void)createLockTempPwd:(NSString *)password
name:(NSString *)name
effectiveDate:(NSDate *)effectiveDate
invalidDate:(NSDate *)invalidDate
countryCode:(NSString *)countryCode
phone:(NSString *)phone
success:(nullable TYSuccessBOOL)success
failure:(nullable TYFailureError)failure;
参数说明
参数 | 说明 |
---|---|
password | 7 位纯数字的临时密码 |
name | 密码标示名字,创建完成无法再知晓密码,请牢记该密码 |
effectiveDate | 密码生效时间 |
invalidDate | 密码失效时间 |
countryCode | 国家或地区的编码,例如 86 表示中国大陆地区 |
phone | 手机号码,当创建成功时,会通知给该手机用户 |
success | 接口成功回调,返回结果为对应的创建结果,为布尔类型 |
failure | 接口失败回调 |
示例代码
Objective-C:
TuyaSmartLockDevice *lock = [TuyaSmartLockDevice deviceWithDeviceId:@"your_lock_device_id"];
// 创建 20 分钟时效的密码
NSDate *invalidDate = [NSDate dateWithTimeInterval:60 * 20 sinceDate:[NSDate date]];
[lock createLockTempPwd:@"1472589"
name:@"1472589hkk"
effectiveDate:[NSDate date]
invalidDate:invalidDate
countryCode:@"86"
phone:@"13912345678"
success:^(BOOL result) {
NSLog(@"创建结果 %d", result);
} failure:^(NSError *error) {
NSLog(@"error %@", error);
}];
Swift:
let lockDevice = TuyaSmartLockDevice(deviceId: "your_lock_device_id")
lockDevice?.createLockTempPwd("1472589", name: "1472589hkk", effectiveDate: Date(), invalidDate: Date(timeIntervalSince1970: 60 * 20), countryCode: "86", phone: "13912345678", success: { (result) in
print("创建结果 \(result)")
}, failure: { (error) in
if let e = error {
print("error \(e)")
}
})
删除临时密码后,需要门锁设备进行更新。
接口说明
- (void)deleteLockTempPwdWithPwdId:(NSInteger)tempPwdId
force:(BOOL)force
success:(nullable TYSuccessBOOL)success
failure:(nullable TYFailureError)failure;
参数说明
参数 | 说明 |
---|---|
tempPwdId | 门锁临时密码唯一 ID |
force | 是否强制删除:
|
success | 接口成功回调,返回结果为对应的删除结果,为布尔类型 |
failure | 接口失败回调 |
示例代码
Objective-C:
TuyaSmartLockDevice *lock = [TuyaSmartLockDevice deviceWithDeviceId:@"your_lock_device_id"];
[lock deleteLockTempPwdWithPwdId:1274067 force:YES success:^(BOOL result) {
NSLog(@"删除结果 %d", result);
} failure:^(NSError *error) {
NSLog(@"error %@", error);
}];
Swift:
let lockDevice = TuyaSmartLockDevice(deviceId: "your_lock_device_id")
lockDevice?.deleteLockTempPwd(withPwdId: 1274067, force: true, success: { (result) in
print("删除结果 \(result)")
}, failure: { (error) in
if let e = error {
print("error \(e)")
}
})
接口说明
获取动态密码。在门锁上输入动态密码后即可开锁,动态密码有效时间为 5 分钟。
- (void)getLockDynamicPasswordWithSuccess:(nullable TYSuccessString)success
failure:(nullable TYFailureError)failure;
参数说明
参数 | 说明 |
---|---|
success | 接口成功回调,返回结果为对应获取的动态密码 |
failure | 接口失败回调 |
示例代码
Objective-C:
TuyaSmartLockDevice *lock = [TuyaSmartLockDevice deviceWithDeviceId:@"your_lock_device_id"];
[lock getLockDynamicPasswordWithSuccess:^(NSString *result) {
NSLog(@"动态密码获取结果 %@", result);
} failure:^(NSError *error) {
NSLog(@"error %@", error);
}];
Swift:
let lockDevice = TuyaSmartLockDevice(deviceId: "your_lock_device_id")
lockDevice?.getLockDynamicPassword(success: { (pwd) in
print("动态密码获取结果 \(pwd)")
}, failure: { (error) in
if let e = error {
print("error \(e)")
}
})
在门锁上触发远程开门请求后,使用 SDK 可以进行远程开门。
接口说明
- (void)replyRemoteUnlock:(BOOL)open
success:(nullable TYSuccessHandler)success
failure:(nullable TYFailureError)failure;
参数说明
参数 | 说明 |
---|---|
open | 是否允许开门
|
success | 接口成功回调 |
failure | 接口失败回调 |
TuyaSmartLockDeviceDelegate
回调说明
设置 TuyaSmartLockDevice
的 delegate
之后,当用户操作门锁进行远程开锁时,SDK 会触发回调。
/// 设备收到远程开锁请求,需要在一定时间内处理该请求
///
/// @param device 门锁设备
/// @param seconds 剩余处理时间
- (void)device:(TuyaSmartLockDevice *)device didReceiveRemoteUnlockRequest:(NSInteger)seconds;
示例代码
Objective-C:
// 用户操作门锁 4+#
// TuyaSmartLockDevice *lock;
self.lock = [TuyaSmartLockDevice deviceWithDeviceId:@"your_lock_device_id"];
self.lock.delegate = self;
// 实现代理方法
- (void)device:(TuyaSmartLockDevice *)device didReceiveRemoteUnlockRequest:(NSInteger)seconds {
NSLog(@"收到远程开门指令, 需在 %d 秒内处理", seconds);
// second = 0,说明已经处理过
// 所以这里要区分情况
if (seconds > 0) {
BOOL open = YES; // 是否允许开门
// 执行远程开门结果
[device replyRemoteUnlock:open success:^{
NSLog(@"success");
} failure:^(NSError *error) {
NSLog(@"error %@", error);
}];
}
}
Swift:
// 用户操作门锁 4+#
// var lock: TuyaSmartLockDevice
self.lock = TuyaSmartLockDevice(deviceId: "your_lock_device_id")
self.lock.delegate = self;
// 实现代理方法
func device(_ device: TuyaSmartLockDevice, didReceiveRemoteUnlockRequest seconds: Int) {
print("收到远程开门指令, 需在 \(seconds) 秒内处理";
if seconds > 0 {
let open = true; // 是否允许开门
// 执行远程开门结果
device.replyRemoteUnlock(open, success: {
print("success")
}) { (error) in
if let e = error {
print("error: \(e)")
}
}
}
}
门锁记录包括开锁记录、门铃记录、报警记录等。
接口说明
- (void)getLockRecordListWithDpCodes:(NSArray<NSString *> *)dpCodes
offset:(NSInteger)offset
limit:(NSInteger)limit
success:(nullable void(^)(NSArray<TuyaSmartLockRecordModel *> *lockRecordModels))success
failure:(nullable TYFailureError)failure;
参数说明
参数 | 说明 |
---|---|
dpCodes | 需要查询的记录的设备功能,具体可以参考对应设备的 门锁功能列表 |
offset | 查询的页数 |
limit | 查询的条数 |
success | 接口成功回调,返回结果为对应的记录数据列表 |
failure | 接口失败回调 |
TuyaSmartLockRecordModel
数据模型
字段 | 类型 | 描述 |
---|---|---|
userId | NSString | 成员 ID |
devId | NSString | 设备 ID |
userName | NSString | 用户昵称 |
time | NSTimeInterval | 发生时间,为 13 位时间戳 |
dpData | NSDictionary | DP 数据 |
tags | NSInteger | 门锁记录标位:
|
dpsArray | NSArray<NSDictionary *> | 门锁 DP 的数据组 |
门锁的开门记录包括指纹解锁、普通密码解锁、临时密码解锁、动态密码解锁、卡片解锁、人脸识别解锁、钥匙解锁记录等。
接口说明
- (void)getUnlockRecordList:(NSInteger)offset
limit:(NSInteger)limit
success:(nullable void(^)(NSArray<TuyaSmartLockRecordModel *> *lockRecordModels))success
failure:(nullable TYFailureError)failure
参数说明
参数 | 说明 |
---|---|
offset | 查询的页数 |
limit | 查询的条数 |
success | 接口成功回调,返回结果为对应的记录数据列表 |
failure | 接口失败回调 |
可根据传入的解锁功能定义点进行查询门锁劫持开门记录。
接口说明
- (void)getLockHijackRecordListWithDpCodes:(NSArray<NSString *> *)dpCodes
offset:(NSInteger)offset
limit:(NSInteger)limit
success:(void(^)(NSArray<TuyaSmartLockRecordModel *> *))success
failure:(nullable TYFailureError)failure;
参数说明
参数 | 说明 |
---|---|
dpCodes | 需要查询劫持的记录的解锁方式的设备功能,具体可以参考对应设备的 门锁功能列表 |
offset | 查询的页数 |
limit | 查询的条数 |
success | 接口成功回调,返回结果为对应的记录数据列表 |
failure | 接口失败回调 |
功能名称 | 功能标识符(dpCode) |
---|---|
指纹解锁 | unlock_fingerprint |
普通密码解锁 | unlock_password |
临时密码解锁 | unlock_temporary |
动态密码解锁 | unlock_dynamic |
卡片解锁 | unlock_card |
人脸识别解锁 | unlock_face |
钥匙解锁 | unlock_key |
告警 | alarm_lock |
远程开门请求倒计时 | unlock_request |
远程开门请求回复 | reply_unlock_request |
电池电量状态 | battery_state |
剩余电量 | residual_electricity |
反锁状态 | reverse_lock |
童锁状态 | child_lock |
App 远程解锁 Wi-Fi 门锁 | unlock_app |
劫持告警 | hijack |
从门内侧打开门锁 | open_inside |
开合状态 | closed_opened |
门铃呼叫 | doorbell |
短信通知 | message |
上提反锁 | anti_lock_outside |
虹膜解锁 | unlock_eye |
掌纹解锁 | unlock_hand |
指静脉解锁 | unlock_finger_vein |
同步所有指纹编号 | update_all_finger |
同步所有密码编号 | update_all_password |
同步所有卡编号 | update_all_card |
同步所有人脸编号 | update_all_face |
同步所有虹膜编号 | update_all_eye |
同步所有掌纹编号 | update_all_hand |
同步所有指静脉编号 | update_all_fin_vein |
离线密码解锁上报 | unlock_offline_pd |
离线密码清空上报 | unlock_offline_clear |
单条离线密码清空上报 | unlock_offline_clear_single |
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈