蓝牙门锁

更新时间:2023-06-29 03:03:20下载pdf

专有名词解释

介绍
劫持 门锁劫持是指将录入特定的密码(指纹、密码等),设置为劫持密码,当受到劫持使用该密码进行开锁时,被迫开门,门锁将防劫持特殊开门报警信息发送至家人手机或物业管理系统。
门锁成员 门锁成员分为家庭成员与非家庭成员。
家庭成员即为涂鸦全屋智能的家庭成员概念,门锁内可将对应的门锁密码编号与该账号关联起来;
非家庭成员即为门锁内的成员,跟随设备关联,可以创建并分配,门锁内可将对应的门锁密码编号与该成员关联起来。
lockUserId 和 userId lockUserId 是创建门锁成员时,云端为设备分配的固件成员 id,代表着固件内记录的用户 id 号
userId 是创建门锁成员时,云端分配的数据库记录 id,代表着用户的唯一 id
dpCode 设备功能点的标识符。设备中的每个功能点都有名称和编号,可参考门锁功能点列表

使用说明

类名 说明
ThingSmartBLELockDevice 蓝牙门锁设备操作类,继承自 ThingSmartDevice
ThingSmartBLELockDeviceDelegate 蓝牙门锁设备协议代理,拓展自 ThingSmartDeviceDelegate

一、门锁成员

获取门锁成员列表

接口说明

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

参数说明

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

ThingSmartBLELockMemberModel 数据模型

字段 类型 描述
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 设备产品属性

示例代码

Objc:

    [self.lock getMemberListWithSuccess:^(NSArray<ThingSmartBLELockMemberModel *> * _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)")
        }
    })

创建单个门锁成员

SDK 支持往门锁里添加成员,后续可以单独为该成员进行解锁方式绑定

Title: 创建门锁成员流程

participant app
participant 云端

note over app: 用户填写成员信息
app->云端: 调用接口,创建用户
云端-->app: 生成门锁用户 id、硬件成员id,返回创建结果
note over app: 处理、显示结果

接口说明

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

参数说明

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

注意: 这里创建的非家庭成员。家庭用户的管理需要参考文档家庭成员管理

示例代码

Objc:

    [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)")
        }     
    })

修改门锁成员信息

SDK 提供了修改门锁成员的功能,修改门锁成员会和硬件进行交互,需要设备保持蓝牙连接

Title: 更新门锁成员流程

participant 云端
participant app
participant 门锁

note over app: 用户填写新的成员信息
app->门锁: 建立蓝牙连接
app->门锁: 发送更新用户信息指令
门锁-->app: 回复更新结果
app->云端: 调用接口,更新用户
云端-->app: 返回更新结果
note over app: 处理、显示结果

接口说明

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

参数说明

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

示例代码

Objc:

    [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)")
            } 
        })

删除单个门锁成员

SDK 提供了删除门锁成员的功能,删除门锁成员会和硬件进行交互,会删除该用户下所有的开锁方式、密码等,操作需要设备保持蓝牙连接

Title: 删除门锁成员流程

participant 云端
participant app
participant 门锁

note over app: 用户确认删除成员
app->门锁: 建立蓝牙连接
app->门锁: 发送删除用户信息指令
门锁-->app: 回复删除结果
app->云端: 调用接口,删除用户
云端-->app: 返回删除结果
note over app: 处理、显示结果

接口说明

- (void)removeMemberWithMemberId:(NSString *)memberId
                         success:(nullable ThingSuccessBOOL)success
                         failure:(nullable ThingFailureError)failure;

参数说明

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

示例代码

