app.properties-Referenz
Alle Laufzeiteinstellungen von PlantPulse Edge. Speicherort:
- Container-Modus (2026.05+): Das Original liegt auf dem Host
/etc/kopens/conf/app.properties(Bind Mount, chmod 0640 root)./etc/kopens/app.propertiesist ein Symlink, der darauf zeigt – eine Bearbeitung betrifft also in beiden Fällen dieselbe Datei. Wenn die Datei fehlt, wird sie bei der Installation einmalig mit dem Image-Default erzeugt und danach nicht mehr überschrieben (Operator-Änderungen bleiben über Image-Upgrades hinweg erhalten). - Native-Modus:
$PE_HOME/conf/app.properties.$PE_HOME/app/plantpulse-edge-web/WEB-INF/classes/app.propertiesist der Laufzeit-Spiegel für den Klassenpfad.
Im Container-Modus erzeugt install.sh bei der Erstinstallation eine 165-zeilige Vollvorlage (16 Abschnitte + 16–32 Zeichen Zufallspasswort pro Box). Die Standardwerte auf dieser Seite sind eine Referenz – die Werte der tatsächlich laufenden Box entnehmen Sie bitte der Datei in der Box.
Änderungen anwenden
# 컨테이너 모드
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-Identifikation / -Betrieb
edge.id=EDGE_00303
edge.site_id=SITE_00001
edge.ttl=30
edge.always-on=false
| Schlüssel | Bedeutung |
|---|---|
edge.id | Eindeutige Edge-ID (erforderlich, innerhalb der Site eindeutig) |
edge.site_id | Site-ID – muss in der Plattform vorregistriert sein |
edge.ttl | Heartbeat-TTL (Sekunden) |
edge.always-on | Collector-Start direkt nach dem Boot (bei false: expliziter Start über GUI/REST) |
Administratorkonto
edge.admin_login_id=${ENV:EDGE_ADMIN_USER:admin}
edge.admin_password=${SECRET:EDGE_ADMIN_PASSWORD_HASH}
Das Admin-Passwort wird als PBKDF2-Hash über EDGE_ADMIN_PASSWORD_HASH_FILE oder EDGE_ADMIN_PASSWORD_HASH injiziert.
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
| Schlüssel | Bedeutung |
|---|---|
thread_pool_count | Worker-Pool-Größe für das Lesen pro OPC |
connection_reset_ms | Automatischer Verbindungs-Reset-Zyklus (0 = aus) |
connection_warn_ms | WARNE-Log, wenn die Verbindungszeit diesen Wert überschreitet |
address_scan_thread_warn_ms | Zeitschwelle für Lesevorgänge einer einzelnen Adresse |
address_map_scan_thread_warn_ms | Zeitschwelle für Lesevorgänge des gesamten Zyklus |
Test-/Demodaten
Ein automatischer Start des integrierten OPCUA/MODBUS-Simulators wird nicht unterstützt. Verwenden Sie für Test-/Demodaten einen externen plantpulse-simulator oder Test-Tags.
Diagnose-Übertragung
edge.diagnostic.send.enabled=true
Umschalter für die Übertragung der Edge-eigenen Diagnose (z. B. Systemmetriken) an die Plattform.
OPC-UA-Server (eigene Knotenveröffentlichung)
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
Der Edge fungiert als eigener OPC-UA-Server und stellt erfasste Tags als Knoten bereit. Externe SCADA-Systeme können als OPC-UA-Clients verbinden und lesen. anonymous=yes erlaubt anonymen Zugriff (der alte Tippfehler-Schlüssel ananymous wird nur gelesen, wenn der neue fehlt); security.none=yes öffnet den ungesicherten (None/None) Session-Endpunkt auf dem TCP-Port. Beide sind standardmäßig yes.
TSE (Time Series Engine)
tse.server.host=127.0.0.1
tse.server.port=7800
tse.server.user=tse
tse.server.password=tse123!
Optional. Wird bei der Anbindung einer separaten Zeitreihen-Engine (plantpulse-timeseries-engine) verwendet.
MQTT-Veröffentlichung
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
- Bei
mqtt.enable=trueveröffentlichtMQTTQueueTransferbeim Verarbeiten der Warteschlange. - Alle Datenpunkte laufen über ein einzelnes Thema (
/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 토글 (현 무영향)
Die Broker-Verbindungsdaten aus mqtt.server.* werden direkt wiederverwendet. Weitere Details finden Sie unter
Sparkplug-Dokumentation.
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
| Schlüssel | Bedeutung |
|---|---|
server.host/port | Host der Plattform-API |
server.ssl | HTTPS aktiviert oder nicht |
server.api_key | Token-Authentifizierung für die Plattform-API. PLANTPULSE_SERVER_API_KEY_FILE empfohlen |
server.messaging | MQTT oder API. Bei MQTT übernimmt APIQueueTransfer eine unterstützende Rolle |
Entwicklungsmodus
dev.mode=EDGE
Unterstützt EDGE (Standard) und STANDALONE. PLATFORM wird abgelehnt.
Befehls-/Ereignis-Handler / SQL-Pfad
app.es.scan.package=plantpulse.app
app.sql.path=classpath:resouces/sql
resouces in app.sql.path ist ein Tippfehler, aber das Verzeichnis wird unter demselben Namen (/WEB-INF/resouces/sql/) beibehalten,
sodass es funktioniert. Bei einer Änderung müssen beide Stellen angepasst werden.
API-Nutzung
api.use=true
Umschalter zur Aktivierung der REST-Controller.
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}
| Schlüssel | Bedeutung |
|---|---|
app.db.* | Verbindung über nativen Cassandra-Treiber (com.datastax.oss.driver) |
oltp.cassandra.* | JDBC-Adapter-Verbindung (wird von einigen Anwendungsteilen genutzt) |
app.db.scheme_ddl | Pfad zur DDL-Datei, die beim Start automatisch angewendet wird |
Host, Benutzer und Passwort müssen in beiden Fällen übereinstimmen.
Datei-Upload
file.upload.dir=/tmp/
Temporärer Pfad für die Upload-Komponente. In Produktionsumgebungen wird ein separates Verzeichnis empfohlen.
Empfohlene Checkliste für Änderungen
| Position | Grund für die Änderung |
|---|---|
edge.admin_password | PBKDF2-Hash über EDGE_ADMIN_PASSWORD_HASH_FILE injizieren |
mqtt.server.password / opc.ua.server.password | Über MQTT_PASSWORD_FILE / OPCUA_PASSWORD_FILE injizieren |
app.db.password | Über CASSANDRA_PASSWORD_FILE injizieren |
sparkplug.bdseq.path | Absoluter Pfad empfohlen (/opt/kopens/.../data/sparkplug/bdseq) |
server.host / password | Verbindungsdaten zur Plantpulse Platform |