可视对讲门锁 DP 参考

更新时间:2024-06-20 02:21:26下载pdf

本文介绍了涂鸦智能可视对讲门锁方案中涉及的 DP 功能、帧格式及其使用方法,适用于可视对讲门锁公版项目。

背景信息

名词解释

下表罗列了本文涉及到的部分名词和解释,更多详情,请参考 涂鸦名词解释

名词 解释
DP 全称为 Data Point,同时被称为 DP。一个 DP 指的就是 一个功能点 或者 一条/对指令码,DP-data point。
PID 全称为 Product ID,表示描述一类产品功能(DP)的集合。在 涂鸦开发者平台 创建的每一个产品都会产生一个唯一的产品编号,
关联了产品具体的功能、App 控制面板、出货信息等所有跟这个产品相关的信息。
固件 key 固件在涂鸦平台的唯一身份标识。
成员 也称作 用户
成员 ID 1 字节无符号整数,指成员编号(也称为用户编号),由云端分配下发,本地无需维护,取值范围 0x01~0x64,其他为保留值。
硬件 ID 1 字节无符号整数,指开锁方式相关的硬件编号,由本地分配维护,每一个开锁方式对应一个硬件 ID。例如,指纹一硬件 ID 为 0x01,
密码一硬件 ID 为 0x02,取值范围 0x00~0xFE,0xFF 为保留值。
时效性 某个具体的开锁方式(例如指纹、密码、门卡)在指定的时间范围内有效。
下发 数据传输的方向,手机 → 设备。
上报 数据传输的方向,设备 → 手机。

DP 格式

使用涂鸦可视对讲方案开发时,dp_data_len 的长度为 2 个字节。其他 DP 格式信息,请参考下表:

字段 字节数 说明
dp_id 1 DP 的指令码
dp_type 1 DP 的数据类型
dp_data_len 2 DP 的数据长度
dp_data_value dp_data_len DP 的数据内容

解锁方式管理

添加开锁方式

数据
方向
dp_id
(1 字节)
dp_type
(1 字节)
dp_data_len
(2 字节)
dp_data_value
下发 1 raw len 类型
(1 字节)
阶段
(1 字节)
管理员标记
(1 字节)
成员 ID
(1 字节)
硬件 ID
(1 字节)
时效性
(17 字节)
次数
(1 字节)
密码长度
(1 字节)
密码内容
(n 字节)
消息 uuid
(2 字节)
0x01:密码
0x02:门卡
0x03:指纹
0x04:人脸
0x05:掌纹
0x06:指静脉
0x00:
录入开始
0xFE:
录入取消(
App 端发起)
0x00:普通成员
0x01:管理员
0x01~0x64 0xFF:默认值 详见 附录:时效性 0x00:永久有效
0x01:1 次有效
……
0xFE:254 次有效
0xFF:失效
密码字节数 n
(仅用于密码类型)
密码以数值形式下发,每字节取值范围:0x00~0x09
如密码为 123456,则下发密码内容为
[0x01,0x02,0x03,0x04,0x05,0x06]
当密码长度为 0 时无密码内容字段
说明
上报 1 raw len 类型
(1 字节)
阶段
(1 字节)
管理员标记
(1 字节)
成员 ID
(1 字节)
硬件 ID
(1 字节)
次数
(1 字节)
返回状态
(1 字节)
消息 uuid
(2 字节)
0x01:密码
0x02:门卡
0x03:指纹
0x04:人脸
0x05:掌纹
0x06:指静脉
0x00:
录入开始
0x00:普通成员
0x01:管理员
0x01~0x64 0xFF:默认值 需要录入的总次数
例如:指纹一般是 6-8 次,门卡、人脸一般是 1 次
0x00:默认值 同上
0xFC:
录入中
0x00:普通成员
0x01:管理员
0x01~0x64 0xFF:默认值 录入次数的序号,例如指纹可能是 8 次,
填写当前录入次数(从 1 开始)
录入异常原因:
0x00:无异常
0x01:指纹采图失败,如指纹不全/湿手指等
0xFD:
录入失败
0x00:普通成员
0x01:管理员
0x01~0x64 0xFF:默认值 当前的录入阶段:
0x00:录入开始
0xFC:录入中
0xFF:录入完成
录入失败原因
0xFE:
录入取消(
App 端发起)
0x00:普通成员
0x01:管理员
0x01~0x64 0xFF:默认值 0x00:默认值 0x00:默认值
0xFF:
录入完成
0x00:普通成员
0x01:管理员
0x01~0x64 设备分配的硬件 ID
范围 0x00~0xFE
0x00:默认值 0x00:默认值

交互示例

  • 当开锁方式为密码、门卡、人脸时,交互流程如下图所示:

    可视对讲门锁 DP 参考
  • 当开锁方式为指纹时,交互流程如下图所示:

    可视对讲门锁 DP 参考

删除开锁方式