Objc:

    [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云端设备在线用户提交修改时效发送用户时效变更指令回复变更结果云端用户时效更新返回结果处理展示结果门锁App云端

接口说明

- (void)updateProLockMemberTimeWithDevId:(NSString *)devId
                                memberId:(NSString *)memberId
                           offlineUnlock:(BOOL)offlineUnlock
                                 isAdmin:(BOOL)isAdmin
                           effectiveDate:(nullable NSDate *)effectiveDate
                             invalidDate:(nullable NSDate *)invalidDate
                                schedule:(ThingSmartBLELockTimeScheduleInfo *)scheduleInfo
                                 success:(ThingSuccessID)success
                                 failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备ID
memberId 成员编号ID
offlineUnlock 是否支持离线解锁
isAdmin 是否管理员
effectiveDate 生效时间
invalidDate 失效时间
scheduleInfo 时效信息
success 成功回调
failure 失败回调

示例代码

Objc:

  //入参数据获取,详见Demo 
	[self.bleDevice updateProLockMemberTimeWithDevId:self.bleDevice.deviceModel.devId
                                            memberId:[self.dataSource[@"userId"] stringValue]
                                       offlineUnlock:NO
                                             isAdmin:isAdmin
                                       effectiveDate:[self.timeView getEffectiveData]
                                         invalidDate:[self.timeView getInvalidData]
                                            schedule:[self.timeView getScheduleInfo]
                                             success:^(id result) {
				NSLog(@"更新成员时效成功");
    } failure:^(NSError *error) {
 				NSLog(@"更新成员时效失败");
    }];

二、蓝牙连接

牙门锁需要 App 开启蓝牙后,部分功能才能正常使用。

查询蓝牙连接状态

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

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

/// 查询设备连接状态(可判断网关是否在线)
- (BOOL)isOnline;

门锁蓝牙连接

如果查询结果显示门锁未连接蓝牙,调用此接口可以连接到门锁。

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

三、蓝牙解锁和落锁

蓝牙近程解锁

Title: 蓝牙解锁开门流程

participant 用户
participant app
participant 门锁

note over app: 蓝牙开启,连接上门锁
用户->app: 点击开锁
app->门锁: 发送蓝牙开锁指令
note over 门锁: 收到蓝牙开锁指令,开锁
门锁-->app: 返回开锁结果
note over app: 处理、显示结果

接口说明

- (void)bleUnlock:(NSString *)lockUserId
          success:(ThingSuccessHandler)success
          failure:(ThingFailureError)failure;

参数说明

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

示例代码

Objc:

    ThingSmartBLELockDevice *lock = [ThingSmartBLELockDevice deviceWithDeviceId:@"your_lock_device_id"];
    [lock bleCurrentMemberDetailWithDevId:self.devId gid:self.lock.deviceModel.homeId success:^(NSDictionary *dict) {
                NSString *bleUnlock = [dict objectForKey:@"lockUserId"];
                [self.bleLockDevice bleUnlock:bleUnlock success:^{
                    NSLog(@"开锁成功!");
                } failure:^(NSError *error) {
                    NSLog(@"开锁失败!");
                }];
            } failure:^(NSError *error) {
                NSLog(@"bleCurrentMemberDetailWithDevId failure!");
            }];

Swift:

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

蓝牙近程落锁

Title: 蓝牙落锁流程

participant 用户
participant app
participant 门锁

note over app: 蓝牙开启,连接上门锁
用户->app: 点击落锁
app->门锁: 发送蓝牙落锁指令
note over 门锁: 收到蓝牙落锁指令,开锁
门锁-->app: 返回落锁结果
note over app: 处理、显示结果

接口说明

- (void)bleManualLock:(ThingSuccessHandler)success
              failure:(ThingFailureError)failure;

参数说明

参数 说明
success 接口成功回调
failure 接口失败回调

示例代码

Objc:

    ThingSmartBLELockDevice *lock = [ThingSmartBLELockDevice deviceWithDeviceId:@"your_lock_device_id"];
    [lock bleManualLock:^{
                NSLog(@"落锁成功!");
            } failure:^(NSError *error) {
                NSLog(@"落锁失败: %ld", error.code);
            }];

Swift:

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

蓝牙远程开关锁

门锁网关云端App用户连接点击开/关锁发送开/关锁请求下发开/关锁指令收到指令、开/关锁返回结果返回结果返回结果处理展示结果门锁网关云端App用户

接口说明

//远程解锁
- (void)remoteSwitchLock:(ThingSuccessBOOL)success
                 failure:(ThingFailureError)failure;
//远程关锁
- (void)manualLockWithStatus:(ThingSuccessHandler)success
                     failure:(ThingFailureError)failure;

参数说明

参数 说明
success 接口成功回调
failure 接口失败回调

示例代码

Objc:

  ThingSmartBLELockDevice *lock = [ThingSmartBLELockDevice deviceWithDeviceId:@"your_lock_device_id"];
  [lock remoteSwitchLock:^{
              NSLog(@"远程解锁成功");
          } failure:^(NSError *error) {
              NSLog(@"远程解锁成功: %ld", error.code);
          }];

  [lock manualLockWithStatus:^{
              NSLog(@"远程落锁成功");
          } failure:^(NSError *error) {
              NSLog(@"远程落锁成功: %ld", error.code);
          }];

四、门锁记录

获取门锁告警记录

接口说明

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

参数说明

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

ThingSmartLockRecordModel 数据模型

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

示例代码

Objc:

    [self.lock getAlarmRecordListWithOffset:0 limit:50 success:^(NSArray<ThingSmartLockRecordModel *> * _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<ThingSmartBLELockRecordModel *> *records))success
                              failure:(nullable ThingFailureError)failure;

参数说明

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

示例代码

Objc:

    [self.lock getUnlockRecordListWithOffset:0 limit:50 success:^(NSArray<ThingSmartLockRecordModel *> * _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)getProUnlockRecordListWithDevId:(NSString *)devId
                          logCategories:(NSString *)logCategories
                                userIds:(NSString *)userIds
                    onlyShowMediaRecord:(BOOL)onlyShowMediaRecord
                              startTime:(NSInteger)startTime
                                endTime:(NSInteger)endTime
                             lastRowKey:(NSString *)lastRowKey
                                  limit:(NSInteger)limit
                                success:(ThingSuccessID)success
                                failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 页数
logCategories 日志大类(操作日志:operation 开门记录:unlock_record 关门记录:close_record 告警记录:alarm_record)
userIds 需要筛选的用户列表(用户id的列表,以逗号分隔。 如 12,13)
onlyShowMediaRecord 是否仅显示带图片或者视频的记录, 默认为 false 显示所有记录
startTime 开始时间(单位毫秒)
endTime 结束时间(单位毫秒)
lastRowKey 上一页的数据key
limit 每页数据个数
success 成功回调
failure 失败回调

示例代码

Objc:

	[self.bleDevice getProUnlockRecordListWithDevId:self.bleDevice.deviceModel.devId
                                          logCategories:self.logCategories
                                                userIds:self.userIds
                                    onlyShowMediaRecord:NO
                                              startTime:self.startTime
                                                endTime:self.endTime
                                             lastRowKey:@""
                                                  limit:50
                                                success:^(id result) {
            NSLog(@"获取日志成功");
        } failure:^(NSError *error) {
            NSLog(@"获取日志失败");
        }];

五、解锁方式管理

获取成员已绑定的解锁方式列表

接口说明

- (void)getProBoundUnlockOpModeListWithDevId:(NSString *)devId
                                      userId:(NSString *)userId
                                     success:(ThingSuccessID)success
                                     failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备ID
userId 成员ID
success 成功回调
failure 失败回调

示例代码

Objc:

[self.bleDevice getProBoundUnlockOpModeListWithDevId:self.bleDevice.deviceModel.devId
                                                  userId:[self.dataSource[@"userId"] stringValue]
                                                 success:^(id result) {
				NSLog(@"列表请求成功");
    } failure:^(NSError *error) {
				NSLog(@"列表请求失败");
    }];

判断是否有需要分配的开锁方式

接口说明

- (void)isProNeedAllocUnlockOpModeWithDevId:(NSString *)devId
                                    success:(ThingSuccessID)success
                                    failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备ID
success 成功回调
failure 失败回调

示例代码

Objc:

[self.bleDevice isProNeedAllocUnlockOpModeWithDevId:self.bleDevice.deviceModel.devId
                                                success:^(id result) {
				NSLog(@"接口请求成功");
    } failure:^(NSError *error) {
				NSLog(@"接口请求失败");
    }];

获取成员未绑定的解锁方式列表

接口说明

- (void)getProUnboundUnlockOpModeListWithDevId:(NSString *)devId
                                       success:(ThingSuccessID)success
                                       failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备ID
success 成功回调
failure 失败回调

示例代码

Objc:

[self.bleDevice getProUnboundUnlockOpModeListWithDevId:self.bleDevice.deviceModel.devId
                                                   success:^(id result) {
				NSLog(@"获取列表成功");
    } failure:^(NSError *error) {
				NSLog(@"获取列表失败");
    }];

开锁方式分配到人

接口说明

- (void)allocProUnlockOpModeWithDevId:(NSString *)devId
                               userId:(NSString *)userId
                            unlockIds:(NSString *)unlockIds
                              success:(ThingSuccessID)success
                              failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备ID
userId 成员ID
unlockIds 解锁方式id
success 成功回调
failure 失败回调

示例代码

Objc:

//userId:被分配的成员userId  unlockIds:解锁方式id
    [self.bleDevice allocProUnlockOpModeWithDevId:self.bleDevice.deviceModel.devId
                                           userId:userId
                                        unlockIds:@[unlockId].thingsdk_JSONString
                                          success:^(id result) {
        NSLog(@"分配成功");
    } failure:^(NSError *error) {
 				NSLog(@"分配失败");
    }];

普通密码解锁

添加普通密码

SDK 提供了添加普通密码的功能,密码的时效性跟随成员的时效性,添加时需要设备保持蓝牙连接

Title: 添加密码解锁方式流程

participant 云端
participant app
participant 门锁

note over app: 用户确认密码信息
app->门锁: 建立蓝牙连接
app->门锁: 发送添加密码指令,发送密码信息
门锁-->app: 回复添加结果
app->云端: 调用接口,设置防劫持
云端-->app: 返回结果
note over app: 处理、显示结果

接口说明

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

参数说明

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

示例代码

Objc:

    [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<ThingSmartBLELockOpmodeModel *> *models))success
                           failure:(nullable ThingFailureError)failure;

参数说明

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

ThingSmartBLELockOpmodeModel 数据模型

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

示例代码

Objc:

    [self.lock getPasswordListWithSuccess:^(NSArray<ThingSmartBLELockOpmodeModel *> * _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)")
        }               
    })

