Umgebungskonfiguration (/ui/system/config) — app.properties bearbeiten
Dieses Fenster dient zum direkten Bearbeiten der Datei app.properties im Web, die sämtliche Einstellungen des Gateways enthält (DB / MQTT / OPC-UA / Standort / Monitoring / Benutzer usw.).
Home-Karte Umgebungskonfiguration → klicken, oder /ui/system/config.
Beim Speichern wird /etc/kopens/app.properties (host bind mount) aktualisiert und durch einen Container-Neustart (Schaltfläche /config/restart
oder signal file /etc/kopens/host-action.request) übernommen. Das auth.properties des HiveMQ broker wird vom container-entrypoint bei jedem Boot automatisch mit mqtt.server.* synchronisiert — es muss lediglich app.properties
geändert werden (kein manuelles Bearbeiten von auth.properties nötig).
CLI-Änderung:
sudo bash /opt/kopens/install/bin/config.sh --set edge.rest.api.auth true
sudo bash /opt/kopens/install/bin/config.sh --restart
1. Aufbau des Fensters
┌─────────────────────────────────────────────────────────────┐
│ 환경 설정 [←] [💾 저장] │
├─────────────────────────────────────────────────────────────┤
│ ⚠ 주의사항 패널 (빨강) │
│ - 환경 설정 파일 수정 시 서버 재시작 필요 │
│ - 필수 키 삭제 금지 │
│ - 웹 접속 불가시 ${PE_HOME}/conf/app.properties 수동 수정 │
├─────────────────────────────────────────────────────────────┤
│ [CodeMirror 에디터 — properties 모드 / xq-dark 테마] │
│ (라인번호, 매칭 괄호, 자동 완성, 활성 라인 하이라이트) │
└─────────────────────────────────────────────────────────────┘
2. Aktionen in der Kopfzeile
| Schaltfläche | Funktion |
|---|---|
| ← Zurück | Wechsel zu /ui/main |
| 💾 Speichern (blaue Schaltfläche) | POST /config/save — speichert den aktuellen Editorinhalt in app.properties |
Toast direkt nach dem Speichern: "Die Konfiguration wurde abgeschlossen! Nach einem Neustart des Servers werden die Einstellungen übernommen."
⚠ Das Speichern selbst erfolgt sofort, die Laufzeit übernimmt die Werte jedoch erst nach einem Neustart.
3. Editor — CodeMirror
| Funktion | Verhalten |
|---|---|
| Modus | text/x-properties (Format KEY=VALUE) |
| Theme | xq-dark (schwarzer Hintergrund + leuchtende Keywords) |
| Zeilennummern | links angezeigt |
| Klammerpaare | ${...} usw. automatisch hervorgehoben |
| Aktive Zeile | Cursorzeile hervorgehoben |
| Automatischer Zeilenumbruch | lange Zeilen werden automatisch umgebrochen |
| Höhe | 2400px (lange Datei am Stück) |
4. Wichtigste Schlüssel in app.properties — die häufig benötigten
Details siehe app.properties Konfiguration. Häufig angepasste Einträge:
| Kategorie | Schlüssel | Bedeutung |
|---|---|---|
| Betriebsmodus | dev.mode | EDGE / STANDALONE / PLATFORM — im Edge üblicherweise EDGE |
| Standortkennung | edge.id | eindeutige ID des Gateways (EDGE_*) |
site.id / site.name | Standortkennung | |
| Übergeordnete Platform | server.host / server.port / server.username | PlantPulse Platform API |
server.api_key (Fallback auf altes server.apikey) | Token für tokenbasierte Authentifizierung (V4 setUsernameAndToken) | |
| REST API-Authentifizierung (externe Clients) | edge.rest.api.auth | bei true wird beim Aufruf von /api/* eine Authentifizierung erzwungen |
edge.rest.api.key | von extern zu sendender API-Key. Im Betrieb über EDGE_REST_API_KEY_FILE / EDGE_REST_API_KEY einspeisen und per Header X-API-Key oder Authorization: Bearer senden. ?api_key=-Query wird mit 401 abgewiesen | |
| OPC-UA Server | opc.ua.server.host / tcp.port / user / password | integrierter OPC-UA Server des Gateways (Zugriff durch externes SCADA) |
opc.ua.server.anonymous | Anonymous zulassen (yes/no/true/false/on/1) — der alte, fehlerhaft geschriebene Schlüssel ananymous wird als Fallback ebenfalls akzeptiert (beidseitig kompatibel) | |
| MQTT | mqtt.enable / mqtt.server.host / port / user / password / topic | HiveMQ (eigen oder extern) |
| Sparkplug B | sparkplug.enable / sparkplug.cmd.enable / group.id / edge.node.id | Sparkplug-Versand + Empfang von NCMD/DCMD-Befehlen |
| DB / TTL | app.db.scheme_ddl | Pfad der DDL-Datei (default WEB-INF/db/scheme.cql — Cassandra CQL DDL) |
cassandra.host / port / keyspace / edge.ttl | Speicherrichtlinie für Zeitreihen (TTL-Einheit = Tage) | |
| Monitoring | monitor.ping.targets | Ping-Ziel im Internet |
| Erfassungsrichtlinie | collector.thread.size / collector.batch.size | Poolgröße der Erfassung |
| Sicherheit | security.session.timeout.minutes | Timeout der Websitzung |
Fehlen Pflichtschlüssel wie edge.id, cassandra.host, mqtt.server.host oder ist deren Format ungültig, schlägt der startup listener beim nächsten Boot fehl. Wenn die Weboberfläche nicht erscheint: per SSH einloggen, /opt/kopens/plantpulse-edge/conf/app.properties direkt korrigieren → bin/restart.sh.
5. Übernahmeprozedur nach dem Speichern
1. [💾 저장] 클릭 → 토스트 "재시작 필요"
2. 외부 SCADA / Sparkplug 수신측에 점검 공지 (다운타임 ~6초)
3. SSH 또는 시스템 메뉴 → /config/restart 호출
4. 1–2초 대기 → 화면 새로고침 → /api/v1/edge 로 새 값 확인
Für einen schnellen Neustart siehe Neustart (restart.sh) (nur Tomcat, ~6 Sekunden). Für Einträge, die einen vollständigen Neustart inklusive DB / MQTT erfordern (z. B. mqtt.enable toggle), siehe Vollständiger Neustart (stop.sh → start.sh).
6. Häufige Stolperfallen
| Symptom | Ursache / Abhilfe |
|---|---|
| Gespeichert, aber Änderung wird nicht wirksam | kein Neustart durchgeführt. bin/restart.sh aufrufen |
| Nach dem Speichern kein Webzugriff mehr | Pflichtschlüssel gelöscht / Tippfehler. Per SSH einloggen und manuell wiederherstellen |
| Kein Toast direkt nach dem Speichern | Kommunikationsfehler → Netzwerk / Tomcat-Status prüfen (bin/ps.sh) |
| Koreanische Kommentare unlesbar | Datei ist nicht UTF-8. Mit externem Editor UTF-8 (ohne BOM) erzwingen und speichern |
| Derselbe Schlüssel erscheint zweimal | Der zuletzt aufgeführte Wert hat Vorrang. Erste Zeile löschen |
7. System-Tags (automatische Registrierung / 90000–90035)
Beim Boot registriert das Gateway seinen eigenen OPC (EDGE_*) sowie 36 System-Tags (TAG_<edge_id>_NNNNN) automatisch im OPC-UA Server. Abonniert ein externes SCADA / IIoT-System diese Tags, erhält es die Informationen zu Status/Identität/Netzwerk des Gateways unverändert.
7.1 Identität / Host (90000–90004)
| Index | Metrik | Typ | Bedeutung |
|---|---|---|---|
| 90000 | HOSTNAME | STRING | OS hostname |
| 90001 | VERSION | STRING | SW-Version des Gateways |
| 90002 | EDGE_IP | STRING | eigene IP des Gateways |
| 90003 | EDGE_NAME | STRING | Name des Gateways |
| 90004 | OPERATING_SYSTEM | STRING | OS + Architektur |
7.2 Netzwerk (90005–90011)
| Index | Metrik | Typ | Bedeutung |
|---|---|---|---|
| 90005 | NET_1_IP | STRING | IP von NIC 1 |
| 90006 | NET_2_IP | STRING | IP von NIC 2 |
| 90007 | NET_WIFI_IP | STRING | WIFI-IP |
| 90008 | NET_GSM_IP | STRING | IP des GSM-Modems |
| 90009 | NET_VPN_IP | STRING | VPN-IP (tailscale usw.) |
| 90010 | NET_MGNT_IP | STRING | IP des Management-Ports |
| 90011 | TEMPERATURE | DOUBLE | CPU-Temperatur (°C) |
7.3 System / Erfassung / Queue (90012–90027)
| Index | Metrik | Typ | Bedeutung |
|---|---|---|---|
| 90012 | CPU_USAGE | DOUBLE | CPU % |
| 90013 | MEM_USAGE | DOUBLE | Speicher % |
| 90014 | DISK_USAGE | DOUBLE | Festplatte % |
| 90015 | OPC_COUNT | INT | Anzahl registrierter OPC |
| 90016 | TAG_COUNT | INT | Anzahl registrierter Tags |
| 90017 | PLC_CON_CONNECTED_COUNT | INT | Anzahl verbundener OPC |
| 90018 | PLC_CON_DISCONNECTED_COUNT | INT | Anzahl getrennter OPC |
| 90019 | PLC_SCAN_START_COUNT | INT | Anzahl OPC mit normaler Erfassung |
| 90020 | PLC_SCAN_NOT_COLLECT_COUNT | INT | Anzahl OPC mit gestörter Erfassung |
| 90021 | PLC_SCAN_STOP_COUNT | INT | Anzahl OPC mit gestoppter Erfassung |
| 90022 | QUEUE_SIZE | INT | Speicher-Queue |
| 90023 | QUEUE_DISK_SIZE | INT | Disk-Queue |
| 90024 | SENDED_POINT_COUNT | LONG | kumulierte gesendete Punkte |
| 90025 | SENDED_POINT_BYTES | LONG | kumulierte gesendete Bytes |
| 90026 | MPS | DOUBLE | Nachrichten pro Sekunde |
| 90027 | SYSTEM_ERROR_COUNT | INT | Anzahl ERROR heute |
7.4 Betrieb / Identität (90028–90035) — neu
| Index | Metrik | Typ | Bedeutung |
|---|---|---|---|
| 90028 | CONNECTED_OPC_IDS | STRING | Liste der verbundenen OPC-IDs (kommagetrennt) |
| 90029 | API_KEY | STRING | aktuell aktiver REST API-Key |
| 90030 | REGISTED_OPC_IDS | STRING | Liste aller registrierten OPC-IDs |
| 90031 | DISCONNECTED_OPC_IDS | STRING | Liste der getrennten OPC-IDs |
| 90032 | COLLECTING_OPC_IDS | STRING | Liste der OPC-IDs in Erfassung |
| 90033 | STOPPED_OPC_IDS | STRING | Liste der OPC-IDs mit gestoppter Erfassung |
| 90034 | BUILD_DATE | STRING | Builddatum des Artefakts (yyyy-MM-dd) |
| 90035 | DOCKER_CONTAINER_NAMES | STRING | Namen der laufenden Docker-Container (kommagetrennt) |
Alle System-Tags werden im Sekundentakt von
SendTaskaktualisiert. Abonniert ein externes SCADA diese Werte, lässt sich ein Dashboard aufbauen, das den Edge-Status auf einen Blick zeigt — ganz ohne Gang Vor-Ort.
8. Weiterführende Informationen
- Bedeutung aller Schlüssel: app.properties Konfiguration
- Neustart nach Änderungen: Neustart (
restart.sh) - Änderungen nach Backup: Backup (
backup.sh) - Änderungen über Systemlogs verifizieren: Systemlogs anzeigen
- REST API-Authentifizierung / Key-Ausstellung: REST API Leitfaden