蓝牙门锁

更新时间:2023-06-12 07:51:09下载pdf

功能简介

类名 说明
TuyaSmartBLELockDevice 蓝牙门锁设备操作类,继承自 TuyaSmartDevice
TuyaSmartBLELockDeviceDelegate 蓝牙门锁设备协议代理,拓展自 TuyaSmartDeviceDelegate

名词解释

名词列表 说明
门锁劫持 指将特定的指纹、密码等,设置为劫持密码,当用户被劫持,并使用该密码开锁时,门会打开。同时,门锁将开门报警信息发送至家人手机或物业管理系统。
门锁成员 门锁成员分为 家庭成员非家庭成员
  • 家庭成员:涂鸦智能生活 App SDK 中的家庭成员概念。门锁 SDK 将对应的门锁密码编号与该账号关联起来。相关管理操作,请参考 家庭管理
  • 非家庭成员:即为门锁设备单独的成员,仅跟随门锁关联。用户可以创建并分配,门锁 SDK 将对应的门锁密码编号与该成员关联起来。
lockUserId 创建门锁成员时,云端为设备分配的固件成员 ID,代表着固件内记录的用户 ID。
userId 创建门锁成员时,云端分配的数据库记录 ID,代表着用户的唯一 ID。
dpCode 设备功能的标识符。每个设备功能都有对应的名称和编号,可参考 门锁功能列表

门锁成员

本小节介绍门锁成员中 非家庭成员 的管理操作。

获取门锁成员

接口说明

- (void)getMemberListWithSuccess:(nullable void(^)(NSArray<TuyaSmartBLELockMemberModel *> *members))success
                         failure:(TYFailureError)failure;

参数说明

参数 说明
success 成功回调,成员列表
failure 失败回调

TuyaSmartBLELockMemberModel 数据模型

字段 类型 描述
userId NSString 成员编号 ID
userContact NSString 联系方式
avatarUrl NSString 头像地址
nickName NSString 成员名称
userTimeSet NSString 成员时效性数据
phase NSUInteger 冻结情况
  • 0:冻结
  • 1:解冻
status NSUInteger 用户状态
lockUserId int 门锁上的用户 ID
userType NSUInteger 用户类型
  • 10:管理员
  • 20:普通成员
  • 30:没有名称的成员
supportOpenType NSArray 支持的开锁方式
shareUser NSString 分享的用户账号
productAttribute NSUInteger 设备产品属性

示例代码

Objective-C:

[self.lock getMemberListWithSuccess:^(NSArray<TuyaSmartBLELockMemberModel *> * _Nonnull list) {
    NSLog(@"成员列表 %@", list);
} failure:^(NSError *error) {
    NSLog(@"获取成员列表失败,error: %@", error);
}];

Swift:

self.lock?.getMemberList(success: { (list) in
    print("成员列表 \(list)")
}, failure: { (error) in
    if let e = error {
        print("获取成员列表失败, error: \(e)")
    }
})

创建门锁成员

创建非家庭成员,后续可以单独为该成员绑定解锁方式。

蓝牙门锁

接口说明

- (void)addMemberWithUserName:(NSString *)userName
                  allowUnlock:(BOOL)allowUnlock
                     timeType:(TYMemberTimeType)timeType
                effectiveDate:(NSDate *)effectiveDate
                  invalidDate:(NSDate *)invalidDate
                      success:(nullable TYSuccessBOOL)success
                      failure:(nullable TYFailureError)failure;

参数说明

参数 说明
userName 成员名称
allowUnlock 是否允许成员使用蓝牙解锁
timeType 时效性
  • TYMemberTimeTypePermanent:表示永久
  • TYMemberTimeTypePhase:表示分时间段
effectiveDate 生效时间
invalidDate 失效时间
success 成功回调
failure 失败回调

示例代码

Objective-C:

