VnRobo
Về chúng tôiBảng giáBlogLiên hệ
🇺🇸ENĐăng nhậpDùng thử miễn phí
🇺🇸EN
VnRobo logo

Hạ tầng AI cho robot công nghiệp thế hệ mới.

Sản phẩm

  • Tính năng
  • Bảng giá
  • Kiến thức
  • Dịch vụ

Công ty

  • Về chúng tôi
  • Blog
  • Liên hệ

Pháp lý

  • Chính sách bảo mật
  • Điều khoản sử dụng

© 2026 VnRobo. Bảo lưu mọi quyền.

Được tạo với♥tại Việt Nam
VnRobo
Về chúng tôiBảng giáBlogLiên hệ
🇺🇸ENĐăng nhậpDùng thử miễn phí
🇺🇸EN
  1. Trang chủ
  2. Blog
  3. MQTT Protocol: Giao tiếp giữa robot và cloud
otheriotmqttcommunication

MQTT Protocol: Giao tiếp giữa robot và cloud

MQTT Protocol cho robot và IoT — thiết lập broker, QoS levels, topic design và truyền telemetry từ robot lên cloud.

Nguyễn Anh Tuấn1 tháng 9, 20254 phút đọcCập nhật: 16 thg 6, 2026

MQTT là gì?

MQTT (Message Queuing Telemetry Transport) là giao thức truyền thông nhẹ, thiết kế cho các thiết bị có tài nguyên hạn chế và mạng không ổn định. Với overhead chỉ 2 bytes header, MQTT là lựa chọn hàng đầu cho giao tiếp giữa robot, sensor và cloud platform.

So với HTTP REST API (header hàng trăm bytes mỗi request), MQTT tiết kiệm băng thông đáng kể — yếu tố quyết định khi robot kết nối qua mạng 4G hoặc WiFi công nghiệp. Đây cũng là giao thức phổ biến khi triển khai ứng dụng IoT với Docker.

Kiến trúc Pub/Sub

MQTT sử dụng mô hình Publish/Subscribe với broker trung gian:

Robot A ──publish──→ ┌──────────┐ ──subscribe──→ Dashboard
Robot B ──publish──→ │  MQTT    │ ──subscribe──→ Cloud DB
Robot C ──publish──→ │  Broker  │ ──subscribe──→ Alert System
Dashboard ─publish─→ └──────────┘ ──subscribe──→ Robot A (commands)

Ưu điểm: robot không cần biết ai đang lắng nghe, broker lo việc phân phối message. Thêm subscriber mới không ảnh hưởng publisher.

Mạng kết nối IoT và giao tiếp giữa các thiết bị
Mạng kết nối IoT và giao tiếp giữa các thiết bị

Cài đặt Mosquitto Broker

# Cài đặt Mosquitto trên Ubuntu
sudo apt install -y mosquitto mosquitto-clients

# Cấu hình authentication
sudo nano /etc/mosquitto/conf.d/default.conf
# /etc/mosquitto/conf.d/default.conf
listener 1883
allow_anonymous false
password_file /etc/mosquitto/passwd

# TLS cho production
listener 8883
certfile /etc/mosquitto/certs/server.crt
keyfile /etc/mosquitto/certs/server.key
cafile /etc/mosquitto/certs/ca.crt
# Tạo user/password
sudo mosquitto_passwd -c /etc/mosquitto/passwd robot_user
sudo systemctl restart mosquitto

QoS Levels — Chọn đúng cho từng use case

QoS Đảm bảo Use case
0 — At most once Có thể mất message Sensor data tần suất cao (temperature mỗi giây)
1 — At least once Gửi ít nhất 1 lần, có thể trùng Telemetry quan trọng (battery level, error logs)
2 — Exactly once Đúng 1 lần, chậm nhất Lệnh điều khiển (start/stop, emergency stop)

Nguyên tắc: Dùng QoS 0 cho data stream tần suất cao, QoS 1 cho telemetry, QoS 2 cho commands.

Topic Design cho Robot Fleet

Thiết kế topic structure rõ ràng là chìa khóa để hệ thống mở rộng được:

fleet/{fleet_id}/robot/{robot_id}/telemetry/battery
fleet/{fleet_id}/robot/{robot_id}/telemetry/position
fleet/{fleet_id}/robot/{robot_id}/telemetry/status
fleet/{fleet_id}/robot/{robot_id}/command/velocity
fleet/{fleet_id}/robot/{robot_id}/command/mission
fleet/{fleet_id}/robot/{robot_id}/alert/collision
fleet/{fleet_id}/robot/+/telemetry/#    ← wildcard subscribe

Code Python cho Robot

import paho.mqtt.client as mqtt
import json
import time