数据
方向
dp_id
(1 字节)
dp_type
(1 字节)
dp_data_len
(2 字节)
dp_data_value
下发 2 raw len 类型
(1 字节)
阶段
(1 字节)
管理员标记
(1 字节)
成员 ID
(1 字节)
硬件 ID
(1 字节)
删除方式
(1 字节)
0x00:删除成员 0x00:默认 0x00:默认
[MCU 无需检查该字段]
0x01~0x64 0xFF:默认值 0x00:删除某个成员下所有开锁方式
0x01:密码
0x02:门卡
0x03:指纹
0x04:人脸
0x05:掌纹
0x06:指静脉
0x00:默认 0x00:普通成员
0x01:管理员
0x01~0x64 0x00~0xFE 0x01:删除某成员的某一个开锁方式
上报 2 raw len 类型
(1 字节)
阶段
(1 字节)
管理员标记
(1 字节)
成员 ID
(1 字节)
硬件 ID
(1 字节)
删除方式
(1 字节)
返回状态
(1 字节)
0x00:删除成员 0x00:默认 0x00:普通成员
0x01:管理员
0x01~0x64 0xFF:默认值 0x00:删除某个成员下所有开锁方式 0x00:删除失败
0xFF:删除成功
0x01:硬件 ID 不存在
0x02:硬件 ID 不能删除(如超级管理员)
0x01:密码
0x02:门卡
0x03:指纹
0x04:人脸
0x05:掌纹
0x06:指静脉
0x00:默认 0x00:普通成员
0x01:管理员
0x01~0x64 0x00~0xFE 0x01:删除某成员的某一个开锁方式 0x00:删除失败
0xFF:删除成功
0x01:硬件 ID 不存在
0x02:硬件 ID 不能删除(如超级管理员)

修改开锁方式

数据
方向
dp_id
(1 字节)
dp_type
(1 字节)
dp_data_len
(2 字节)
dp_data_value
下发 3 raw len 类型
(1 字节)
阶段
(1 字节)
管理员标记
(1 字节)
成员 ID
(1 字节)
硬件 ID
(1 字节)
时效性
(17 字节)
次数
(1 字节)
密码长度
(1 字节)
密码内容
(n 字节)
0x00:仅修改成员时效性 0x00:默认 0x00:普通成员
0x01:管理员
0x01~0x64 0xFF:默认值 详见
附录:时效性
0x00:默认值
(次数不允许修改)
密码字节数 n
(仅用于密码类型)
说明
0x01:密码
0x02:门卡
0x03:指纹
0x04:人脸
0x05:掌纹
0x06:指静脉
0x00:默认 0x00:普通成员
0x01:管理员
0x01~0x64 0x00~0xFE 详见
附录:时效性
0x00:永久有效
0x01:1 次有效
……
0xFE:254 次有效
0xFF:失效
密码字节数 n
(仅用于密码类型)
同上
上报 3 raw len 类型
(1 字节)
阶段
(1 字节)
管理员标记
(1 字节)
成员 ID
(1 字节)
硬件 ID
(1 字节)
次数
(1 字节)
返回状态
(1 字节)
0x00:
仅修改某个成员的时效性
0x00:默认 0x00:普通成员
0x01:管理员
0x01~0x64 0xFF:默认值 0x00:默认值
(次数不允许修改)
0x00:修改失败
0xFF:修改成功
0x01:密码
0x02:门卡
0x03:指纹
0x04:人脸
0x05:掌纹
0x06:指静脉
0x00:默认 0x00:普通成员
0x01:管理员
0x01~0x64 0x00~0xFE 0x00:永久有效
0x01:1 次有效
……
0xFE:254 次有效
0xFF:失效
0x00:修改失败
0xFF:修改成功

临时密码管理

添加临时密码

临时密码包括一次性密码和周期性密码。临时密码和普通密码的不同之处有以下几点:

  • 临时密码不属于任何成员。
  • 临时密码的时效性在连接状态下可单独更改。
  • 临时密码作为开门方式时的类型定义为 0xF0(0x01 为密码,0x02 为门卡,0x03 为指纹等)。
  • 云端预分配的临时密码编号,设备在回复时需将分配的硬件编号与云端编号一起上报,云端用于关联对应关系。

临时密码的使用 风险 在于:

  • 如果设备断电,如果不能及时连接上网络同步时钟,会导致本地时钟不能正确工作,周期性密码的周期重复功能会出现在本地无法准确判断的问题。
  • 解决方案建议:
    • 本地添加后备电池,确保本地时钟不因断电产生异常。
    • 产品接受在上述情况下产生的问题。
数据方向 dp_id
(1 字节)
dp_type
(1 字节)
dp_data_len
(2 字节)
dp_data_value
下发 4 raw len 云端编号
(2 字节)
状态
(1 字节)
时效性
(17 字节)
次数
(1 字节)
密码长度
(1 字节)
密码内容
(n 字节)
云端分配的关联编号 0x00:冻结
0x01:生效
详见 附录:时效性 0x00:永久有效
0x01:1 次有效
……
0xFE:254 次有效
0xFF:失效
密码字节数 n
(仅用于密码类型)
同添加开锁方式字段含义
上报 4 raw len 云端编号
(2 字节)
硬件 ID
(1 字节)
返回状态
(1 字节)
同上 0x00~0xFE 0x00:添加成功
0x01:添加失败
0x02:硬件 ID 分配完