[self.lock addMemberWithUserName:#<成员名称># allowUnlock:YES timeType:TYMemberTimeTypePhase effectiveDate:[NSDate date] invalidDate:[[NSDate date] dateByAddingTimeInterval:60 * 60 * 8] success:^(BOOL result) {
    NSLog(@"创建门锁成员成功");
} failure:^(NSError *error) {
    NSLog(@"创建门锁成员失败,error: %@", error);
}];

Swift:

self.lock?.addMember(withUserName: "name", allowUnlock: true, timeType: .phase, effectiveDate: Date(), invalidDate: Date().addingTimeInterval(60 * 60 * 8), success: { (result) in
    print("创建门锁成员成功")
}, failure: { (error) in
    if let e = error {
        print("创建门锁成员失败, error: \(e)")
    }
})

修改成员信息

修改门锁成员信息会和硬件进行交互,需要门锁保持蓝牙连接。

蓝牙门锁

接口说明

- (void)updateMemberWithUserName:(NSString *)userName
                        memberId:(NSString *)memberId
                     allowUnlock:(BOOL)allowUnlock
                        timeType:(TYMemberTimeType)timeType
                   effectiveDate:(NSDate *)effectiveDate
                     invalidDate:(NSDate *)invalidDate
                         success:(nullable TYSuccessBOOL)success
                         failure:(nullable TYFailureError)failure;

参数说明

参数 说明
userName 成员名称
memberId 成员 ID
allowUnlock 是否允许使用蓝牙解锁
timeType 时效性
  • TYMemberTimeTypePermanent:表示永久
  • TYMemberTimeTypePhase:表示分时间段
effectiveDate 生效时间
invalidDate 失效时间
success 成功回调
failure 失败回调

示例代码

Objective-C:

[self.lock updateMemberWithUserName:@"new name" memberId:@"0000008byw" allowUnlock:YES timeType:TYMemberTimeTypePermanent effectiveDate:[NSDate date] invalidDate:[[NSDate date] dateByAddingTimeInterval:60 * 60 * 8] success:^(BOOL result) {
    NSLog(@"更新门锁成员成功");
} failure:^(NSError *error) {
    NSLog(@"创建门锁成员失败,error: %@", error);
}];

Swift:

self.lock?.updateMember(withUserName: "new name", memberId: "0000008byw", allowUnlock: true, timeType: .phase, effectiveDate: Date(), invalidDate: Date().addingTimeInterval(60 * 60 * 8), success: { (result) in
        print("更新门锁成员信息成功")
    }, failure: { (error) in
        if let e = error {
            print("更新门锁成员信息失败, error: \(e)")
        }
    })

删除门锁成员

删除门锁成员会和硬件进行交互,会删除该用户下所有的开锁方式、密码等,需要门锁保持蓝牙连接。

蓝牙门锁

接口说明

- (void)removeMemberWithMemberId:(NSString *)memberId
                         success:(nullable TYSuccessBOOL)success
                         failure:(nullable TYFailureError)failure;

参数说明

参数 说明
memberId 成员编号 ID
success 成功回调
failure 失败回调

示例代码

Objective-C:

[self.lock removeMemberWithMemberId:@"000000747d" success:^(BOOL result) {
    NSLog(@"删除门锁成员成功");
} failure:^(NSError *error) {
    NSLog(@"删除门锁成员失败, error: %@", error);
}];

Swift:

self.lock?.removeMember(withMemberId: "", success: { (result) in
    print("删除门锁成员成功")
}, failure: { (error) in
    if let e = error {
        print("删除门锁成员失败, error: \(e)")
    }
})

查询蓝牙连接状态

蓝牙门锁需要 App 开启蓝牙后,部分功能才能正常使用。SDK 在正常情况下会自动连接,通常使用以下方法进行门锁连接状态判断。

接口说明

/// 如果没有连接成功或使用过程中断开,可以调用此方法进行连接
- (void)autoConnect;

/// 门锁和手机是否已建立蓝牙连接,如果为 NO,可以调用 autoConnect 进行连接
- (BOOL)isBLEConnected;

