智能门禁

更新时间:2022-02-17 06:49:49下载pdf

智能门禁是能够通过客户端进行智能开门的功能。门禁支持远程开门、二维码等多种通行方式,通行记录能够实时统计,提高了居民的通行效率,提升物业的管理效率。是一种让开门更加方便,让社区更加安全的功能。

功能说明

智能门禁支持移动端开门、二维码开门。主要涉及的类为 TuyaCommunitySmartDoorService

查询门禁设备列表

查询该房屋下所有的智能门禁设备。

接口说明

- (void)getSmartDoorListWithCommunityId:(NSString *)communityId
                                 roomId:(NSString *)roomId
                                success:(void(^)(NSArray<TuyaCommunitySmartDoorInfoModel *>*models))success
                                failure:(void(^)(NSError *error))failure;

参数说明

参数 说明
communityId 小区 ID,可以从 TuyaCommunityHouseModel 中查询到
roomId 房屋 ID,可以从 TuyaCommunityHouseModel 中查询到
success 成功回调,参数中每个 TuyaCommunitySmartDoorInfoModel 数据模型代表一个门禁
failure 失败回调,回调中展示失败原因

TuyaCommunitySmartDoorInfoModel 参数说明

参数 说明
deviceId 设备 ID,每个设备拥有唯一 ID
deviceName 设备名称

示例代码

TuyaCommunityHouseModel *houseModel = <#从房屋列表接口中查询的当前登录的其中一个家庭#>;
[self.service getSmartDoorListWithCommunityId:houseModel.communityId
                                               roomId:houseModel.roomId
                                              success:^(NSArray<TuyaCommunitySmartDoorInfoModel *> * _Nonnull models) {
        //do something
    } failure:^(NSError * _Nonnull error) {
        NSLog(@"error = %@",error);
    }];

打开门禁

在查询到门禁列表后,可以调用接口打开相应的门禁。

接口说明

- (void)openDoorWithCommunityId:(NSString *)communityId
                         roomId:(NSString *)roomId
                       deviceId:(NSString *)deviceId
                        success:(void(^)(NSString *accessLogId))success
                        failure:(void(^)(NSError *error))failure;

参数说明

参数 说明
communityId 小区 ID,可以从 TuyaCommunityHouseModel 中查询到
roomId 房屋 ID,可以从 TuyaCommunityHouseModel 中查询到
deviceId 设备 ID,TuyaCommunitySmartDoorInfoModel 对应的 deviceId
success 请求成功后,返回通行记录 ID
failure 失败回调,回调中展示失败原因

示例代码

TuyaCommunityHouseModel *houseModel = <#从房屋列表接口中查询的当前登录的其中一个家庭#>;
[self.service openDoorWithCommunityId:houseModel.communityId
                               roomId:houseModel.roomId
                             deviceId:model.deviceId
                              success:^(NSString * _Nonnull accessLogId) {
        // do something
    } failure:^(NSError * _Nonnull error) {
        NSLog(@"error = %@",error);
    }];

查询开门结果

由于发送开门请求后,不会通过接口立刻返回是否开门成功,因此需要在请求开门后隔若干时间(如 0.3 秒)询问是否开门成功。

接口说明

- (void)checkOpenDoorResultWithCommunityId:(NSString *)communityId
                               accessLogId:(NSString *)accessLogId
                                   success:(void(^)(TuyaCommunitySmartDoorOpenResult result))success
                                   failure:(void(^)(NSError *error))failure;

参数说明

参数 说明
communityId 小区 ID,可以从 TuyaCommunityHouseModel 中查询到
accessLogId 通行记录ID
success 请求成功。TuyaCommunitySmartDoorOpenResult:
  • TuyaCommunitySmartDoorOpenResultOpening:正在开门,状态未知
  • TuyaCommunitySmartDoorOpenResultSuccess:开门成功
  • TuyaCommunitySmartDoorOpenResultFailure:开门失败

示例代码

