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

ポイント検索

特定タグの収集された時系列データを期間で照会し、結果を表 / CSVでダウンロードする画面です。オペレーターが昨日の9時〜11時の間、PLC値が正常範囲だったかといった点検を素早く行う際に使用します。

ポイント検索画面 — タグと期間で時系列を照会する

トップバーのデータベースアイコン(fa-database、左から6番目) → クリック、または直接 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/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() 呼び出し。

  • ローカルエクスポート — 最後の検索結果 (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. 運用ヒント​

  • 異常値追跡: アラームが出た時刻を検索期間に設定してそのタグを照会 — 突然のスパイク / 0値 / 品質変化が見えます
  • PLC通信断: 同タグのエラーカラムが一定時間赤コードで埋まっている場合、PLC応答失敗区間 — /ui/connect/list で収集状態と相互確認
  • CSV後Excel: ダウンロードしたCSVをExcel/LibreOfficeで開き、値カラムでトレンドチャートを描くと高速な可視化 — 本格的なチャートはリアルタイム値表示またはタグ値推移表示を利用

8. 関連ドキュメント​