更新时间:2024-10-21 03:28:08下载pdf
本文介绍 Zigbee 门锁的相关功能,包含家庭成员、解锁方式、临时密码、解锁记录、远程操作、设置操作等。
类名 | 说明 |
---|---|
TuyaSmartZigbeeLockDevice |
Zigbee 门锁设备操作类,继承自 ThingSmartDevice |
TuyaSmartZigbeeLockDeviceDelegate |
Zigbee 门锁设备协议代理,拓展自 ThingSmartDeviceDelegate |
示例代码
通过设备 ID,创建 Zigbee 门锁类。
//创建 Zigbee 门锁设备对象
TuyaSmartZigbeeLockDevice *zigbeeDevice = [TuyaSmartZigbeeLockDevice deviceWithDeviceId:devId];
//设置门锁对象代理
zigbeeDevice.delegate = self;
名词 | 说明 |
---|---|
门锁劫持 | 指将特定的指纹、密码等,设置为劫持密码。当用户被劫持,并使用该密码解锁时,门会打开。同时,门锁将开门报警信息发送至家人手机或物业管理系统。 |
门锁成员 | 门锁成员为 家庭成员,等同于智能生活 App SDK 中的家庭成员概念。门锁 SDK 将对应的门锁密码编号与该成员关联起来。更多详情,请参考 家庭管理。 |
lockUserId | 创建 门锁成员 时,云端为设备分配的固件成员 ID,代表着固件内记录的用户 ID。 |
userId | 创建 门锁成员 时,云端分配的数据库记录 ID,代表着用户的唯一 ID。 |
unlockDpCode | 设备功能的标识符。每个设备功能都有名称和编号。 |
unlockId | 解锁方式编号,由解锁方式 DP ID 加硬件锁 ID 组合而成。例如 12-c ,其中 c 为 10 进制转换为十六进制。 |
opmodeId | 解锁方式云端序号。 |
本小节主要介绍门锁成员中 家庭成员 的管理操作。
接口说明
/// 家庭成员列表
/// @param devId 设备 ID
/// @param success 成功回调
/// @param failure 失败回调
- (void)getMemberListWithDevId:(NSString *)devId
success:(nullable TYSuccessID)success
failure:(nullable TYFailureError)failure;
参数说明
字段 | 说明 |
---|---|
devId | 设备 ID |
success | 成功回调 |
failure | 失败回调 |
示例代码
[self.zigbeeDevice getMemberListWithDevId:self.devId success:^(id result) {
NSArray *memberList = (NSArray *)result;
NSLog(@"获取家庭成员列表成功");
} failure:^(NSError *error) {
NSLog(@"获取家庭成员列表失败");
}];
获取当前用户或指定用户详细信息。
接口说明
/// 成员详情
/// @param devId 设备 ID
/// @param userId 用户 ID
/// @param success 成功回调
/// @param failure 失败回调
- (void)getMemberInfoWithDevId:(NSString *)devId
userId:(NSString *)userId
success:(nullable TYSuccessID)success
failure:(nullable TYFailureError)failure;
参数说明
字段 | 说明 |
---|---|
devId | 设备 ID |
userId | 用户 ID |
success | 成功回调 |
failure | 失败回调 |
示例代码
[self.zigbeeDevice getMemberInfoWithDevId:devId userId:userId success:^(id result) {
NSDictionary *memberInfo = (NSDictionary *)result;
NSLog(@"获取家庭成员详情成功");
} failure:^(NSError *error) {
NSLog(@"获取家庭成员详情失败");
}];
该接口创建的是家庭成员,添加的用户需要真实的 App 账号。
接口说明
/// 添加家庭成员
/// @param homeId 家庭 ID
/// @param requestModel 添加成员请求模型
/// @param success 成功回调
/// @param failure 失败回调
- (void)addMemberWithHomeId:(long long)homeId
requestModel:(TuyaSmartHomeAddMemberRequestModel *)requestModel
success:(TYSuccessDict)success
failure:(TYFailureError)failure;
TuyaSmartHomeAddMemberRequestModel
数据模型
请参考 家庭成员信息。
示例代码
[self.zigbeeDevice addMemberWithHomeId:homeId requestModel:model success:^(NSDictionary *dict) {
NSLog(@"创建家庭成员成功");
} failure:^(NSError *error) {
NSLog(@"创建家庭成员失败");
}];
删除家庭用户成员,并删除设备上成员对应的所有解锁方式。
接口说明
/// 删除单个家庭成员
/// @param memberId 用户 ID
/// @param isAdmin 是否是管理员
/// @param lockUserId 用户在锁固件里的 ID
/// @param success 成功回调
/// @param failure 失败回调
- (void)removeMemberWithMemberId:(NSString *)memberId
isAdmin:(BOOL)isAdmin
lockUserId:(int)lockUserId
success:(TYSuccessHandler)success
failure:(nullable TYFailureError)failure;
参数说明
字段 | 说明 |
---|---|
memberId | 用户 ID |
isAdmin | 是否是管理员 |
lockUserId | 用户在锁固件里的 ID |
success | 成功回调 |
failure | 失败回调 |
示例代码
int userType = [model[@"userType"] intValue];
BOOL isAdmin = (userType == 10 || userType == 50) ? YES : NO;
[self.zigbeeDevice removeMemberWithMemberId:model[@"userId"] isAdmin:isAdmin lockUserId:lockUserId success:^{
NSLog(@"删除成员成功");
} failure:^(NSError *error) {
NSLog(@"删除成员失败");
}];
该接口只能修改指定成员的昵称及成员角色。
接口说明
/// 修改单个成员信息
/// @param memberRequestModel 家庭成员模型
/// @param success 成功回调
/// @param failure 失败回调
- (void)updateMemberWithRequestModel:(TuyaSmartHomeMemberRequestModel *)memberRequestModel
success:(TYSuccessHandler)success
failure:(TYFailureError)failure;
TuyaSmartHomeMemberRequestModel
数据模型
请参考 家庭成员信息。
示例代码
[self.zigbeeDevice updateMemberWithRequestModel:model success:^{
NSLog(@"修改单个成员成功");
} failure:^(NSError *error) {
NSLog(@"修改单个成员失败");
}];
接口说明
/// 获取成员已绑定的解锁方式列表
/// @param devId 设备 ID
/// @param userId 用户 ID
/// @param success 成功回调
/// @param failure 失败回调
- (void)getMemberOpmodeListWithDevId:(NSString *)devId
userId:(NSString *)userId
success:(nullable void(^)(NSArray<TuyaSmartZigbeeLockOpmodeModel *> *models))success
failure:(nullable TYFailureError)failure;
TuyaSmartZigbeeLockOpmodeModel
数据模型中部分字段定义
字段 | 描述 |
---|---|
opmode | 解锁方式,返回 dpId ,参考 功能定义 > 标准功能 > 开锁方式 DP ID |
opmodeValue | 解锁方式在设备端编号,等同 SN |
unlockId | 解锁方式编号 |
lockUserId | 用户在锁固件里的 ID |
opmodeId | 解锁方式云端序号 |
unlockAttr | 解锁方式属性
|
unlockName | 解锁方式名称 |
userName | 所属用户昵称 |
userId | 所属用户 ID |
参数说明
字段 | 说明 |
---|---|
devId | 设备 ID |
userId | 用户 ID |
success | 成功回调 |
failure | 失败回调 |
示例代码
[self.zigbeeDevice getMemberOpmodeListWithDevId:devId userId:memberId success:^(NSArray<TuyaSmartZigbeeLockOpmodeModel *> * _Nonnull models) {
NSLog(@"解锁方式列表获取成功");
} failure:^(NSError *error) {
NSLog(@"解锁方式列表获取失败");
}];
接口说明
/// 获取成员未绑定的解锁方式列表
/// @param devId 设备 ID
/// @param success 成功回调
/// @param failure 失败回调
- (void)getUnallocOpModeWithDevId:(NSString *)devId
success:(nullable TYSuccessID)success
failure:(nullable TYFailureError)failure;
参数说明
字段 | 说明 |
---|---|
devId | 设备 ID |
success | 成功回调 |
failure | 失败回调 |
示例代码
[self.zigbeeDevice getUnallocOpModeWithDevId:self.devId success:^(id result) {
NSArray *datalist = (NSArray *)result;
NSLog(@"获取未被分配的解锁方式成功");
} failure:^(NSError *error) {
NSLog(@"获取未被分配的解锁方式失败");
}];
接口说明
/// 解锁方式分配到人
/// @param devId 设备 ID
/// @param userId 成员 ID
/// @param unlockIds 解锁方式 ID
/// @param success 成功回调
/// @param failure 失败回调
- (void)allocUnlockOpModeWithDevId:(NSString *)devId
userId:(NSString *)userId
unlockIds:(NSString *)unlockIds
success:(TYSuccessID)success
failure:(nullable TYFailureError)failure;
参数说明
字段 | 说明 |
---|---|
devId | 设备 ID |
userId | 成员 ID |
unlockIds | 解锁方式列表 |
success | 成功回调 |
failure | 失败回调 |
示例代码
[self.zigbeeDevice allocUnlockOpModeWithDevId:self.devId userId:userId unlockIds:@[unlockId].tysdk_JSONString success:^(id result) {
BOOL isSuccess = [result boolValue];
NSLog(@"解锁方式分配成功");
} failure:^(NSError *error) {
NSLog(@"解锁方式分配失败");
}];
接口说明
/// 添加解锁方式
/// @param devId 设备 ID
/// @param isAdmin 是否是管理员
/// @param unlockOpType 解锁方式
/// @param unlockDpCode 解锁方式对应的 DP code,具体查看产品定义
/// @param lockUserId 用户在锁固件里的 ID
/// @param userId 用户 ID
/// @param unlockName 解锁方式名称
/// @param needHijacking 是否设置为防劫持
/// @param success 成功回调
/// @param failure 失败回调
- (void)addUnlockOpmodeForMemberWithDevId:(NSString *)devId
isAdmin:(BOOL)isAdmin
unlockOpType:(TYUnlockOpType)unlockOpType
unlockDpCode:(NSString *)unlockDpCode
lockUserId:(int)lockUserId
userId:(NSString *)userId
unlockName:(NSString *)unlockName
needHijacking:(BOOL)needHijacking
success:(nullable TYSuccessID)success
failure:(nullable TYFailureError)failure;
/// 添加解锁方式(直接带密码下发)
/// @param devId 设备 ID
/// @param isAdmin 是否是管理员
/// @param password 密码
/// @param lockUserId 用户在锁固件里的 ID
/// @param userId 用户 ID
/// @param unlockName 解锁方式名称
/// @param needHijacking 是否设置为防劫持
/// @param success 成功回调
/// @param failure 失败回调
- (void)addPasswordOpmodeForMemberWithDevId:(NSString *)devId
isAdmin:(BOOL)isAdmin
password:(NSString *)password
lockUserId:(int)lockUserId
userId:(NSString *)userId
unlockName:(NSString *)unlockName
needHijacking:(BOOL)needHijacking
success:(nullable TYSuccessID)success
failure:(nullable TYFailureError)failure;
参数说明
字段 | 说明 |
---|---|
devId | 设备 ID |
isAdmin | 是否是管理员 |
unlockOpType | 解锁方式 |
unlockDpCode | 解锁方式对应的 DP code |
lockUserId | 用户在门锁固件上的 ID |
userId | 用户 ID |
unlockName | 解锁方式名称 |
needHijacking | 是否设置为防劫持 |
password | 密码类型密码(带密码下发需要) |
success | 成功回调 |
failure | 失败回调 |
密码添加解锁方式区别
addUnlockOpmodeForMemberWithDevId
:设备端输入密码,来新增解锁方式包含门卡、指纹、密码
addPasswordOpmodeForMemberWithDevId
:App 端输入密码,来新增密码解锁方式
云能力获取示例代码
通过接口返回的 tyabitmqxx
值,判断两种接口的使用。
字段 | 描述 |
---|---|
true | 使用 addUnlockOpmodeForMemberWithDevId |
false | 使用 addPasswordOpmodeForMemberWithDevId |
self.tyabitmqxx = YES;
WEAKSELF_TYSDK
[self.zigbeeDevice getLockDeviceConfigWithProductId:self.zigbeeDevice.deviceModel.productId options:@"uiContent,cloudDp,powerCode" success:^(id result) {
if (!result){
weakSelf_TYSDK.tyabitmqxx = NO;
}
else{
NSDictionary *powerCode = result[@"powerCode"];
if (powerCode[@"tyabitmqxx"]){
weakSelf_TYSDK.tyabitmqxx = [powerCode[@"tyabitmqxx"] boolValue];
}
}
} failure:^(NSError *error) {
NSLog(@"云能力接口调用失败");
}];
添加解锁方式示例代码
[self.zigbeeDevice addUnlockOpmodeForMemberWithDevId:self.devId
isAdmin:isAdmin
unlockOpType:self.unlockModeType
unlockDpCode:@"unlock_password"
lockUserId:self.lockUserId
userId:self.memberId
unlockName:@"zigbee 密码测试-01"
needHijacking:NO
success:^(id result) {
NSDictionary *data = (NSDictionary*)result;
NSLog(@"添加密码成功");
} failure:^(NSError *error) {
NSLog(@"添加密码失败");
}];
[self.zigbeeDevice addPasswordOpmodeForMemberWithDevId:self.devId
isAdmin:isAdmin
password:password
lockUserId:lockUserId
userId:userId
unlockName:@"zigbee 密码测试-08"
needHijacking:NO
success:^(id result) {
NSDictionary *data = (NSDictionary*)result;
NSLog(@"添加密码成功");
} failure:^(NSError *error) {
NSLog(@"添加密码失败");
}];
该方法只能更新解锁方式名称。关于防劫持操作,参考 设置防劫持 和 移除防劫持。
接口说明
/// 更新解锁方式信息
/// @param devId 设备 ID
/// @param opmodeId 解锁方式 ID
/// @param unlockName 解锁方式名称
/// @param success 成功回调
/// @param failure 失败回调
- (void)modifyUnlockOpmodeForMemberWithDevId:(NSString *)devId
opmodeId:(NSString *)opmodeId
unlockName:(NSString *)unlockName
success:(nullable TYSuccessID)success
failure:(nullable TYFailureError)failure;
示例代码
[self.zigbeeDevice modifyUnlockOpmodeForMemberWithDevId:self.devId
opmodeId:opmodeId
unlockName:unlockName
success:^(id result) {
NSDictionary *data = (NSDictionary*)result;
NSLog(@"更新解锁成功");
} failure:^(NSError *error) {
NSLog(@"更新解锁失败");
}];
接口说明
/// 删除解锁方式
/// @param devId 设备 ID
/// @param isAdmin 是否是管理员
/// @param lockUserId 用户在锁固件里的 ID
/// @param opmodeId 解锁方式 ID
/// @param firmwareId 设备硬件 ID
/// @param unlockDpCode 解锁方式对应的 DP code,具体查看产品定义
/// @param unlockOpType 解锁方式
/// @param success 成功回调
/// @param failure 失败回调
- (void)removeUnlockOpmodeForMemberWithDevId:(NSString *)devId
isAdmin:(BOOL)isAdmin
lockUserId:(int)lockUserId
opmodeId:(NSString *)opmodeId
firmwareId:(NSString *)firmwareId
unlockDpCode:(NSString *)unlockDpCode
unlockOpType:(TYUnlockOpType)unlockOpType
success:(nullable TYSuccessID)success
failure:(nullable TYFailureError)failure;
参数说明
字段 | 说明 |
---|---|
devId | 设备 ID |
isAdmin | 是否是管理员 |
lockUserId | 用户在锁固件里的 ID |
opmodeId | 解锁方式云端序号 |
firmwareId | 硬件 ID |
unlockDpCode | 解锁方式对应的 DP code |
unlockOpType | 解锁方式 |
success | 回调成功 |
failure | 回调失败 |
示例代码
[self.zigbeeDevice removeUnlockOpmodeForMemberWithDevId:self.devId
isAdmin:isAdmin
lockUserId:lockUserId
opmodeId:opmodeId
firmwareId:opmodeValue
unlockDpCode:@"unlock_fingerprint"
unlockOpType:TYUnlockOpTypeFinger
success:^(id result) {
BOOL isSuccess = [result boolValue];
NSLog(@"删除指纹成功");
} failure:^(NSError *error) {
NSLog(@"删除指纹失败");
}];
接口说明
/// 解锁方式取消录入
/// @param isAdmin 是否是管理员
/// @param lockUserId 用户在锁固件里的 ID
/// @param unlockOpType 解锁方式
/// @param success 成功回调
/// @param failure 失败回调
- (void)cancelUnlockOpmodeWithAdmin:(BOOL)isAdmin
lockUserId:(int)lockUserId
unlockOpType:(TYUnlockOpType)unlockOpType
success:(nullable TYSuccessBOOL)success
failure:(nullable TYFailureError)failure;
参数说明
字段 | 说明 |
---|---|
isAdmin | 是否管理员 |
lockUserId | 用户在锁固件里的 ID |
unlockOpType | 解锁方式 |
success | 成功回调 |
failure | 失败回调 |
示例代码
[self.zigbeeDevice cancelUnlockOpmodeWithAdmin:isAdmin
lockUserId:lockUserId
unlockOpType:unlockOpType
success:^(BOOL result) {
NSLog(@"取消录入成功");
}failure:^(NSError *error) {
NSLog(@"取消录入失败");
}];
接口说明
/// 防劫持设置
/// @param devId 设备 ID
/// @param dpId DP ID
/// @param unlockId 解锁方式编号
/// @param success 成功回调
/// @param failure 失败回调
- (void)addHijackingConfigWithDevId:(NSString *)devId
dpId:(NSString *)dpId
unlockId:(NSString *)unlockId
success:(nullable TYSuccessBOOL)success
failure:(nullable TYFailureError)failure;
参数说明
字段 | 说明 |
---|---|
devId | 设备 ID |
dpId | 设备 DP ID |
unlockId | 解锁方式编号 |
success | 成功回调 |
failure | 失败回调 |
示例代码
[self.zigbeeDevice addHijackingConfigWithDevId:self.devId
dpId:dpId
unlockId:unlockId
success:^(BOOL result) {
NSLog(@"设置劫持成功");
} failure:^(NSError *error) {
NSLog(@"设置劫持失败");
}];
接口说明
/// 移除防劫持设置
/// @param devId 设备 ID
/// @param dpId DP ID
/// @param unlockId 解锁方式编号
/// @param success 成功回调
/// @param failure 失败回调
- (void)removeHijackingConfigWithDevId:(NSString *)devId
dpId:(NSString *)dpId
unlockId:(NSString *)unlockId
success:(nullable TYSuccessID)success
failure:(nullable TYFailureError)failure;
示例代码
[self.zigbeeDevice removeHijackingConfigWithDevId:self.devId
dpId:dpId
unlockId:unlockId
success:^(id result) {
NSLog(@"劫持设置移除成功");
} failure:^(NSError *error) {
NSLog(@"劫持设置移除失败");
}];
接口说明
/// 临时密码列表
/// @param devId 设备 ID
/// @param offset 起始记录数
/// @param limit 每页限制数据条数
/// @param success 成功回调
/// @param failure 失败回调
- (void)getPasswordListWithDevId:(NSString *)devId
offset:(int)offset
limit:(int)limit
success:(nullable TYSuccessID)success
failure:(nullable TYFailureError)failure;
示例代码
[self.zigbeeDevice getPasswordListWithDevId:self.devId offset:0 limit:50 success:^(id result) {
NSLog(@"有效临时密码列表获取成功");
} failure:^(NSError *error) {
NSLog(@"有效临时密码列表获取失败");
}];
接口说明
/// 临时密码无效列表
/// @param devId 设备 ID
/// @param offset 起始记录数
/// @param limit 每页限制数据条数
/// @param success 成功回调
/// @param failure 失败回调
- (void)getInvalidPasswordListWithDevId:(NSString *)devId
offset:(int)offset
limit:(int)limit
success:(nullable TYSuccessID)success
failure:(nullable TYFailureError)failure;
示例代码
[self.zigbeeDevice getInvalidPasswordListWithDevId:self.devId offset:0 limit:50 success:^(id result) {
NSLog(@"无效临时密码列表获取成功");
} failure:^(NSError *error) {
NSLog(@"无效临时密码列表获取失败");
}];
接口说明
/// 清空无效密码
/// @param devId 设备 ID
/// @param success 成功回调
/// @param failure 失败回调
- (void)removeInvalidPasswordWithDevId:(NSString *)devId
success:(nullable TYSuccessID)success
failure:(nullable TYFailureError)failure;
示例代码
[self.zigbeeDevice removeInvalidPasswordWithDevId:self.devId success:^(id result) {
NSLog(@"清空无效密码成功");
} failure:^(NSError *error) {
NSLog(@"清空无效密码失败");
}];
接口说明
/// 获取动态密码
/// @param devId 设备 ID
/// @param success 成功回调
/// @param failure 失败回调
- (void)getDynamicPasswordWithDevId:(NSString *)devId
success:(nullable TYSuccessID)success
failure:(nullable TYFailureError)failure;
示例代码
[self.zigbeeDevice getDynamicPasswordWithDevId:self.devId success:^(id result) {
NSLog(@"动态密码获取成功");
} failure:^(NSError *error) {
NSLog(@"动态密码获取失败");
}];
接口说明
/// 添加临时密码
/// @param devId 设备 ID
/// @param name 密码名称
/// @param effectiveTime 生效时间
/// @param invalidTime 失效时间
/// @param password 密码
/// @param schedule 周期
/// @param oneTime 是否一次性密码(0 否,1 是)
/// @param success 成功回调
/// @param failure 失败回调
- (void)addTemporaryPasswordWithDevId:(NSString *)devId
name:(NSString *)name
effectiveTime:(NSTimeInterval)effectiveTime
invalidTime:(NSTimeInterval)invalidTime
password:(NSString *)password
schedule:(NSString *)schedule
oneTime:(NSInteger)oneTime
success:(nullable TYSuccessID)success
failure:(nullable TYFailureError)failure;
参数说明
字段 | 说明 |
---|---|
devId | 设备 ID |
name | 密码名称 |
effectiveTime | 生效时间 |
invalidTime | 失效时间 |
password | 密码内容 |
schedule | 定时数据,参考 NSArray <TuyaSmartBLELockScheduleModel*> * |
oneTime | 可用次数,0 表示永久,1 表示一次性 |
success | 回调成功 |
failure | 回调失败 |
TuyaSmartBLELockScheduleModel
数据模型
字段 | 类型 | 描述 |
---|---|---|
workingDay | NSInteger | 工作日选择,详见 workingDay 特殊说明 |
allDay | BOOL | 是否全天 |
effectiveTime | NSInteger | 生效分钟 例如:当前早上 8 点整,值为 800 |
invalidTime | NSInteger | 失效分钟 例如:当前下午 18 点整,值为 1800 |
workingDay
特殊说明
周循环的选择字段 workingDay
由七个 1
或 0
组成。其中 1
为开启,0
为关闭,排序示例如下。由二进制转换为十进制存储。
周日 | 周一 | 周二 | 周三 | 周四 | 周五 | 周六 | 二进制表示 | 计算结果(十进制) |
---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1111111 | 127 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0000000 | 0 |
0 | 1 | 1 | 1 | 1 | 0 | 0 | 0111100 | 60 |
示例代码
NSArray<ThingSmartBLELockScheduleModel *> *scheduleList = data;
NSString *schedule = scheduleList.yy_modelToJSONString;
[self.zigbeeDevice addTemporaryPasswordWithDevId:self.devId
name:name
effectiveTime:effectiveTime
invalidTime:invalidTime
password:password
schedule:schedule
oneTime:0
success:^(id result) {
NSDictionary *data = (NSDictionary*)result;
NSLog(@"创建周期密码成功");
} failure:^(NSError *error) {
NSLog(@"创建周期密码失败");
}];
接口说明
/// 密码名称重命名
/// @param devId 设备 ID
/// @param pwdId 密码 ID
/// @param name 密码名称
/// @param success 成功回调
/// @param failure 失败回调
- (void)updateTemporaryPasswordWithDevId:(NSString *)devId
pwdId:(NSInteger)pwdId
name:(NSString *)name
success:(nullable TYSuccessID)success
failure:(nullable TYFailureError)failure;
示例代码
[self.zigbeeDevice updateTemporaryPasswordWithDevId:self.devId
pwdId:pwdId
name:name
success:^(id result) {
NSLog(@"密码重命名成功");
} failure:^(NSError *error) {
NSLog(@"密码重命名失败");
}];
修改周期性临时密码。
接口说明
/// 修改密码时效(硬件交互)
/// @param devId 设备 ID
/// @param pwdId 密码 ID
/// @param name 密码名称
/// @param effectiveTime 生效时间
/// @param invalidTime 失效时间
/// @param schedule 周期
/// @param oneTime 是否一次性密码(0 否,1 是)
/// @param success 成功回调
/// @param failure 失败回调
- (void)modifyTemporaryPasswordWithDevId:(NSString *)devId
pwdId:(NSInteger)pwdId
name:(NSString *)name
effectiveTime:(NSTimeInterval)effectiveTime
invalidTime:(NSTimeInterval)invalidTime
schedule:(NSString *)schedule
oneTime:(NSInteger)oneTime
success:(nullable TYSuccessID)success
failure:(nullable TYFailureError)failure;
示例代码
[self.zigbeeDevice modifyTemporaryPasswordWithDevId:self.devId
pwdId:pwdId name:name
effectiveTime:effectiveTime
invalidTime:invalidTime
schedule:schedule
oneTime:oneTime
success:^(id result) {
NSLog(@"密码更新成功");
} failure:^(NSError *error) {
NSLog(@"密码更新失败");
}];
接口说明
/// 删除临时密码
/// @param devId 设备 ID
/// @param pwdId 密码 ID
/// @param name 密码名称
/// @param effectiveTime 生效时间
/// @param invalidTime 失效时间
/// @param oneTime 是否一次性密码(0 否,1 是)
/// @param success 成功回调
/// @param failure 失败回调
- (void)removeTemporaryPasswordWithDevId:(NSString *)devId
pwdId:(NSInteger)pwdId
name:(NSString *)name
effectiveTime:(NSTimeInterval)effectiveTime
invalidTime:(NSTimeInterval)invalidTime
oneTime:(NSInteger)oneTime
success:(nullable TYSuccessID)success
failure:(nullable TYFailureError)failure;
示例代码
[self.zigbeeDevice removeTemporaryPasswordWithDevId:self.devId
pwdId:pwdId
name:name
effectiveTime:effectiveTime
invalidTime:invalidTime
oneTime:oneTime
success:^(id result) {
NSLog(@"删除密码成功");
} failure:^(NSError *error) {
NSLog(@"删除密码失败");
}];
接口说明
/// 冻结临时密码
/// @param devId 设备 ID
/// @param pwdId 密码 ID
/// @param name 密码名称
/// @param effectiveTime 生效时间
/// @param invalidTime 失效时间
/// @param oneTime 是否一次性密码(0 否,1 是)
/// @param success 成功回调
/// @param failure 失败回调
- (void)freezeTemporaryPasswordWithDevId:(NSString *)devId
pwdId:(NSInteger)pwdId
name:(NSString *)name
effectiveTime:(NSTimeInterval)effectiveTime
invalidTime:(NSTimeInterval)invalidTime
oneTime:(NSInteger)oneTime
success:(nullable TYSuccessID)success
failure:(nullable TYFailureError)failure;
示例代码
[self.zigbeeDevice freezeTemporaryPasswordWithDevId:self.devId
pwdId:pwdId
name:name
effectiveTime:effectiveTime
invalidTime:invalidTime
oneTime:oneTime
success:^(id result) {
NSLog(@"冻结密码成功");
} failure:^(NSError *error) {
NSLog(@"冻结密码失败");
}];
接口说明
/// 解冻临时密码
/// @param devId 设备 ID
/// @param pwdId 密码 ID
/// @param name 密码名称
/// @param effectiveTime 生效时间
/// @param invalidTime 失效时间
/// @param oneTime 是否一次性密码(0 否,1 是)
/// @param success 成功回调
/// @param failure 失败回调
- (void)unfreezeTemporaryPasswordWithDevId:(NSString *)devId
pwdId:(NSInteger)pwdId
name:(NSString *)name
effectiveTime:(NSTimeInterval)effectiveTime
invalidTime:(NSTimeInterval)invalidTime
oneTime:(NSInteger)oneTime
success:(nullable TYSuccessID)success
failure:(nullable TYFailureError)failure;
示例代码
[self.zigbeeDevice unfreezeTemporaryPasswordWithDevId:self.devId
pwdId:pwdId
name:name
effectiveTime:effectiveTime
invalidTime:invalidTime
oneTime:oneTime
success:^(id result) {
NSLog(@"解冻密码成功");
} failure:^(NSError *error) {
NSLog(@"解冻密码失败");
}];
根据列表返回的数据,展示对应的 UI 状态。
接口说明
/// 告警未读数
/// @param devId 设备 ID
/// @param success 成功回调
/// @param failure 失败回调
- (void)getUnreadAlarmNumberWithDevId:(NSString *)devId
success:(nullable TYSuccessID)success
failure:(nullable TYFailureError)failure;
示例代码
[self.zigbeeDevice getUnreadAlarmNumberWithDevId:self.devId success:^(id result){
int value = [result intValue];
NSLog(@"告警未读数获取成功");
} failure:^(NSError *error) {
NSLog(@"告警未读数获取失败");
}];
接口说明
/// 告警记录
/// @param devId 设备 ID
/// @param dpIds 告警类型 dpId
/// @param offset 起始记录数
/// @param limit 分页数量
/// @param success 成功回调
/// @param failure 失败回调
- (void)getAlarmRecordListWithDevId:(NSString *)devId
dpIds:(NSArray *)dpIds
offset:(int)offset
limit:(int)limit
success:(nullable TYSuccessID)success
failure:(nullable TYFailureError)failure;
示例代码
[self.zigbeeDevice getAlarmRecordListWithDevId:self.devId
dpIds:@[@"hijack",@"alarm_lock",@"doorbell"]
offset:0
limit:50
success:^(id result) {
NSLog(@"告警记录获取成功");
} failure:^(NSError *error) {
NSLog(@"告警记录获取失败");
}];
接口说明
/// 开门记录
/// @param devId 设备 ID
/// @param dpIds 开门记录 dpId 集合
/// @param startTime 开始时间
/// @param endTime 结束时间
/// @param offset 起始记录数
/// @param limit 每页限制数据条数
/// @param success 成功回调
/// @param failure 失败回调
- (void)getUnlockRecordListWithDevId:(NSString *)devId
dpIds:(NSArray *)dpIds
startTime:(NSInteger)startTime
endTime:(NSInteger)endTime
offset:(int)offset
limit:(int)limit
success:(nullable TYSuccessID)success
failure:(nullable TYFailureError)failure;
示例代码
[self.zigbeeDevice getUnlockRecordListWithDevId:self.devId
dpIds:dpIds
startTime:0
endTime:0
offset:0
limit:50
success:^(id result) {
NSLog(@"开门记录获取成功");
} failure:^(NSError *error) {
NSLog(@"开门记录获取失败");
}];
接口说明
/// 绑定开门记录到用户
/// @param devId 设备 ID
/// @param userId 用户 ID
/// @param unlockIds 解锁方式列表
/// @param success 成功回调
/// @param failure 失败回调
- (void)bindUnlockOpModeWithDevId:(NSString *)devId
userId:(NSString *)userId
unlockIds:(NSString *)unlockIds
success:(TYSuccessID)success
failure:(nullable TYFailureError)failure;
参数说明
字段 | 说明 |
---|---|
devId | 设备 ID |
userId | 成员 ID |
unlockIds | 解锁方式列表 |
success | 成功回调 |
failure | 失败回调 |
示例代码
NSString *unlockIds = [NSString stringWithFormat:@"%@-%@",[self.currentDic[@"dpId"] stringValue],[self.currentDic[@"dpValue"] stringValue]];
[self.zigbeeDevice bindUnlockOpModeWithDevId:self.devId userId:[dic[@"userId"] stringValue] unlockIds:@[unlockIds].tysdk_JSONString success:^(id result) {
BOOL isSuccess = [result boolValue];
NSLog(@"绑定成功");
} failure:^(NSError *error) {
NSLog(@"绑定失败");
}];
您需要自行监听设备支持的相关 DP 监听,用于展示是否正确开门,接口只返回执行成功。
接口说明
/// 远程解锁
/// @param devId 设备 ID
/// @param success 成功回调
/// @param failure 失败回调
- (void)remoteUnlockWithDevId:(NSString *)devId
success:(nullable TYSuccessID)success
failure:(nullable TYFailureError)failure;
示例代码
[self.zigbeeDevice remoteUnlockWithDevId:self.devId success:^(id result) {
NSLog(@"免密远程解锁成功");
} failure:^(NSError *error) {
NSLog(@"免密远程解锁失败");
}];
接口说明
/// 远程关锁
/// @param devId 设备 ID
/// @param success 成功回调
/// @param failure 失败回调
- (void)remoteLockWithDevId:(NSString *)devId
success:(nullable TYSuccessID)success
failure:(nullable TYFailureError)failure;
示例代码
[self.zigbeeDevice remoteLockWithDevId:self.devId success:^(id result) {
NSLog(@"远程关锁成功");
} failure:^(NSError *error) {
NSLog(@"远程关锁失败");
}];
接口说明
/// 查询远程解锁开关状态
/// @param devId 设备 ID
/// @param success 成功回调
/// @param failure 失败回调
- (void)fetchRemoteUnlockTypeWithDevId:(NSString *)devId
success:(nullable TYSuccessID)success
failure:(nullable TYFailureError)failure;
示例代码
WEAKSELF_TYSDK
[self.zigbeeDevice fetchRemoteUnlockTypeWithDevId:self.devId
success:^(id result) {
weakSelf_TYSDK.isRemoteOpen = [result[@"isRemoteOpen"] boolValue];
NSLog(@"查询状态成功");
} failure:^(NSError *error) {
NSLog(@"查询状态失败");
}];
接口说明
/// 设置远程解锁开关
/// @param devId 设备 ID
/// @param open 开关状态
/// @param success 成功回调
/// @param failure 失败回调
- (void)setRemoteUnlockTypeWithDevId:(NSString *)devId
open:(BOOL)open
success:(nullable TYSuccessID)success
failure:(nullable TYFailureError)failure;
示例代码
[self.zigbeeDevice setRemoteUnlockTypeWithDevId:self.devId
open:isOpen
success:^(id result) {
NSLog(@"设置成功");
} failure:^(NSError *error) {
NSLog(@"设置失败");
}];
前置条件:设备需要支持 remote_no_dp_key
和 remote_unlock
两个远程 dpCode
,其中 remote_unlock
为远程含密解锁的前置判断。如果不支持 remote_unlock
,需要隐藏含密相关功能。
接口说明
/// 获取远程解锁权限
/// @param devId 设备 ID
/// @param success 成功回调
/// @param failure 失败回调
- (void)getRemoteUnlockPermissionValueWithDevId:(NSString *)devId
success:(nullable void(^)(TuyaSmartZigbeeLockRemotePermissionModel *model))success
failure:(nullable TYFailureError)failure;
示例代码
[self.zigbeeDevice getRemoteUnlockPermissionValueWithDevId:self.devId success:^(TuyaSmartZigbeeLockRemotePermissionModel * _Nonnull model) {
NSLog(@"远程解锁权限获取成功");
} failure:^(NSError *error) {
NSLog(@"远程解锁权限获取失败");
}];
接口返回解析
{
"remoteOpenState": {
"type": "password",
"user": "admin",
"way": "remote_no_dp_key"//remote_unlock
}
}
TuyaSmartZigbeeLockRemotePermissionModel
数据模型
如果是管理员免密、或者管理员含密,则普通用户展示不可用。
字段 | 类型 | 描述 |
---|---|---|
type | NSString | 类型,password 不变 |
user | NSString | 用户
|
way | NSString |
|
更多信息,参考 ThingRemotePermissionType 枚举。
接口说明
/// 含密远程解锁
/// @param devId 设备 ID
/// @param success 成功回调
/// @param failure 失败回调
- (void)remoteUnlockWithDevId:(NSString *)devId
password:(NSString *)password
success:(nullable TYSuccessID)success
failure:(nullable TYFailureError)failure;
示例代码
[self.zigbeeDevice remoteUnlockWithDevId:self.devId
password:password
success:^(id result) {
NSLog(@"含密远程解锁成功");
} failure:^(NSError *error) {
NSLog(@"含密远程解锁失败");
}];
接口说明
/// 设置远程解锁权限
/// @param devId 设备 ID
/// @param remotePermissionType 权限类型
/// @param success 成功回调
/// @param failure 失败回调
- (void)setRemoteUnlockPermissionValueWithDevId:(NSString *)devId
remotePermissionType:(TYRemotePermissionType)remotePermissionType
success:(nullable TYSuccessID)success
failure:(nullable TYFailureError)failure;
ThingRemotePermissionType 枚举类型:
类型 | 描述 |
---|---|
ThingRemotePermissionType_NonePwd_Admin | 免密-管理员 |
ThingRemotePermissionType_NonePwd_All | 免密-所有人 |
ThingRemotePermissionType_Pwd_Admin | 含密-管理员 |
ThingRemotePermissionType_Pwd_All | 含密-所有人 |
示例代码
[self.zigbeeDevice setRemoteUnlockPermissionValueWithDevId:self.devId remotePermissionType:TYRemotePermissionType_NonePwd_Admin success:^(id result) {
NSLog(@"设置免密-管理员成功");
} failure:^(NSError *error) {
NSLog(@"设置免密-管理员失败");
}];
接口说明
/// 查询音箱密码开启状态
/// @param devId 设备 ID
/// @param success 成功回调
/// @param failure 失败回调
- (void)fetchRemoteVoiceUnlockWithDevId:(NSString *)devId
success:(TYSuccessID)success
failure:(nullable TYFailureError)failure;
示例代码
[self.zigbeeDevice fetchRemoteVoiceUnlockWithDevId:self.devId
success:^(id result) {
NSLog(@"音箱密码开启状态获取成功");
} failure:^(NSError *error) {
NSLog(@"音箱密码开启状态获取失败");
}];
接口说明
/// 设置或取消音箱密码
/// @param devId 设备 ID
/// @param open 设置或取消
/// @param pwd 密码
/// @param success 成功回调
/// @param failure 失败回调
- (void)setRemoteVoiceUnlockWithDevId:(NSString *)devId
open:(BOOL)open
pwd:(NSString *)pwd
success:(TYSuccessID)success
failure:(nullable TYFailureError)failure;
示例代码
[self.zigbeeDevice setRemoteVoiceUnlockWithDevId:self.devId open:isOpen pwd:pwd success:^(id result) {
NSLog(@"设置音箱密码成功");
} failure:^(NSError *error) {
NSLog(@"设置音箱密码失败");
}];
获取设备迄今为止的激活时间,例如,已安全守护多少天等功能。
接口说明
/// 获取设备迄今为止的激活时间
/// @param devId 设备 ID
/// @param success 成功回调
/// @param failure 失败回调
- (void)getSecurityGuardDaysWithDevId:(NSString *)devId
success:(nullable TYSuccessID)success
failure:(nullable TYFailureError)failure;
示例代码
[self.zigbeeDevice getSecurityGuardDaysWithDevId:self.devId success:^(id result){
NSLog(@"获取天数成功");
} failure:^(NSError *error) {
NSLog(@"获取天数失败");
}];
获取设备的面板云能力。
接口说明
/// 获取设备云能力
/// @param productId 产品 ID
/// @param options 查询项(uiContent,cloudDp,powerCode)
/// @param success 成功回调
/// @param failure 失败回调
- (void)getLockDeviceConfigWithProductId:(NSString *)productId
options:(NSString *)options
success:(TYSuccessID)success
failure:(nullable TYFailureError)failure;
示例代码
[self.zigbeeDevice getLockDeviceConfigWithProductId:self.zigbeeDevice.deviceModel.productId options:@"uiContent,cloudDp,powerCode" success:^(id result) {
NSLog(@"获取配置成功");
} failure:^(NSError *error) {
NSLog(@"获取配置失败");
}];
业务错误码
错误码 | 说明 |
---|---|
4000 | 产品定义错误 |
4001 | 用户名错误 |
4002 | 时间错误 |
4003 | 设备处理超时 |
4004 | 设备未连接 |
固件上报错误码
ThingUnlockOpErrorCode
枚举类型
错误码 | 说明 |
---|---|
ThingUnlockOpErrorCodeTimeout | 添加解锁方式-超时 |
ThingUnlockOpErrorCodeWriteError | 添加解锁方式-写入失败 |
ThingUnlockOpErrorCodeRepeatWrite | 添加解锁方式-重复写入 |
ThingUnlockOpErrorCodeFirmwareIdUnavailable | 添加解锁方式-无可用硬件 ID |
ThingUnlockOpErrorCodePasswordTypeError | 添加解锁方式-密码类型错误,非数字 |
ThingUnlockOpErrorCodePasswordLengthError | 添加解锁方式-密码长度错误 |
ThingUnlockOpErrorCodeUnspoortOpType | 添加解锁方式-不支持添加的开锁方式 |
ThingUnlockOpErrorCodeFingerWriting | 添加解锁方式-指纹录入中 |
ThingUnlockOpErrorCodeCardWriting | 添加解锁方式-卡片录入中 |
ThingUnlockOpErrorCodeFaceWriting | 添加解锁方式-人脸录入中 |
ThingUnlockOpErrorCodePasswordIsTooSimple | 添加解锁方式-密码过于简单 |
ThingUnlockOpErrorCodeFirmwareIdError | 添加解锁方式-错误的硬件 ID |
DP | 功能说明 |
---|---|
unlock_fingerprint | 指纹 |
unlock_password | 密码 |
unlock_temporary | 临时密码 |
unlock_dynamic | 动态密码 |
unlock_card | 门卡 |
unlock_face | 人脸 |
unlock_key | 钥匙 |
unlock_remote | 远程 |
open_inside | 从门内打开 |
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