门锁密码服务

更新时间:2024-04-08 08:18:04下载pdf

本文介绍蜂窝门锁密码服务的指令说明。

请求云端临时密码有两种协议,分别对应是否设置密码进制,在请求云端临时密码时请注意。

离线动态密码(0x16)

离线动态密码是指设备长时间不联网也可使用的动态密码。

MCU 发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x16
数据长度 2 7+N
数据 7+N Year(1) + mon(1) + day(1) + hour(1) + min(1) + sec(1) + code_len(1) + code(N),表示格林时间 + 密码长度 + 密码
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

示例

  • 离线密码:1849455172
  • 格林时间:2021-01-11 08:18:42
  • 发送示例:55 AA 00 16 00 11 15 01 0B 08 12 2A 0A 01 08 04 09 04 05 05 01 07 02 C3

模组回复

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x16
数据长度 2 3+N
数据 3+N Result(1) + type(1) + decode_len(1) + decode(N)
  • Result0 表示正确,非 0 表示错误(无后续数据)
  • type0 表示限时开门密码,1 表示单次开门密码,2 表示清除密码
  • decode_len:解密后数据长度
  • decode:解密数据
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

请求云端临时密码(0x14)

  • 当门锁主板检测到用户使用的是多组临时密码,才调用此接口去云端获取相关数据,更新本地的密码数据和状态,这样可以最大程度地降低功耗。

    模组给门锁的相关时间数据都是基于格林时间,门锁本地通过获取格林时间的接口来同步自己的时钟数据。

  • 每次服务端都是全量下发密码,门锁每次根据服务端返回的所有密码和状态进行更新。

  • 保留原生效周期设置,在生效周期基础上可以按照每周重复的方式,添加密码生效的计划。最多可以添加 3 个 schedule。

MCU 发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x14
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

门锁获取当前生效临时密码:

55 aa 00 14 00 00 13

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x14
数据长度 2 0x0001+N(临时密码)
数据 1+N 数据长度为 1+N 字节。
  • Data[0]:是否成功获取密码。
    • 0 表示失败,后面不会带上相关密码和有效时间数据,数据内容长度为 1。
    • 1 表示成功。
  • Data[1]:密码组数,0~10。当密码组数为 0 的时候,表示面板没有创建密码。串口传输不会带上相关密码和有效时间数据。此密码组数为本包数据含有的密码数据
  • Data[2]:密码长度,后面每组的密码长度保持一致。
  • Data[3]:Bit7 表示后续是否还有数据包。Bit6-bit0 表示本包序号,从 0 开始 // 第一组密码相关数据
  • Data[4]:密码编号,1~50。实际编号需要在密码编号的数据上加 900。
  • Data[5]:密码有效次数,0 表示不限制次数密码,即有效期内可以不限次数开门。1 表示一次性密码,即有效期内只能开一次门。
  • Data[6]:密码当前状态,0 表示密码有效,1 表示面板已经进行了删除操作,此密码无效。
  • 密码生效日期(格林时间)
    • Data[7] 为年,0x00 表示 2000 年
    • Data[8] 为月,从 1 开始到 12 结束
    • Data[9] 为日,从 1 开始到 31 结束
    • Data[10] 为时,从 0 开始到 23 结束
    • Data[11] 为分,从 0 开始到 59 结束
    • Data[12] 为秒,从 0 开始到 59 结束
  • 密码截止日期(格林时间)
    • Data[13] 为年,0x00 表示 2000 年
    • Data[14] 为月,从 1 开始到 12 结束
    • Data[15] 为日,从 1 开始到 31 结束
    • Data[16] 为时,从 0 开始到 23 结束
    • Data[17] 为分,从 0 开始到 59 结束
    • Data[18] 为秒,从 0 开始到 59 结束
  • 临时密码,具体字节数 N=Data[2],密码数据传输字符的 ASCII 码
    • Data[19+N] 为 schedule 条数,即第一条 schedule 数据
    • Data[20+N]:0 表示非全天有效,分时间段有效。1 表示全天有效,后面的起始时间和结束时间为无效数据。
    • Data[21+N]:开始时间(小时)
    • Data[22+N]:开始时间(分钟)
    • Data[23+N]:结束时间(小时)
    • Data[24+N]:结束时间(分钟)
    • Data[25+N]:周循环
      • Bit0:周日
      • Bit1:周一
      • Bit2:周二
      • Bit3:周三
      • Bit4:周四
      • Bit5:周五
      • Bit6:周六
      若此条 schedule 周日和周三循环,则为 0x09/第二条 schedule 数据/…//第二组密码数据……
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

密码进制设置(0x17)