动态密码

获取动态密码。

接口说明

- (void)getLockDynamicPasswordWithSuccess:(nullable TYSuccessString)success
                                  failure:(nullable TYFailureError)failure;

参数说明

参数 说明
success 接口成功回调,返回结果为对应获取的动态密码
failure 接口失败回调

示例代码

Objective-C:

TuyaSmartBLELockDevice *lock = [TuyaSmartBLELockDevice deviceWithDeviceId:@"your_lock_device_id"];
[lock getLockDynamicPasswordWithSuccess:^(NSString *result) {
    NSLog(@"动态密码获取结果 %@", result);
} failure:^(NSError *error) {
    NSLog(@"error %@", error);
}];

Swift:

let lockDevice = TuyaSmartBLELockDevice(deviceId: "your_lock_device_id")
lockDevice?.getLockDynamicPassword(success: { (pwd) in
    print("动态密码获取结果 \(pwd)")
}, failure: { (error) in
    if let e = error {
        print("error \(e)")
    }
})

蓝牙解锁和落锁

蓝牙解锁

蓝牙门锁

接口说明

- (void)unlockWithStatus:(BOOL)status
                 success:(nullable TYSuccessHandler)success
                 failure:(nullable TYFailureError)failure;

参数说明

参数 说明
status 开锁或者关锁状态
success 接口成功回调
failure 接口失败回调

示例代码

Objective-C:

TuyaSmartBLELockDevice *lock = [TuyaSmartBLELockDevice deviceWithDeviceId:@"your_lock_device_id"];
BOOL status = YES;
[lock unlockWithStatus:status success:^{
    NSLog(@"开锁成功");
} failure:^(NSError *error) {
    NSLog(@"开锁失败,error %@", error);
}];

Swift:

let lockDevice = TuyaSmartBLELockDevice(deviceId: "your_lock_device_id")
self.lock?.unlock(withStatus: status, success: {
    print("开锁成功")
}, failure: { (error) in
    if let e = error {
        print("开锁失败,error: \(e)")
    }
})

蓝牙落锁

蓝牙门锁

接口说明

- (void)manualLockWithStatus:(BOOL)status
                     success:(TYSuccessHandler)success
                     failure:(TYFailureError)failure;

参数说明

参数 说明
status 开锁还是关锁
success 接口成功回调
failure 接口失败回调

示例代码

Objective-C:

TuyaSmartBLELockDevice *lock = [TuyaSmartBLELockDevice deviceWithDeviceId:@"your_lock_device_id"];
BOOL status = YES;
[lock manualLockWithStatus:status success:^{
    NSLog(@"落锁成功");
} failure:^(NSError *error) {
    NSLog(@"落锁失败,error %@", error);
}];

Swift:

let lockDevice = TuyaSmartBLELockDevice(deviceId: "your_lock_device_id")
self.lock?.manualLock(withStatus: status, success: {
    print("落锁成功")
}, failure: { (error) in
    if let e = error {
        print("落锁失败,error: \(e)")
    }
})

门锁记录

获取门锁告警记录

接口说明

- (void)getAlarmRecordListWithOffset:(int)offset
                               limit:(int)limit
                             success:(nullable void(^)(NSArray<TuyaSmartLockRecordModel *> *records))success
                             failure:(nullable TYFailureError)failure;

参数说明

参数 说明
offset 页数
limit 条数
success 成功回调,结果为记录列表
failure 失败回调

TuyaSmartLockRecordModel 数据模型

字段 类型 描述
userId NSString 成员 ID
userName NSString 用户昵称
time NSTimeInterval 发生时间,13 位时间戳
devId NSString 设备 ID
dpData NSDictionary DP 数据
tags NSInteger 标位
  • 0:表示其他
  • 1:表示劫持报警
dpsArray NSArray<NSDictionary *> 设备功能的数据组

示例代码

Objective-C:

