thingboard sửa cả trong file cấu hình mới kết nối được
- Sao chép liên kết
- Chia sẻ với Facebook
- Chia sẻ với X
- Chia sẻ với Pinterest
- Chia sẻ với Linkedin
- Gửi bài qua Email
gửi email cho tác giả
OK 👍 log bạn gửi rất giá trị, đọc log này là xác định được chính xác 100% vấn đề rồi.
Mình chốt thẳng, không vòng vo nữa.
🔍 PHÂN TÍCH LOG (QUAN TRỌNG)
Dòng then chốt lặp đi lặp lại:
DefaultTransportService - Transport Stats: openConnections [0]
➡️ Ý nghĩa chính xác:
❌ KHÔNG CÓ BẤT KỲ KẾT NỐI MQTT NÀO ĐANG MỞ VÀO THINGSBOARD
Nhưng đồng thời lại có:
TS totalAdded [7] totalSaved [7]
TS Latest totalAdded [7] totalSaved [7]
➡️ Điều này có nghĩa là:
-
ThingsBoard CÓ nhận telemetry
-
Nhưng KHÔNG phải qua MQTT
👉 Telemetry đó đến từ HTTP / internal / test / rule-engine,
KHÔNG PHẢI từ NodeJS MQTT của bạn
🎯 KẾT LUẬN CHỐT
❌ NodeJS của bạn KHÔNG KẾT NỐI VÀO MQTT TRANSPORT CỦA THINGSBOARD
Bạn đang gặp đúng tình huống kinh điển này:
NodeJS / MQTT Explorer └── connect OK └── publish OK └── nhưng publish vào SAI BROKER
🔥 NGUYÊN NHÂN GỐC (RẤT HAY GẶP)
⚠️ Bạn đang dùng:
const TB_HOST = "mqtt://127.0.0.1:1883";
Nhưng thực tế:
❌ Cổng 1883 đó KHÔNG PHẢI MQTT TRANSPORT của ThingsBoard
hoặc
❌ ThingsBoard đang chạy Docker
→ 127.0.0.1 KHÔNG PHẢI máy host
➡️ Vì vậy:
-
MQTT Explorer thấy topic
-
NodeJS connect OK
-
Nhưng ThingsBoard KHÔNG thấy openConnections
✅ CÁCH SỬA DỨT ĐIỂM (LÀM THEO THỨ TỰ)
1️⃣ Kiểm tra MQTT Transport THỰC SỰ đang listen cổng nào
Chạy CMD (Admin):
netstat -ano | findstr LISTENING | findstr java
Hoặc trực tiếp:
netstat -ano | findstr 1883
Nếu KHÔNG thấy java listen 1883 → ❌ sai cổng
2️⃣ Kiểm tra thingsboard.yml
Mở:
C:\ThingsBoard\conf\thingsboard.yml
Phải có CHÍNH XÁC:
transport:
mqtt:
enabled: true
bind_address: 0.0.0.0
bind_port: 1883
👉 Nếu khác → sửa lại → restart ThingsBoard
3️⃣ Nếu bạn dùng THINGSBOARD DOCKER (RẤT HAY GẶP)
❌ KHÔNG ĐƯỢC dùng:
mqtt://127.0.0.1:1883
✅ PHẢI dùng:
mqtt://<IP_MÁY_HOST>:1883
Ví dụ:
mqtt://192.168.1.10:1883
localhosttrong container ≠ máy host
4️⃣ Test chuẩn nhất (BẮT BUỘC LÀM)
MQTT Explorer:
| Field | Value |
|---|---|
| Host | IP máy chạy ThingsBoard |
| Port | 1883 |
| Username | Access Token của device mqtt3321 |
| Password | (trống) |
Publish:
Topic: v1/devices/me/telemetry
Payload: {"check":1}
👉 Ngay lúc publish, log PHẢI đổi thành:
openConnections [1]
5️⃣ Khi openConnections > 0 → tag sẽ hiện NGAY
Vào:
Devices → mqtt3321 → Latest telemetry
Bạn sẽ thấy:
Second
Minute
check
🧠 TÓM TẮT 1 DÒNG (CỰC QUAN TRỌNG)
Log openConnections [0] = KHÔNG có MQTT client nào kết nối vào ThingsBoard
Không phải lỗi code
Không phải lỗi token
Không phải lỗi topic
👉 100% là sai broker / sai IP / sai port
👉 GIỜ BẠN LÀM GIÚP MÌNH 1 VIỆC CUỐI
Chạy và gửi mình kết quả:
netstat -ano | findstr 1883
👉 Mình sẽ chỉ cho bạn đúng 1 dòng cần sửa, đảm bảo xong ngay 💪
✅ ĐƯỢC – sửa port 1884 HOÀN TOÀN OK
nhưng phải sửa ĐÚNG 3 CHỖ, thiếu 1 chỗ là không bao giờ kết nối được.
Mình nói theo kiểu làm là chạy ngay, không lý thuyết.
✅ CÁCH ĐỔI MQTT PORT THINGSBOARD → 1884
1️⃣ Sửa ThingsBoard (BẮT BUỘC)
Mở file:
C:\ThingsBoard\conf\thingsboard.yml
Tìm phần MQTT, sửa thành:
transport:
mqtt:
enabled: true
bind_address: 0.0.0.0
bind_port: 1884
💾 Save file
2️⃣ RESTART ThingsBoard (BẮT BUỘC)
Không restart = KHÔNG CÓ TÁC DỤNG
net stop thingsboard net start thingsboard
Hoặc nếu chạy bằng service / docker thì restart tương ứng.
3️⃣ Kiểm tra port 1884 ĐÃ MỞ CHƯA
netstat -ano | findstr 1884
✅ Phải thấy kiểu:
TCP 0.0.0.0:1884 LISTENING <pid_java>
❌ Không thấy → ThingsBoard chưa listen
4️⃣ Sửa NodeJS (QUAN TRỌNG)
❌ CŨ
mqtt://127.0.0.1:1883
✅ MỚI
mqtt://127.0.0.1:1884
Ví dụ chuẩn:
const mqtt = require("mqtt");
const TB_HOST = "mqtt://127.0.0.1:1884";
const ACCESS_TOKEN = "TOKEN_DEVICE";
const client = mqtt.connect(TB_HOST, {
username: ACCESS_TOKEN
});
client.on("connect", () => {
console.log("✅ Connected to ThingsBoard MQTT 1884");
setInterval(() => {
client.publish(
"v1/devices/me/telemetry",
JSON.stringify({ test: 1 }),
{ qos: 0 }
);
}, 1000);
});
5️⃣ Test bằng MQTT Explorer (KHÔNG BỎ QUA)
| Field | Value |
|---|---|
| Host | IP ThingsBoard |
| Port | 1884 |
| Username | Access Token |
| Password | (trống) |
Publish:
Topic: v1/devices/me/telemetry
Payload: {"ok":true}
6️⃣ DẤU HIỆU THÀNH CÔNG 100%
Trong log ThingsBoard:
Transport Stats: openConnections [1]
Trong UI:
Devices → mqtt3321 → Latest telemetry
Sẽ thấy:
ok
test
⚠️ LƯU Ý RẤT QUAN TRỌNG
-
MQTT Explorer thấy topic ≠ ThingsBoard nhận
-
Chỉ khi:
openConnections > 0
👉 ThingsBoard mới thực sự nhận MQTT
👉 BẠN LÀM NGAY 2 LỆNH NÀY RỒI GỬI KẾT QUẢ:
netstat -ano | findstr 1884
node index.js
Mình sẽ chốt cho bạn đến khi thấy tag xuất hiện thì thôi 💪

