Skip to main content

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.

Point search screen — query time series by tag and period

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​

ButtonAction
← (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/list results — sorted by opc_id alphabetically in ASC order
  • Label format: OPC_ID (OPC_NAME) — if name is empty, only OPC_ID is 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 by tag_id in ASC order
  • Label format: TAG_ID (TAG_NAME) — if name is empty, only TAG_ID is displayed
  • If loading fails, a — Load failed — option is shown and a toast error is displayed
Clicking search without selecting a tag

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).

#ColumnWidthSortDisplay / Meaning
1Time180pxdesc defaulttimestamp.iso or raw timestamp — center-aligned
2Tag ID180px—The searched tag ID — center-aligned
3Value* (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
4Type100px—Color badge created from formatTypeBadge() (e.g., STRING / INT / DOUBLE / BOOL)
5Quality70px—OPC quality code (e.g., 192=Good). Empty if blank
6Error70px—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
Pressing CSV with no search results

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.ttl of app.properties is 30 days.
  • Rows in tm_tag_point are 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