[self.lock getAlarmRecordListWithOffset:0 limit:50 success:^(NSArray<TuyaSmartLockRecordModel *> * _Nonnull records) {
    NSLog(@"告警记录: %@", records);
} failure:^(NSError *error) {
    NSLog(@"获取告警记录失败,error: %@", error);
}];

Swift:

self.lock?.getAlarmRecordList(withOffset: 0, limit: 50, success: { (records) in
    print("告警记录 \(records)")
}, failure: { (error) in
    if let e = error {
        print("获取告警记录失败, error: \(e)")
    }
})

获取开锁记录

接口说明

- (void)getUnlockRecordListWithOffset:(int)offset
                                limit:(int)limit
                              success:(nullable void(^)(NSArray<TuyaSmartBLELockRecordModel *> *records))success
                              failure:(nullable TYFailureError)failure;

参数说明

参数 说明
offset 查询的页数
limit 查询的条数
success 成功回调,结果为记录列表
failure 失败回调

示例代码

Objective-C:

[self.lock getUnlockRecordListWithOffset:0 limit:50 success:^(NSArray<TuyaSmartLockRecordModel *> * _Nonnull records) {
    NSLog(@"开锁记录: %@", records);
} failure:^(NSError *error) {
    NSLog(@"获取开锁记录失败,error: %@", error);
}];

Swift:

self.lock?.getUnlockRecordList(withOffset: 0, limit: 50, success: { (records) in
    print("开锁记录 \(records)")
}, failure: { (error) in
    if let e = error {
        print("获取开锁记录失败, error: \(e)")
    }
})

解锁方式管理

添加普通密码

普通密码的时效性跟随成员的时效性,添加时需要门锁保持蓝牙连接。

蓝牙门锁

接口说明

- (void)addPasswordForMemberWithMemberId:(NSString *)memberId
                                password:(NSString *)password
                              unlockName:(NSString *)unlockName
                           needHijacking:(BOOL)needHijacking
                                 success:(nullable TYSuccessString)success
                                 failure:(nullable TYFailureError)failure;

参数说明

参数 说明
memberId 成员编号 ID
password 纯数字密码
unlockName 密码名称
needHijacking 是否需要设置为防劫持
success 成功回调
failure 失败回调

示例代码

Objective-C:

[self.lock addPasswordForMemberWithMemberId:@"00000074zg" password:@"774642" unlockName:@"密码 774642" needHijacking:YES success:^(NSString *result) {
        NSLog(@"创建密码成功");
} failure:^(NSError *error) {
        NSLog(@"创建密码失败 %@", error);
}];

Swift:

self.lock?.addPasswordForMember(withMemberId: "00000074zg", password: "774642", unlockName: "密码 774642", needHijacking: true, success: { (result) in
    print("创建密码成功")
}, failure: { (error) in
    if let e = error {
        print("创建密码失败, error: \(e)")
    }
})

获取普通密码列表

接口说明

- (void)getPasswordListWithSuccess:(nullable void(^)(NSArray<TuyaSmartBLELockOpmodeModel *> *models))success
                           failure:(nullable TYFailureError)failure;

参数说明

参数 说明
success 成功回调,普通密码列表
failure 失败回调

TuyaSmartBLELockOpmodeModel 数据模型

字段 类型 描述
opmode NSString 开锁方式
sourceAttribute NSUInteger 开锁方式来源
  • 1:App
  • 2:门锁离线录入
  • 3:门锁超管理员录入
unlockName NSString 开锁方式名称
userName NSString 开锁用户名称
lockUserId long long 硬件内门锁成员 ID
userId NSString 成员编号 ID
opmodeValue NSString 开锁方式值,一般记录为门锁编号
opmodeId NSString 开锁方式的功能 ID
unlockAttr NSUInteger 解锁方式属性,1 代表门锁劫持开锁

示例代码

Objective-C:

