主题
工控机子系统
负责人:硬件端负责人
运行环境:门店本地工控机(定昌 A576,Ubuntu 22.04 LTS)
核心职责:连接物理硬件,执行实时控制逻辑,基于双密钥体系完成“上行业务签名 + 下行控制接入”
职责边界
工控机子系统是硬件世界与软件世界的桥梁,它直接与继电器、门磁、摄像头等物理设备交互,同时与客户私有云和首期选定的腾讯云 IoT Explorer 保持通信。
工控机负责的事情:
- 驱动 AB 门的电磁锁开关
- 读取门磁传感器状态(门开/门关)
- 驱动人脸识别摄像头,执行本地人脸比对
- 控制灯光继电器
- 控制淋浴阀(待定)
- 监控 UPS 电源状态
- 与腾讯云 IoT Explorer 建立 MQTT 长连接,接收平台无关 JSON 控制指令
- 使用
SN_Secret对上行 HTTPS 请求进行签名
工控机不负责的事情:
- 订单/支付逻辑(由客户 Backend 负责)
- 前端展示(由小程序/管理后台负责)
- 人脸信息的首次录入(由小程序负责,录入后同步到本地)
硬件接口清单
| 接口类型 | 用途 | 说明 |
|---|---|---|
| GPIO 输出 | 控制电磁锁(A 门 / B 门) | 高电平解锁,低电平锁定 |
| GPIO 输入 | 读取门磁传感器(A 门 / B 门) | 检测门开关状态 |
| GPIO 输入 | 检测隔离间人体传感器 | 判断隔离间内是否有人 |
| GPIO 输出 | 灯光继电器控制 | 多路继电器分区控制 |
| USB / CSI | 人脸识别摄像头 | 接入人脸 SDK |
| RS485 / GPIO | 淋浴控制(待定) | 硬件方案确定后补充 |
| RS485 / 串口 | UPS 通信 | 读取电量、告警状态 |
| 以太网 | 与客户 Backend / MQTT 服务通信 | 有线优先,4G 备用 |
本地服务架构
AB 门状态机
详细刷脸逻辑参见 刷脸系统文档
状态机维护以下变量:
| 变量 | 类型 | 说明 |
|---|---|---|
doorA_locked | bool | A 门是否锁定 |
doorB_locked | bool | B 门是否锁定 |
doorA_closed | bool | A 门是否已关闭(门磁) |
doorB_closed | bool | B 门是否已关闭(门磁) |
chamber_occupied | bool | 隔离间内是否有人(人体传感器) |
face_verified | bool | 当前隔离间内人员是否已刷脸成功 |
本地人脸数据库同步策略
- 初次同步:工控机启动时从云端拉取所有有效会员的人脸特征向量
- 增量同步:订阅 MQTT Topic
{ProductID}/{deviceName}/data中的人脸同步类指令,客户私有云推送新增/删除事件 - 刷脸时回退:本地库无此人脸 → 将图像发送至客户 Backend 验证 → 验证通过后将特征向量写入本地库
- 过期清理:定期清理已过期会员的本地人脸数据(以云端状态为准)
双密钥安全模型
| 凭证 | 存储位置 | 用途 |
|---|---|---|
SN_Secret | 工控机本地 + Centre + 客户私有云数据库/Redis | 工控机 -> 客户私有云 HTTPS 高频请求签名 |
IoT 连接凭证(DeviceSecret / 设备证书) | 工控机本地 + 首期腾讯云 IoT Explorer | 工控机 MQTT 长连接认证与下行控制链路 |
交付与初始化关系
- 出厂仅烧录
SN + SN_Secret,不写入客户信息 - 设备首次通电通过
fcc-api.fitron.vip完成客户私有云寻址 - 客户私有云完成
SN_Secret跨云同步后,登记到本地数据库/Redis - 客户私有云在腾讯云 IoT Explorer 动态创建设备并下发 IoT 连接凭证
- 注册闭环后,设备运行不依赖 Centre 在线
详细协议见工控机与云端通信协议定义。
技术选型建议
| 组件 | 建议方案 | 备注 |
|---|---|---|
| 开发语言 | Python 3.x | 生态丰富,AI 辅助友好 |
| 人脸 SDK | 商业 SDK 或 InsightFace | 根据精度/成本权衡 |
| 本地数据库 | SQLite | 轻量,无需安装 |
| MQTT 客户端 | paho-mqtt | Python 标准库 |
| GPIO 操作 | RPi.GPIO / gpiod / pyserial | 根据工控机硬件选型 |
| 进程管理 | systemd / supervisord | 保证开机自启和崩溃恢复 |
| IoT 连接平台 | 首期腾讯云 IoT Explorer | 只使用长连接、连接鉴权、Topic 权限和 JSON 消息透传 |
MQTT 平台适配要求
- 工控机主程序只依赖本地
MqttClient抽象,不在门禁、灯控、人脸同步等业务模块中直接写腾讯云 SDK 逻辑。 - 收到的 MQTT 消息必须按自定义 JSON Schema 校验,通过
msg_id做幂等,通过timestamp做时间窗校验。 - 工控机不解析 IoT 平台物模型语义,不依赖设备影子或平台规则引擎。
- 连接配置、鉴权材料和 Topic 映射通过本地
MqttClient抽象适配不同平台,业务指令处理逻辑保持不变。
待确认事项
- [ ] 人脸识别 SDK 选型(本地推理精度与算力要求)
- [ ] 隔离间人体检测方案(红外传感器 / 摄像头视频分析)
- [ ] 淋浴控制硬件方案
- [ ] 4G 备用网络模块选型