Nart port mqtt brolermqotio thì thing board đọc đượ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ả
Bạn đã nói:
ChatGPT đã nói:
Có nhé 👍 hoàn toàn làm được, chỉ cần NAT/port-forward đúng cách là ThingsBoard ở xa 100 km vẫn đọc MQTT từ FUXA bình thường. Khoảng cách không phải vấn đề, Internet mới là vấn đề chính 😄
Mình nói theo đúng kịch bản của bạn cho dễ hình dung:
1️⃣ Mô hình đúng
[FUXA SCADA] --(MQTT Publish)--> [MQTT Broker trên máy FUXA]
| |
| (NAT port 1883 / 8883) |
v v
Internet ------------------------> [ThingsBoard (100km)]
👉 ThingsBoard chỉ cần kết nối tới MQTT Broker, không cần quan tâm FUXA.
2️⃣ Điều kiện BẮT BUỘC phải có
✅ 1. Máy FUXA phải có IP Public
IP WAN không phải 10.x / 172.16–31.x / 192.168.x
Kiểm tra:
Vào modem → WAN IP
So với IP trên
whatismyip.comNếu khác → CGNAT → KHÔNG dùng được
⚠️ Nếu bị CGNAT → phải dùng VPN (ZeroTier / WireGuard / Tailscale)
✅ 2. NAT port đúng trên modem/router
Ví dụ:
External Port : 1883
Internal IP : 192.168.1.50 (máy FUXA)
Internal Port : 1883
Protocol : TCP
👉 Nếu dùng TLS:
8883
Hoặc Websocket: 9001 / 8083
✅ 3. MQTT Broker phải LISTEN 0.0.0.0
Ví dụ Mosquitto:
listener 1883 0.0.0.0 allow_anonymous true
Kiểm tra trên máy FUXA:
netstat -ano | find "1883"
Phải thấy:
0.0.0.0:1883
3️⃣ Cấu hình FUXA (Publish MQTT)
Trong FUXA → MQTT Output
Mode: Publisher
Broker:
127.0.0.1(nếu broker cùng máy)Port:
1883Topic ví dụ:
fuxa/data/#
👉 FUXA chỉ publish, không cần NAT gì ở đây.
4️⃣ Cấu hình ThingsBoard (ở xa 100km)
🔹 Cách 1: ThingsBoard làm MQTT Client
Trong Device → MQTT:
Host:
IP_PUBLIC_FUXAPort:
1883Topic filter:
fuxa/data/+
🔹 Cách 2 (Chuẩn bài): ThingsBoard IoT Gateway
mqtt.json
{
"broker": {
"host": "IP_PUBLIC_FUXA",
"port": 1883,
"security": {
"type": "anonymous"
}
},
"mapping": [
{
"topicFilter": "fuxa/data/+",
"converter": {
"type": "json"
}
}
]
}
5️⃣ Test nhanh – CỰC QUAN TRỌNG
Từ máy ThingsBoard:
telnet IP_PUBLIC_FUXA 1883
hoặc
mosquitto_sub -h IP_PUBLIC_FUXA -p 1883 -t "fuxa/#"
❌ Không connect được → lỗi NAT / Firewall / CGNAT
✅ Sub được → ThingsBoard chắc chắn đọc được
6️⃣ Các lỗi hay gặp (90% dính)
| Lỗi | Nguyên nhân |
|---|---|
| Không kết nối | Nhà mạng CGNAT |
| LAN đọc OK – WAN không | NAT sai |
| Kết nối được nhưng không có data | Topic sai |
| ThingsBoard báo connected nhưng trống | Payload không phải JSON |
| Chập chờn | Firewall Windows |
🔥 Kết luận
✅ ĐỌC ĐƯỢC
✅ 100 km hay 1000 km đều như nhau
❌ Chỉ không được nếu CGNAT hoặc NAT sai
Nếu bạn muốn 👉 vẽ sơ đồ đúng theo hệ thống bạn đang dùng, hoặc 👉 check từng ảnh cấu hình FUXA / modem / ThingsBoard, gửi mình ảnh là mình soi cho đến khi chạy 🚀
Bạn đã nói:
ChatGPT đã nói:
Đúng rồi 👍 chính xác là NAT port của MQTT broker (Mosquitto) nhé.
Nói ngắn gọn cho dễ nhớ:
ThingsBoard ở xa → kết nối thẳng tới Mosquitto trên máy FUXA qua port đã NAT
Cụ thể bạn cần làm gì
1️⃣ NAT port Mosquitto
Ví dụ Mosquitto chạy trên máy FUXA:
| Thành phần | Giá trị |
|---|---|
| Internal IP | IP máy FUXA (vd: 192.168.1.50) |
| Internal Port | 1883 |
| External Port | 1883 |
| Protocol | TCP |
👉 NAT 1883 (hoặc 8883 nếu dùng TLS)
2️⃣ Mosquitto phải mở lắng nghe WAN
Trong mosquitto.conf:
listener 1883 0.0.0.0 allow_anonymous true
Kiểm tra:
netstat -ano | find "1883"
Phải thấy:
0.0.0.0:1883
3️⃣ FUXA chỉ publish nội bộ
Trong FUXA:
Broker:
127.0.0.1hoặc IP LAN máy FUXAPort:
1883Topic: tùy bạn (vd:
fuxa/data/...)
👉 FUXA KHÔNG cần NAT
👉 NAT là cho client bên ngoài (ThingsBoard)
4️⃣ ThingsBoard (ở xa)
Host: IP Public của modem chỗ FUXA
Port:
1883Topic filter: đúng topic FUXA publish
Test nhanh (rất quan trọng)
Từ máy ThingsBoard:
mosquitto_sub -h IP_PUBLIC_FUXA -p 1883 -t "#"
❌ Không connect → lỗi NAT / firewall / CGNAT
✅ Nhận data → ThingsBoard chắc chắn đọc được
Một câu chốt cho nhớ 😄
NAT cổng nào? → NAT cổng mà Mosquitto đang LISTEN
Nếu bạn muốn, gửi mình:
Ảnh NAT modem
File
mosquitto.confTopic FUXA đang publish
Mình check cho bạn đúng 100% trước khi chạy thực tế 🚀

