更新时间: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)")
}
})
修改单个成员时效会和硬件进行交互,请保持门锁设备的蓝牙连接。
接口说明
- (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)")
}
})
接口说明
//远程解锁
- (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 |
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