Point Search
This screen lets you query collected time-series data for a specific tag over a period, and download the results as a table or CSV. Operators use it for quick inspections like checking whether PLC values were within the normal range between 9:00 and 11:00 yesterday.

Click the Database icon in the top bar (fa-database, sixth from the left) or go directly to http://<gateway>/ui/point.
1. Screen Layout
┌────────────────────────────────────────────────────────────────┐
│ ⊙ 포인트 검색 — 시계열 데이터 조회 · TM_TAG_POINT [←] [↻] │
├────────────────────┬───────────────────────────────────────────┤
│ [검색 조건] │ [포인트 목록 — 최신 순] [CSV 다운로드] │
│ ─ 검색 기간 │ ┌──────────────────────────────────────┐ │
│ ─ OPC ID * │ │ 시각 │ 태그 ID │ 값 │ 타입 │ 품질 │ 에러 │ │
│ ─ 태그 ID * │ └──────────────────────────────────────┘ │
│ [검색] │ … │
└────────────────────┴───────────────────────────────────────────┘
The left panel's width is increased by +50px compared to the standard col-md-2 to prevent labels and combo boxes from being cut off.
2. Top Bar
| Button | Action |
|---|---|
← (fa-arrow-left) | Go back to /ui/main |
↻ (fa-sync) | Call point.search() again (keeps the current conditions, for refresh) |
3. Search Conditions (Left Panel)
3.1 Search Period (s_date_range)
- Based on daterangepicker — format
YYYY-MM-DD HH:mm ~ YYYY-MM-DD HH:mm - Automatically filled with the last 1 hour when the screen loads (
moment().subtract(1, 'hours')~moment()) - Click → calendar + time selection popup
3.2 OPC ID (Required)
- Combo box is populated from
POST /connect/opc/listresults — sorted byopc_idalphabetically in ASC order - Label format:
OPC_ID (OPC_NAME)— if name is empty, onlyOPC_IDis displayed - Changing the selection reloads the Tag ID combo below with the tags belonging to that OPC
3.3 Tag ID (Required)
- Before selecting an OPC:
disabled+ a guide option — Load after selecting OPC — - After selecting an OPC, populated from
POST /connect/tag/list { opc_id }results — sorted bytag_idin ASC order - Label format:
TAG_ID (TAG_NAME)— if name is empty, onlyTAG_IDis displayed - If loading fails, a — Load failed — option is shown and a toast error is displayed
A modal appears (bootbox alert): "Please select an OPC and a tag first." — This is a guard against wasted time and empty results due to missing data.
4. Result Table (6 Columns)
DataTables renders the GET /point/search response. Default sort is Time desc (most recent first).
| # | Column | Width | Sort | Display / Meaning |
|---|---|---|---|---|
| 1 | Time | 180px | desc default | timestamp.iso or raw timestamp — center-aligned |
| 2 | Tag ID | 180px | — | The searched tag ID — center-aligned |
| 3 | Value | * (variable) | — | Sorting varies by type — integer/long/float/double are right-aligned, boolean/string etc. center-aligned (per UI-DESIGN's table value alignment rules) — bold font |
| 4 | Type | 100px | — | Color badge created from formatTypeBadge() (e.g., STRING / INT / DOUBLE / BOOL) |
| 5 | Quality | 70px | — | OPC quality code (e.g., 192=Good). Empty if blank |
| 6 | Error | 70px | — | If error_code is 0/null, — (gray); otherwise, the code is shown in red |
Page length: 10 / 20 / 50 / 100 / 1000 — default 100. Korean interface (Korean.json).
5. CSV Download
CSV Download button at the top right — calls point.csv().
- Local export — the last search result (
point._lastData) is converted to CSV client-side → immediate download. No additional server call - Filename format:
point_<TAG_ID>_<TIMESTAMP>.csv(e.g.,point_TAG_LS_XBC_0001_20260510_1530.csv) - Columns: Time / Tag ID / Value / Type / Quality / Error — same as the UI table
A guide modal appears: "Please search first." — prevents issuing an empty CSV.
6. Data Source
The backend flow this screen queries:
PLC → Collector → PointProcessor → Cassandra: tm_tag_point (TTL = edge.ttl 일)
↑
/point/search?tag_id&from&to
- Data past its TTL is no longer queried. The default
edge.ttlofapp.propertiesis 30 days. - Rows in
tm_tag_pointare clustered by(tag_id, time_bucket, time)— short-period searches are fast. Fetching a month or more at once may be slow, so recommend hour- or day-level queries.
7. Operational Tips
- Tracking anomalies: Set the search period to cover the time an alarm was raised and query that tag — you'll see spikes, zero values, or quality changes
- PLC communication outages: If the Error column for a tag is flooded with red codes over a period, that's a PLC response failure interval — cross-check with Collection Status in
/ui/connect/list - CSV to Excel: Open the downloaded CSV in Excel/LibreOffice and plot a trend chart using the Value column for quick visualization — for full-fledged charts, use Real-time Value View or Tag Value Trend View
8. Related Documents
- Real-time Value View (
/ui/connect/tag-view) — 1-second polling + live chart for a single tag - Collection History View
- REST API —
GET /api/v1/tag/{tag_id}/value— Query the same data directly from external systems using X-API-Key