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

10. アラームサービス

client.alarm() でアクセスします。アラームの照会・集計、確認、非表示の発生・サービス除外を提供します。すべてのメソッドは ApiResult<T> を返します — isOk() が真であれば getData() で値を取得します。アラーム設定(Config)の管理は client.alarmConfig() 側で行います。

9.1 メソッド一覧​

メソッド返却型HTTPエンドポイント
get(alarm_seq)ApiResult<AlarmResponse>GET/api/v5/alarm/{alarm_seq}
list(limit)ApiResult<List<AlarmResponse>>GET/api/v5/alarm?limit=...
active(site_id, limit)ApiResult<List<AlarmResponse>>GET/api/v5/alarm/active
search(criteria)ApiResult<List<AlarmResponse>>GET/api/v5/alarm/search
readOne(alarm_seq, read_user_id)ApiResult<Boolean>PUT/api/v5/alarm/{alarm_seq}/read
batchRead(alarm_seqs, read_user_id)ApiResult<AlarmBatchReadResponse>POST/api/v5/alarm/batch/read
readAll(user_id)ApiResult<Boolean>POST/api/v5/alarm/read/all
deliveries(alarm_seq)ApiResult<List<AlarmDeliveryResponse>>GET/api/v5/alarm/{alarm_seq}/deliveries
suppressed(kind, asset_id, design_reason, ref_id, active, limit)ApiResult<List<AlarmSuppressedResponse>>GET/api/v5/alarm/suppressed
outOfService(active)ApiResult<List<AlarmOutOfServiceResponse>>GET/api/v5/alarm/out-of-service
takeOutOfService(request)ApiResult<AlarmOutOfServiceResponse>POST/api/v5/alarm/out-of-service
returnToService(out_of_service_id, force, note)ApiResult<AlarmReturnToServiceResponse>POST/api/v5/alarm/out-of-service/{out_of_service_id}/return

readOne · batchRead · readAll はトークンがあれば呼び出せます。V5トークンはADMIN · APIロールでのみ発行されるため、コンソールの「すべて確認はADMIN」という区分はV5では別途存在しません。

limit ≤ 1000 です。

パスの read は名前のみが残ったものです。サーバーはアラーム1つに対して確認1つを記録します — 確認。

9.2 AlarmResponse DTO​

アラーム本体 + 位置(tag/opc/site)のJOIN結果を併せて含みます。

アラーム本体フィールド​

フィールド型説明
alarm_seqlongアラームシーケンス (PK)
alarm_config_idStringアラーム設定ID
priorityString優先度 (INFO, WARN, ERROR)
descriptionStringアラームメッセージ
is_onBoolean現在の活性状態
acknowledgedBoolean確認済みかどうか
acknowledged_byString確認者 — ログインIDまたは社員ID
acknowledged_by_typeString確認者の種類 (USER, EMPLOYEE)
acknowledged_atLong確認時刻 (ミリ秒)
on_timestamplong発生時刻 (ミリ秒)
off_timestampLong解除時刻 (null = 未解除)
on_durationlong持続時間 (ミリ秒)
off_reasonString解除理由 — アラーム解除理由
bandString鳴動バンド

非表示の発生はこの行に含まれません。suppressed() で読み取ります。

位置JOINフィールド (list応答に含まれる)​

フィールド説明
tag_id, tag_name, tag_descriptionタグ情報
opc_id, opc_nameOPC情報
site_id, site_nameサイト情報
tag_location資産パス文字列 (SITE > AREA > LINE > EQUIPMENT)

9.3 アラーム優先度​

コード表示名
INFO情報
WARN警告
ERROR重大

9.4 使用例​

最近のアラーム一覧​

import java.util.List;
import plantpulse.api.v5.dto.response.AlarmResponse;
import plantpulse.api.v5.result.ApiResult;

ApiResult<List<AlarmResponse>> result = client.alarm().list(50);
if (result.isOk()) {
for (AlarmResponse a : result.getData()) {
System.out.printf("[%s] %s - %s (%s)%n",
a.getPriority(),
a.getSite_name(),
a.getDescription(),
a.getTag_location());
}
}

