Filter Nodes
Filter nodes định tuyến message theo điều kiện. Mỗi node filter có ít nhất 2 output: True và False (hoặc nhiều nhánh với switch nodes).
Script Filter
Lọc bằng script tùy chỉnh trả về true hoặc false.
Ngôn ngữ hỗ trợ: TBEL (ThingsBoard Expression Language) hoặc JavaScript.
Biến có sẵn trong script:
msg— Payload của message (object/array)metadata— Metadata (key-value string)msgType— Loại message (POST_TELEMETRY_REQUEST,POST_ATTRIBUTES_REQUEST, ...)
// Cảnh báo khi nhiệt độ vượt ngưỡng
var threshold = parseFloat(metadata.maxTemperature) || 30;
return msg.temperature > threshold;// Chỉ xử lý telemetry hợp lệ
return typeof msg.temperature === 'number'
&& typeof msg.humidity === 'number'
&& msg.humidity >= 0 && msg.humidity <= 100;Output:
True— script trả vềtrueFalse— script trả vềfalseFailure— lỗi runtime hoặc không trả về boolean
Message Type Filter
Lọc theo loại message:
| Message Type | Mô tả |
|---|---|
POST_TELEMETRY_REQUEST | Thiết bị gửi telemetry |
POST_ATTRIBUTES_REQUEST | Thiết bị gửi attributes |
TO_SERVER_RPC_REQUEST | Thiết bị gửi RPC request |
RPC_CALL_FROM_SERVER_TO_DEVICE | Server gửi RPC cho thiết bị |
ALARM | Alarm event |
CONNECT_EVENT | Thiết bị kết nối |
DISCONNECT_EVENT | Thiết bị ngắt kết nối |
Cấu hình: Chọn một hoặc nhiều type. Output: True (khớp), False (không khớp).
Message Type Switch
Phân luồng message theo type — nhiều output connection khác nhau.
POST_TELEMETRY_REQUEST → kết nối "Telemetry Processing"
POST_ATTRIBUTES_REQUEST → kết nối "Attributes Processing"
RPC_CALL_FROM_SERVER_TO_DEVICE → kết nối "RPC Handler"
Other → kết nối mặc định
Entity Type Filter
Lọc theo loại entity của originator:
Entity Types: [DEVICE, ASSET]
→ True nếu originator là Device hoặc Asset
→ False với Customer, Tenant, User, ...
Check Relation Filter
Kiểm tra xem originator có quan hệ với entity nào không:
Direction: FROM (originator → target)
Entity Type: ASSET
Entity Name: "Building A"
Relation Type: Contains
Output True nếu quan hệ tồn tại, False nếu không.
GPS Geofencing Filter
Lọc message dựa trên vị trí địa lý:
Latitude key: latitude
Longitude key: longitude
Perimeter type: Polygon / Circle
Circle:
{
"centerLatitude": 10.762622,
"centerLongitude": 106.660172,
"range": 500,
"rangeUnit": "METER"
}Polygon (định nghĩa vùng địa lý phức tạp):
{
"coordinates": [
[10.762, 106.660],
[10.763, 106.661],
[10.761, 106.662],
[10.762, 106.660]
]
}Output True nếu thiết bị trong vùng, False nếu ngoài.
Threshold Filter
Lọc nhanh theo ngưỡng số học (không cần script):
Key: temperature
Type: Telemetry
Predicate: > 80
Nhanh hơn Script Filter khi chỉ cần so sánh đơn giản.
Check Fields Presence
Kiểm tra sự tồn tại của các field trong message:
Fields: ["temperature", "humidity", "pressure"]
Check all fields: ✓
Output True nếu tất cả field có mặt trong msg.
Kết hợp các Filter Nodes
Ví dụ pipeline lọc phức tạp:
[Telemetry] → [Message Type Filter: POST_TELEMETRY]
↓ True
[Check Fields: temperature, humidity]
↓ True
[Script: validate range]
↓ True ↓ False
[Save Telemetry] [Log Invalid]