删除临时密码

数据方向 dp_id
(1 字节)
dp_type
(1 字节)
dp_data_len
(2 字节)
dp_data_value
下发 5 raw len 硬件 ID
(1 字节)
0x00~0xFE
上报 5 raw len 硬件 ID
(1 字节)
返回状态
(1 字节)
0x00~0xFE 0x00:删除成功
0x01:删除失败

修改临时密码

数据方向 dp_id
(1 字节)
dp_type
(1 字节)
dp_data_len
(2 字节)
dp_data_value
下发 6 raw len 硬件 ID
(1 字节)
状态
(1 字节)
时效性
(17 字节)
次数
(1 字节)
密码长度
(1 字节)
密码内容
(n 字节)
0x00~0xFE 0x00:冻结
0x01:生效
详见 附录:时效性 同添加临时密码
次数字段说明
密码字节数 n
(仅用于密码类型)
同添加临时密码
密码内容字段说明
上报 6 raw len 硬件 ID
(1 字节)
返回状态
(1 字节)
0x00~0xFE 0x00:修改成功
0x01:修改失败

解锁方式同步

  • 目的与意义:为了保持云端和设备本地开锁方式的一致性,每次进入面板成员管理列表,或者在成员管理界面下拉刷新时,都会触发解锁方式的全量同步,包括手机和本地添加的所有开锁方式。

  • 硬件类型枚举:用来通知设备端本次需要同步的解锁方式类型,未下发的硬件类型无需上报。阶段为 同步中 的每包数据长度由用户自定义,每包数据总长度不大于 200 个字节。

  • 同步本地添加的开锁方式:本地添加的开锁方式通过同步的方式上报给云端,目前有以下几种情况:

    • 上报时用户 ID 为 0xFF,云端统一将本地添加的开锁方式挂到配网账户下,并存储相应的用户 ID,之后每次下发该类开锁方式时,相应的用户 ID 也为 0xFF(云端不可删除)。
    • 上报时用户 ID 为 0xFD,云端统一将本地添加的开锁方式挂到配网账户下,并存储相应的用户 ID,之后每次下发该类开锁方式时,相应的用户 ID 也为 0xFD(通用)。

    该公版方案支持离线创建临时密码,即当前设备不在线时,可先在面板内编辑生成临时密码,缓存在云端。当设备连云拉取云端缓存的临时密码后,需主动同步云端编码与硬件 ID 映射关系,以便云端绑定对应关系。

数据方向 dp_id
(1 字节)
dp_type
(1 字节)
dp_data_len
(2 字节)
dp_data_value
下发 7 raw len 硬件类型枚举数值
(len 字节)
0x01:密码
0x02:门卡
0x03:指纹
0x04:人脸
0x05:掌纹
0x06:指静脉
0xF0:临时密码
上报 7 raw len 阶段
(1 字节)
数据包序号
(1 字节)
同步数据
(n 字节)
0x00:同步中 0x00~0xFF
序号从 0 开始依次递增
数据 1、数据 2 …… 数据 n
数据格式定义
上报 7 raw len 阶段
(1 字节)
总包数
(1 字节)
0x01:同步结束 总包数
例如发送了 2 次阶段为同步中的包,则总包数为 2

远程解锁管理

设置秘钥

  • 进行远程开锁前,必须先设置远程开锁相关秘钥,一般配网成功后由云端下发。另外 MCU 也可主动拉取,上报返回状态 0x10

  • 远程开锁 DP10 指令里的 秘钥内容 是通过 远程解锁设置秘钥 指令进行设置的。

  • 该指令中的 是否生效成员 ID秘钥生效时间秘钥失效时间秘钥使用次数 都是预留的字段,可暂不做处理。

    为了实现更高的安全性,远程解锁秘钥会不定期更新,规则由云端控制,使用 n 次后会通过 DP9 重新下发给设备,进行解锁秘钥更新。

数据方向 dp_id
(1 字节)
dp_type
(1 字节)
dp_data_len
(2 字节)
dp_data_value
下发 9 raw len 是否生效
(1 字节)
成员 ID
(2 字节)
秘钥生效时间
(4 字节)
秘钥失效时间
(4 字节)
秘钥使用次数
(2 字节)
秘钥内容
(8 字节)
0x00:失效
0x01:生效
0x01~0x64 Unix 时间戳
Unix 时间戳
0x0000~0xFFFF ASCII 码
上报 9 raw len 返回状态
(1 字节)
成员 ID
(2 字节)
0x00:成功
0x01:失败
0x10:主动请求拉取远程开门秘钥
注:建议 MCU 维护是否已获取秘钥状态,如未获取到则每次模组连上云均主动请求一次
0x01~0x64