删除普通密码

SDK 提供了删除普通密码的功能,删除时需要设备保持蓝牙连接

Title: 删除密码解锁方式流程

participant 云端
participant app
participant 门锁

note over app: 用户确认删除密码
app->门锁: 建立蓝牙连接
app->门锁: 发送删除密码指令
门锁-->app: 回复删除结果
app->云端: 调用接口,删除云端记录
云端-->app: 返回结果
note over app: 处理、显示结果

接口说明

- (void)removePasswordForMemberWithOpmodeModel:(ThingSmartBLELockOpmodeModel *)opmodeModel
                                       success:(ThingSuccessHandler)success
                                       failure:(ThingFailureError)failure;

参数说明

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

示例代码

Objc:

    [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)")
        }                
    })

指纹解锁

添加指纹密码

SDK 提供了添加指纹密码的功能,添加指纹密码需要与设备频繁的交互,添加时需要设备保持蓝牙连接

Title: 添加指纹密码解锁方式流程


participant 用户
participant 门锁
participant app
participant 云端

用户->app: 发起添加指纹请求
app->门锁: 建立蓝牙连接
app->门锁: 发送开锁添加密码指令
门锁-->app: 回复开锁录入指纹请求,需录入次数信息等等
note over app: 展示录入数据信息

用户->门锁: a录入指纹
门锁-->app: a返回录入结果,剩余录入信息
note over app: a展示录入数据信息

用户->门锁: b持续录入指纹
门锁-->app: b返回录入结果,剩余录入信息
note over app: b展示录入数据信息

用户->门锁: ...持续录入指纹

用户->门锁: 录入指纹
门锁-->app: 录入完成,返回最终录入结果
note over app: 展示录入数据结果信息
note over app: 汇总数据信息,合并接口参数数据
app->云端: 调用接口,设置防劫持
云端-->app: 返回结果
note over app: 处理、显示结果

接口说明

- (void)addFingerPrintForMemberWithMemberId:(NSString *)memberId
                                 unlockName:(NSString *)unlockName
                              needHijacking:(BOOL)needHijacking
                                    success:(ThingSuccessString)success
                                    failure:(ThingFailureError)failure;

参数说明

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

示例代码

Objc:

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

// ThingSmartBLELockDeviceDelegate
    - (void)device:(ThingSmartBLELockDevice *)device didReceiveAddOpMessage:(ThingSmartBLELockOpMessageModel *)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)")
        }             
    })

// ThingSmartBLELockDeviceDelegate
    extension ViewController :ThingSmartBLELockDeviceDelegate {

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

获取指纹列表

接口说明

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

参数说明

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

示例代码

Objc:

    [self.lock getFingerPrintListWithSuccess:^(NSArray<ThingSmartBLELockOpmodeModel *> * _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)")
        }               
    })

删除指纹密码

SDK 提供了删除指纹的功能,删除时需要设备保持蓝牙连接

Title: 删除指纹解锁方式流程

participant 云端
participant app
participant 门锁

note over app: 用户确认删除指纹
app->门锁: 建立蓝牙连接
app->门锁: 发送删除密码指令
门锁-->app: 回复删除结果
app->云端: 调用接口,删除云端记录
云端-->app: 返回结果
note over app: 处理、显示结果

