锁操作
锁操作模块负责门锁的核心控制功能,包括开门、关门、时间校准等操作。
概述
锁操作主要包括以下功能:
- 开关门控制:远程控制门锁的开启和关闭
- 时间校准:同步门锁的系统时间
变更记录
重要变更 (2026-03-06)
新增远程开锁、远程关锁指令,支持通过网关/WIFI进行远程控制。
- 新增指令码
0x40:远程开门 - 新增指令码
0x60:远程关门
重要变更 (2025-08-15)
因定义不明确,废弃开门指令 0x3005 中 OpenMode 字段的 第0位。
- 现有实现代码不变
- 后续锁端实现不使用该字段
- 联网 Token 的验证应仅通过锁设置值判断,而不是通过下发的指令决定
开门
控制门锁开启或关闭。
指令码
0x3005
请求参数
| 字段名称 | 类型 | 长度 | 说明 |
|---|---|---|---|
| CmdID | 整型 | 2 | 指令 ID |
| LockID | 字符串 | 40 | 锁 ID |
| UserID | 字符串 | 20 | 用户 ID |
| OpenMode | 整型 | 1 | 开锁方式(见下方说明) |
| OpenTime | 整型 | 4 | 开锁当前时间(UNIX 时间格式) |
| Token | 整型 | 4 | 动态口令 |
| AuthCodeLen | 整型 | 1 | 鉴权码长度 |
| AuthCode | 字符串 | 变长 | 鉴权码,用于锁验证用户合法性 |
| OnlineToken | 字符串 | 16 | 手机联网的 Token(云端生成) |
OpenMode 字段说明
OpenMode 是一个位标志字段,各位定义如下:
| 位 | 值 | 说明 |
|---|---|---|
| Bit0 | - | 已废弃,为前后兼容保留,锁端不进行判断 |
| Bit1 | 0 | 不是遥控器 |
| 1 | 遥控器 | |
| Bit2 | 0 | 开门后自动落锁 |
| 1 | 开门后不自动落锁 | |
| Bit5 | 0 | 开门 |
| 1 | 关门 | |
| Bit6 | 0 | 不是网关/WIFI操作 |
| 1 | 网关/WIFI操作 |
示例
0x00(二进制00000000):离线开门,自动落锁0x04(二进制00000100):开门后不自动落锁0x20(二进制00100000):关门操作0x40(二进制01000000):远程开门,自动落锁(bit5=0, bit6=1)0x60(二进制01100000):远程关门(bit5=1, bit6=1)
OnlineToken 字段说明
OnlineToken 由云端生成,长度为 14 字节,格式如下:
"8" + 时间戳(单位为秒,14 字节字符,不足前面补 0) + 校验字节加密方法
使用公钥 fp1 加密(参见离线密码生成方法)。
响应参数
| 字段名称 | 类型 | 长度 | 说明 |
|---|---|---|---|
| CmdID | 整型 | 2 | 指令 ID |
| Token | 整型 | 4 | 动态口令 |
| Status | 整型 | 1 | 处理状态 |
| Power | 整型 | 1 | 剩余电量(百分比) |
| OpenMode | 整型 | 1 | 开锁方式 |
| Power1 | 整型 | 1 | 电池1剩余电量(百分比) |
校准时间
同步门锁的系统时间,确保时间相关功能(如临时密码、时间段权限等)正常工作。
指令码
0x30f0
请求参数
| 字段名称 | 类型 | 长度 | 说明 |
|---|---|---|---|
| CmdID | 整型 | 2 | 指令 ID |
| LockID | 字符串 | 40 | 锁 ID |
| UserID | 字符串 | 20 | 用户 ID |
| NowTime | 整型 | 4 | 当前时间(UNIX 时间格式) |
| Token | 整型 | 4 | 动态口令 |
| AuthCodeLen | 整型 | 1 | 鉴权码长度 |
| AuthCode | 字符串 | 变长 | 鉴权码,用于锁验证用户合法性 |
响应参数
| 字段名称 | 类型 | 长度 | 说明 |
|---|---|---|---|
| CmdID | 整型 | 2 | 指令 ID |
| Status | 整型 | 1 | 处理状态 |