远程解锁

远程开锁指的是通过非近场(例如蓝牙直连)的通信链路进行开锁,可视对讲方案因为是 Wi-Fi 方案均满足远程解锁定义。

  • 如果是通过手机进行开锁,则称为 手机远程开锁
  • 如果是通过音箱进行开锁,则称为 语音远程开锁
数据方向 dp_id
(1 字节)
dp_type
(1 字节)
dp_data_len
(2 字节)
dp_data_value
下发 10 raw len 状态
(1 字节)
成员 ID
(2 字节)
秘钥内容
(8 字节)
解锁方式
(2 字节)
0x00:关锁
0x01:开锁
0x01~0x64 ASCII 码 0x0000:未知远程解锁
0x0001:App 远程解锁
0x0002:语音音箱解锁
上报 10 raw len 返回状态
(1 字节)
成员 ID
(2 字节)
0x00:成功
0x01:失败
0x02:失效
0x03:秘钥使用次数用完
0x04:密钥不在有效期内
0x05:秘钥对比错误
0x01~0x64

锁相关设置

功能 数据流向 dp_id
(1 字节)
dp_type
(1 字节)
dp_data_len
(2 字节)
dp_data_value
len 字节
门铃音效 下发/上报 20 enum 0x01 音效(1 字节)
0x00:音效 0
0x01:音效 1
……
0x0A:音效 10
门铃音量 下发/上报 21 enum 0x01 音量枚举(1 字节)
0x00:静音
0x01:音量低
0x02:音量中
0x03:音量高
门锁语言设置 下发/上报 22 enum 0x01 语言枚举(1 字节)
0x00:简体中文
0x01:英文
0x02:日文
0x03:德文
0x04:西班牙语
0x05:拉丁语
0x06:法语
0x07:俄语
0x08:意大利语
0x09:繁体中文
0x0A:韩语
自动落锁开关设置 下发/上报 23 bool 0x01 状态(1 字节)
0x00:关闭
0x01:开启
自动落锁延迟时间 下发/上报 24 value 0x04 落锁时间(4 字节)
0x00000001~0xFFFFFFFF
单位:秒
单一/组合解锁设置 下发/上报 25 enum 0x01 组合解锁方式枚举(1 字节)
0x00:单一开锁
0x01:指纹+密码
0x02:指纹+门卡
0x03:指纹+人脸
0x04:密码+门卡
0x05:密码+人脸
0x06:门卡+人脸
上锁校验开关 下发/上报 26 bool 0x01 状态(1 字节)
0x00:关闭
0x01:开启
离家布防设置 下发/上报 27 bool 0x01 状态(1 字节)
0x00:关闭
0x01:打开
勿扰模式设置 下发/上报 28 bool 0x01 状态(1 字节)
0x00:关闭
0x01:打开
勿扰时间段设置 下发/上报 29 raw 0x04 起始时间
(2 字节)
结束时间
(2 字节)
HH:MM
(时:分)
HH:MM
(时:分)
保活开关设置 下发/上报 44 bool 0x01 状态(1 字节)
0x00:关闭状态(非保活),Wi-Fi 按需使用在线
0x01:开启状态(保活),Wi-Fi 一直在线,根据休眠时间段进行休眠
与 DP30 互斥,2 选 1,都选中时以 DP44 为准
休眠模式设置 下发/上报 30 bool 0x01 状态(1 字节)
0x00:关闭
0x01:打开
与 DP44 互斥,2 选 1
休眠时间段设置 下发/上报 31 raw 0x05 起始时间
(2 字节)
结束时间
(2 字节)
周循环
(1 字节)
HH:MM
(时:分)
HH:MM
(时:分)
0x00:无周循环
详见附件时效性
引导功能 下发/上报 32 raw 0x02 功能(1 字节) 状态(1 字节)
0x00:角度
0x01:悬停
...
0x00:成功
0x01:失败
...
特殊控制 下发/上报 33 bool 0x01 状态(1 字节)
0x00:关闭
0x01:开启
特殊功能 下发/上报 34 enum 0x01 自定义功能(1 字节)
0x00:功能 0
0x01:功能 1
...
电子反锁 下发/上报 35 bool 0x01 状态(1 字节)
0x00:关闭
0x01:开启(仅管理员解锁方式可解锁)
手动关锁 下发 8 bool 0x01 固定值(1 字节)
0x01
上报 8 bool 0x01 返回状态(1 字节)
0x00:失败
0x01:成功

实时状态上报