[self.lock getPasswordListWithSuccess:^(NSArray<TuyaSmartBLELockOpmodeModel *> * _Nonnull models) {
    NSLog(@"获取密码列表 %@", models);
} failure:^(NSError *error) {
    NSLog(@"获取密码列表失败 %@", error);
}];

Swift:

self.lock?.getPasswordList(success: { (models) in
    print("获取密码列表 \(models)")
}, failure: { (error) in
    if let e = error {
        print("获取密码列表失败, error: \(e)")
    }
})

删除普通密码

删除普通密码时,需要门锁保持蓝牙连接。

蓝牙门锁

接口说明

- (void)removePasswordForMemberWithOpmodeModel:(TuyaSmartBLELockOpmodeModel *)opmodeModel
                                       success:(TYSuccessHandler)success
                                       failure:(TYFailureError)failure;

参数说明

参数 说明
opmodeModel 开锁方式模型信息,来源自开锁方式列表

示例代码

Objective-C:

[self.lock removePasswordForMemberWithOpmodeModel:model success:^{
    NSLog(@"删除开锁方式成功");
} failure:^(NSError *error) {
    NSLog(@"删除开锁方式失败 %@", error);
}];

Swift:

self.lock?.removePasswordForMember(with: model, success: {
    print("删除开锁方式成功")
}, failure: { (error) in
    if let e = error {
        print("删除开锁方式失败, error: \(e)")
    }
})

添加指纹密码

添加指纹密码需要与门锁频繁的交互,添加时需要门锁保持蓝牙连接。

蓝牙门锁

接口说明

- (void)addFingerPrintForMemberWithMemberId:(NSString *)memberId
                                 unlockName:(NSString *)unlockName
                              needHijacking:(BOOL)needHijacking
                                    success:(TYSuccessString)success
                                    failure:(TYFailureError)failure;

参数说明

参数 说明
memberId 成员编号 ID
unlockName 密码名称
needHijacking 是否需要设置为防劫持
success 成功回调
failure 失败回调

示例代码

Objective-C:

// 设置代理,以接受和展示过程数据
self.lock.delegate = self;
[self.lock addFingerPrintForMemberWithMemberId:@"00000074zg" unlockName:@"添加的指纹" needHijacking:YES success:^(NSString *result) {
    NSLog(@"添加指纹成功");
} failure:^(NSError *error) {
    NSLog(@"添加指纹失败,error: %@", error);
}];

// TuyaSmartBLELockDeviceDelegate
- (void)device:(TuyaSmartBLELockDevice *)device didReceiveAddOpMessage:(TuyaSmartBLELockOpMessageModel *)opMessage {
    NSLog(@"收到新增开锁方式回调消息");
}

Swift:

self.lock?.delegate = self
self.lock?.addFingerPrintForMember(withMemberId: "", unlockName: "", needHijacking: true, success: { (result) in
    print("添加指纹成功")
}, failure: { (error) in
    if let e = error {
        print("添加指纹失败, error: \(e)")
    }
})

// TuyaSmartBLELockDeviceDelegate
extension ViewController :TuyaSmartBLELockDeviceDelegate {

    func device(_ device: TuyaSmartBLELockDevice, didReceiveAddOpMessage opMessage: TuyaSmartBLELockOpMessageModel) {
        print("收到新增开锁方式回调消息")
    }
}

获取指纹列表

接口说明

- (void)getFingerPrintListWithSuccess:(nullable void(^)(NSArray<TuyaSmartBLELockOpmodeModel *> *models))success
                              failure:(nullable TYFailureError)failure;

参数说明

参数 说明
success 成功回调,指纹列表
failure 失败回调

示例代码

Objective-C:

[self.lock getFingerPrintListWithSuccess:^(NSArray<TuyaSmartBLELockOpmodeModel *> * _Nonnull models) {
    NSLog(@"获取指纹列表 %@", models);
} failure:^(NSError *error) {
    NSLog(@"获取指纹列表失败 %@", error);
}];

Swift:

