Cảnh báo (Alarms)

Quản lý vòng đời cảnh báo, điều kiện kích hoạt, và xử lý alarm trong VieLang IoT.

Cảnh báo (Alarms)

Hệ thống Alarm của VieLang IoT tự động phát hiện bất thường từ dữ liệu thiết bị và thông báo đến đúng người chịu trách nhiệm.

Khái niệm cơ bản

Originator (Nguồn phát)

Thực thể gây ra cảnh báo — thường là Device hoặc Asset. Alarm luôn gắn với một originator cụ thể.

Type (Loại)

Chuỗi định danh ngữ nghĩa của alarm, ví dụ: High Temperature, Low Battery, Connection Lost. Cùng với originator, type xác định tính duy nhất của alarm.

Severity (Mức độ)

Mức độMàuÝ nghĩa
CRITICALĐỏNghiêm trọng, cần xử lý ngay
MAJORCamQuan trọng, ảnh hưởng dịch vụ
MINORVàngÍt ảnh hưởng, cần theo dõi
WARNINGXanh dươngCảnh báo sớm
INDETERMINATEXámKhông xác định

Status (Trạng thái)

Alarm có hai chiều trạng thái độc lập:

ACTIVE_UNACK ← mới tạo, chưa xử lý ↓ Acknowledge ACTIVE_ACK ← đã xác nhận, đang xử lý ↓ Clear (điều kiện hết) CLEARED_ACK ← đã xử lý xong ACTIVE_UNACK ↓ Clear (điều kiện hết tự động) CLEARED_UNACK ← hết nhưng chưa ai xác nhận

Alarm Uniqueness (Tính duy nhất)

Alarm được xác định duy nhất bởi: Originator + Type + Start Time. Khi điều kiện còn tồn tại, hệ thống cập nhật alarm hiện tại (end time) thay vì tạo mới.

Điều kiện kích hoạt

Simple — Kích hoạt ngay lập tức

Alarm tạo ngay khi điều kiện đúng lần đầu.

temperature > 35 → tạo alarm ngay

Duration — Phải kéo dài

Alarm chỉ tạo nếu điều kiện đúng liên tục trong một khoảng thời gian.

temperature > 35 trong ít nhất 5 phút → tạo alarm

Tránh false positive khi có spike ngắn.

Repeating — Phải lặp lại

Alarm chỉ tạo sau khi điều kiện đúng N lần (không nhất thiết liên tục).

temperature > 35 xảy ra ít nhất 3 lần → tạo alarm

Propagation (Lan truyền)

Alarm có thể lan truyền theo quan hệ giữa các thực thể. Khi thiết bị trong Room 101 có alarm, alarm đó sẽ hiển thị trên:

  • Room 101 (Asset)
  • Floor 1 (Asset chứa Room 101)
  • Building A (Asset chứa Floor 1)

Giúp quản lý nhìn tổng thể từ cấp cao nhất.

Quản lý Alarm qua API

Lấy danh sách alarm

GET /api/alarms ?pageSize=20&page=0 &statusList=ACTIVE_UNACK,ACTIVE_ACK &severityList=CRITICAL,MAJOR &sortProperty=createdTime&sortOrder=DESC Authorization: Bearer {JWT} # Response: { "data": [ { "id": { "id": "alarm-uuid", "entityType": "ALARM" }, "type": "High Temperature", "originator": { "id": "device-uuid", "entityType": "DEVICE" }, "originatorName": "Sensor-01", "severity": "CRITICAL", "status": "ACTIVE_UNACK", "startTs": 1735000000000, "endTs": 1735000060000, "createdTime": 1735000000000 } ], "totalElements": 5, "hasNext": false }

Acknowledge alarm

POST /api/alarm/{alarmId}/acknowledge Authorization: Bearer {JWT}

Clear alarm

POST /api/alarm/{alarmId}/clear Authorization: Bearer {JWT}

Assign alarm cho người xử lý

POST /api/alarm/{alarmId}/assign/{userId} Authorization: Bearer {JWT}

Thêm comment

POST /api/alarm/{alarmId}/comment Authorization: Bearer {JWT} Content-Type: application/json { "comment": { "type": "doc", "content": [{"type": "paragraph", "content": [{"type": "text", "text": "Đang kiểm tra tại chỗ"}]}] } }

Lấy alarm của một thiết bị

GET /api/alarm/DEVICE/{deviceId} ?pageSize=10&page=0 &fetchOriginator=true Authorization: Bearer {JWT}

Cấu hình Alarm Rule trong Device Profile

Vào Device Profiles → chọn profile → tab Alarm rules:

Alarm Type: High Temperature Severity: CRITICAL Condition: temperature > 35 Trigger: Duration 5 phút Clear condition: temperature <= 30

Notification tự động

Kết hợp với hệ thống thông báo để gửi alert qua:

  • Email
  • SMS
  • Webhook
  • Slack
  • Mobile push notification

Xem Thông báo để biết thêm.