功能 数据流向 dp_id
(1 字节)
dp_type
(1 字节)
dp_data_len
(2 字节)
dp_data_value
len 字节
设备运行模式 上报 11 enum 0x01 模式(1 字节)
0x00:keep_alive
0x01:sleep
0x02:lock_keep
0x03:lock_sleep
干电池电量百分比 上报 45 value 0x04 电量百分比(4 字节)
0x00~0x64
锂电池电量 上报 46 raw 0x02 电量百分比(1 字节) 充电状态(1 字节)
0x00~0x64:电量百分比
0xFF:未获取到电量
0x00:未充电
0x01:充电中
0x02:充满
锁开合状态 上报 47 bool 0x01 状态(1 字节)
0x00:锁关闭
0x01:锁打开
童锁状态 上报 48 bool 0x01 状态(1 字节)
0x00:童锁关闭
0x01:童锁打开
上提反锁状态 上报 49 bool 0x01 状态(1 字节)
0x00:未上提反锁
0x01:已上提反锁
反锁状态 下发/上报 50 bool 0x01 状态(1 字节)
0x00:未反锁
0x01:已反锁
门开合状态 上报 51 enum 0x01 状态(1 字节)
0x00:门关闭
0x01:门打开
0x02:未知
注:与其他公版枚举值定义有差异
门从内侧开锁状态 上报 52 bool 0x01 状态(1 字节)
0x00:未定义
0x01:从内测开锁

记录数据上报

告警与解锁记录

功能 数据方向 dp_id
(1 字节)
dp_type
(1 字节)
dp_data_len
(1 字节)
dp_data_value
len 字节
门铃呼叫记录 上报 53 bool 0x01 状态(1 字节)
0x00:未定义
0x01:呼叫
告警记录 上报 60 enum 0x01 报警原因(1 字节)
取值范围
普通密码解锁记录 上报 61 value 0x04 硬件 ID(4 字节)
0x00~0xFE
指纹解锁记录 上报 63 value 0x04 硬件 ID(4 字节)
0x00~0xFE
门卡解锁记录 上报 64 value 0x04 硬件 ID(4 字节)
0x00~0xFE
人脸识别解锁记录 上报 65 value 0x04 硬件 ID(4 字节)
0x00~0xFE
掌纹解锁记录 上报 66 value 0x04 硬件 ID(4 字节)
0x00~0xFE
指静脉解锁记录 上报 67 value 0x04 硬件 ID(4 字节)
0x00~0xFE
虹膜解锁记录 上报 68 value 0x04 硬件 ID(4 字节)
0x00~0xFE
临时密码开锁 上报 69 value 0x04 硬件 ID(4 字节)
0x00~0xFE
机械钥匙开锁 上报 71 value 0x04 无效字段(4 字节)
默认用 0xFF 填充
远程手机解锁 上报 72 value 0x04 成员 ID(4 字节)
0x01~0x64
远程语音开锁 上报 73 value 0x04 成员 ID(4 字节)
0x01~0x64

关锁记录

数据方向 dp_id
(1 字节)
dp_type
(1 字节)
dp_data_len
(2 字节)
dp_data_value
上报 62 raw 0x05 关锁/落锁方式
(1 字节)
成员 ID
(4 字节)
0x00:未定义 xxx 关锁
0x01:手机远程关锁
0x02:语音远程关锁
0x03:地理围栏关锁
0x04:App 长按关锁
0x05:配件关锁
0x06:自动落锁
0x07:本地手动落锁
0x01~0x64

组合解锁记录

数据方向 dp_id
(1 字节)
dp_type
(1 字节)
dp_data_len
(2 字节)
dp_data_value
上报 70 raw len 组合类型
(1 字节)
开锁方式-1
(1 字节)
硬件 ID-1
(1 字节)
开锁方式-2
(1 字节)
硬件 ID-2
(1 字节)
0x01:指纹+密码
0x02:指纹+门卡
0x03:指纹+人脸
0x04:密码+门卡
0x05:密码+人脸
0x06:门卡+人脸
0x01:密码
0x02:门卡
0x03:指纹
0x04:人脸
0x05:掌纹
0x06:指静脉
0xF0:临时密码
0x01~0xFE 同开锁方式-1 0x01~0xFE

离线密码

  • 使用场景:

    操作人员通过 App 获取离线密码,并告知用户,

    • 用户得到单次密码:6 小时内使用,开门成功,密码失效,并产生一条开门记录,6 小时后失效。

    • 用户得到时效密码:24 小时内使用 1 次,密码激活,时效内都可使用,使用一次产生一条开门记录。24 小时内未使用,则失效。

    • 用户得到清空单条密码:时效性和要清空的那条密码相同,多次使用只有第 1 次生效,产生使用过 清空单条密码 的记录。

    • 用户得到清空所有密码:24 小时内使用,清空所有密码,只有 1 次,产生使用过"清空所有密码"的记录。24 小时后失效。

  • 清空单条密码或者所有密码的限制:

    • 只能清空 至少使用过一次的时效密码,即激活的时效密码。
    • 不能清空 单次密码,因为单次密码使用一次后就失效了。
  • 使用方式:请参考 MCU 通用对接串口协议-0x16 指令