class RobotMQTTClient:
    def __init__(self, robot_id: str, broker: str, port: int = 1883):
        self.robot_id = robot_id
        self.client = mqtt.Client(client_id=f"robot-{robot_id}")
        self.client.username_pw_set("robot_user", "secure_password")
        self.client.on_connect = self._on_connect
        self.client.on_message = self._on_message
        self.client.will_set(
            f"fleet/1/robot/{robot_id}/status",
            payload=json.dumps({"status": "offline"}),
            qos=1, retain=True
        )
        self.client.connect(broker, port)

    def _on_connect(self, client, userdata, flags, rc):
        # Subscribe to commands
        client.subscribe(f"fleet/1/robot/{self.robot_id}/command/#", qos=2)
        # Announce online
        self.publish_status("online")

    def _on_message(self, client, userdata, msg):
        payload = json.loads(msg.payload)
        if "velocity" in msg.topic:
            self.handle_velocity(payload)
        elif "mission" in msg.topic:
            self.handle_mission(payload)

    def publish_telemetry(self, battery: float, x: float, y: float):
        payload = json.dumps({
            "battery": battery, "position": {"x": x, "y": y},
            "timestamp": time.time()
        })
        self.client.publish(
            f"fleet/1/robot/{self.robot_id}/telemetry/position",
            payload, qos=0
        )

    def publish_status(self, status: str):
        self.client.publish(
            f"fleet/1/robot/{self.robot_id}/status",
            json.dumps({"status": status}), qos=1, retain=True
        )

Last Will and Testament

MQTT hỗ trợ Last Will — message tự động gửi khi client mất kết nối đột ngột. Đây là cách phát hiện robot offline mà không cần heartbeat phức tạp (đã cấu hình trong code ở trên với will_set).

Retained Messages

Dùng retain=True cho status messages. Khi dashboard mới kết nối, nó nhận ngay trạng thái cuối cùng của mỗi robot mà không cần đợi robot gửi lại.

Server và hạ tầng mạng cho hệ thống MQTT broker
Server và hạ tầng mạng cho hệ thống MQTT broker

Bảo mật trong Production

  1. Luôn dùng TLS (port 8883) cho kết nối qua internet
  2. Certificate per robot: mỗi robot có client certificate riêng
  3. ACL (Access Control List): robot chỉ publish được topic của mình
  4. Bridge broker: edge broker trong nhà máy, bridge tới cloud broker

MQTT là xương sống của mọi hệ thống IoT và robot fleet hiện đại. Với thiết kế topic hợp lý và QoS phù hợp, bạn có thể xây dựng hệ thống giao tiếp tin cậy cho hàng trăm robot. Kết hợp với Kubernetes và K3s cho robot fleet, MQTT tạo nên hạ tầng hoàn chỉnh cho quản lý đội robot quy mô lớn.

Khuyến nghị công cụ

Cloud/devops cho robot fleet

Dùng cho dashboard, API, logging, artifact storage và monitoring.

VPS for ROS 2 / fleet dashboard backend Phù hợp chạy API, Postgres, worker, dashboard và webhook automation. Xem VPS → Object storage for robot logs Lưu rosbag, video, dataset và model artifacts với chi phí dễ kiểm soát. Xem storage → Cloud GPU for training jobs Tách workload training khỏi robot để robot chỉ chạy inference/deployment. Xem GPU →

Bài viết liên quan

  • Triển khai ứng dụng IoT với Docker và Docker Compose
  • Kubernetes cho Robot Fleet: Orchestration ở quy mô lớn
  • Quản lý đội robot (Robot Fleet Management) trong nhà máy thông minh
NT

Nguyễn Anh Tuấn

Robotics & AI Engineer. Building VnRobo — sharing knowledge about robot learning, VLA models, and automation.

Khám phá VnRobo

Fleet MonitoringROS 2 IntegrationAMR Solutions

Bài viết liên quan

Tutorial
Robotics
ros2monitoringrobot-fleet
other

Cách giám sát robot ROS 2 từ xa: Hướng dẫn đầy đủ 2026

Hướng dẫn từng bước giám sát robot ROS 2 từ bất kỳ đâu — pin, CPU, trạng thái, heartbeat, alerts. Code chạy được, setup 10 phút. Miễn phí 3 robots.

14/4/20267 phút đọc
NT
Robotics
devopsdockeriot
other

Triển khai ứng dụng IoT với Docker và Docker Compose

Hướng dẫn triển khai ứng dụng IoT với Docker và Docker Compose trên edge devices — đóng gói, quản lý nhất quán và dễ bảo trì.

15/7/20254 phút đọc
NT
So sánh
Robotics
formantrobot-fleetfleet-management
other

Lựa chọn thay thế Formant: So sánh 5 nền tảng quản lý fleet robot 2026

Tìm alternative cho Formant năm 2026? So sánh thẳng thắn 5 nền tảng quản lý fleet robot — giá, hỗ trợ ROS 2, tính năng, và cái nào hợp với team bạn.

13/4/202611 phút đọc
NT
VnRobo logo

Hạ tầng AI cho robot công nghiệp thế hệ mới.

Sản phẩm

  • Tính năng
  • Bảng giá
  • Kiến thức
  • Dịch vụ

Công ty

  • Về chúng tôi
  • Blog
  • Liên hệ

Pháp lý

  • Chính sách bảo mật
  • Điều khoản sử dụng

© 2026 VnRobo. Bảo lưu mọi quyền.

Được tạo với♥tại Việt Nam