接口说明

- (void)removeFingerPrintForMemberWithOpmodeModel:(ThingSmartBLELockOpmodeModel *)opmodeModel
                                           success:(ThingSuccessHandler)success
                                          failure:(ThingFailureError)failure;

参数说明

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

示例代码

Objc:

    [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)")
        }                
    })

卡片解锁

添加卡片解锁

SDK 提供了添加卡片解锁的功能,添加时需要设备保持蓝牙连接

Title: 添加卡片解锁方式流程

participant 云端
participant app
participant 门锁

note over app: 用户确认卡片信息
app->门锁: 建立蓝牙连接
app->门锁: 发送添加卡片密码指令,发送密码信息
门锁-->app: 回复添加结果
app->云端: 调用接口,设置防劫持
云端-->app: 返回结果
note over app: 处理、显示结果

接口说明

- (void)addCardForMemberWithMemberId:(NSString *)memberId
                          unlockName:(NSString *)unlockName
                       needHijacking:(BOOL)needHijacking
                             success:(ThingSuccessString)success
                             failure:(ThingFailureError)failure;

参数说明

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

示例代码

Objc:

    [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<ThingSmartBLELockOpmodeModel *> *models))success
                       failure:(nullable ThingFailureError)failure;

参数说明

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

示例代码

Objc:

    [self.lock getCardListWithSuccess:^(NSArray<ThingSmartBLELockOpmodeModel *> * _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)")
        }               
    })

删除卡片解锁

SDK 提供了删除卡片的功能,删除时需要设备保持蓝牙连接

Title: 删除卡片解锁方式流程

participant 云端
participant app
participant 门锁

note over app: 用户确认删除卡片
app->门锁: 建立蓝牙连接
app->门锁: 发送删除卡片密码指令
门锁-->app: 回复删除结果
app->云端: 调用接口,删除云端记录
云端-->app: 返回结果
note over app: 处理、显示结果

接口说明

- (void)removeCardForMemberWithOpmodeModel:(ThingSmartBLELockOpmodeModel *)opmodeModel
                                   success:(ThingSuccessHandler)success
                                   failure:(ThingFailureError)failure;

参数说明

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

示例代码

Objc:

    [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)")
        }                
    })

通用拓展解锁操作

添加解锁方式

SDK 提供了添加通用解锁方式的功能,添加时需要设备保持蓝牙连接

Title: 添加通用解锁方式流程

participant 云端
participant app
participant 门锁

note over app: 用户确认解锁方式信息
app->门锁: 建立蓝牙连接
app->门锁: 发送添加解锁方式信息
门锁-->app: 回复添加结果
app->云端: 调用接口,设置防劫持
云端-->app: 返回结果
note over app: 处理、显示结果

接口说明

- (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 ThingSuccessString)success
                                     failure:(nullable ThingFailureError)failure;

参数说明

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

示例代码

Objc:

    [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)")
        }            
    })

更新解锁方式

SDK 提供了通用修改、更新解锁方式的功能,添加时需要设备保持蓝牙连接

Title: 通用修改解锁方式流程

participant 云端
participant app
participant 门锁

note over app: 用户确认新解锁方式信息
app->门锁: 建立蓝牙连接
app->门锁: 发送更新解锁方式信息
门锁-->app: 回复更新结果
app->云端: 调用接口,设置防劫持
云端-->app: 返回结果
note over app: 处理、显示结果

接口说明

- (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 ThingSuccessBOOL)success
                                        failure:(nullable ThingFailureError)failure;

参数说明

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

示例代码

Objc:

    [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:(ThingSmartBLELockOpmodeModel *)opmodeModel
                                           isAdmin:(BOOL)isAdmin
                                      unlockDpCode:(NSString *)unlockDpCode
                                      unlockOpType:(TYUnlockOpType)unlockOpType
                                           timeout:(NSTimeInterval)timeout
                                           success:(ThingSuccessHandler)success
                                           failure:(ThingFailureError)failure;

参数说明

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

示例代码

Objc:

    [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)")
        }            
    })

六、密码管理

获取动态密码

接口说明

- (void)getLockDynamicPasswordWithSuccess:(nullable ThingSuccessString)success
                                  failure:(nullable ThingFailureError)failure;

参数说明

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

示例代码

Objc:

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

Swift:

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

获取配置信息

获取面板配置信息,包含密码进制类型等

接口说明

- (void)getLockDeviceConfigWithProductId:(NSString *)productId
                                 options:(NSString *)options
                                 success:(ThingSuccessID)success
                                 failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
productId 产品ID
options 查询项(uiContent,cloudDp,powerCode)
success 接口成功回调
failure 接口失败回调

示例代码

Objc:

   [self.bleDevice getLockDeviceConfigWithProductId:self.bleLockDevice.deviceModel.productId
                                                     options:@"uiContent,cloudDp,powerCode"
                                                     success:^(id result) {
                                    NSLog(@"接口成功");
            } failure:^(NSError *error) {
                                    NSLog(@"接口报错");
            }];

添加不限次数密码、单次密码、清空码(清空所有)

接口说明

适用老公版门锁

- (void)getOfflinePasswordWithDevId:(NSString *)devId
                            pwdType:(NSString *)pwdType
                           gmtStart:(NSInteger)gmtStart
                         gmtExpired:(NSInteger)gmtExpired
                            pwdName:(NSString *)pwdName
                            success:(ThingSuccessID)success
                            failure:(nullable ThingFailureError)failure;

接口说明

适用于Pro门锁

- (void)getProOfflinePasswordWithDevId:(NSString *)devId
                               pwdType:(NSString *)pwdType
                              gmtStart:(NSInteger)gmtStart
                            gmtExpired:(NSInteger)gmtExpired
                               pwdName:(NSString *)pwdName
                               success:(ThingSuccessID)success
                               failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备id