功能 数据方向 dp_id
(1 字节)
dp_type
(1 字节)
dp_data_len
(1 字节)
dp_data_value
离线密码
设置 T0 时间
下发/上报 86 string len T0 时间戳字符串(10 字节)
UNIX 时间戳字符串
模组会处理该 DP,MCU 无需关心
离线密码
解锁记录
上报 89 raw 0x10 加密后的开锁密码(16 字节)
请参考 门锁通用对接串口协议
离线密码
清空单条记录
上报 87 raw 0x10 加密后的清空码(16 字节)
请参考 门锁通用对接串口协议
离线密码
清空所有记录
上报 88 raw 0x10 加密后的清空码(16 字节)
请参考 门锁通用对接串口协议

解锁方式管理-大容量

背景说明:默认/标准公版方案支持的成员以及解锁方式数量仅 1 字节,不能满足一些集中使用的门禁场景,因此设计新增了一套支持大容量的 DP 功能点。与原 DP 无本质上差异,仅体现在成员 ID 与硬件 ID 字段的字节数上。在创建产品/代码实现时,按需选择对应的 DP 功能。

DP ID 对照表

功能点 默认/标准方案 大容量方案
添加开锁方式 DP ID=1 DP ID=13
删除开锁方式 DP ID=2 DP ID=14
修改开锁方式 DP ID=3 DP ID=15
添加临时密码 DP ID=4 DP ID=16
删除临时密码 DP ID=5 DP ID=17
修改临时密码 DP ID=6 DP ID=18
解锁方式同步 DP ID=7 DP ID=19
组合开锁记录 DP ID=70 DP ID=74

添加开锁方式

数据
方向
dp_id
(1 字节)
dp_type
(1 字节)
dp_data_len
(2 字节)
dp_data_value
下发 13 raw len 类型
(1 字节)
阶段
(1 字节)
管理员标记
(1 字节)
成员 ID
(2 字节)
硬件 ID
(2 字节)
时效性
(17 字节)
次数
(1 字节)
密码长度
(1 字节)
密码内容
(n 字节)
消息 UUID
(2 字节)
0x01:密码
0x02:门卡
0x03:指纹
0x04:人脸
0x05:掌纹
0x06:指静脉
0x00:
录入开始
0xFE:
录入取消(
App 端发起)
0x00:普通成员
0x01:管理员
0x0001~0xFFFF 0xFFFF:默认值 详见 附录:时效性 0x00:永久有效
0x01:1 次有效
……
0xFE:254 次有效
0xFF:失效
密码字节数 n
(仅用于密码类型)
密码以数值形式下发,每字节取值范围:0x00~0x09
如密码为 123456,则下发密码内容为
[0x01,0x02,0x03,0x04,0x05,0x06]
当密码长度为 0 时无密码内容字段
说明
上报 13 raw len 类型
(1 字节)
阶段
(1 字节)
管理员标记
(1 字节)
成员 ID
(2 字节)
硬件 ID
(2 字节)
次数
(1 字节)
返回状态
(1 字节)
消息 uuid
(2 字节)
0x01:密码
0x02:门卡
0x03:指纹
0x04:人脸
0x05:掌纹
0x06:指静脉
0x00:
录入开始
0x00:普通成员
0x01:管理员
0x0001~0xFFFF 0xFFFF:默认值 需要录入的总次数
例如:指纹一般是 6-8 次,门卡、人脸一般是 1 次
0x00:默认值 同上
0xFC:
录入中
0x00:普通成员
0x01:管理员
同上 同上 录入次数的序号,例如指纹可能是 8 次,
填写当前录入次数(从 1 开始)
录入异常原因:
0x00:无异常
0x01:指纹采图失败,如指纹不全/湿手指等
0xFD:
录入失败
0x00:普通成员
0x01:管理员
同上 同上 当前的录入阶段:
0x00:录入开始
0xFC:录入中
0xFF:录入完成
录入失败原因
0xFE:
录入取消(
App 端发起)
0x00:普通成员
0x01:管理员
同上 同上 0x00:默认值 0x00:默认值
0xFF:
录入完成
0x00:普通成员
0x01:管理员
0x0001~0xFFFF 设备分配的硬件 ID
范围 0x0000~0xFFFE
0x00:默认值 0x00:默认值

删除开锁方式