密码进制指连续的密码数字按键范围,包含以下两个概念:

  • 进制:表示所有密码数字的个数,支持 4-10。

  • 起始值:表示数字开始的数值,仅支持 0 和 1。

    密码进制对应
    密码按键数
    密码按键
    从 1/0 开始
    是否支持
    动态密码
    是否支持
    离线密码
    在线密码
    最小长度
    安全等级 在线密码
    多语言配置
    4 可选 不支持 不支持 8 1/29W 支持 8-12 位密码
    5 可选 支持 不支持 8 1/39W 支持 8-12 位密码
    6 可选 支持 不支持 8 1/100W 支持 8-12 位密码
    7 可选 支持 支持 8 1/100W 支持 8-11 位密码
    8 可选 支持 支持 7 1/100W 支持 7-11 位密码
    9 可选 支持 支持 7 1/100W 支持 7-10 位密码
    10 不可选 支持 支持 7 1/100W 默认支持 7 位密码

MCU 发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x17
数据长度 2 0x0002
数据 2 Data[0] 为进制值,Data[1] 为起始值
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

示例

  • 配置数字 12345,分别配置进制为 5,起始值为 1。

  • 配置数字 012345,分别配置进制为 6,起始值为 0。

密码进制 0x17 设置,需要在获取信息查询产品信息 0x01 之后进行设置,并在密码操作前设置。

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x17
数据长度 2 0x0001
数据 1
  • 0 表示设置成功
  • 0 表示设置失败
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

请求云端临时密码(0x14,使用密码进制)

  • 当门锁主板检测到用户使用的是多组临时密码,才调用此接口去云端获取相关数据,更新本地的密码数据和状态,这样可以最大程度地降低功耗。

    模组给门锁的相关时间数据都是基于格林时间,门锁本地通过获取格林时间的接口来同步自己的时钟数据。

  • 每次服务端都是全量下发密码,门锁每次根据服务端返回的所有密码和状态进行更新。

  • 保留原生效周期设置,在生效周期基础上可以按照每周重复的方式,添加密码生效的计划。最多可以添加 3 个 schedule。

MCU 发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x14
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

门锁获取当前生效临时密码:

55 aa 00 14 00 00 13

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x14
数据长度 2 0x0001+N(临时密码)
数据 1+N 数据长度为 1+N 字节。
  • Data[0]:是否成功获取密码。
    • 0 表示失败,后面不会带上相关密码和有效时间数据,数据内容长度为 1。
    • 1 表示成功。
  • Data[1]:密码组数,0~10。当密码组数为 0 的时候,表示面板没有创建密码。串口传输不会带上相关密码和有效时间数据。此密码组数为本包数据含有的密码数据
  • Data[2]:Bit7 表示后续是否还有数据包。Bit6-bit0 表示本包序号,从 0 开始。第一组密码相关数据:长度+编号+有效次数+当前状态+生效日期+截止日期+schedule 条数+schedule 数据。
  • Data[3]:密码长度,后面每组的密码长度保持一致。
  • Data[4]:密码编号,1~50,实际编号需要在密码编号的数据上加 900。
  • Data[5]:密码有效次数,0 表示不限制次数密码,即有效期内可以不限次数开门。1 表示一次性密码,即有效期内只能开一次门。
  • Data[6]:密码当前状态,0 表示密码有效,1 表示面板已经进行了删除操作,此密码无效。
  • 密码生效日期(格林时间)
    • Data[7] 为年,0x00 表示 2000 年
    • Data[8] 为月,从 1 开始到 12 结束
    • Data[9] 为日,从 1 开始到 31 结束
    • Data[10] 为时,从 0 开始到 23 结束
    • Data[11] 为分,从 0 开始到 59 结束
    • Data[12] 为秒,从 0 开始到 59 结束
  • 密码截止日期(格林时间)
    • Data[13] 为年,0x00 表示 2000 年
    • Data[14] 为月,从 1 开始到 12 结束
    • Data[15] 为日,从 1 开始到 31 结束
    • Data[16] 为时,从 0 开始到 23 结束
    • Data[17] 为分,从 0 开始到 59 结束
    • Data[18] 为秒,从 0 开始到 59 结束
  • 临时密码,具体字节数 N=Data[2],密码数据传输字符的 ASCII 码
    • Data[19+N] 为 schedule 条数,即第一条 schedule 数据
    • Data[20+N]:0 表示非全天有效,分时间段有效。1 表示全天有效,后面的起始时间和结束时间为无效数据。
    • Data[21+N]:开始时间(小时)
    • Data[22+N]:开始时间(分钟)
    • Data[23+N]:结束时间(小时)
    • Data[24+N]:结束时间(分钟)
    • Data[25+N]:周循环
      • Bit0:周日
      • Bit1:周一
      • Bit2:周二
      • Bit3:周三
      • Bit4:周四
      • Bit5:周五
      • Bit6:周六
      若此条 schedule 周日和周三循环,则为 0x09/第二条 schedule 数据/…//第二组密码数据……
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余