活性アラーム​

List<AlarmResponse> active = client.alarm().active("SITE_000001", 500).getData();
System.out.println("현재 활성 알람: " + active.size() + "건");

未確認活性アラーム​

long unacked = client.alarm().active("SITE_000001", 500).getData().stream()
.filter(a -> !Boolean.TRUE.equals(a.getAcknowledged()))
.count();

アラーム確認​

確認者はトークンのユーザーです。read_user_id は null とします — トークンユーザーと異なる名前を入れた場合は HTTP 422 となります。誰かが先に確認していた場合は HTTP 409 alarm.already_acknowledged となり、最初の記録が維持されます。

ApiResult<Boolean> r = client.alarm().readOne(12345L, null);

現場アプリのように社員名で確認する場合は、リクエストヘッダー X-PP-Performed-By に社員情報を載せます。そうすれば acknowledged_by_type が EMPLOYEE として残ります。

送信先​

既読表示のない送信記録です — recipient_type · recipient_id · recipient_name · channel(CONSOLE, EMAIL, SMS, APP) · sent_at。

client.alarm().deliveries(12345L).getData().forEach(d ->
System.out.println(d.getRecipient_name() + " / " + d.getChannel()));

非表示の発生​

一時非表示 · 設計抑制 · サービス除外で非表示となった発生です。フィルターはすべて null を使用できます。

引数値
kindSHELVED, SUPPRESSED_BY_DESIGN, OUT_OF_SERVICE
design_reasonMAINTENANCE, REPAIR (SUPPRESSED_BY_DESIGN のとき)
ref_id原因ID — ALARM_SHELVE_…, カレンダーID, 整備オーダーID, ALARM_OUT_OF_SERVICE_…
activetrue = 現在ONのもの
limit1~1000 (デフォルト 200)
var hidden = client.alarm().suppressed("SUPPRESSED_BY_DESIGN", "ASSET_ID", "REPAIR", null, true, 100);

サービス除外と復帰​

書き込みはADMINトークンのみ可能です。自動復帰はありません。復帰点検が拒否された場合は HTTP 422 となり、サービス除外が維持されます。

拒否理由HTTPコード
すでにサービス除外中409alarm.oos.already
理由値 · メモ · 予定復帰が不正422alarm.oos.reason_invalid · memo_required · window_invalid
復帰点検失敗422alarm.oos.return_not_normal · return_no_value
復帰だが理由なし422alarm.oos.note_required
すでに復帰済み409alarm.oos.already_returned

force を true とし、note を指定すれば、点検をスキップして復帰します(return_check = FORCED)。理由は SENSOR_REMOVED, EQUIPMENT_REMOVED, CALIBRATION, MODIFICATION, OTHER です。OTHER と安全・環境アラームはメモが必須です。

var r = client.alarm().returnToService("ALARM_OUT_OF_SERVICE_000001", false, null);

アラーム設定ID​

新しいアラーム設定IDはサーバーが発行します(ALARM_CONFIG_ + 6桁)。GET /api/v5/alarm/config/new-id で受け取って使用し、直接作成したIDで作成しようとすると HTTP 422 alarm.invalid.alarm_config_id となります。バンドアラームはAPIで作成しません — タグのアラーム設定(patchAlarm)が作成し、POST /alarm/config でバンドを作成しようとすると HTTP 409 alarm.band.edit_on_tag となります。

タグのバンド設定はIDを捏造せず、GET /api/v5/alarm/config/list/by-tag?tag_id=… で alarm_config_priority が BAND であるものを探します。変更履歴(/alarm/config/{alarm_config_id}/revisions)の alarm_config_id は、バンド設定がまだないタグの行で null となる場合があります。

アラームシステム性能​

SDKメソッドはありません。V5で直接読み取ります — GET /api/v5/alarm/performance?scope_type=SITE&scope_id=…&days=7。指標は アラーム性能 を参照してください。

次のステップ​