Skip to content

人脸管理

3D人脸识别凭证,通过门锁摄像头验证开锁。

生物特征凭证

人脸是生物特征凭证,原始数据存储在门锁本地,无法导出或修改。UpdateFace 仅能更新标签、有效期等属性,如需修改人脸需删除后重新录入。

指令列表

指令码名称方向说明
0x0800ListFacesAPP → 设备获取人脸列表
0x0801GetFaceAPP → 设备获取人脸详情
0x0802StartFaceEnrollAPP → 设备启动人脸录入
0x0803CancelFaceEnrollAPP → 设备取消人脸录入
0x0804UpdateFaceAPP → 设备更新人脸信息
0x0805DeleteFaceAPP → 设备删除人脸
0x0806ClearFacesAPP → 设备清空所有人脸
0x0880FaceEnrollProgress设备 → APP录入进度通知
0x0881FaceEnrollResult设备 → APP录入结果通知

数据结构

protobuf
message Face {
  uint32 credential_id = 1;    // 凭证ID(锁内唯一)
  uint32 user_id = 2;          // 归属用户ID
  uint32 created_by = 3;       // 创建者用户ID
  uint64 created_at = 4;       // 创建时间(UNIX毫秒时间戳)
  ValidityPeriod validity = 5; // 有效期
  uint32 use_count_limit = 6;  // 使用次数限制(0=不限)
  uint32 use_count = 7;        // 已使用次数
  string label = 8;            // 标签
  bool is_duress = 9;          // 是否胁迫凭证
}
字段类型说明
credential_iduint32凭证ID,锁内唯一标识
user_iduint32归属用户ID
created_byuint32创建者用户ID
created_atuint64创建时间(UNIX毫秒时间戳)
validityValidityPeriod有效期,详见 凭证期限
use_count_limituint32使用次数限制,0 表示不限制
use_countuint32已使用次数
labelstring用户自定义标签
is_duressbool是否胁迫凭证

胁迫凭证限制

人脸通常不适合作为胁迫凭证,因为用户无法主动选择使用哪张人脸开锁。建议使用指纹或密码作为胁迫凭证。

录入流程

人脸录入需要用户面对摄像头,系统会采集多角度面部特征:

StartFaceEnroll - 启动人脸录入

指令码: 0x0802

StartFaceEnrollReq

protobuf
message StartFaceEnrollReq {
  optional uint32 user_id = 1;          // 归属用户ID(不指定则自动创建用户)
  optional ValidityPeriod validity = 2; // 有效期
  optional uint32 use_count_limit = 3;  // 使用次数限制
  optional string label = 4;            // 标签
  optional bool is_duress = 5;          // 是否胁迫凭证
  optional uint32 timeout = 6;          // 录入超时(秒),默认60
}

StartFaceEnrollResp

protobuf
message StartFaceEnrollResp {
  uint32 code = 1;   // 0=已进入录入模式
  string message = 2;
}

FaceEnrollProgress - 录入进度通知

指令码: 0x0880

方向: 设备 → APP(Notify)

protobuf
message FaceEnrollProgress {
  uint32 current = 1;   // 当前进度百分比(0-100)
  uint32 total = 2;     // 总进度(固定100)
  string hint = 3;      // 提示信息(如"请向左转头")
}
hint 示例说明
请正视摄像头初始位置
请向左转头采集左侧面
请向右转头采集右侧面
请抬头采集仰视角度
请低头采集俯视角度

FaceEnrollResult - 录入结果通知

指令码: 0x0881

方向: 设备 → APP(Notify)

protobuf
message FaceEnrollResult {
  uint32 code = 1;           // 0=成功
  string message = 2;
  uint32 credential_id = 3;  // 新建的凭证ID(成功时有效)
  uint32 user_id = 4;        // 归属用户ID(成功时有效)
}

其他指令

人脸管理的 List、Get、Cancel、Update、Delete、Clear 指令结构与 指纹管理 完全一致,仅将 Fingerprint 替换为 Face,指令码使用 0x08xx 区块。

指令请求结构响应结构
ListFacesListFacesReqListFacesResp
GetFaceGetFaceReqGetFaceResp
CancelFaceEnrollCancelFaceEnrollReqCancelFaceEnrollResp
UpdateFaceUpdateFaceReqUpdateFaceResp
DeleteFaceDeleteFaceReqDeleteFaceResp
ClearFacesClearFacesReqClearFacesResp

相关文档

物联网设备通信协议文档