数据
方向
dp_id
(1 字节)
dp_type
(1 字节)
dp_data_len
(2 字节)
dp_data_value
下发 14 raw len 类型
(1 字节)
阶段
(1 字节)
管理员标记
(1 字节)
成员 ID
(2 字节)
硬件 ID
(2 字节)
删除方式
(1 字节)
0x00:删除成员 0x00:默认 0x00:默认
[MCU 无需检查该字段]
0x0001~0xFFFF 0xFFFF:默认值 0x00:删除某个成员下所有开锁方式
0x01:密码
0x02:门卡
0x03:指纹
0x04:人脸
0x05:掌纹
0x06:指静脉
0x00:默认 0x00:普通成员
0x01:管理员
0x0001~0xFFFF 0x0000~0xFFFE 0x01:删除某成员的某一个开锁方式
上报 14 raw len 类型
(1 字节)
阶段
(1 字节)
管理员标记
(1 字节)
成员 ID
(2 字节)
硬件 ID
(2 字节)
删除方式
(1 字节)
返回状态
(1 字节)
0x00:删除成员 0x00:默认 0x00:普通成员
0x01:管理员
0x0001~0xFFFF 0xFFFF:默认值 0x00:删除某个成员下所有开锁方式 0x00:删除失败
0xFF:删除成功
0x01:硬件 ID 不存在
0x02:硬件 ID 不能删除(如超级管理员)
0x01:密码
0x02:门卡
0x03:指纹
0x04:人脸
0x05:掌纹
0x06:指静脉
0x00:默认 0x00:普通成员
0x01:管理员
0x0001~0xFFFF 0x0000~0xFFFE 0x01:删除某成员的某一个开锁方式 0x00:删除失败
0xFF:删除成功
0x01:硬件 ID 不存在
0x02:硬件 ID 不能删除(如超级管理员)

修改开锁方式

数据
方向
dp_id
(1 字节)
dp_type
(1 字节)
dp_data_len
(2 字节)
dp_data_value
下发 15 raw len 类型
(1 字节)
阶段
(1 字节)
管理员标记
(1 字节)
成员 ID
(2 字节)
硬件 ID
(2 字节)
时效性
(17 字节)
次数
(1 字节)
密码长度
(1 字节)
密码内容
(n 字节)
0x00:仅修改成员时效性 0x00:默认 0x00:普通成员
0x01:管理员
0x0001~0xFFFF 0xFFFF:默认值 详见
附录:时效性
0x00:默认值
(次数不允许修改)
密码字节数 n
(仅用于密码类型)
说明
0x01:密码
0x02:门卡
0x03:指纹
0x04:人脸
0x05:掌纹
0x06:指静脉
0x00:默认 0x00:普通成员
0x01:管理员
0x0001~0xFFFF 0x0000~0xFFFE 详见
附录:时效性
0x00:永久有效
0x01:1 次有效
……
0xFE:254 次有效
0xFF:失效
密码字节数 n
(仅用于密码类型)
同上
上报 15 raw len 类型
(1 字节)
阶段
(1 字节)
管理员标记
(1 字节)
成员 ID
(2 字节)
硬件 ID
(2 字节)
次数
(1 字节)
返回状态
(1 字节)
0x00:
仅修改某个成员的时效性
0x00:默认 0x00:普通成员
0x01:管理员
0x0001~0xFFFF 0xFFFF:默认值 0x00:默认值
(次数不允许修改)
0x00:修改失败
0xFF:修改成功
0x01:密码
0x02:门卡
0x03:指纹
0x04:人脸
0x05:掌纹
0x06:指静脉
0x00:默认 0x00:普通成员
0x01:管理员
0x0001~0xFFFF 0x0000~0xFFFE 0x00:永久有效
0x01:1 次有效
……
0xFE:254 次有效
0xFF:失效
0x00:修改失败
0xFF:修改成功

添加临时密码

数据方向 dp_id
(1 字节)
dp_type
(1 字节)
dp_data_len
(2 字节)
dp_data_value
下发 16 raw len 云端编号
(2 字节)
状态
(1 字节)
时效性
(17 字节)
次数
(1 字节)
密码长度
(1 字节)
密码内容
(n 字节)
云端分配的
关联编号
0x00:冻结
0x01:生效
详见 附录:时效性 0x00:永久有效
0x01:1 次有效
……
0xFE:254 次有效
0xFF:失效
密码字节数 n
(仅用于密码类型)
同添加开锁方式
字段含义
上报 16 raw len 云端编号
(2 字节)
硬件 ID
(2 字节)
返回状态
(1 字节)
同上 0x0000~0xFFFE 0x00:添加成功
0x01:添加失败
0x02:硬件 ID 分配完

删除临时密码

数据方向 dp_id
(1 字节)
dp_type
(1 字节)
dp_data_len
(2 字节)
dp_data_value
下发 17 raw len 硬件 ID
(2 字节)
0x0000~0xFFFE
上报 17 raw len 硬件 ID
(2 字节)
返回状态
(1 字节)
0x0000~0xFFFE 0x00:删除成功
0x01:删除失败

修改临时密码

数据方向 dp_id
(1 字节)
dp_type
(1 字节)
dp_data_len
(2 字节)
dp_data_value
下发 18 raw len 硬件 ID
(2 字节)
状态
(1 字节)
时效性
(17 字节)
次数
(1 字节)
密码长度
(1 字节)
密码内容
(n 字节)
0x0000~0xFFFE 0x00:冻结
0x01:生效
详见 附录:时效性 同添加临时密码
次数字段说明
密码字节数 n
(仅用于密码类型)
同添加临时密码
密码内容字段说明
上报 18 raw len 硬件 ID
(2 字节)
返回状态
(1 字节)
0x0000~0xFFFE 0x00:修改成功
0x01:修改失败

