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 |
| MAJOR | Cam | Quan trọng, ảnh hưởng dịch vụ |
| MINOR | Vàng | Ít ảnh hưởng, cần theo dõi |
| WARNING | Xanh dương | Cảnh báo sớm |
| INDETERMINATE | Xám | Khô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:
- SMS
- Webhook
- Slack
- Mobile push notification
Xem Thông báo để biết thêm.