Filter Nodes

Các node lọc message trong Rule Engine — điều kiện, phân loại, và định tuyến dòng chảy dữ liệu

Filter Nodes

Filter nodes định tuyến message theo điều kiện. Mỗi node filter có ít nhất 2 output: TrueFalse (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ề true
  • False — script trả về false
  • Failure — lỗi runtime hoặc không trả về boolean

Message Type Filter

Lọc theo loại message:

Message TypeMô tả
POST_TELEMETRY_REQUESTThiết bị gửi telemetry
POST_ATTRIBUTES_REQUESTThiết bị gửi attributes
TO_SERVER_RPC_REQUESTThiết bị gửi RPC request
RPC_CALL_FROM_SERVER_TO_DEVICEServer gửi RPC cho thiết bị
ALARMAlarm event
CONNECT_EVENTThiết bị kết nối
DISCONNECT_EVENTThiế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]