self.lock?.getFingerPrintList(success: { (models) in
    print("获取指纹列表 \(models)")
}, failure: { (error) in
    if let e = error {
        print("获取指纹列表失败, error: \(e)")
    }
})

删除指纹密码

删除指纹时,需要门锁保持蓝牙连接。

蓝牙门锁

接口说明

- (void)removeFingerPrintForMemberWithOpmodeModel:(TuyaSmartBLELockOpmodeModel *)opmodeModel
                                           success:(TYSuccessHandler)success
                                          failure:(TYFailureError)failure;

参数说明

参数 说明
opmodeModel 开锁方式模型信息,来源自开锁方式列表

示例代码

Objective-C:

[self.lock removeFingerPrintForMemberWithOpmodeModel:model success:^{
    NSLog(@"删除开锁方式成功");
} failure:^(NSError *error) {
    NSLog(@"删除开锁方式失败 %@", error);
}];

Swift:

self.lock?.removeFingerPrintForMember(with: model, success: {
    print("删除开锁方式成功")
}, failure: { (error) in
    if let e = error {
        print("删除开锁方式失败, error: \(e)")
    }
})

添加卡片解锁

添加卡片解锁时,需要门锁保持蓝牙连接。

蓝牙门锁

接口说明

- (void)addCardForMemberWithMemberId:(NSString *)memberId
                          unlockName:(NSString *)unlockName
                       needHijacking:(BOOL)needHijacking
                             success:(TYSuccessString)success
                             failure:(TYFailureError)failure;

参数说明

参数 说明
memberId 成员编号 ID
unlockName 密码名称
needHijacking 是否需要设置为防劫持
success 成功回调
failure 失败回调

示例代码

Objective-C:

[self.lock addCardForMemberWithMemberId:@"00000074zg" unlockName:@"卡片密码 1" needHijacking:YES success:^(NSString *result) {
        NSLog(@"创建卡片密码成功");
} failure:^(NSError *error) {
        NSLog(@"创建密码失败 %@", error);
}];

Swift:

self.lock?.addCardForMember(withMemberId: "00000074zg", unlockName: "卡片密码 1", needHijacking: true, success: { (result) in
    print("创建卡片密码成功")
}, failure: { (error) in
    if let e = error {
        print("创建密码失败, error: \(e)")
    }
})

获取卡片列表

接口说明

- (void)getCardListWithSuccess:(nullable void(^)(NSArray<TuyaSmartBLELockOpmodeModel *> *models))success
                       failure:(nullable TYFailureError)failure;

参数说明

参数 说明
success 成功回调,卡片密码列表
failure 失败回调

示例代码

Objective-C:

[self.lock getCardListWithSuccess:^(NSArray<TuyaSmartBLELockOpmodeModel *> * _Nonnull models) {
    NSLog(@"获取卡片密码列表 %@", models);
} failure:^(NSError *error) {
    NSLog(@"获取卡片密码列表失败 %@", error);
}];

Swift:

self.lock?.getCardList(success: { (models) in
    print("获取卡片密码列表 \(models)")
}, failure: { (error) in
    if let e = error {
        print("获取卡片密码列表失败, error: \(e)")
    }
})

删除卡片解锁

删除卡片解锁方式时,需要门锁保持蓝牙连接。

蓝牙门锁

接口说明

- (void)removeCardForMemberWithOpmodeModel:(TuyaSmartBLELockOpmodeModel *)opmodeModel
                                   success:(TYSuccessHandler)success
                                   failure:(TYFailureError)failure;

参数说明

参数 说明
opmodeModel 开锁方式模型信息,来源自开锁方式列表

示例代码

Objective-C:

[self.lock removeCardForMemberWithOpmodeModel:model success:^{
    NSLog(@"删除开锁方式成功");
} failure:^(NSError *error) {
    NSLog(@"删除开锁方式失败 %@", error);
}];

Swift:

