Point Search (/ui/point) — Time Series Data Query
This screen queries the collected time series data for a specific tag over a time range and lets you download the results as a table or CSV. Operators use it for quick inspections such as whether PLC values stayed within the normal range between 09:00 and 11:00 yesterday.
Click the Database icon (fa-database) in the left sidebar, or go directly to http://<gateway>/ui/point.
1. Screen Layout
┌────────────────────────────────────────────────────────────────┐
│ ⊙ 포인트 검색 — 시계열 데이터 조회 · TM_TAG_POINT [←] [↻] │
├────────────────────┬───────────────────────────────────────────┤
│ [검색 조건] │ [포인트 목록 — 최신 순] [CSV 다운로드] │
│ ─ 검색 기간 │ ┌──────────────────────────────────────┐ │
│ ─ OPC ID * │ │ 시각 │ 태그 ID │ 값 │ 타입 │ 품질 │ 에러 │ │
│ ─ 태그 ID * │ └──────────────────────────────────────┘ │
│ [검색] │ … │
└────────────────────┴───────────────────────────────────────────┘
The left panel is 50 px wider than the standard col-md-2 to keep labels and combo boxes from being clipped.
2. Top Bar
| Button | Action |
|---|---|
← (fa-arrow-left) | Return to /ui/main |
↻ (fa-sync) | Call point.search() again (keeps the current conditions; used to 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 hour when the screen opens (
moment().subtract(1, 'hours')~moment()) - Click to open the calendar + time picker popup
3.2 OPC ID (required)
- Combo box populated from the
POST /connect/opc/listresult — sorted byopc_idalphabetically ASC - Label format:
OPC_ID (OPC_NAME)— if name is empty, onlyOPC_IDis shown - Changing the selection reloads the Tag ID combo below with the tags belonging to that OPC
3.3 Tag ID (required)
- Before an OPC is selected:
disabledplus the guidance option — Loads after OPC selection — - After an OPC is selected, populated from the
POST /connect/tag/list { opc_id }result — sorted bytag_idASC - Label format:
TAG_ID (TAG_NAME)— if name is empty, onlyTAG_ID - On load failure, the — Load failed — option appears along with an error toast
The modal "Please select an OPC and a tag first." appears (bootbox alert) — a guard that prevents wasting time on an empty result caused by missing data.
4. Result Table (6 Columns)
DataTables renders the GET /point/search response. The default sort is timestamp desc (most recent first).
| # | Column | Width | Sort | Display / Meaning |
|---|---|---|---|---|
| 1 | Timestamp | 180px | desc default | timestamp.iso or raw timestamp — center aligned |
| 2 | Tag ID | 180px | — | The tag ID that was searched — center aligned |
| 3 | Value | * (variable) | — | Alignment depends on the type — integer/long/float/double are right aligned, boolean/string and similar are center aligned (per the table value alignment rules in UI-DESIGN) — bold |
| 4 | Type | 100px | — | Color badge produced by formatTypeBadge() (e.g. STRING / INT / DOUBLE / BOOL) |
| 5 | Quality | 70px | — | OPC quality code (e.g. 192=Good). Blank if empty |
| 6 | Error | 70px | — | — (gray) if error_code is 0/null; otherwise the code is shown in red |
Page lengths: 10 / 20 / 50 / 100 / 1000 — default 100. Korean interface (Korean.json).
5. CSV Download
The CSV Download button at the top right calls point.csv().
- Local export — the last search result (
point._lastData) is converted to CSV on the client side and downloaded immediately. No additional server call - File name:
point_<TAG_ID>_<TIMESTAMP>.csvformat (e.g.point_TAG_LS_XBC_0001_20260510_1530.csv) - Columns: Timestamp / Tag ID / Value / Type / Quality / Error — identical to the UI table
The guidance modal "Please run a search first." appears — 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 whose TTL has expired can no longer be queried.
edge.ttlinapp.propertiesdefaults to 30 days. - Rows in
tm_tag_pointare clustered by(tag_id, time_bucket, time)— searches over short periods are fast. Pulling a month or more at once can slow the response, so ranges of tens of minutes to a few hours are recommended.
7. Operating Tips
- Tracking abnormal values: put the time the alarm fired inside the search period and query that tag — sudden spikes, zero values, or quality changes become visible
- PLC communication loss: if the Error column for the same tag is filled with red codes for a stretch of time, that is a PLC response failure window — cross-check with collection status in
/ui/connect/list - CSV then Excel: open the downloaded CSV in Excel/LibreOffice and chart the Value column for a quick trend visualization — for full charting use Monitor Real-time Values or View Tag Value Trends
8. Related Documents
- Monitor Real-time Values (
/ui/connect/tag-view) — 1-second polling of a single tag plus a live chart - View Collection History
- REST API —
GET /api/v1/tag/{tag_id}/value— query the same data directly from external systems using an X-API-Key