TuyaCommunityHouseModel *houseModel = <#从房屋列表接口中查询的当前登录的其中一个家庭#>;
__weak __typeof(self) weakSelf = self;
[self.service checkOpenDoorResultWithCommunityId:houseModel.communityId
                                     accessLogId:logId
                                         success:^(TuyaCommunitySmartDoorOpenResult result) {
        switch (result) {
            case TuyaCommunitySmartDoorOpenResultOpening: {
                NSTimeInterval outTime = [[NSDate date] timeIntervalSince1970];
                if (outTime - self.currentTime > 3000.f) {
                    NSLog(@"Open Door Failure");
                } else {
                    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                        [weakSelf getOpenReustWithLogId:logId];
                    });
                }
            }
                break;
            case TuyaCommunitySmartDoorOpenResultSuccess: {
                NSLog(@"Open Door Success");
                break;
            }
            case TuyaCommunitySmartDoorOpenResultFailure: {
                NSLog(@"Open Door Failure");
            }
            default:
                break;
        }
    } failure:^(NSError * _Nonnull error) {
        NSLog(@"%@",error);
    }];

查询门禁开门记录

当用户通过客户端进行开门后,即可生成一条开门记录。

接口说明

- (void)getSmartDoorOpenRecordsWithCommunityId:(NSString *)communityId
                                        roomId:(NSString *)roomId
                                       success:(void(^)(NSArray<TuyaCommunitySmartDoorOpenRecordModel *> *models))success
                                       failure:(void(^)(NSError *error))failure;

参数说明

参数 说明
communityId 小区 ID,可以从 TuyaCommunityHouseModel 中查询到
roomId 房屋 ID,可以从 TuyaCommunityHouseModel 中查询到
success 成功回调,每个 TuyaCommunitySmartDoorOpenRecordModel 代表一条记录
failure 失败回调,回调中展示失败原因

TuyaCommunitySmartDoorOpenRecordModel 参数说明

参数 说明
accessLogId 记录日志的ID
accessControlName 被控制设备名称
accessControlAddress 被控制设备所在地址
accessTime 记录产生时间
accessDirection 日志记录设备状态:
  • TuyaCommunitySmartDoorOpenDirectionOut:离开记录
  • TuyaCommunitySmartDoorOpenDirectionIn:进门记录
  • TuyaCommunitySmartDoorOpenDirectionFailure:开门失败

示例代码

TuyaCommunityHouseModel *houseModel = <#从房屋列表接口中查询的当前登录的其中一个家庭#>;
    [self.service getSmartDoorOpenRecordsWithCommunityId:houseModel.communityId
                                                  roomId:houseModel.roomId
                                                 success:^(NSArray<TuyaCommunitySmartDoorOpenRecordModel *> * _Nonnull models) {
        // do something
    } failure:^(NSError * _Nonnull error) {
        NSLog(@"%@",error);
    }];

查询门禁二维码等信息

  • 查询门禁二维码,用于通过硬件设备识别二维码进行开门操作。
  • 列出可开门的门禁、梯控权限集合。

接口说明

- (void)getCommunityQrCodeWithCommunityId:(NSString *)communityId
                                   roomId:(NSString *)roomId
                                  success:(void(^)(TuyaCommunityQRCodeModel *result))success
                                  failure:(void(^)(NSError *error))failure;

参数说明

参数 说明
communityId 小区 ID,可以从 TuyaCommunityHouseModel 中查询到
roomId 房屋 ID,可以从 TuyaCommunityHouseModel 中查询到
success 成功回调,查询到二维码信息和可被识别的设备
failure 失败回调,回调中展示失败原因

TuyaCommunityQRCodeModel 参数说明

参数 说明
qrCodeUrl 需要生成二维码的字符串
expire URL 过期时间
accessDoorList 可被通过的门禁数据列表,每个元素为设备名称
accessElevatorList 可被通过的电梯数据列表,每个元素为设备名称

示例代码

TuyaCommunityHouseModel *houseModel = <#从房屋列表接口中查询的当前登录的其中一个家庭#>;
[self.service getCommunityQrCodeWithCommunityId:houseModel.communityId
                                         roomId:houseModel.roomId
                                        success:^(TuyaCommunityQRCodeModel * _Nonnull model) {
        UIImage *image = <#将model.qrCodeUrl 转为二维码图片#>;
        //do something
    } failure:^(NSError * _Nonnull error) {
        NSLog(@"error = %@",error);
    }];