ポイント検索 (/ui/point) — 時系列データ照会
特定タグの 収集された時系列データ を期間指定で照会し、結果を表 / CSV でダウンロードする画面です。オペレーターが 昨日の 09 時〜11 時の間、PLC 値が正常範囲内だったか といった点検を素早く行う際に使用します。
左サイドバーの データベース アイコン(fa-database) → クリック、または直接 http://<gateway>/ui/point。
1. 画面構成
┌────────────────────────────────────────────────────────────────┐
│ ⊙ 포인트 검색 — 시계열 데이터 조회 · TM_TAG_POINT [←] [↻] │
├────────────────────┬───────────────────────────────────────────┤
│ [검색 조건] │ [포인트 목록 — 최신 순] [CSV 다운로드] │
│ ─ 검색 기간 │ ┌──────────────────────────────────────┐ │
│ ─ OPC ID * │ │ 시각 │ 태그 ID │ 값 │ 타입 │ 품질 │ 에러 │ │
│ ─ 태그 ID * │ └──────────────────────────────────────┘ │
│ [검색] │ … │
└────────────────────┴───────────────────────────────────────────┘
左パネルの width は標準の col-md-2 より +50px 広げ、ラベル / コンボボックスの切れを防止しています。
2. 上部バー
| ボタン | 動作 |
|---|---|
← (fa-arrow-left) | /ui/main へ戻る |
↻ (fa-sync) | point.search() を再呼び出し(既存条件を維持、再読み込み用) |
3. 検索条件(左パネル)
3.1 検索期間 (s_date_range)
- daterangepicker ベース — 形式
YYYY-MM-DD HH:mm ~ YYYY-MM-DD HH:mm - 画面に入った時点で 直近 1 時間 が自動入力されます (
moment().subtract(1, 'hours')〜moment()) - クリック → カレンダー + 時刻選択ポップアップ
3.2 OPC ID(必須)
POST /connect/opc/listの結果でコンボボックスを構成 —opc_idのアルファベット ASC 順- ラベル形式:
OPC_ID (OPC_NAME)— name が空の場合はOPC_IDのみ表示 - 選択を変更すると、下の タグ ID コンボがその OPC 所属のタグで再ロードされます
3.3 タグ ID(必須)
- OPC 選択前:
disabled+ 案内オプション — OPC 選択後にロード — - OPC 選択後は
POST /connect/tag/list { opc_id }の結果で構成 —tag_idASC 順 - ラベル形式:
TAG_ID (TAG_NAME)— name が空の場合はTAG_IDのみ - ロード失敗時は — ロード失敗 — オプションを表示 + トーストエラー
タグを選ばずに検索を押した場合
「OPC とタグを先に選択してください。」 モーダルが表示されます(bootbox alert)— データ不在による空の結果と時間の無駄を防ぐガードです。
4. 結果テーブル(6 カラム)
GET /point/search のレスポンスを DataTables が描画します。既定のソートは 時刻 desc(最新順)。
| # | カラム | 幅 | ソート | 表示 / 意味 |
|---|---|---|---|---|
| 1 | 時刻 | 180px | desc default | timestamp.iso または raw timestamp — 中央揃え |
| 2 | タグ ID | 180px | — | 検索したタグ ID — 中央揃え |
| 3 | 値 | *(可変) | — | 型に応じて揃えが変わります — integer/long/float/double は 右、boolean/string などは 中央(UI-DESIGN の表値の揃えルール)— 太字 |
| 4 | 型 | 100px | — | formatTypeBadge() で生成した色バッジ(例: STRING / INT / DOUBLE / BOOL) |
| 5 | 品質 | 70px | — | OPC quality code(例: 192=Good)。空の場合は空欄 |
| 6 | エラー | 70px | — | error_code が 0/null の場合は —(グレー)、それ以外は赤色でコード表示 |
ページ長: 10 / 20 / 50 / 100 / 1000 — 既定 100。韓国語インターフェース (Korean.json)。
5. CSV ダウンロード
右上の CSV ダウンロード ボタン — point.csv() を呼び出します。
- ローカル export — 最後の検索結果 (
point._lastData) をクライアント側で CSV に変換 → 即時ダウンロード。サーバーへの追加呼び出しはありません - ファイル名:
point_<TAG_ID>_<TIMESTAMP>.csv形式(例:point_TAG_LS_XBC_0001_20260510_1530.csv) - カラム: 時刻 / タグ ID / 値 / 型 / 品質 / エラー — UI の表と同一
検索結果がない状態で CSV を押した場合
「先に検索してください。」 の案内モーダル — 空 CSV の発行を防止します。
6. データの出所
この画面が照会するバックエンドの流れ:
PLC → Collector → PointProcessor → Cassandra: tm_tag_point (TTL = edge.ttl 일)
↑
/point/search?tag_id&from&to
- TTL の切れたデータは以降照会できません。
app.propertiesのedge.ttlは既定 30 日。 tm_tag_pointの row は(tag_id, time_bucket, time)でクラスタリング — 短期間の検索は高速です。1 か月以上を一度に取得すると応答が遅くなる場合があるため、数十分〜数時間 単位を推奨します。
7. 運用のヒント
- 異常値の追跡: アラームが発生した時刻を検索期間に含めて該当タグを照会 — 突発的な spike / 0 値 / quality の変化が確認できます
- PLC 通信断: 同一タグの エラー 列が一定時間ずっと赤色コードで埋まっている場合は PLC 応答失敗区間 —
/ui/connect/listの 収集状態 とクロスチェックしてください - CSV 後の Excel 活用: ダウンロードした CSV を Excel/LibreOffice で開き、値 列で推移チャートを作成すれば手早く可視化できます — 本格的なチャートは リアルタイム値の表示 または タグ値の推移表示 をご利用ください
8. 関連ドキュメント
- リアルタイム値の表示 (
/ui/connect/tag-view) — 単一タグを 1 秒ポーリング + ライブチャート - 収集履歴の表示
- REST API —
GET /api/v1/tag/{tag_id}/value— X-API-Key で外部システムから同一データを直接照会