Home Screen
This is the main page of the gateway web UI. It displays all operational statuses of the gateway in card format on a single screen. Cards are updated by fetching values from the backend (/monitor/bean) every 1 second, with the exception of the Sparkplug B card, which is updated every 5 seconds (/api/v1/transfer).

Access by clicking the PlantPulse logo in the upper left or directly via http://<gateway>/ui/main.
- MQTT / Sparkplug B / OPC UA Server cards: Directly look up keys
*.enable/host/port/userinapp.properties. Since install.sh generates a random password for each box, the user may be blank or differ by box. - Docker card: Requires
/var/run/docker.sockmount.plantpulse-edgeexcludes itself — it does not appear in the list to prevent accidental start/stop/delete. - Network card (LAN1/LAN2/WiFi/GSM/VPN/Management): Mapped to
edge.net.<role>.ifacevalues. If using systemd predictable names likeenp1s0 / enp2s0 / tailscale0(similar to dev boxes), configure directly inapp.properties(can be automatically reflected viaNET1_IFACE=...env in install.sh). - Component health check:
curl http://localhost/api/v1/system/health(no authentication required, 8 component status map + 503 branching).
Card Overview (Total ~30 cards)
6-column horizontal grid. There are three types of cards:
| Type | Color | Meaning |
|---|---|---|
| action_box (White background, large icon) | Gray border | Navigate to the corresponding menu upon click |
| black_box (Black background) | Gray text | Static gateway information |
| gray_box (White background, gray header) | Light gray | Real-time monitoring — values update every 1 second |
1. Top Actions / Information (Row 1)
1.1 엣지 정보 (black_box)
What it displays: The static identity information of this gateway. These values are measured once at boot time and are fixed on the screen.
| Field | Meaning | Source |
|---|---|---|
| Host Name | OS hostname (e.g., pe-edge-01) | EdgeContext.hostname |
| O/S | OS name + architecture (e.g., Linux (amd64)) | os.name + os.arch |
| Kernel | Kernel version (e.g., 5.14.0-...) | os.version |
| Version | Gateway SW version (e.g., V2026.05.08) | app.properties |
| Build Date | Build date of the artifact (e.g., 2026-05-08) | BUILD_DATE |
⚠ Host Name and O/S information only change if the OS is replaced after a gateway restart.
1.2 프로토콜 연결 하기 (action_box)
→ Clicking navigates to /ui/connect/connect. This screen is used to add new PLC, OPC-UA, MQTT, or simulator connections.
1.3 연결된 목록 (N) (action_box)
→ Clicking navigates to /ui/connect/list. The "N" in parentheses indicates the number of currently registered OPC connections (monitor.opc_count).
1.4 애플리케이션 (action_box)
→ /ui/apps. Start, stop, and manage Docker-based user applications.
1.5 노-코드 플로우 (action_box)
→ /ui/flow (Node-RED embed).
Detailed usage: Flows (Node-RED)
1.6 환경 설정 (action_box)
→ /ui/system/config. Direct editing of app.properties, system restart/reboot, backup, temporary file cleanup, etc.
2. Gateway Identification (3 cards)
2.1 엣지 시작 시간 (gray_box)
What it displays: The exact time the gateway (Tomcat) was last booted — yyyy년 MM월 dd일 [a] HH시 mm분 ss초 (KST). Use this value to verify the "Last Restart" if the restart timing is suspected.
2.2 엣지 ID (gray_box)
What it displays: The unique ID of this gateway (e.g., EDGE_00303). This is the basis for all identification in Sparkplug, REST API, OPC-UA node trees, etc. It originates from edge.id of app.properties.
2.3 배포 사이트 ID (gray_box)
What it displays: Which site (factory/line) this Edge is deployed to (e.g., SITE_00001). Used to determine the Group ID for external SCADA or Sparkplug. It originates from site.id of app.properties.
3. Network Status (6 cards)
Each card shows a link status icon + IP or DISCONNECTED (gray).
3.1 인터넷 (gray_box)
Whether the gateway can ping the external internet. Icon colors:
- Green globe: Normal connection
- Red globe: Connection failed
The ping target is monitor.ping.targets of app.properties (e.g., 8.8.8.8).
3.2 이더넷 (gray_box) — Divided into two sections
- Left: 1 WAN (External network NIC,
net_1_ip) - Right: 2 PLC (PLC network NIC,
net_2_ip)
The color of each section changes according to the internet ping result (simplified display).
3.3 WIFI (gray_box)
wifi-1 icon + IP, or wifi-slash gray (DISCONNECTED).
3.4 3G/4G/5G (gray_box)
GSM modem IP or DISCONNECTED. SIM card icon.
3.5 VPN (gray_box)
shield-check icon. Displays IP when VPN is connected; gray + DISCONNECTED when disconnected.
3.6 관리 포트 (gray_box)
wrench icon. IP of the USB or separate management NIC. Generally a diagnostic channel isolated from the site network.
4. System Resources (5 cards)
4.1 온도 (gray_box)
CPU temperature. Red + temperature-high icon if 90°C or higher (critical); otherwise green + temperature-low. This is the primary signal for fan blockage or high-temperature alarms in industrial environments.
4.2 CPU (gray_box)
Gauge (0–100%) + total core count. Uses the JustGage library. Updated every 1 second.
If it consistently exceeds 90%, review the PLC polling period or number of tags.
4.3 물리 메모리 (gray_box)
Gauge + 사용 / 전체 (auto-unit KB/MB/GB). RSS usage, independent of swap.
4.4 가상 메모리 (gray_box)
Swap usage. Gauge + 사용 / 전체. Normal range is 0–10%; if it consistently exceeds 30%, RAM may be insufficient.
4.5 디스크 (gray_box)
Utilization of /data1 (or gateway home). Gauge + 사용 / 전체.
If it exceeds 90%, immediately execute the Cleanup / Purge (clean.sh / node-cleanup.sh) procedure.
5. Network Traffic (1 card)
5.1 네트워크 사용량 (gray_box)
- Download (RX) — Cumulative received bytes
- Upload (TX) — Cumulative transmitted bytes
Auto-units in KB/MB/GB. Cumulative values since boot.
6. Collection / Processing (4 cards)
6.1 연결 | 태그 건수 (gray_box)
- Top large number: Connection (OPC) Count (
opc_count) - Bottom large number: Tag Count (
tag_count)
The total count of OPCs/tags known to the gateway, including system tags (EDGE_*).
6.2 PLC 연결 및 수집 상태 (gray_box) — 2x4 Matrix
| Left (Connection) | Meaning |
|---|---|
| 🟢 Connected | Number of OPCs with successful TCP/UDP connection (plc_con_connected_count) |
| 🔴 Disconnected | Number of OPCs with connection failure (plc_con_disconnected_count) |
| Right (Collection) | Meaning |
|---|---|
| 🟢 Normal | Collection started + read succeeding (plc_scan_start_count) |
| 🟧 Anomaly | Collection started but read failing for a certain period (plc_scan_not_collect_count) |
| ⬜ Stopped | OPC stopped by the user (plc_scan_stop_count) |
Connection and collection are different: Even if TCP is alive (Connection ✅), it is classified as a collection anomaly if reads are not arriving for any reason.
6.3 PLC 읽기/쓰기 결과 (gray_box)
Cumulative read/write counters accumulated by the collector/REST API. Compressed display in K/M/B units.
| Success | Failure | |
|---|---|---|
| Read (R) | plc_value_read_success_count | plc_value_read_error_count |
| Write (W) | plc_value_write_success_count | plc_value_write_error_count |
Click the ↻ refresh icon in the upper right → calls /connect/reset-read-error → resets only the failure counter to 0. Used when you want to start counting fresh from the next cycle after clearing an alarm.
6.4 MPS (gray_box)
Messages Per Second — Number of data points processed per second (monitor.mps).
A sparkline (mini trend chart) is located directly below to provide a quick view of load changes.
If the site's typical mps is 100 but suddenly drops to 0 → PLC connection or collection anomaly.
7. Transmission / Storage (5 cards)
7.1 대기 큐 (gray_box)
The queue size of points awaiting transmission (queue_size).
Typically 0 to several dozen. If external transmission is blocked (e.g., Sparkplug disconnected), it increases rapidly → overflows into the disk queue (
queue_disk_size). If this card continues to grow, check external communications.
7.2 포인트 전송 건수 (gray_box)
Cumulative number of points successfully transmitted externally since boot (sended_point_count).
7.3 포인트 전송량 (gray_box)
Cumulative transmitted bytes since boot (sended_point_bytes). Auto-units. Refer to this for data usage billing calculations.
7.4 데이터 저장량 (gray_box)
Total size of time series data stored in the Cassandra keyspace pe (MBytes input → auto-unit conversion). View this alongside remaining disk space.
7.5 데이터 저장 기간 (gray_box)
TTL (Time-To-Live) days for tm_tag_point (system_db_ttl, default 30 days). Data expires automatically after this period. Change this in app.properties.
8. System Errors (1 card)
8.1 시스템 오류 (오늘) (gray_box)
The number of ERROR level system logs that occurred today (00:00–present) (system_error_count). Large red number.
Click the number → navigate to /system/log/list to check the actual log body.
9. External Services / Integration (5 cards)
Each card consists of a status bar (green/red/gray) + a connection information table.
9.1 플랫폼 API 서버 (gray_box)
Connection status with the upper PlantPulse platform API. Clicking the external link icon in the upper right opens that server in a new window.
| Row | Meaning |
|---|---|
| Bar | 🟢 Connection Success / 🔴 Connection Failure (monitor.api) |
| HOST/IP | server.host |
| PORT | server.port |
| USER | server.username |
9.2 OPC-UA 서버 (gray_box)
Information for the embedded OPC-UA server in the gateway. External SCADAs connect here to subscribe to tags.
| Row | Meaning |
|---|---|
| Bar | 🟢 Active (Server always operational) |
| HOST/IP | opc.ua.server.host |
| PORT | opc.ua.server.tcp.port (Default 12000) |
| USER | opc.ua.server.user |
For detailed node trees / time series charts: Using OPC UA Server
9.3 MQTT 서버 (gray_box)
Information for the embedded HiveMQ in the gateway + the topic for publishing Sparkplug, etc.
| Row | Meaning |
|---|---|
| Bar | 🟢 Active / ⬜ Inactive (mqtt.enable) |
| HOST/IP | mqtt.server.host |
| PORT | mqtt.server.port (Default 1883) |
| USER | mqtt.server.user |
| TOPIC | mqtt.server.topic (Sparkplug spBv1.0/... or user topic) |
9.4 Sparkplug B (gray_box)
Real-time status of the Sparkplug publishing component (5-second update, item Sparkplug of /api/v1/transfer).
| Row | Meaning |
|---|---|
| Bar | 🟢 Active (Connected) / 🔴 Disconnected (Active but broker connection lost) / ⬜ Inactive (sparkplug.enable=false) |
| GROUP | Sparkplug Group ID (e.g., Plant1) |
| NODE | Edge Node ID (e.g., EDGE_00303) |
| Session # | bdSeq (Device birth/death sequence — reconnection count) |
| Message # | seq (Current published message number — 0–255 cycle) |
If Message # is frozen, transmission has stopped. If Session # increases frequently, the broker connection is unstable.
9.5 도커 (gray_box)
Docker daemon status + user application container statistics.
| Row | Meaning |
|---|---|
| Bar | 🟢 Running / 🔴 Stopped (monitor.docker_on) |
| Count | Number of containers (docker_container_up_count / docker_container_total_count) in [ 살아있는 / 전체 ] |
Provides an at-a-glance view of whether all applications registered in /ui/apps are alive.
10. Footer (Common to all pages)
The following are displayed at the bottom of the screen:
- PlantPulse Edge text + License
- ☁ Software Upgrade icon — clicking calls
upgrade.sh(after confirmation dialog)- Badge next to icon:
- Red "Upgrade Available!" → New version exists on download server
- Gray "Download Server Unreachable" → External network /
product.kopens.ioaccess failure - (No badge) → Current version is the latest
- Badge next to icon:
- External Port Shortcuts — Open other external services (e.g., Grafana 3000) in a new window
Internally, /config/upgrade/check fetches https://product.kopens.io/.../VERSION.JSON server-to-server for comparison → badges are displayed cleanly without CORS errors.
11. Update Cycle / Data Source Summary
| Area | Update Cycle | Endpoint |
|---|---|---|
| Gauges / Resources / Network / Counters / Queues / Storage / Errors | 1 second | GET /monitor/bean |
| Sparkplug B card | 5 seconds | GET /api/v1/transfer |
| Upgrade badge | Once on page load | GET /config/upgrade/check |
| Black info cards (Host Name/OS/Version, etc.) | No update (Value at page load) | EdgeContext (Determined at server boot) |
12. Common Observation Patterns
| Screen Signal | Suspected Cause / Action |
|---|---|
| Temperature Red (90°C↑) | Fan blockage / Ambient temperature — Inspect immediately |
| CPU Consistently 90%+ | Polling period too fast / Too many tags |
| Disk 90%+ | Cleanup and Purge — clean.sh + node-cleanup.sh |
| PLC Disconnected count sudden increase | PLC network cable / Switch / PLC power |
| Collection Anomaly > 0 | Connection OK but read failed — Check address format / PLC firmware |
| MPS drops to 0 | All PLCs read failed or collector stopped |
| Wait Queue continues to increase | External transmission (Sparkplug / MQTT) blocked — Check 9.3/9.4 cards |
| System Error red number | Click → Check body in /system/log/list |
| Sparkplug Message # does not change | Transmission stopped — Check sparkplug.* of app.properties |
| Docker Red | Check daemon status in systemctl status docker |
13. Learn More
- Add Connection: Adding a New PLC Connection
- Connection List / Tag Screen: Viewing Real-time Values
- OPC UA Server: Using OPC UA Server
- Flow Automation: Getting Started with Flows (Node-RED)
- System Configuration / Operational Scripts: Operational Overview