主页
这是网关 Web UI 的主页面。它以卡片形式在单一画面中展示网关的 所有 运行状态。各卡片每 1 秒周期 从后端 (/monitor/bean) 重新获取值并更新,仅 Sparkplug B 卡片 独立按 5 秒周期 (/api/v1/transfer) 更新。

点击左上角的 PlantPulse 标志 或直接通过 http://<gateway>/ui/main 访问。
- MQTT / Sparkplug B / OPC UA 服务器 卡片:直接查找
app.properties的*.enable/host/port/user键。由于 install.sh 为每个设备生成随机密码,用户项可能为空或在不同设备间显示不一致。 - Docker 卡片:需要挂载
/var/run/docker.sock。plantpulse-edge自身执行 self-exclude — 不显示在列表中(防止误操作 start/stop/delete)。 - 网络 卡片 (LAN1/LAN2/WiFi/GSM/VPN/管理):映射为
edge.net.<role>.iface值。若像 dev 设备一样使用enp1s0 / enp2s0 / tailscale0等 systemd predictable 名称,则在app.properties中直接配置(可通过 install.sh 的NET1_IFACE=...环境变量自动反映)。 - 组件健康单行确认:
curl http://localhost/api/v1/system/health(无需认证,8 组件状态映射 + 503 分支)。
卡片概览 (共 ~30 个)
采用横向 6 列网格。卡片分为 3 种类型:
| 类型 | 颜色 | 含义 |
|---|---|---|
| action_box (白底, 大图标) | 灰色边框 | 点击后跳转至相应菜单 |
| black_box (黑底) | 灰色文字 | 不变的网关信息 |
| gray_box (白底, 灰色页眉) | 浅灰色 | 实时监控 — 值每秒更新 |
1. 顶部操作 / 信息 (第 1 行)
1.1 엣지 정보 (black_box)
显示内容:该网关的 固定 标识信息。仅在启动时测量一次并固定在画面中。
| 字段 | 含义 | 来源 |
|---|---|---|
| 主机名 | OS 的 hostname (例如: pe-edge-01) | EdgeContext.hostname |
| O/S | OS 名称 + 架构 (例如: Linux (amd64)) | os.name + os.arch |
| 内核 | 内核版本 (例如: 5.14.0-...) | os.version |
| 版本 | 网关 SW 版本 (例如: V2026.05.08) | app.properties |
| 构建日期 | 产出物构建日期 (例如: 2026-05-08) | BUILD_DATE |
⚠ 主机名、O/S 信息仅在网关重启后 OS 发生变更时才会改变。
1.2 프로토콜 연결 하기 (action_box)
→ 点击跳转至 /ui/connect/connect。用于添加新 PLC / OPC-UA / MQTT / 模拟器连接的画面。
1.3 연결된 목록 (N) (action_box)
→ 点击跳转至 /ui/connect/list。括号中的 N 为当前注册的 OPC(连接) 数量 (monitor.opc_count)。
1.4 애플리케이션 (action_box)
→ /ui/apps。启动/停止/管理基于 Docker 的用户应用程序。
1.5 노-코드 플로우 (action_box)
→ /ui/flow (Node-RED 嵌入)。
详细用法:流 (Node-RED)
1.6 환경 설정 (action_box)
→ /ui/system/config。直接编辑 app.properties + 系统重启 / 重新启动 / 备份 / 清理临时文件等。
2. 网关识别 (3 cards)
2.1 엣지 시작 시간 (gray_box)
显示内容:网关 (Tomcat) 最后一次启动的精确时间 — yyyy년 MM월 dd일 [a] HH시 mm분 ss초 (KST)。
若怀疑重启时间点,请通过此值确认“最后重启时间”。
2.2 엣지 ID (gray_box)
显示内容:该网关的唯一 ID (例如: EDGE_00303)。它是 Sparkplug, REST API, OPC-UA 节点树等 所有识别 的基准。来源于 app.properties 的 edge.id。
2.3 배포 사이트 ID (gray_box)
显示内容:该 Edge 布署在哪个站点(工厂 / 线) (例如: SITE_00001)。用于决定外部 SCADA / Sparkplug 的 Group ID。来源于 app.properties 的 site.id。
3. 网络状态 (6 cards)
每个卡片显示 链路状态图标 + IP 或 DISCONNECTED(灰色)。
3.1 인터넷 (gray_box)
网关是否能 ping 通外部互联网。图标颜色:
- 绿色地球:连接正常
- 红色地球:连接失败
ping 对象为 app.properties 的 monitor.ping.targets (例如: 8.8.8.8)。
3.2 이더넷 (gray_box) — 分为两栏
- 左:1 WAN (外部网 NIC,
net_1_ip) - 右:2 PLC (PLC 网 NIC,
net_2_ip)
每栏颜色随 互联网 ping 结果 同步变化 (简化显示)。
3.3 WIFI (gray_box)
wifi-1 图标 + IP,或 wifi-slash 灰色 (DISCONNECTED)。
3.4 3G/4G/5G (gray_box)
GSM 调制解调器的 IP 或 DISCONNECTED。SIM 卡图标。
3.5 VPN (gray_box)
shield-check 图标。VPN 连接时显示 IP,断开时显示灰色 + DISCONNECTED。
3.6 관리 포트 (gray_box)
wrench 图标。USB / 独立管理 NIC 的 IP。通常为与站点网络隔离的诊断通道。
4. 系统资源 (5 cards)
4.1 온도 (gray_box)
CPU 温度。90°C 以上为红色 + temperature-high 图标 (危险),否则为绿色 + temperature-low。在工业环境中,这是 风扇堵塞 / 高温报警 的首要信号。
4.2 CPU (gray_box)
仪表盘(0–100%) + 总核心数。JustGage 库。1 秒更新。
若持续超过 90%,需要检查 PLC 轮询周期 / 标签数量。
4.3 물리 메모리 (gray_box)
仪表盘 + 사용 / 전체 (KB/MB/GB 自动单位)。独立于 swap 的 RSS 内存使用量。
4.4 가상 메모리 (gray_box)
交换分区(swap)使用量。仪表盘 + 사용 / 전체。平时 0–10% 为正常,持续超过 30% 可能存在 RAM 不足。
4.5 디스크 (gray_box)
/data1 (或网关主目录) 的使用率。仪表盘 + 사용 / 전체。
超过 90% 时,立即执行 整理 / 清理 (clean.sh / node-cleanup.sh) 步骤。
5. 网络流量 (1 card)
5.1 네트워크 사용량 (gray_box)
- 下载 (RX) — 累计接收字节
- 上传 (TX) — 累计发送字节
KB/MB/GB 自动单位。启动后的累计值。
6. 采集 / 处理 (4 cards)
6.1 연결 | 태그 건수 (gray_box)
- 上方大数字:连接 (OPC) 数 (
opc_count) - 下方大数字:标签数 (
tag_count)
网关所知的 OPC/标签 总 计数。包含系统标签 (EDGE_*)。
6.2 PLC 연결 및 수집 상태 (gray_box) — 2x4 矩阵
| 左侧 (连接) | 含义 |
|---|---|
| 🟢 连接 | TCP/UDP 连接 OK 的 OPC 数量 (plc_con_connected_count) |
| 🔴 断开 | 连接失败的 OPC 数量 (plc_con_disconnected_count) |
| 右侧 (采集) | 含义 |
|---|---|
| 🟢 正常 | 采集开始 + 读取成功中 (plc_scan_start_count) |
| 🟧 异常 | 采集开始但一定时间内读取失败 (plc_scan_not_collect_count) |
| ⬜ 停止 | 用户点击停止的 OPC (plc_scan_stop_count) |
连接与采集不同:即使 TCP 存活 (连接 ✅),若由于某种原因无法获取 read 数据,则被归类为 采集异常。
6.3 PLC 읽기/쓰기 결과 (gray_box)
采集器/REST API 累计的 read/write 计数器。以 K/M/B 为单位压缩显示。
| 成功 | 失败 | |
|---|---|---|
| 读取 (R) | plc_value_read_success_count | plc_value_read_error_count |
| 写入 (W) | plc_value_write_success_count | plc_value_write_error_count |
点击右上角 ↻ 刷新图标 → 调用 /connect/reset-read-error → 仅失败计数器归零。用于在报警清理后从下一周期起重新计数。
6.4 MPS (gray_box)
Messages Per Second — 每秒处理的数据点数量 (monitor.mps)。
下方为 sparkline (近期趋势微型图)。一目了然地观察负载变化。
若平时站点的 mps 为 100 但突然掉至 0 → PLC 连接或采集异常。
7. 传输 / 存储 (5 cards)
7.1 대기 큐 (gray_box)
等待传输的数据点队列大小 (queue_size)。
平时为 0–数十个。外部传输受阻 (如 Sparkplug 断开) 会快速增加 → 溢出至 磁盘队列 (
queue_disk_size)。若此卡片数值持续增长,需检查外部通信。
7.2 포인트 전송 건수 (gray_box)
启动后 成功向外部传输 的累计数据点数量 (sended_point_count)。
7.3 포인트 전송량 (gray_box)
启动后累计发送字节数 (sended_point_bytes)。自动单位。参考用于 数据流量结算。
7.4 데이터 저장량 (gray_box)
Cassandra 的 keyspace pe 中存储的时序数据总大小 (输入 MBytes → 自动单位转换)。请结合磁盘剩余空间查看。
7.5 데이터 저장 기간 (gray_box)
tm_tag_point 的 TTL (Time-To-Live) 天数 (system_db_ttl, 默认 30 天)。超过此天数后自动过期。在 app.properties 中修改。
8. 系统错误 (1 card)
8.1 시스템 오류 (오늘) (gray_box)
今日(00:00–现在) 发生的 ERROR 级系统日志条数 (system_error_count)。红色大数字。
点击数字 → 跳转至 /system/log/list,确认实际日志正文。
9. 外部服务 / 集成 (5 cards)
每个卡片由 状态条 (绿色/红色/灰色) + 连接信息表组成。
9.1 플랫폼 API 서버 (gray_box)
与上层 PlantPulse 平台 API 的连接状态。点击右上角外部链接图标将在新窗口访问该服务器。
| 行 | 含义 |
|---|---|
| 状态条 | 🟢 连接成功 / 🔴 连接失败 (monitor.api) |
| HOST/IP | server.host |
| PORT | server.port |
| USER | server.username |
9.2 OPC-UA 서버 (gray_box)
网关 内置 OPC-UA 服务器信息。外部 SCADA 连接此处以订阅标签。
| 行 | 含义 |
|---|---|
| 状态条 | 🟢 已激活 (服务器始终运行) |
| HOST/IP | opc.ua.server.host |
| PORT | opc.ua.server.tcp.port (默认 12000) |
| USER | opc.ua.server.user |
详细节点树 / 时序图表:OPC UA 服务器使用
9.3 MQTT 서버 (gray_box)
网关 内置 HiveMQ 信息 + 发布 Sparkplug 等内容的 Topic。
| 行 | 含义 |
|---|---|
| 状态条 | 🟢 已激活 / ⬜ 已停用 (mqtt.enable) |
| HOST/IP | mqtt.server.host |
| PORT | mqtt.server.port (默认 1883) |
| USER | mqtt.server.user |
| TOPIC | mqtt.server.topic (Sparkplug spBv1.0/... 或用户 Topic) |
9.4 Sparkplug B (gray_box)
Sparkplug 发布组件的实时状态 (5 秒更新, /api/v1/transfer 的 Sparkplug 项)。
| 行 | 含义 |
|---|---|
| 状态条 | 🟢 已激活 (已连接) / 🔴 连接断开 (激活但 broker 连接中断) / ⬜ 已停用 (sparkplug.enable=false) |
| GROUP | Sparkplug Group ID (例如: Plant1) |
| NODE | Edge Node ID (例如: EDGE_00303) |
| 会话 # | bdSeq (设备 birth/death 序列 — 重连次数) |
| 消息 # | seq (当前发布消息编号 — 0–255 循环) |
若消息 # 停止变化,则表示发送中断。若会话 # 频繁增加,则表示 broker 连接不稳定。
9.5 도커 (gray_box)
Docker 守护进程状态 + 用户应用程序容器统计。
| 行 | 含义 |
|---|---|
| 状态条 | 🟢 运行中 / 🔴 已停止 (monitor.docker_on) |
| 计数 | [ 살아있는 / 전체 ] 容器数 (docker_container_up_count / docker_container_total_count) |
快速确认在 /ui/apps 中注册的应用程序是否全部存活。
10. 页脚 (所有页面通用)
画面底部显示以下内容:
- PlantPulse Edge 文本 + 许可证
- ☁ 软件升级 图标 — 点击后调用
upgrade.sh(通过确认对话框)- 图标旁徽标:
- 红色 "可升级!" → 下载服务器有新版本
- 灰色 "下载服务器连接失败" → 外部网 /
product.kopens.io访问失败 - (无徽标) → 当前版本为最新
- 图标旁徽标:
- 外部端口快捷方式 — 在新窗口打开其他外部服务 (例如: Grafana 3000)
内部通过 /config/upgrade/check 以 server-to-server 方式获取 https://product.kopens.io/.../VERSION.JSON 进行比较 → 无 CORS 错误地清晰显示徽标。
11. 更新周期 / 数据来源汇总
| 区域 | 更新周期 | 端点 |
|---|---|---|
| 仪表盘 / 资源 / 网络 / 计数器 / 队列 / 存储量 / 错误 | 1 秒 | GET /monitor/bean |
| Sparkplug B 卡片 | 5 秒 | GET /api/v1/transfer |
| 升级徽标 | 页面加载时 1 次 | GET /config/upgrade/check |
| 黑色信息卡片 (主机名/OS/版本等) | 不更新 (页面加载时时刻值) | EdgeContext (服务器启动时决定) |
12. 常见识别模式
| 画面信号 | 怀疑点 / 采取行动 |
|---|---|
| 温度 红色 (90°C↑) | 风扇堵塞 / 环境温度 — 立即巡检 |
| CPU 持续 90%+ | 轮询周期过快 / 标签数量过多 |
| 磁盘 90%+ | 整理与清理 — clean.sh + node-cleanup.sh |
| PLC 断开 计数突增 | PLC 网缆 / 交换机 / PLC 电源 |
| 采集异常 > 0 | 连接 OK 但 read 失败 — 巡检地址格式 / PLC 固件 |
| MPS 掉至 0 | 所有 PLC 读取失败或采集器停止 |
| 等待队列 持续增加 | 外部传输 (Sparkplug / MQTT) 受阻 — 确认 9.3/9.4 卡片 |
| 系统错误 红色数字 | 点击 → 在 /system/log/list 确认正文 |
| Sparkplug 消息 # 不变 | 发送中断 — 巡检 app.properties 的 sparkplug.* |
| Docker 红色 | 在 systemctl status docker 确认守护进程状态 |
13. 进一步了解
- 添加连接: 添加新 PLC 连接
- 连接列表 / 标签画面: 查看实时值
- OPC UA 服务器: OPC UA 服务器使用
- 流自动化: 开始使用流 (Node-RED)
- 系统环境配置 / 运行脚本: 运行概览