环境设置 (/ui/system/config) — 编辑 app.properties
这是在网页上直接编辑 app.properties 文件的界面,该文件包含网关的所有设置 (DB / MQTT / OPC-UA / 站点 / 监控 / 用户等)。
点击主页卡片 环境设置,或访问 /ui/system/config。
保存时会更新 /etc/kopens/app.properties (host bind mount),并通过容器重启 (/config/restart
按钮或 signal file /etc/kopens/host-action.request) 生效。HiveMQ broker 的
auth.properties 由 container-entrypoint 在每次启动时与 mqtt.server.* 自动同步 — 只需修改 app.properties
即可 (无需手动编辑 auth.properties)。
CLI 变更:
sudo bash /opt/kopens/install/bin/config.sh --set edge.rest.api.auth true
sudo bash /opt/kopens/install/bin/config.sh --restart
1. 界面构成
┌─────────────────────────────────────────────────────────────┐
│ 환경 설정 [←] [💾 저장] │
├─────────────────────────────────────────────────────────────┤
│ ⚠ 주의사항 패널 (빨강) │
│ - 환경 설정 파일 수정 시 서버 재시작 필요 │
│ - 필수 키 삭제 금지 │
│ - 웹 접속 불가시 ${PE_HOME}/conf/app.properties 수동 수정 │
├─────────────────────────────────────────────────────────────┤
│ [CodeMirror 에디터 — properties 모드 / xq-dark 테마] │
│ (라인번호, 매칭 괄호, 자동 완성, 활성 라인 하이라이트) │
└─────────────────────────────────────────────────────────────┘
2. 顶部操作
| 按钮 | 动作 |
|---|---|
| ← 返回 | 跳转到 /ui/main |
| 💾 保存 (蓝色按钮) | POST /config/save — 将当前编辑器内容保存到 app.properties |
保存后立即弹出提示:"设置已完成!重启服务器后,设置内容将生效。"
⚠ 保存本身立即完成,但运行时需重启后才生效。
3. 编辑器 — CodeMirror
| 功能 | 说明 |
|---|---|
| 模式 | text/x-properties (KEY=VALUE 格式) |
| 主题 | xq-dark (黑色背景 + 荧光关键字) |
| 行号 | 显示在左侧 |
| 括号匹配 | ${...} 等自动高亮 |
| 活动行 | 高亮光标所在行 |
| 自动换行 | 长行自动 wrap |
| 高度 | 2400px (长文件一次显示) |
4. app.properties 核心键 — 常见项
详情参见 app.properties 设置。常改的项目:
| 分类 | 键 | 含义 |
|---|---|---|
| 运行模式 | dev.mode | EDGE / STANDALONE / PLATFORM — Edge 上通常为 EDGE |
| 站点标识 | edge.id | 网关唯一 ID (EDGE_*) |
site.id / site.name | 站点标识 | |
| 上位平台 | server.host / server.port / server.username | PlantPulse 平台 API |
server.api_key (旧 server.apikey 回退) | 基于 Token 的认证令牌 (V4 setUsernameAndToken) | |
| REST API 认证 (外部客户端) | edge.rest.api.auth | 为 true 时调用 /api/* 强制认证 |
edge.rest.api.key | 外部发送的 API 密钥。生产环境中通过 EDGE_REST_API_KEY_FILE / EDGE_REST_API_KEY 注入,并使用 X-API-Key 请求头或 Authorization: Bearer 发送。?api_key= 查询将被 401 拒绝 | |
| OPC-UA 服务器 | opc.ua.server.host / tcp.port / user / password | 网关内置的 OPC-UA 服务器 (供外部 SCADA 接入) |
opc.ua.server.anonymous | 允许 Anonymous (yes/no/true/false/on/1) — 旧的拼写错误键 ananymous 也作为回退被识别 (双向兼容) | |
| MQTT | mqtt.enable / mqtt.server.host / port / user / password / topic | HiveMQ (自建或外部) |
| Sparkplug B | sparkplug.enable / sparkplug.cmd.enable / group.id / edge.node.id | Sparkplug 发送 + 接收 NCMD/DCMD 命令 |
| DB / TTL | app.db.scheme_ddl | DDL 文件路径 (default WEB-INF/db/scheme.cql — Cassandra CQL DDL) |
cassandra.host / port / keyspace / edge.ttl | 时序存储策略 (TTL 单位 = 天) | |
| 监控 | monitor.ping.targets | 互联网 ping 目标 |
| 采集策略 | collector.thread.size / collector.batch.size | 采集器线程池大小 |
| 安全 | security.session.timeout.minutes | Web 会话超时 |
若 edge.id、cassandra.host、mqtt.server.host 等必需键缺失或格式错误,下次启动时 startup listener 将失败。若网页无法打开,请通过 SSH 登录直接修改 /opt/kopens/plantpulse-edge/conf/app.properties → bin/restart.sh。
5. 保存后的生效流程
1. [💾 저장] 클릭 → 토스트 "재시작 필요"
2. 외부 SCADA / Sparkplug 수신측에 점검 공지 (다운타임 ~6초)
3. SSH 또는 시스템 메뉴 → /config/restart 호출
4. 1–2초 대기 → 화면 새로고침 → /api/v1/edge 로 새 값 확인
快速重启参见 重启 (restart.sh) (仅 Tomcat,约 6 秒)。需要连 DB / MQTT 一并完全重启的项目 (例如 mqtt.enable toggle) 参见 完全重启 (stop.sh → start.sh)。
6. 常见陷阱
| 现象 | 原因 / 解决 |
|---|---|
| 已保存但变更未生效 | 未重启。调用 bin/restart.sh |
| 保存后无法访问网页 | 必需键被删除 / 拼写错误。通过 SSH 登录手动恢复 |
| 保存后没有弹出提示 | 通信错误 → 检查网络 / Tomcat 状态 (bin/ps.sh) |
| 中文注释乱码 | 文件不是 UTF-8。使用外部编辑器强制为 UTF-8 (无 BOM) 后保存 |
| 同一个键出现两次 | 以最后出现的值为准。删除第一行 |
7. 系统标签 (自动注册 / 90000–90035)
网关启动时会将自身的 OPC (EDGE_*) 和 36 个系统标签 (TAG_<edge_id>_NNNNN) 自动注册到 OPC-UA 服务器。外部 SCADA / IIoT 侧订阅这些标签即可直接获取网关的状态/标识/网络信息。
7.1 标识 / 主机 (90000–90004)
| 索引 | 指标 | 类型 | 含义 |
|---|---|---|---|
| 90000 | HOSTNAME | STRING | OS hostname |
| 90001 | VERSION | STRING | 网关软件版本 |
| 90002 | EDGE_IP | STRING | 网关自身 IP |
| 90003 | EDGE_NAME | STRING | 网关名称 |
| 90004 | OPERATING_SYSTEM | STRING | OS + 架构 |
7.2 网络 (90005–90011)
| 索引 | 指标 | 类型 | 含义 |
|---|---|---|---|
| 90005 | NET_1_IP | STRING | 1 号 NIC IP |
| 90006 | NET_2_IP | STRING | 2 号 NIC IP |
| 90007 | NET_WIFI_IP | STRING | WIFI IP |
| 90008 | NET_GSM_IP | STRING | GSM 调制解调器 IP |
| 90009 | NET_VPN_IP | STRING | VPN (tailscale 等) IP |
| 90010 | NET_MGNT_IP | STRING | 管理端口 IP |
| 90011 | TEMPERATURE | DOUBLE | CPU 温度 (°C) |
7.3 系统 / 采集 / 队列 (90012–90027)
| 索引 | 指标 | 类型 | 含义 |
|---|---|---|---|
| 90012 | CPU_USAGE | DOUBLE | CPU % |
| 90013 | MEM_USAGE | DOUBLE | 内存 % |
| 90014 | DISK_USAGE | DOUBLE | 磁盘 % |
| 90015 | OPC_COUNT | INT | OPC 注册数 |
| 90016 | TAG_COUNT | INT | 标签注册数 |
| 90017 | PLC_CON_CONNECTED_COUNT | INT | 已连接 OPC 数 |
| 90018 | PLC_CON_DISCONNECTED_COUNT | INT | 连接断开 OPC 数 |
| 90019 | PLC_SCAN_START_COUNT | INT | 采集正常 OPC 数 |
| 90020 | PLC_SCAN_NOT_COLLECT_COUNT | INT | 采集异常 OPC 数 |
| 90021 | PLC_SCAN_STOP_COUNT | INT | 采集停止 OPC 数 |
| 90022 | QUEUE_SIZE | INT | 内存队列 |
| 90023 | QUEUE_DISK_SIZE | INT | 磁盘队列 |
| 90024 | SENDED_POINT_COUNT | LONG | 累计发送点数 |
| 90025 | SENDED_POINT_BYTES | LONG | 累计发送字节数 |
| 90026 | MPS | DOUBLE | 每秒消息数 |
| 90027 | SYSTEM_ERROR_COUNT | INT | 今日 ERROR 数量 |
7.4 运维 / 标识 (90028–90035) — 新增
| 索引 | 指标 | 类型 | 含义 |
|---|---|---|---|
| 90028 | CONNECTED_OPC_IDS | STRING | 已连接 OPC ID 列表 (逗号分隔) |
| 90029 | API_KEY | STRING | 当前生效的 REST API 密钥 |
| 90030 | REGISTED_OPC_IDS | STRING | 所有已注册 OPC ID 列表 |
| 90031 | DISCONNECTED_OPC_IDS | STRING | 连接断开 OPC ID 列表 |
| 90032 | COLLECTING_OPC_IDS | STRING | 采集中 OPC ID 列表 |
| 90033 | STOPPED_OPC_IDS | STRING | 采集停止 OPC ID 列表 |
| 90034 | BUILD_DATE | STRING | 产物构建日期 (yyyy-MM-dd) |
| 90035 | DOCKER_CONTAINER_NAMES | STRING | 运行中的 Docker 容器名称 (逗号分隔) |
所有系统标签由
SendTask以 1 秒周期刷新。外部 SCADA 订阅后,即可无需到现场就构建一目了然查看 Edge 状态的仪表板。
8. 延伸阅读
- 所有键的含义:app.properties 设置
- 变更后重启:重启 (
restart.sh) - 备份后变更:备份 (
backup.sh) - 通过系统日志验证变更:查看系统日志
- REST API 认证 / 密钥签发:REST API 指南