CATALOG

智能密码门禁按键版通过开放的HTTP接口,可以方便地集成到各类管理系统中,实现远程密码下发与取消。以下方案涵盖了签名认证、核心命令、代码示例和安全策略。

解决方案:基于芯步开放接口的智能门禁密码管理

1. 技术背景与准备

芯步的智能密码门禁(按键版)设备型号为 UNI-MJ-MM-AJ,其核心优势在于开放了标准的 HTTP 接口,无需网关,直连 WiFi 即可实现云端或局域网内的控制

在开发之前,请准备以下三项关键信息(可在芯步控制台的“开发设置”中获取):

  • AppID:应用唯一标识。

  • AppSecret:用于签名加密的密钥。

  • Device ID:设备的唯一ID(即门禁背面的标签或配网后在列表查看)。

接口通用地址http(s)://api.thingboot.com/{AppID}/device/control/?sign={sign}&ts={ts}

2. 接口安全机制

为了防止接口被恶意调用,所有 OpenAPI 请求都需要携带 签名 (sign)。签名生成逻辑如下:

公式sign = md5( md5(AppSecret) + ts )

步骤解析

  1. AppSecret 进行 MD5 加密,得到字符串 S1

  2. S1 与当前的时间戳(秒级,10位,即 ts 参数)进行拼接,得到字符串 S2

  3. S2 再次进行 MD5 加密,得到最终的 sign

注意事项

  • 服务器时间校验严格,请确保发起请求的服务器时间与北京时间同步。

  • ts 参数在 URL 中传递,且必须与计算签名时使用的 ts 一致

3. 业务命令详解

针对智能门禁的密码管理,订单指令 order 主要支持以下四种操作

功能描述Order 命令结构 (JSON)适用场景
下发/设置密码{"pwd":"123456"}设置单组有效密码,适合临时访客或长期租户。
删除指定密码{"delete":"123456"}某个人员退租或离开时,精准移除该密码。
清空所有密码{"clear":"clear"}紧急情况或房屋重置时,一键移除所有密码。
查询密码列表{"list":"list"}审计当前的密码状态。

注意:设备端通常存储有限组密码,若密码已满,下发新密码可能会覆盖最早的一个。

4. 接入实现步骤

以下以 PythonLinux Curl 为例,演示如何集成“下发密码”与“取消密码”功能。

4.1 下发密码

需求:给门禁(Device ID: 10086)下发一个临时密码 123456

Python 实现

4.2 取消/删除密码

需求:租客退房,删除密码 123456

Python 实现只需修改 payload 中的 order 字段,其他代码保持不变。

4.3 Curl 命令示例

如果你在调试终端,可以直接使用 Curl 命令:

5. 最佳实践与安全

在实际的项目落地中,除了单纯的接口调用,还采用以下策略来提升系统的健壮性和安全性:

1. 采用“先断后通”模式管理门禁在修改密码前,如果涉及远程开门,使用 reset 命令(先断后通)以确保门锁电机获得足够的能量触发

2. 异步处理与结果确认由于网络延迟,接口返回成功仅代表指令下发至云端。为了确保门禁确实收到了新密码(尤其是在网络不稳定时),可以采用以下两种方案:

  • 方案A(推荐) :采用 MQTT 协议对接芯步平台,订阅设备的上行消息,实时获取“密码设置成功”的回调

  • 方案B:下发密码后,延迟几秒,再调用 {"list":"list"} 接口查询当前设备密码列表,确认目标密码是否存在于列表中。

3. 异常处理机制

  • 签名错误(code 5006) :检查时间是,计算 sign 时使用的 ts 必须与 URL 中的 ts 字符串完全一致

  • 频率限制:单设备访问限制为 1次/秒,批量操作时请添加适当延时,避免触发限流(code 5009)

6. 总结

通过芯步提供的标准化 HTTP 接口,开发者可以在 10 分钟内完成基础对接。核心流程总结为:

  1. 组装:按照规则计算出 sign

  2. 构造:将业务动作(pwd, delete)包装在 order JSON 对象中。

  3. 执行:POST 到指定 URL。

这一方案不仅适用于门禁系统,其接口逻辑(HTTP + 签名)同样适用于芯步旗下的通断器、插座等其他智能硬件产品,具有较强的通用性和可扩展性