メインコンテンツまでスキップ

ポイント検索 (/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_id ASC 順
  • ラベル形式: TAG_ID (TAG_NAME) — name が空の場合は TAG_ID のみ
  • ロード失敗時は — ロード失敗 — オプションを表示 + トーストエラー
タグを選ばずに検索を押した場合

「OPC とタグを先に選択してください。」 モーダルが表示されます(bootbox alert)— データ不在による空の結果と時間の無駄を防ぐガードです。


4. 結果テーブル(6 カラム)

GET /point/search のレスポンスを DataTables が描画します。既定のソートは 時刻 desc(最新順)。

#カラムソート表示 / 意味
1時刻180pxdesc defaulttimestamp.iso または raw timestamp — 中央揃え
2タグ ID180px検索したタグ ID — 中央揃え
3*(可変)型に応じて揃えが変わります — integer/long/float/doubleboolean/string などは 中央(UI-DESIGN の表値の揃えルール)— 太字
4100pxformatTypeBadge() で生成した色バッジ(例: STRING / INT / DOUBLE / BOOL)
5品質70pxOPC quality code(例: 192=Good)。空の場合は空欄
6エラー70pxerror_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.propertiesedge.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. 関連ドキュメント