có thể tiến hành check tất cả tag trong SQL
Thật sự là rất lạ khi một key (3_Vol_smart_home) thì chạy tốt còn key kia (I(A)) lại bặt vô âm tín dù giao diện ThingsBoard vẫn đang báo có số.

Dựa trên kinh nghiệm xử lý dữ liệu PostgreSQL của ThingsBoard, có một vài "cái bẫy" rất nhỏ nhưng có thể làm câu Query bị rỗng. Bạn hãy kiểm tra 3 bước "cấp cứu" sau:
1. Kiểm tra chính xác tên Key trong Database
Đôi khi tên hiển thị trên Dashboard ThingsBoard là Label, còn tên lưu trong database (Key) lại khác. Hoặc tên key có chứa khoảng trắng ẩn.
Bạn hãy chạy câu lệnh này ở tab Table của Grafana để xem danh sách tất cả các key đang có của thiết bị đó:
SELECT DISTINCT kd.key
FROM ts_kv ts
JOIN key_dictionary kd ON ts.key = kd.key_id
WHERE ts.entity_id = (SELECT id FROM device WHERE name = 'Smart_home' LIMIT 1)
Nếu trong danh sách hiện ra là
I (A)(có khoảng trắng) hoặci(a)(chữ thường): Bạn phải sửa lại đúng y hệt trong câuWHERE.Nếu không thấy
I(A)trong danh sách này: Nghĩa là dữ liệu đó chưa hề được lưu vào bảngts_kv(có thể chỉ đang ở dạng Attribute hoặc telemetry chưa được persist).
2. Thử dùng toán tử LIKE (Tránh lỗi ký tự đặc biệt)
Dấu ngoặc đơn () đôi khi gây nhiễu trong việc so sánh chuỗi tùy vào bộ mã hóa (encoding). Hãy thử sửa dòng WHERE thành:
WHERE kd.key LIKE '%I%A%'
3. Kiểm tra kiểu dữ liệu thực tế (Cực kỳ quan trọng)
Như mình có nói ở trên, nếu dữ liệu không nằm ở dbl_v cũng không ở long_v, có thể nó đang nằm ở cột String (str_v) do cấu hình từ Gateway đổ về bị sai kiểu.
Hãy thử câu query "tổng lực" này, nó sẽ quét sạch mọi cột có thể chứa giá trị:
SELECT
ts.ts / 1000 AS time,
CASE
WHEN ts.dbl_v IS NOT NULL THEN ts.dbl_v
WHEN ts.long_v IS NOT NULL THEN ts.long_v::float
WHEN ts.str_v ~ '^[0-9.]+$' THEN ts.str_v::float -- Nếu là chuỗi số thì convert sang số
ELSE 0
END AS value,
kd.key AS metric
FROM ts_kv ts
JOIN key_dictionary kd ON ts.key = kd.key_id
WHERE kd.key = 'I(A)'
AND ts.entity_id = (SELECT id FROM device WHERE name = 'Smart_home' LIMIT 1)
AND ts.ts >= $__from AND ts.ts <= $__to
ORDER BY ts.ts ASC
Một điểm nhỏ cuối cùng: Bạn nhìn lại hình 2, cột Last update time là 2026-04-01 18:37:08.
Hiện tại máy tính của bạn đang là mấy giờ? (Góc phải màn hình trong ảnh là
17:30).Nếu giờ trên máy tính (Client) chạy chậm hơn giờ Server gửi về, và bạn đang chọn "Last 5 minutes", Grafana sẽ lọc các dữ liệu có
tsnằm trong tương lai so với máy tính và kết quả là... không có gì.
Thử nghiệm: Bạn chọn hẳn khoảng thời gian trên Grafana là Last 2 days xem nó có hiện ra cái chấm nào không nhé!