self.lock?.removeCardForMember(with: model, success: {
    print("删除开锁方式成功")
}, failure: { (error) in
    if let e = error {
        print("删除开锁方式失败, error: \(e)")
    }
})

通用拓展解锁

添加解锁方式

添加通用解锁方式时,需要门锁保持蓝牙连接。

蓝牙门锁

接口说明

- (void)addUnlockOpmodeForMemberWithMemberId:(NSString *)memberId
                                     isAdmin:(BOOL)isAdmin
                                unlockDpCode:(NSString *)unlockDpCode
                                unlockOpType:(TYUnlockOpType)unlockOpType
                                  unlockName:(NSString *)unlockName
                               effectiveDate:(nullable NSDate *)effectiveDate
                                 invalidDate:(nullable NSDate *)invalidDate
                                       times:(int)times
                                  dataLength:(int)dataLength
                                 dataContent:(NSString *)dataContent
                                     timeout:(NSTimeInterval)timeout
                               needHijacking:(BOOL)needHijacking
                                     success:(nullable TYSuccessString)success
                                     failure:(nullable TYFailureError)failure;

参数说明

参数 说明
memberId 成员编号 ID
isAdmin 是否是管理员
unlockDpCode 解锁方式对应的功能标识,详细可查看 门锁功能列表,例如卡片解锁对应 unlock_card
unlockOpType 解锁方式,可查看 TYUnlockOpType 枚举
unlockName 解锁方式名称
effectiveDate 生效时间
invalidDate 失效时间
times 解锁方式可用次数
dataLength 数据长度,需要和数据内容长度保持一致
dataContent 数据内容
timeout 命令响应超时时间,如果是需要用户交互的,例如指纹,不用设置超时
needHijacking 是否需要设置防劫持
success 成功回调
failure 失败回调

示例代码

Objective-C:

[self.lock addUnlockOpmodeForMemberWithMemberId:@"00000074zg"
                                        isAdmin:NO
                                    unlockDpCode:@"unlock_password"
                                    unlockOpType:TYUnlockOpTypePassword
                                      unlockName:@"密码 774641"
                                   effectiveDate:nil
                                     invalidDate:nil
                                           times:10
                                      dataLength:6
                                     dataContent:@"774641"
                                         timeout:6
                                   needHijacking:YES
                                         success:^(NSString *result) {
    NSLog(@"添加成功");
} failure:^(NSError *error) {
    NSLog(@"添加失败 %@", error);
}];

Swift:

self.lock?.addUnlockOpmodeForMember(withMemberId: "00000074zg", isAdmin: false, unlockDpCode: "unlock_password", unlockOpType: TYUnlockOpTypePassword, unlockName: "密码 774641", effectiveDate: nil, invalidDate: nil, times: 10, dataLength: 6, dataContent: "774641", timeout: 5, needHijacking: true, success: { (result) in
        print("添加成功")
}, failure: { (error) in
    if let e = error {
        print("添加失败, error: \(e)")
    }
})

更新解锁方式

修改、更新通用的解锁方式时,需要门锁保持蓝牙连接。

蓝牙门锁

接口说明

- (void)modifyUnlockOpmodeForMemberWithMemberId:(NSString *)memberId
                                       opmodeId:(NSString *)opmodeId
                                        isAdmin:(BOOL)isAdmin
                                     firmwareId:(int)firmwareId
                                   unlockDpCode:(NSString *)unlockDpCode
                                   unlockOpType:(TYUnlockOpType)unlockOpType
                                     unlockName:(NSString *)unlockName
                                  effectiveDate:(nullable NSDate *)effectiveDate
                                    invalidDate:(nullable NSDate *)invalidDate
                                          times:(int)times
                                     dataLength:(int)dataLength
                                    dataContent:(NSString *)dataContent
                                        timeout:(NSTimeInterval)timeout
                                  needHijacking:(BOOL)needHijacking
                                        success:(nullable TYSuccessBOOL)success
                                        failure:(nullable TYFailureError)failure;

