HTTP 门禁应用
基于 DejaOS 的门禁一体机应用:触摸屏上支持 NFC 刷卡、PIN 密码、QR 扫码三种通行方式;设备在提供 HTTP API(v1) 的同时,还内置 Web 管理后台,可用电脑或手机浏览器登录管理,适用于 FC6820 门禁一体机。
这是面向实际部署的完整应用。可简单调整后直接上线。
Web 管理界面
设备联网后,本机 HTTP 服务除 JSON API 外,还提供可在浏览器中使用的管理端。在局域网内访问:
http://<设备IP>:8080
即可查看设备信息、远程开门、同步时间,并管理用户、通行记录与系统事件,无需单独安装软件。界面已适配手机浏览器,现场用手机即可运维。
| 界面 | 预览 |
|---|---|
| 管理后台(浏览器) | Access Control Admin:侧栏可进入设备信息、配置、用户、通行记录、事件、通行码(NFC / PIN / QR)及帮助。 |
设备触摸屏界面截图
下列截图为设备本机触摸屏界面预览;实际文案以设备为准。
| 界面 | 预览 |
|---|---|
| 首页 | 设备主页,进入通行与设置入口。 |
| 密码开门 | 用户使用 PIN 在本地开门。 |
| 管理登录 | 进入管理功能前的身份校验。 |
| 网络配置 | 配置有线/无线网络参数。 |
| 设置 | 设备与业务相关设置项。 |
| 系统信息 | 查看序列号、固件版本、IP、MAC、运行时长、剩余内存与存储。 |
配网与远程管理
触摸屏除 PIN 开门外,管理菜单里最关键的是网络配置:有线(ETH)与 Wi‑Fi均支持 DHCP 自动获取地址。若需静态 IP,建议先用 DHCP 接入局域网,再通过 http://<设备IP>:8080 的 Web 管理或 HTTP API 改为固定地址。
Wi‑Fi 支持扫描 标准 Wi‑Fi 分享二维码(WIFI: 分项格式,含 SSID 与密码);Android、电脑(Windows) 以及 iPhone 17 及以上 系统生成的 Wi‑Fi 分享码通常可直接使用。
设备可在屏幕上一键生成二维码,手机扫码打开 http://<设备IP>:8080,无需手输 URL。网络就绪后,即可使用 Web 管理界面,并通过 /api/v1/ 接口对接业务系统。
项目概述
- 本地交互:触摸屏 UI,通行方式固定为 NFC、PIN、QR 三种。
- Web 管理:浏览器访问
http://<设备IP>:8080(与 API 同端口),支持桌面与手机。 - HTTP API:REST 风格 JSON 接口,供门禁平台、访客系统或脚本对接。
- 多 Worker 架构:主线程负责启动与协调;硬件、UI、网络、HTTP 分 Worker 运行,职责清晰。
- 数据持久化:使用 SQLite(如
AccessDB)保存配置、用户凭证、通行记录。
完整源码目录:GitHub — http_access/source/src
通行二维码(通行码)
二维码里编码的是 JSON 文本(UTF-8)。其中 value 须与该用户在设备上的 qr 凭证 value 一致。
设备会校验 签名(若已配置 barcodeConfig.key)以及 时间戳:签名不匹配会失败;timestamp 与设备当前时间的偏差超过允许范围(默认 ±10 秒,具体以设备配置为准)也会通行失败。
生成 sign:将 String(value) + String(timestamp) + String(key) 三段直接拼接(无分隔符),做 MD5,得到 32 位小写十六进制 字符串;key 与设备 barcodeConfig.key 相同。未启用签名密钥时,载荷可不写 sign,仅含 value 与毫秒级 timestamp,时间戳仍须在上述时间窗口内有效。
有签名时载荷示例:
{
"value": "QR0001A",
"timestamp": 1741234567890,
"sign": "小写十六进制 MD5 共 32 位"
}
用户是否允许通行,还可受 HTTP API 中 period 约束(见下文附录 B)。
Web 管理界面 内带有 通行码生成 页面,可用它生成二维码并扫码试用。

示意:在通行码生成页填写 凭证值、签名密钥(未启用可不填)与 过期时间(秒) 后生成二维码。
项目结构(概要)
应用仓库路径:apps/solutions/access/http_access/。source/src 下大致分工如下:
http_access/source/
├── app.dxproj
├── src/
│ ├── main.js # 入口:数据库初始化、创建各 Worker
│ ├── uiWorker.js # UI Worker 入口
│ ├── UIManager.js # 界面调度
│ ├── constants.js
│ ├── components/ # UI 组件
│ ├── pages/ # 各业务页面
│ ├── service/ # 数据与业务服务(如 AccessDB)
│ ├── web/ # 与 Web/HTTP 相关资源
│ └── worker/
│ ├── hardwareWorker.js # 门锁、读头与硬件侧逻辑
│ ├── networkWorker.js # 网络相关
│ └── httpWorker.js # HTTP API 服务
└── screenshot/
门禁设备 HTTP API 参考(v1)
以下说明如何通过 HTTP 与单台门禁设备对接。
1. 概述与约定
- 协议:HTTP;请求/响应体为 JSON(
Content-Type: application/json)。 - 方法:仅使用
GET、POST。 - 路径前缀:
/api/v1/。 - 设备地址:
http://<设备IP>:8080(端口以实际配置为准)。
2. 调用建议
- 对同一台设备建议串行调用,避免并发压满设备。
- 多台设备可并行访问不同 IP,每台设备内部仍建议串行。
3. 认证
除 GET /api/v1/test 外,均需在请求头携带:
X-API-Key: <YOUR_API_KEY>
未携带或错误时示例:
{ "code": 2, "message": "未授权" }
出厂默认密钥一般为 password(可在设备上修改,修改后使用新密钥)。配置项中的 apiKey 与 Web 管理登录密码一致。