pwdType 密码类型(0.多次1.单次9.清空密码)
gmtStart 开始时间(非多次密码暂时传0)
gmtExpired 结束时间(非多次密码暂时传0)
pwdName 密码名称
success 接口成功回调
failure 接口失败回调

示例代码

Objc:

//离线一次性密码
[self.bleDevice getOfflinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                            pwdType:@"1"
                                           gmtStart:0
                                         gmtExpired:0
                                            pwdName:@"离线一次性密码"
                                            success:^(id result) {
                                    NSLog(@"接口成功");
        } failure:^(NSError *error) {
                                    NSLog(@"接口报错");
        }];

//老公版不限次数密码
[self.bleDevice getOfflinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                            pwdType:@"0"
                                           gmtStart:effectiveTime
                                         gmtExpired:invalidTime
                                            pwdName:@"老公版不限次数密码"
                                            success:^(id result) {
                                    NSLog(@"接口成功");
        } failure:^(NSError *error) {
                                    NSLog(@"接口报错");
        }];

//老公版清空码(所有)
[self.bleDevice getOfflinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                            pwdType:@"9"
                                           gmtStart:0
                                         gmtExpired:0
                                            pwdName:@"老公版清空码(所有)"
                                            success:^(id result) {
                                    NSLog(@"接口成功");
        } failure:^(NSError *error) {
                                    NSLog(@"接口报错");
        }];

//Pro单次密码
[self.bleDevice getProOfflinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                               pwdType:@"1"
                                              gmtStart:0
                                            gmtExpired:0
                                               pwdName:@"Pro单次密码"
                                               success:^(id result) {
                                    NSLog(@"接口成功");
        } failure:^(NSError *error) {
                                    NSLog(@"接口报错");
        }];

//Pro不限次数密码
[self.bleDevice getProOfflinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                               pwdType:@"0"
                                              gmtStart:effectiveTime
                                            gmtExpired:invalidTime
                                               pwdName:@"Pro不限次数密码"
                                               success:^(id result) {
                                    NSLog(@"接口成功");
        } failure:^(NSError *error) {
                                    NSLog(@"接口报错");
        }];

//Pro清空码
[self.bleDevice getProOfflinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                               pwdType:@"9"
                                              gmtStart:0
                                            gmtExpired:0
                                               pwdName:@"Pro清空码"
                                               success:^(id result) {
                                    NSLog(@"接口成功");
        } failure:^(NSError *error) {
                                    NSLog(@"接口报错");
        }];

添加清空码(清空单个)

接口说明

适用老公版门锁

- (void)getSingleRevokeOfflinePasswordWithDevId:(NSString *)devId
                                          pwdId:(NSInteger )pwdId
                                        success:(ThingSuccessID)success
                                        failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备id
pwdId 密码编号
success 接口成功回调
failure 接口失败回调

接口说明

适用于Pro门锁

- (void)getProSingleRevokeOfflinePasswordWithDevId:(NSString *)devId
                                   unlockBindingId:(NSInteger )unlockBindingId
                                              name:(NSString *)name
                                           success:(ThingSuccessID)success
                                           failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备id
unlockBindingId 密码的授权编号
name 离线删除密码的名称
success 接口成功回调
failure 接口失败回调

示例代码

Objc:

//老公版
[self.bleDevice getSingleRevokeOfflinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                                      pwdId:@"pwdId"
                                                    success:^(id result) {
        if (result && [result isKindOfClass:[NSDictionary class]]){
            NSString *pwdName = [result[@"pwdName"] stringValue];
            NSString *pwdValue = [result[@"pwd"] stringValue];
        }} failure:^(NSError *error) {
                        NSLog(@"接口报错");
    }];

//Pro
[self.bleDevice getProSingleRevokeOfflinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                                   unlockBindingId:[dicValue[@"unlockBindingId"] integerValue]
                                                              name:@"清空码"
                                                           success:^(id result) {
            if (result && [result isKindOfClass:[NSDictionary class]]){
                NSString *pwdName = [result[@"pwdName"] stringValue];
                NSString *pwdValue = [result[@"pwd"] stringValue];
            }
        }failure:^(NSError *error) {
                        NSLog(@"接口报错");
        }];

临时密码参数有效性校验

接口说明

适用老公版门锁

- (void)validateCustomPasswordWithDevId:(NSString *)devId
                                   name:(NSString *)name
                          effectiveTime:(NSInteger)effectiveTime
                            invalidTime:(NSInteger)invalidTime
                               password:(NSString *)password
                               schedule:(ThingSmartBLELockScheduleList *)schedule
                                success:(ThingSuccessID)success
                                failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备id
name 密码名称
effectiveTime 生效时间
invalidTime 失效时间
password 密码
schedule 周期
success 接口成功回调
failure 接口失败回调

接口说明

适用于Pro门锁

- (void)validateProCustomPasswordWithDevId:(NSString *)devId
                                      name:(NSString *)name
                           unlockBindingId:(NSInteger)unlockBindingId
                             effectiveTime:(NSInteger)effectiveTime
                               invalidTime:(NSInteger)invalidTime
                                  password:(NSString *)password
                                  schedule:(NSString *)schedule
                                   success:(ThingSuccessID)success
                                   failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备id
name 密码名称
unlockBindingId 临时密码的编号(更新时必传)
effectiveTime 生效时间
invalidTime 失效时间
password 密码
schedule 周期
success 接口成功回调
failure 接口失败回调

示例代码

Objc:

//老公版
    ThingSmartBLELockScheduleList *schedule = [[ThingSmartBLELockScheduleList alloc] init];//schedule 需要塞入自己的周期数据
    NSString *scheduleString = [schedule getJsonStringFromScheduleList];
    [self.lockDeviceService validateCustomPasswordWithDevId:devId
                                                       name:name
                                              effectiveTime:effectiveTime
                                                invalidTime:invalidTime
                                                   password:password
                                                   schedule:scheduleString
                                                    success:^(id result) {
                        NSLog(@"验证成功");
    } failure:^(NSError *error) {
                        NSLog(@"接口报错");
        }];

