app.properties リファレンス
PlantPulse Edge のすべてのランタイム設定。場所:
- コンテナモード (2026.05+): 正本はホスト
/etc/kopens/conf/app.properties(bind mount、chmod 0640 root)。/etc/kopens/app.propertiesはそれを指す シンボリックリンク だ — 編集はどちら側でも同じファイルになる。 ファイルがない場合はインストール時に image default で一度 seed し、その後は上書きしない(オペレーターの編集がイメージアップグレードを超えて保存される)。 - ネイティブモード:
$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文字 ボックスごとのランダムパスワード)。本ページのデフォルト値は reference — 実運用ボックスの値はボックス内ファイルを直接確認してください。
変更の適用方法
# 컨테이너 모드
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}
管理者パスワードは PBKDF2 hash を EDGE_ADMIN_PASSWORD_HASH_FILE または EDGE_ADMIN_PASSWORD_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 = off) |
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.anonymous=yes
opc.ua.server.security.none=yes
エッジが自らの OPC-UA サーバー として動作し、収集したタグをノードとして公開します。外部 SCADA が OPC-UA クライアントとして
接続して read 可能。 anonymous=yes なら匿名接続を許可(旧誤字キー ananymous は新キーがない場合のみ読む)、security.none=yes ならセキュリティなし(None/None)のセッションエンドポイントを TCP ポートに開く。どちらもデフォルト 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。- 単一トピック (
/edge/point) にすべての 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 토글 (현 무영향)
ブローカー接続情報は 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 接続情報 |