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 文字の ボックスごとのランダムパスワード)。本ページのデフォルト値は 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 | 1 周期全体の 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 クライアントとして
接続し read 可能です。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 します。- 単一トピック (
/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 接続情報 |