//Pro
    ThingSmartBLELockScheduleList *schedule = [[ThingSmartBLELockScheduleList alloc] init];//schedule 需要塞入自己的周期数据
    NSString *scheduleString = [schedule getJsonStringFromScheduleList];
    [self.lockDeviceService validateProCustomPasswordWithDevId:devId
                                                          name:name
                                               unlockBindingId:0
                                                 effectiveTime:effectiveTime
                                                   invalidTime:invalidTime
                                                      password:password
                                                      schedule:scheduleString
                                                       success:^(id result) {
                        NSLog(@"验证成功");
    } failure:^(NSError *error) {
                        NSLog(@"接口报错");
        }];

添加自定义密码

接口说明

适用老公版门锁,自定义密码对应老公版的周期密码

- (void)getCustomOnlinePasswordWithDevId:(NSString *)devId
                                    name:(NSString *)name
                           effectiveTime:(NSInteger)effectiveTime
                             invalidTime:(NSInteger)invalidTime
                                password:(NSString *)password
                                schedule:(ThingSmartBLELockScheduleList *)schedule
                               availTime:(NSInteger)availTime
                                      sn:(NSInteger)sn
                                 success:(ThingSuccessID)success
                                 failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备id
name 密码名称
effectiveTime 生效时间
invalidTime 失效时间
password 密码
schedule 周期
availTime 可用次数。0:永久 1:一次性
sn 临时密码编号
success 接口成功回调
failure 接口失败回调

接口说明

适用于Pro门锁

- (void)getProCustomOnlinePasswordWithDevId:(NSString *)devId
                                       name:(NSString *)name
                                   password:(NSString *)password
                              effectiveTime:(NSInteger)effectiveTime
                                invalidTime:(NSInteger)invalidTime
                                  availTime:(NSInteger)availTime
                                         sn:(NSInteger)sn
                                   schedule:(ThingSmartBLELockScheduleList *)schedule
                                    success:(ThingSuccessID)success
                                    failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备id
name 密码名称
password 密码
effectiveTime 生效时间
invalidTime 失效时间
availTime 可用次数
sn 临时密码编号
schedule 周期
success 接口成功回调
failure 接口失败回调

示例代码

Objc:

        //老公版一次性密码
        ThingSmartBLELockScheduleList *listModel = [[ThingSmartBLELockScheduleList alloc] init];
    [self.bleDevice getCustomOnlinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                                         name:name
                                                effectiveTime:effectiveTime
                                                  invalidTime:invalidTime
                                                     password:password
                                                     schedule:listModel
                                                    availTime:1
                                                           sn:0
                                                      success:^(id result) {
                        NSLog(@"创建成功");
            } failure:^(NSError *error) {
                            NSLog(@"创建失败");
            }];

         //老公版周期密码
            ThingSmartBLELockScheduleList *listModel = [self.cycleView getScheduleListModel];
            [self.bleDevice getCustomOnlinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                                         name:name
                                                effectiveTime:effectiveTime
                                                  invalidTime:invalidTime
                                                     password:password
                                                     schedule:listModel
                                                    availTime:0
                                                           sn:0
                                                      success:^(id result) {
                        NSLog(@"创建成功");
            } failure:^(NSError *error) {
                                NSLog(@"创建失败");
            }];

//Pro周期密码
    ThingSmartBLELockScheduleList *listModel = [self.cycleView getScheduleListModel];
            [self.bleDevice getProCustomOnlinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                                           name:name
                                                       password:password
                                                  effectiveTime:effectiveTime
                                                    invalidTime:invalidTime
                                                      availTime:0
                                                             sn:0
                                                       schedule:listModel
                                                        success:^(id result) {
                                NSLog(@"创建成功");
            } failure:^(NSError *error) {
                                NSLog(@"创建失败");
            }];

在线临时密码列表

适用于老公版

接口说明

- (void)getOnlinePasswordListWithDevId:(NSString *)devId
                             availTime:(NSInteger)availTime
                               success:(ThingSuccessID)success
                               failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备ID
availTime 可用次数
success 接口成功回调
failure 接口失败回调

示例代码

Objc:

//老公版在线一次性密码列表
[self.bleDevice getOnlinePasswordListWithDevId:self.bleDevice.deviceModel.devId
                                                 availTime:1
                                                   success:^(id result) {
            NSLog(@"获取列表成功");
        } failure:^(NSError *error) {
            NSLog(@"获取列表失败");            
        }];
//老公版在线周期性密码列表
[self.bleDevice getOnlinePasswordListWithDevId:self.bleDevice.deviceModel.devId
                                                 availTime:0
                                                   success:^(id result) {
            NSLog(@"获取列表成功");
        } failure:^(NSError *error) {
            NSLog(@"获取列表失败");                       
        }];

离线临时密码列表

适用于老公版

接口说明

- (void)getOfflinePasswordListWithDevId:(NSString *)devId
                                pwdType:(NSString *)pwdType
                                 status:(NSInteger)status
                                 offset:(NSInteger)offset
                                  limit:(NSInteger)limit
                                success:(ThingSuccessID)success
                                failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备ID
pwdType 密码类型,0.多次使用的密码 1.单次使用的密码 8. 删除单个的密码 9.清空码
status 密码状态,1. 有效 0. 无效
offset 页码
limit 记录数(默认50)
success 接口成功回调
failure 接口失败回调

示例代码

Objc:

//老公版获取离线一次性密码
[self.bleDevice getOfflinePasswordListWithDevId:self.bleDevice.deviceModel.devId
                                                    pwdType:@"1"
                                                     status:1
                                                     offset:0
                                                      limit:20
                                                    success:^(id result) {
            NSLog(@"获取列表成功");
        } failure:^(NSError *error) {
            NSLog(@"获取列表失败");             
        }];
