CATALOG

离线密码门禁最大的优势就是即使断网也能正常开门——所以对接思路和普通远程开关不太一样,核心是两件事:一是远程下发/管理密码,二是门禁本地验证密码并上报记录。下面把整个对接方案串起来讲一下。

一、 背景与适用场景

芯步的智能密码门禁 是一款支持 HTTP接口 控制的硬件设备。它最核心的特点是支持 离线密码验证

这意味即使在断网情况下,只要你提前把密码下发给设备,它也能本地校验开门,网络恢复后再把记录上报到云端。

常见应用场景:

  • 远程办公管理:员工离职,直接在后台删密码,无需去现场。

  • 临时访客:给保洁或快递生成一个“仅今天下午3-5点有效”的密码。

  • 出租屋/民宿:租客下单后自动下发密码,退房自动失效。

二、 核心交互流程图解

整个交互分为 “配置/下发”“离线验证与反馈” 两个阶段:

sequenceDiagram
    participant App as 你的业务系统
    participant API as 芯步开放API
    participant Device as 芯步密码门禁
    participant User as 用户/访客

    Note over App,Device: 第一阶段:远程配置密码
    App->>API: 1. HTTP请求(设置/删除密码)
    API->>Device: 2. 云端下发指令
    Device-->>API: 3. 指令执行结果
    API-->>App: 4. 返回成功/失败

    Note over User,Device: 第二阶段:离线开门与上报
    User->>Device: 5. 输入密码
    Device->>Device: 6. 本地离线验证(无需网络)
    Device-->>User: 7. 验证通过,继电器开锁
    Device->>API: 8. 网络恢复后/实时上报开门记录
    API-->>App: 9. 推送开门事件(webhook/消息)

三、 详细对接步骤

以下是技术实现环节的详细拆解。

1. 准备工作:获取关键凭证

在开始编程前,你需要登录芯步控制台,拿到三样东西:

  • AppIDAppSecret:相当于你系统的账号密码,用于生成签名。

  • 设备ID:门禁设备的唯一ID,贴在设备外壳上或者在控制台能看到。

  • 指令集文档:既然是密码门禁,主要是 pwdlistdeleteclear 这几个命令。

2. 远程下发密码(核心功能)

当有新员工入职或者有访客时,你需要通过接口把密码写到门禁里。

HTTP 请求示例(以设置密码为例):

  • 请求地址http(s)://api.thingboot.com/{你的AppID}/device/control/

  • 请求方式POST

在参数中,你需要构造一个包含密码和有效期的 JSON 串。

实际请求时还需要加上 signts 参数,这里用 PHP 写个简单例子方便理解:

3. 管理密码:查看、删除与清空

  • 查看密码列表下发 {"list":1} 指令,设备会返回当前存储的所有密码。如果设备不在线,这个指令会缓存,等设备上线再执行。不过注意:如果你的业务系统需要实时展示密码列表,更推荐你自己维护一个数据库——每次下发密码时同步记录一份,查询直接走本地,不依赖设备响应。

  • 删除单个密码下发 {"delete":"123456"} 即可删除指定密码。如果设备离线,指令缓存后设备上线时会自动执行删除,这个过程通常是秒级到分钟级,取决于设备的心跳间隔。

  • 清空所有密码

4. 开门记录的回调处理

这是离线方案的关键:门禁本地验证密码后怎么把记录告诉你的系统?

芯步平台支持 异步消息推送,你需要准备一个公网可访问的 Webhook URL。当有人开门时,设备上报数据,平台会往这个 URL 发请求。

推送的数据格式示例

拿到这个数据后,你就可以记录考勤、或者实时推送“您的房间已被进入”通知给业主了。

四、 系统架构

在对接过程中,不要把设备当成数据库来用,这一点非常重要:

  1. 冗余存储:所有下发的密码,除了发给硬件,必须保存一份在你的业务数据库里。

  2. 定期同步:写一个定时任务(例如每天凌晨3点),通过API拉取设备状态或密码列表,与数据库做比对修正,防止因网络抖动导致的数据不一致。

  3. 安全设计

    • 密码传输全程用 HTTPS。

    • 敏感区域(如机房)“远程临时密码+本地刷卡”双因素认证,在 orderextra 字段里带上业务单号,方便追溯。

五、 常见问题与避坑指南

在实际开发中,这几个点最容易踩坑:

  1. 关于代码 200 的含义调用接口返回 200,仅代表指令被云平台成功接收。设备如果处于断网状态,你可能要过几秒甚至几分钟才会在设备上生效。如果业务要求“下发后必须立即生效”,配合 Webhook 回调做执行确认。

  2. 离线密码的时效性设备本地时间是靠电池维持的,如果设备断电过久导致时间不准,可能导致带有效期的密码提前失效或过期密码仍可使用。解决办法:系统可以每天定时下发一条校时指令,确保设备时钟准确。

  3. 自定义数据追踪在下发指令时多用 extra 字段。比如 {"pwd":"123", "extra":"order_9527"},这样后续收到的开门推送里会原样带着 order_9527,方便你把开门事件和具体的订单关联起来

通过以上方案,你可以快速实现一个稳定的远程门禁控制系统。这套方案已经在很多短租和办公场景跑通了,希望对你有帮助。