参数说明

参数 说明
memberId 成员编号 ID
opmodeId 开锁方式 ID,来源获取的开锁方式列表
isAdmin 是否是管理员
firmwareId 硬件 ID
unlockDpCode 解锁方式对应的功能标识,详细可查看 门锁功能列表,例如卡片解锁对应 unlock_card
unlockOpType 解锁方式,可查看 TYUnlockOpType 枚举
unlockName 解锁方式名称
effectiveDate 生效时间
invalidDate 失效时间
times 解锁方式可用次数
dataLength 数据长度,需要和数据内容长度保持一致
dataContent 数据内容
timeout 命令响应超时时间,如果是需要用户交互的,例如指纹,不用设置超时
needHijacking 是否需要设置防劫持
success 成功回调
failure 失败回调

示例代码

Objective-C:

[self.lock modifyUnlockOpmodeForMemberWithMemberId:@"00000074zg"
                                            opmodeId:@"232323"
                                            isAdmin:NO
                                        firmwareId:15 //来源自开锁方式数据中的 opmodevalue
                                        unlockDpCode:@"unlock_password"
                                        unlockOpType:TYUnlockOpTypePassword
                                        unlockName:@"密码 774641"
                                        effectiveDate:nil
                                        invalidDate:nil
                                                times:10
                                        dataLength:6
                                        dataContent:@"774641"
                                            timeout:6
                                        needHijacking:YES
                                            success:^(NSString *result) {
    NSLog(@"更新成功");
} failure:^(NSError *error) {
    NSLog(@"更新失败 %@", error);
}];

Swift:

self.lock?.modifyUnlockOpmodeForMember(withMemberId: "00000074zg", opmodeId: "232323", isAdmin: false, firmwareId: 15, unlockDpCode: "unlock_password", unlockOpType: TYUnlockOpTypePassword, unlockName: "密码 774641", effectiveDate: nil, invalidDate: nil, times: 10, dataLength: 6, dataContent: "774641", timeout: 5, needHijacking: true, success: { (result) in
	print("更新成功")
}, failure: { (error) in
	if let e = error {
		print("更新失败, error: \(e)")
	}
})

删除解锁方式

接口说明

- (void)removeUnlockOpmodeForMemberWithOpmodeModel:(TuyaSmartBLELockOpmodeModel *)opmodeModel
                                           isAdmin:(BOOL)isAdmin
                                      unlockDpCode:(NSString *)unlockDpCode
                                      unlockOpType:(TYUnlockOpType)unlockOpType
                                           timeout:(NSTimeInterval)timeout
                                           success:(TYSuccessHandler)success
                                           failure:(TYFailureError)failure;

参数说明

参数 说明
opmodeModel 开锁方式模型
isAdmin 是否是管理员
unlockDpCode 解锁方式对应的功能标识,详细可查看 门锁功能列表,例如卡片解锁对应 unlock_card
unlockOpType 解锁方式,可查看 TYUnlockOpType 枚举
timeout 命令响应超时时间,如果是需要用户交互的,例如指纹,不用设置超时
success 成功回调
failure 失败回调

示例代码

Objective-C:

[self.lock removeUnlockOpmodeForMemberWithOpmodeModel:model
                                              isAdmin:NO
                                         unlockDpCode:@"unlock_password"
                                         unlockOpType:TYUnlockOpTypePassword
                                              timeout:10
                                              success:^{
NSLog(@"删除成功");
} failure:^(NSError *error) {
NSLog(@"删除失败 %@", error);
}]

Swift:

self.lock?.removeUnlockOpmodeForMember(with: model, isAdmin: false, unlockDpCode: "unlock_password", unlockOpType: TYUnlockOpTypePassword, timeout: 10, success: {
	print("删除成功")
}, failure: { (error) in
	if let e = error {
		print("删除失败, error: \(e)")
	}
})

门锁功能列表

功能名称 功能标识符(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