//老公版获取离线不限次数密码
[self.bleDevice getOfflinePasswordListWithDevId:self.bleDevice.deviceModel.devId
                                                    pwdType:@"0"
                                                     status:1
                                                     offset:0
                                                      limit:20
                                                    success:^(id result) {
            NSLog(@"获取列表成功");
        } failure:^(NSError *error) {
            NSLog(@"获取列表失败");   
        }];

//老公版获取清空码(所有)列表
[self.bleDevice getOfflinePasswordListWithDevId:self.bleDevice.deviceModel.devId
                                                    pwdType:@"9"
                                                     status:1
                                                     offset:0
                                                      limit:40
                                                    success:^(id result) {
            NSLog(@"获取列表成功");
        } failure:^(NSError *error) {
            NSLog(@"获取列表失败");           
        }];

//老公版获取清空码(单个)列表
[self.bleDevice getOfflinePasswordListWithDevId:self.bleDevice.deviceModel.devId
                                                    pwdType:@"9"
                                                     status:1
                                                     offset:0
                                                      limit:20
                                                    success:^(id result) {
            NSLog(@"获取列表成功");
        } failure:^(NSError *error) {
            NSLog(@"获取列表失败");   
        }];

临时密码列表

适用于Pro门锁

接口说明

- (void)getProPasswordListWithDevId:(NSString *)devId
                          authTypes:(NSArray *)authTypes
                            success:(ThingSuccessID)success
                            failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备ID
authTypes 授权类型
success 接口成功回调
failure 接口失败回调

示例代码

Objc:

//获取在线自定义密码列表
[self.bleDevice getProPasswordListWithDevId:self.bleDevice.deviceModel.devId
                                              authTypes:@[@"LOCK_TEMP_PWD"]
                                                success:^(id result) {
            NSLog(@"获取列表成功");
        } failure:^(NSError *error) {
            NSLog(@"获取列表失败");   
        }];
//获取离线限时、一次性、清空码密码列表
[self.bleDevice getProPasswordListWithDevId:self.bleDevice.deviceModel.devId
                                              authTypes:@[@"LOCK_OFFLINE_TEMP_PWD"]
                                                success:^(id result) {
            NSLog(@"获取列表成功");
        } failure:^(NSError *error) {
            NSLog(@"获取列表失败");   
        }];

获取可分配的离线不限次数密码列表

获取单个清空码,需要选择的密码列表

接口说明

- (void)getSingleRevokePasswordListWithDevId:(NSString *)devId
                                     success:(ThingSuccessID)success
                                     failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备ID
success 接口成功回调
failure 接口失败回调

删除在线临时密码

接口说明

适用于老公版门锁

- (void)deleteOnlinePasswordWithDevId:(NSString *)devId
                                pwdId:(NSInteger )pwdId
                                   sn:(NSInteger)sn
                              success:(ThingSuccessID)success
                              failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
productId 产品ID
pwdId 密码编号
sn 硬件ID
success 接口成功回调
failure 接口失败回调

接口说明

适用于Pro门锁

- (void)deleteProOnlinePasswordWithDevId:(NSString *)devId
                         unlockBindingId:(NSInteger )unlockBindingId
                                      sn:(NSInteger)sn
                                 success:(ThingSuccessID)success
                                 failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
productId 产品ID
unlockBindingId 临时密码序号
sn 硬件ID
success 接口成功回调
failure 接口失败回调

示例代码

Objc:

//老公版
[self.bleDevice deleteOnlinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                                    pwdId:pwdId
                                                       sn:sn
                                                  success:^(id result) {
                            NSLog(@"删除成功");
        } failure:^(NSError *error) {
                            NSLog(@"删除失败");
        }];
//Pro
[self.bleDevice deleteProOnlinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                             unlockBindingId:unlockBindingId
                                                          sn:sn
                                                     success:^(id result) {
                            NSLog(@"删除成功");
        } failure:^(NSError *error) {
                            NSLog(@"删除失败");
        }];

修改在线密码的信息(时效)

接口说明

适用于老公版门锁

- (void)updateOnlinePasswordWithDevId:(NSString *)devId
                                 name:(NSString *)name
                             password:(NSString *)password
                                pwdId:(NSInteger )pwdId
                        effectiveTime:(NSInteger)effectiveTime
                          invalidTime:(NSInteger)invalidTime
                             schedule:(ThingSmartBLELockScheduleList *)schedule
                                   sn:(NSInteger)sn
                            availTime:(NSInteger)availTime
                              success:(ThingSuccessID)success
                              failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 产品ID
name 密码名称
password 密码
pwdId 密码编号
effectiveTime 生效时间
invalidTime 失效时间
schedule 周期
sn 硬件ID
availTime 可用次数
success 接口成功回调
failure 接口失败回调

接口说明

适用于Pro门锁

- (void)updateProOnlinePasswordWithDevId:(NSString *)devId
                                    name:(NSString *)name
                                password:(NSString *)password
                         unlockBindingId:(NSInteger )unlockBindingId
                           effectiveTime:(NSInteger)effectiveTime
                             invalidTime:(NSInteger)invalidTime
                                   phase:(NSInteger)phase
                                schedule:(ThingSmartBLELockScheduleList *)schedule
                                      sn:(NSInteger)sn
                                 success:(ThingSuccessID)success
                                 failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
productId 产品ID
name 密码名称
password 密码
unlockBindingId 临时密码序号
effectiveTime 生效时间
invalidTime 失效时间
phase 2.正常 4.冻结
schedule 周期
sn 硬件ID
success 接口成功回调
failure 接口失败回调

示例代码

Objc:

