智能密码门禁按键版通过开放的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 )
步骤解析
将
AppSecret进行 MD5 加密,得到字符串S1。将
S1与当前的时间戳(秒级,10位,即ts参数)进行拼接,得到字符串S2。将
S2再次进行 MD5 加密,得到最终的sign。
注意事项
服务器时间校验严格,请确保发起请求的服务器时间与北京时间同步。
ts参数在 URL 中传递,且必须与计算签名时使用的ts一致。
3. 业务命令详解
针对智能门禁的密码管理,订单指令 order 主要支持以下四种操作
| 功能描述 | Order 命令结构 (JSON) | 适用场景 |
|---|---|---|
| 下发/设置密码 | {"pwd":"123456"} | 设置单组有效密码,适合临时访客或长期租户。 |
| 删除指定密码 | {"delete":"123456"} | 某个人员退租或离开时,精准移除该密码。 |
| 清空所有密码 | {"clear":"clear"} | 紧急情况或房屋重置时,一键移除所有密码。 |
| 查询密码列表 | {"list":"list"} | 审计当前的密码状态。 |
注意:设备端通常存储有限组密码,若密码已满,下发新密码可能会覆盖最早的一个。
4. 接入实现步骤
以下以 Python 和 Linux 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 分钟内完成基础对接。核心流程总结为:
组装:按照规则计算出
sign。构造:将业务动作(
pwd,delete)包装在orderJSON 对象中。执行:POST 到指定 URL。
这一方案不仅适用于门禁系统,其接口逻辑(HTTP + 签名)同样适用于芯步旗下的通断器、插座等其他智能硬件产品,具有较强的通用性和可扩展性。