app.properties 指南
PlantPulse Edge 的全部运行时配置。位置:
- 容器模式 (2026.05+):正本为宿主机上的
/etc/kopens/conf/app.properties(bind mount,chmod 0640 root)。/etc/kopens/app.properties是指向它的 legacy 兼容符号链接 —— 无论编辑哪一侧,都是同一个文件。 若文件不存在,安装时会用 image default 进行一次 seed,此后不再覆盖(运维人员的编辑可跨镜像升级保留)。 - Native 模式:
$PE_HOME/conf/app.properties。$PE_HOME/app/plantpulse-edge-web/WEB-INF/classes/app.properties为 classpath 加载用的 runtime mirror。
容器模式下,install.sh 在首次安装时会生成 165 行的 full template(16 个章节 + 每台设备 16~32 字符 的随机密码)。本页的默认值仅供参考 —— 实际运行设备的取值请直接查看设备内的文件。
变更生效方法
# 컨테이너 모드
sudo bash /opt/kopens/install/bin/config.sh --set edge.rest.api.auth false
sudo bash /opt/kopens/install/bin/config.sh --restart
# native 모드
sudo vi /opt/kopens/plantpulse-edge/conf/app.properties
sudo /opt/kopens/plantpulse-edge/bin/restart.sh
EDGE 标识 / 运行
edge.id=EDGE_00303
edge.site_id=SITE_00001
edge.ttl=30
edge.always-on=false
| 键 | 含义 |
|---|---|
edge.id | 边缘唯一 ID(必填,站点内唯一) |
edge.site_id | 站点 ID —— 必须已在平台预先注册 |
edge.ttl | heartbeat TTL(秒) |
edge.always-on | 启动后是否立即启动 collector(false 时通过界面/REST 显式启动) |
管理员账号
edge.admin_login_id=${ENV:EDGE_ADMIN_USER:admin}
edge.admin_password=${SECRET:EDGE_ADMIN_PASSWORD_HASH}
管理员密码请通过 EDGE_ADMIN_PASSWORD_HASH_FILE 或 EDGE_ADMIN_PASSWORD_HASH 注入 PBKDF2 hash。
Collector
edge.collector.plc.thread_pool_count=4
edge.collector.plc.connection_reset_ms=0
edge.collector.plc.connection_warn_ms=1000
edge.collector.plc.address_scan_thread_warn_ms=200
edge.collector.plc.address_map_scan_thread_warn_ms=5000
| 键 | 含义 |
|---|---|
thread_pool_count | 每个 OPC 的 read 工作线程池大小 |
connection_reset_ms | 连接自动重置周期(0 = 关闭) |
connection_warn_ms | 连接耗时超过该值时输出 WARN 日志 |
address_scan_thread_warn_ms | 单地址 read 耗时阈值 |
address_map_scan_thread_warn_ms | 单周期整体 read 耗时阈值 |
测试/演示数据
不支持内置 OPCUA/MODBUS 模拟器自动启动。测试/演示数据请使用外部 plantpulse-simulator 或测试标签。
诊断上传
edge.diagnostic.send.enabled=true
边缘自身诊断信息(系统指标等)向 platform 上传的开关。
OPC-UA 服务器(自身节点发布)
opc.ua.server.domain=127.0.0.1
opc.ua.server.tcp.port=12000
opc.ua.server.tls.port=12443
opc.ua.server.user=${ENV:OPCUA_USER:edge}
opc.ua.server.password=${SECRET:OPCUA_PASSWORD}
opc.ua.server.keystore.password=${ENV:CERT_PASS:}
opc.ua.server.ananymous=yes
边缘作为自身的 OPC-UA 服务器 运行,将采集到的标签以节点形式暴露。外部 SCADA 可作为 OPC-UA 客户端
接入并读取。为 ananymous=yes 时允许匿名接入(虽为拼写错误,但为保持代码兼容而保留)。
TSE (Time Series Engine)
tse.server.host=127.0.0.1
tse.server.port=7800
tse.server.user=tse
tse.server.password=tse123!
可选。与独立时序引擎(plantpulse-timeseries-engine)联动时使用。
MQTT 发布
mqtt.enable=true
mqtt.server.host=127.0.0.1
mqtt.server.port=1883
mqtt.server.user=${ENV:MQTT_USER:edge}
mqtt.server.password=${SECRET:MQTT_PASSWORD}
mqtt.server.topic=/edge/point
- 为
mqtt.enable=true时,MQTTQueueTransfer在处理队列时进行 publish。 - 所有 Point 都流向单一主题(
/edge/point)。
Sparkplug B
sparkplug.enable=false
sparkplug.group.id= # 비우면 site_id
sparkplug.edge.node.id= # 비우면 EdgeContext.id
sparkplug.device.strategy=per-opc # per-opc | single (현재 per-opc 만 구현)
sparkplug.qos=0 # DDATA 빈번 → 0 권장
sparkplug.bdseq.path= # 비우면 ./data/sparkplug/bdseq
sparkplug.alias.enable=true # Phase 2 토글 (현 무영향)
sparkplug.cmd.enable=false # Phase 3 토글 (현 무영향)
Broker 连接信息直接复用 mqtt.server.*。详情参见
Sparkplug 文档。
Plantpulse Server API
server.host=192.168.0.41
server.port=80
server.ssl=false
server.username=
server.api_key=${SECRET:PLANTPULSE_SERVER_API_KEY}
server.messaging=MQTT
| 键 | 含义 |
|---|---|
server.host/port | 平台 API 主机 |
server.ssl | 是否使用 HTTPS |
server.api_key | 平台 API token 认证。建议 PLANTPULSE_SERVER_API_KEY_FILE |
server.messaging | MQTT 或 API。为 MQTT 时,APIQueueTransfer 承担辅助角色 |
开发模式
dev.mode=EDGE
支持 EDGE(默认)与 STANDALONE。PLATFORM 会被拒绝。
命令/事件处理器 / SQL 路径
app.es.scan.package=plantpulse.app
app.sql.path=classpath:resouces/sql
拼写错误(保持兼容性)
app.sql.path 中的 resouces 属于拼写错误,但目录也使用同名(/WEB-INF/resouces/sql/)
保留,因此可正常工作。修改时必须两侧一并修改。
API 使用
api.use=true
REST 控制器启用开关。
Cassandra DB
app.db.host=127.0.0.1
app.db.port=9042
app.db.username=${ENV:CASSANDRA_USER:cassandra}
app.db.password=${SECRET:CASSANDRA_PASSWORD:cassandra}
app.db.keyspace=pe
app.db.replication=1
app.db.scheme_ddl=/WEB-INF/db/scheme.cql
oltp.cassandra.driver=plantpulse.cassandra.jdbc.CassandraDriver
oltp.cassandra.url=jdbc:cassandra://127.0.0.1:9042/pe
oltp.cassandra.user=${ENV:CASSANDRA_USER:cassandra}
oltp.cassandra.password=${SECRET:CASSANDRA_PASSWORD:cassandra}
| 键 | 含义 |
|---|---|
app.db.* | Cassandra 原生驱动(com.datastax.oss.driver)连接 |
oltp.cassandra.* | JDBC 适配器连接(部分应用代码使用) |
app.db.scheme_ddl | 启动时自动应用的 DDL 文件路径 |
主机 / 用户 / 密码两侧必须保持一致。
文件上传
file.upload.dir=/tmp/
文件上传组件使用的临时路径。生产环境建议使用独立目录。
建议修改清单
| 项目 | 修改原因 |
|---|---|
edge.admin_password | 通过 EDGE_ADMIN_PASSWORD_HASH_FILE 注入 PBKDF2 hash |
mqtt.server.password / opc.ua.server.password | 通过 MQTT_PASSWORD_FILE / OPCUA_PASSWORD_FILE 注入 |
app.db.password | 通过 CASSANDRA_PASSWORD_FILE 注入 |
sparkplug.bdseq.path | 建议使用绝对路径(/opt/kopens/.../data/sparkplug/bdseq) |
server.host / password | Plantpulse Platform 连接信息 |