//老公版
ThingSmartBLELockScheduleList *listModel = [[ThingSmartBLELockScheduleList alloc] init];
            [self.bleDevice updateOnlinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                                     name:name
                                                 password:@""
                                                    pwdId:pwdId
                                            effectiveTime:effectiveTime
                                              invalidTime:invalidTime
                                                 schedule:listModel
                                                       sn:sn
                                                availTime:1
                                                  success:^(id result) {
                            NSLog(@"更新成功");
            } failure:^(NSError *error) {
                            NSLog(@"更新失败");
            }];
//Pro
ThingSmartBLELockScheduleList *listModel = [[ThingSmartBLELockScheduleList alloc] init];
            [self.bleDevice updateProOnlinePasswordWithDevId:self.bleDevice.deviceModel.devId
                                                        name:name
                                                    password:@""
                                             unlockBindingId:unlockBindingId
                                               effectiveTime:effectiveTime
                                                 invalidTime:invalidTime
                                                       phase:2
                                                    schedule:listModel
                                                          sn:1
                                                     success:^(id result) {
                            NSLog(@"更新成功");
            } failure:^(NSError *error) {
                            NSLog(@"更新失败");
            }];

七、设置

远程开门开关查询

接口说明

- (void)fetchRemoteUnlockTypeWithDevId:(NSString *)devId
                               success:(nullable ThingSuccessID)success
                               failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备ID
success 接口成功回调
failure 接口失败回调

示例代码

Objc:

[self.bleDevice fetchRemoteUnlockTypeWithDevId:self.bleDevice.deviceModel.devId
                                           success:^(id result) {
        NSLog(@"查询远程开门开关状态成功 %@", result);
    } failure:^(NSError *error) {
        NSLog(@"查询远程开门开关状态失败 %@", error);
    }];

设置远程开门开关

接口说明

- (void)setRemoteUnlockTypeWithDevId:(NSString *)devId
                             propKvs:(NSString *)propKvs
                             success:(ThingSuccessID)success
                             failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备ID
propKvs 键值对,key: UNLOCK_PHONE_REMOTE
success 接口成功回调
failure 接口失败回调

示例代码

Objc:

NSString *dataStr = @"{\"UNLOCK_PHONE_REMOTE\":\"true\"}";
if (!value){
    dataStr = @"{\"UNLOCK_PHONE_REMOTE\":\"false\"}";
}
[self.bleDevice setRemoteUnlockTypeWithDevId:self.bleDevice.deviceModel.devId
                                     propKvs:dataStr
                                     success:^(id result) {
    NSLog(@"设置远程开门开关成功 %@", result);
} failure:^(NSError *error) {
    NSLog(@"设置远程开门开关失败 %@", error);
}];

谷歌语音密码开关查询

接口说明

- (void)fetchRemoteVoiceUnlockWithDevId:(NSString *)devId
                                success:(ThingSuccessID)success
                                failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备ID
success 接口成功回调
failure 接口失败回调

示例代码

Objc:

[self.bleDevice fetchRemoteVoiceUnlockWithDevId:self.bleDevice.deviceModel.devId
                                        success:^(id result) {
      NSLog(@"查询音箱密码开启状态成功 %@", result);
} failure:^(NSError *error) {
      NSLog(@"查询音箱密码开启状态成功 %@", error);
}];

谷歌语音密码设置

接口说明

- (void)setRemoteVoiceUnlockWithDevId:(NSString *)devId
                                 open:(BOOL)open
                                  pwd:(NSString *)pwd
                              success:(ThingSuccessID)success
                              failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备ID
open 开关状态
pwd 密码
success 接口成功回调
failure 接口失败回调

示例代码

Objc:

[self.bleDevice setRemoteVoiceUnlockWithDevId:self.bleDevice.deviceModel.devId
                                             open:YES
                                              pwd:pwd
                                          success:^(id result) {
			NSLog(@"谷歌语音密码设置成功 %@", result);
} failure:^(NSError *error) {
			NSLog(@"谷歌语音密码设置成功 %@", error);
}];

八、数据同步

同步门锁随机数/配件/记录

App启动后,设备在线的时候执行一次。用于同步离线密码时间、门锁解锁随机数、获取门锁记录等。若未执行将无法解锁。

接口说明

- (void)publishSyncBatchDataSuccess:(ThingSuccessHandler)success
                            failure:(ThingFailureError)failure;

参数说明

参数 说明
success 接口成功回调
failure 接口失败回调

示例代码

Objc:

[self.bleDevice publishSyncBatchDataSuccess:^{
    NSLog(@"数据下发成功");
} failure:^(NSError *error) {
    NSLog(@"数据下发失败");
}];

获取同步数据内容

该方法是获取 publishSyncBatchData 调用方法的云端数据内容,并未与设备交互。

接口说明

- (void)getSyncBatchDataWithDevId:(NSString *)devId
                          success:(ThingSuccessID)success
                          failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备ID
success 接口成功回调
failure 接口失败回调

示例代码

Objc:

[self.bleDevice getSyncBatchDataWithDevId:self.devId
                                  success:^(id result) {
    NSLog(@"数据获取成功");
} failure:^(NSError *error) {
    NSLog(@"数据获取失败");
}];

解锁方式同步

接口说明

- (void)syncDataWithDevId:(NSString *)devId
                    dpIds:(NSArray<NSString *> *)dpIds
                  success:(ThingSuccessID)success
                  failure:(nullable ThingFailureError)failure;

参数说明

参数 说明
devId 设备ID
dpIds 需要同步的解锁方式类型列表(数组数字)
success 接口成功回调
failure 接口失败回调

示例代码

Objc:

  [self.bleDevice syncDataWithDevId:self.bleDevice.deviceModel.devId
                              dpIds:@[@"12",@"13"]
                            success:^(id result) {
    	NSLog(@"同步成功");
  } failure:^(NSError *error) {
    	NSLog(@"同步失败");
  }];

蓝牙门锁功能点列表

dp name dp code
添加开门方式 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