解锁方式同步

该公版方案支持离线创建临时密码,亦即当前设备不在线时可先在面板内编辑生成临时密码,缓存在云端。当设备连云拉取完云端缓存的临时密码后,需主动同步云端编码与硬件 ID 映射关系,以便云端绑定对应关系。
临时密码只存在设备主动上报的场景,云端不会下发同步临时密码指令,此时消息 ID 固定为 0xFFFF。

数据方向 dp_id
(1 字节)
dp_type
(1 字节)
dp_data_len
(2 字节)
dp_data_value
下发 19 raw len 消息 ID
(2 字节)
硬件类型枚举数值
(n 字节)
云端用于上报的
分包数据关联
0x01:密码
0x02:门卡
0x03:指纹
0x04:人脸
0x05:掌纹
0x06:指静脉
上报 19 raw len 阶段
(1 字节)
消息 ID
(2 字节)
数据包序号
(1 字节)
同步数据
(n 字节)
0x00:同步中 同下发 0x00~0xFF
序号从 0 开始依次递增
数据 1、数据 2、……、数据 n
数据格式定义
上报 19 raw len 阶段
(1 字节)
消息 ID
(2 字节)
总包数
(1 字节)
0x01:同步结束 同下发 总包数
例如发送了 2 次阶段为同步中的包,则总包数为 2

组合开锁记录

数据方向 dp_id
(1 字节)
dp_type
(1 字节)
dp_data_len
(2 字节)
dp_data_value
上报 74 raw len 组合类型
(1 字节)
开锁方式-1
(1 字节)
硬件 ID-1
(2 字节)
开锁方式-2
(1 字节)
硬件 ID-2
(2 字节)
0x01:指纹+密码
0x02:指纹+门卡
0x03:指纹+人脸
0x04:密码+门卡
0x05:密码+人脸
0x06:门卡+人脸
0x01:密码
0x02:门卡
0x03:指纹
0x04:人脸
0x05:掌纹
0x06:指静脉
0xF0:临时密码
0x0000~0xFFFE 同开锁方式-1 0x0000~0xFFFE

附录:时效性

字节 含义 说明 举例
1 时效起始时间 unsigned int
4 字节(大端)
例如 Unix 时间为:
123-456-789 = 0x075BCD15
若时效为永久有效,则起始时间为 0x386CD300
07
2 5B
3 CD
4 15
5 时效结束时间 unsigned int
4 字节(大端)
例如 Unix 时间为:
999-999-999 = 0x3B9AC9FF
若时效为永久有效,则结束时间为 0x72BC9B7F
3B
6 9A
7 C9
8 FF
9 时效循环方式 0x00:不循环 0x01:天循环 0x02:周循环 0x03:月循环
10 循环标志位 1 不循环时 10~17
字节全部为 0
该字节
默认为 0x00
该字节
默认为 0x00
bit7:默认为 0
bit6:31 号
……
bit0:25 号
11 循环标志位 2 该字节
默认为 0x00
该字节
默认为 0x00
bit7:24 号
……
bit0:17 号
12 循环标志位 3 该字节
默认为 0x00
该字节
默认为 0x00
bit7:16 号
……
bit0:9 号
13 循环标志位 4 该字节
默认为 0x00
bit7:默认为 0
bit6:周六
……
bit1:周一
bit0:周日
bit7:8 号
……
bit0:1 号
14 一天中起始时间 1(小时数) 起始时间:8:30 08(十进制)
15 一天中起始时间 2(分钟数) 30(十进制)
16 一天中结束时间 1(小时数) 结束时间:20:30 20(十进制)
17 一天中结束时间 2(分钟数) 30(十进制)

添加或者修改开锁方式时,时效性的循环方式和次数同时生效,但是一般仅使用以下两种情况:

  • 次数为 0x00,此时次数为永久有效,可仅处理时效的循环方式。
  • 时效的循环方式为 0x00,此时为不循环,可仅处理次数。

例如,设置 2018-01-26 08:00:002018-08-08 09:56:32 期间内,每周一至周五的早上 8:00 到 8:30 生效,则时效性为 0x 5A6A6F80 5B6A4DD0 02 0000003E 0800 081E

  • 2018-01-26 08:00:00 转换为 Unix 时间为 1516924800,即 0x5A6A6F80
  • 2018-08-08 09:56:32 转换为 Unix 时间为 1533693392,即 0x5B6A4DD0
  • 时效的循环方式为:0x02-周循环
  • 循环天标志位 1 = 循环天标志位 2 = 循环天标志位 3 = 0x00
  • 循环天标志位 4 = 0x3E(周一至周五)
  • 一天中的起始时间 1 = 0x08,一天中的起始时间 2 = 0x00
  • 一天中的结束时间 1 = 0x08,一天中的结束时间 2 = 0x1E