app.properties – Leitfaden
Sämtliche Laufzeiteinstellungen von PlantPulse Edge. Ablageort:
- Container-Modus (2026.05+): Das Original liegt auf dem Host unter
/etc/kopens/conf/app.properties(bind mount, chmod 0640 root)./etc/kopens/app.propertiesist ein Legacy-Kompatibilitäts-Symlink darauf — egal über welchen Pfad Sie editieren, es ist dieselbe Datei. Fehlt die Datei, wird sie bei der Installation einmalig mit dem Image-Default geseedet und danach nicht mehr überschrieben (Änderungen des Betreibers 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 Runtime-Mirror für das Laden über den Classpath.
Im Container-Modus erzeugt install.sh bei der Erstinstallation ein vollständiges Template mit 165 Zeilen (16 Abschnitte + pro Box zufällig generierte Passwörter mit 16–32 Zeichen). Die Defaultwerte auf dieser Seite dienen als Referenz — die tatsächlichen Werte der Box prüfen Sie bitte direkt in der Datei auf 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 (Pflicht, innerhalb des Standorts eindeutig) |
edge.site_id | Standort-ID — muss zuvor auf der Platform registriert sein |
edge.ttl | Heartbeat-TTL (Sekunden) |
edge.always-on | Ob der Collector unmittelbar beim Booten startet (bei false expliziter Start über Oberfläche/REST) |
Administratorkonto
edge.admin_login_id=${ENV:EDGE_ADMIN_USER:admin}
edge.admin_password=${SECRET:EDGE_ADMIN_PASSWORD_HASH}
Übergeben Sie das Administratorpasswort als PBKDF2-Hash über EDGE_ADMIN_PASSWORD_HASH_FILE oder 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
| Schlüssel | Bedeutung |
|---|---|
thread_pool_count | Größe des Read-Worker-Pools pro OPC |
connection_reset_ms | Intervall für automatischen Reset der Verbindung (0 = aus) |
connection_warn_ms | WARN-Log, wenn die Verbindungszeit diesen Wert überschreitet |
address_scan_thread_warn_ms | Schwellwert für die Lesezeit einer einzelnen Adresse |
address_map_scan_thread_warn_ms | Schwellwert für die gesamte Lesezeit eines Zyklus |
Test-/Demodaten
Der automatische Start der integrierten OPCUA/MODBUS-Simulatoren wird nicht unterstützt. Verwenden Sie für Test-/Demodaten ein externes plantpulse-simulator oder Test-Tags.
Diagnoseübertragung
edge.diagnostic.send.enabled=true
Schalter für die Übertragung der Edge-Eigendiagnose (Systemmetriken usw.) an die Platform.
OPC-UA-Server (Veröffentlichung eigener Nodes)
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
Die Edge arbeitet als eigener OPC-UA-Server und stellt die erfassten Tags als Nodes bereit. Ein externes SCADA kann sich als OPC-UA-Client verbinden und lesen. Bei ananymous=yes ist anonymer Zugriff erlaubt (Schreibfehler, aus Codekompatibilität beibehalten).
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 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=truepubliziertMQTTQueueTransferbei der Queue-Verarbeitung. - Alle Points laufen über ein einziges Topic (
/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 werden unverändert aus mqtt.server.* übernommen. Details siehe
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 Platform-API |
server.ssl | HTTPS ja/nein |
server.api_key | Token-Authentifizierung der Platform-API. PLANTPULSE_SERVER_API_KEY_FILE empfohlen |
server.messaging | MQTT oder API. Bei MQTT übernimmt APIQueueTransfer die Hilfsrolle |
Entwicklungsmodus
dev.mode=EDGE
Unterstützt werden EDGE (Standard) und STANDALONE. PLATFORM wird abgelehnt.
Befehls-/Event-Handler / SQL-Pfad
app.es.scan.package=plantpulse.app
app.sql.path=classpath:resouces/sql
resouces in app.sql.path ist ein Schreibfehler, funktioniert aber, da das Verzeichnis denselben Namen (/WEB-INF/resouces/sql/) trägt. Bei einer Änderung müssen beide Stellen gemeinsam angepasst werden.
API-Nutzung
api.use=true
Schalter 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 den nativen Cassandra-Treiber (com.datastax.oss.driver) |
oltp.cassandra.* | Verbindung über den JDBC-Adapter (wird von Teilen des Anwendungscodes genutzt) |
app.db.scheme_ddl | Pfad der DDL-Datei, die beim Booten automatisch angewendet wird |
Host, Benutzer und Passwort müssen in beiden Fällen übereinstimmen.
Datei-Upload
file.upload.dir=/tmp/
Temporärer Pfad, den die Datei-Upload-Komponente verwendet. In Produktivumgebungen wird ein separates Verzeichnis empfohlen.
Checkliste empfohlener Änderungen
| Punkt | Grund der Änderung |
|---|---|
edge.admin_password | PBKDF2-Hash über EDGE_ADMIN_PASSWORD_HASH_FILE übergeben |
mqtt.server.password / opc.ua.server.password | Übergabe über MQTT_PASSWORD_FILE / OPCUA_PASSWORD_FILE |
app.db.password | Übergabe über CASSANDRA_PASSWORD_FILE |
sparkplug.bdseq.path | Absoluter Pfad empfohlen (/opt/kopens/.../data/sparkplug/bdseq) |
server.host / password | Verbindungsdaten der Plantpulse Platform |