驱动管理
协议驱动是平台连接物理设备的桥梁,以独立微服务进程运行。本页面用于查看驱动运行状态、了解驱动参数,以及执行通道心跳自检。

驱动从哪里来
驱动列表由平台自动维护,无需手工添加:驱动进程启动后会通过 EMQX 总线向平台注册(主题 iot/driver/register),随后每 5 秒上报一次心跳。驱动进程停止或崩溃时,平台通过 LWT 遗嘱消息或心跳看门狗(15 秒超时)自动将其置为离线。
因此,要让一个驱动出现在列表中并在线,只需要把驱动进程启动起来。内置驱动见下表:
| 驱动 | 默认端口 | 协议 |
|---|---|---|
unihh-driver-modbus | 28011 | Modbus TCP / RTU |
unihh-driver-s7 | 28012 | 西门子 S7-200 SMART / 300 / 1200 / 1500 |
unihh-driver-opcua | 28013 | OPC UA |
查询与筛选
页面顶部支持按驱动 Code / 名称模糊搜索,并按运行状态筛选(在线 Running / 离线 Offline)。
驱动卡片
每张卡片展示一个驱动的实时运行信息:
| 字段 | 含义 |
|---|---|
| 驱动 Code | 驱动唯一标识,创建设备时据此选择驱动 |
| 运行状态 | 在线 / 离线 |
| 已连接设备 | 该驱动当前管理的设备数量 |
| 活动 Socket 通道 | 底层活跃连接句柄数 |
| 传输规约 | 驱动支持的协议说明 |
| 内存估算 | 驱动进程内存占用估算 |
| 参数默认值 | 驱动连接参数的定义与默认值,创建设备时以此为模板生成参数表单 |
通道心跳自检
点击卡片上的通道心跳自检按钮,平台对驱动执行双重检验:
- 优先通过 HTTP 探测驱动端点(
{serviceUrl}/api/v1/driver/status,2 秒超时),获取底层活跃设备与 Socket 句柄数,并计算通信往返时延(RTT); - 结合 MQTT 实时心跳活跃度兜底判断。
探测成功:驱动状态即时刷新为在线,并返回毫秒级时延;探测失败:平台立即将数据库状态修正为离线,并级联将下挂设备标记为离线。
使用场景
- 驱动状态显示离线,但你不确定是驱动真的挂了还是状态未刷新 → 点一次自检即可确认;
- 现场反馈采集变慢 → 对比自检返回的 RTT 与历史值,定位是网络问题还是驱动问题。
常见问题
驱动一直显示离线?
- 确认驱动进程已启动且端口正确(
netstat -ano | findstr 28011); - 确认 EMQX 正常运行,驱动与平台连的是同一个 EMQX;
- 点击通道心跳自检,根据返回结果判断;
- 查看驱动进程日志是否有 MQTT 连接失败报错(账号密码错误是常见原因,默认
unihh/unihh)。
需要修改驱动参数怎么办?
驱动连接参数在设备管理中按设备逐台配置,表单由驱动的参数 Schema 动态生成,保存后经 MQTT 热下发,无需重启驱动。