メインコンテンツまでスキップ

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.ttlheartbeat 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_countOPC ごとの read ワーカープールサイズ
connection_reset_ms接続の自動リセット周期 (0 = off)
connection_warn_ms接続時間がこの値を超えた場合に WARN ログ
address_scan_thread_warn_ms単一アドレス read 時間のしきい値
address_map_scan_thread_warn_ms1 周期全体の 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.sslHTTPS 使用の有無
server.api_keyプラットフォーム API の token 認証。PLANTPULSE_SERVER_API_KEY_FILE 推奨
server.messagingMQTT または APIMQTT の場合は APIQueueTransfer が補助的な役割

開発モード

dev.mode=EDGE

EDGE(デフォルト) と STANDALONE をサポートします。PLATFORM は拒否されます。

コマンド/イベントハンドラ / SQL パス

app.es.scan.package=plantpulse.app
app.sql.path=classpath:resouces/sql
タイプミス (互換性維持)

app.sql.pathresouces はタイプミスですが、ディレクトリも同じ名前 (/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_passwordEDGE_ADMIN_PASSWORD_HASH_FILE で PBKDF2 hash を注入
mqtt.server.password / opc.ua.server.passwordMQTT_PASSWORD_FILE / OPCUA_PASSWORD_FILE で注入
app.db.passwordCASSANDRA_PASSWORD_FILE で注入
sparkplug.bdseq.path絶対パス推奨 (/opt/kopens/.../data/sparkplug/bdseq)
server.host / passwordPlantpulse Platform 接続情報