Quay lại danh sách
Tin tức công nghệ

Xây dựng Hệ thống Giám sát Thời tiết IoT: Tích hợp EMQX MQTT Broker và InfluxDB v3 trên Cloud VPS

2 tháng 6, 2026

1. Đặt vấn đề: Thách thức trong quản lý dữ liệu IoT thời gian thực

Trong kỷ nguyên số hóa và Công nghiệp 4.0, việc thu thập và phân tích dữ liệu từ các trạm quan trắc thời tiết hay hệ thống cảm biến công nghiệp đóng vai trò then chốt trong việc ra quyết định kinh doanh. Tuy nhiên, các doanh nghiệp thường đối mặt với bài toán lớn: Làm thế nào để xử lý hàng triệu thông điệp mỗi giây mà không gây nghẽn băng thông, đồng thời lưu trữ và truy vấn dữ liệu chuỗi thời gian (Time-series Data) một cách tối ưu nhất?

Để giải quyết bài toán này, kiến trúc kết hợp giữa MQTT Broker hiệu năng cao và Cơ sở dữ liệu chuỗi thời gian chuyên dụng là giải pháp tối ưu hàng đầu. Bài viết này sẽ hướng dẫn bạn từng bước xây dựng một hệ thống trạm giám sát thời tiết IoT hoàn chỉnh, sử dụng EMQX Broker và InfluxDB v3 triển khai trên máy chủ ảo (VPS).

2. Kiến trúc tổng quan của hệ thống

Một hệ thống IoT hoàn chỉnh và có khả năng mở rộng (scalability) cao thường được chia thành 3 tầng kiến trúc cốt lõi:

  • Tầng thu thập (Edge/Device Layer): Các trạm thời tiết (sử dụng vi điều khiển như ESP32, Raspberry Pi) thu thập các thông số như nhiệt độ, độ ẩm, áp suất khí quyển, tốc độ gió, sau đó đóng gói dữ liệu theo định dạng JSON.
  • Tầng vận chuyển (Message Broker Layer): EMQX đóng vai trò là trung tâm điều phối dữ liệu, tiếp nhận các gói tin MQTT từ thiết bị đầu cuối và chuyển tiếp chúng đến các dịch vụ xử lý tiếp theo.
  • Tầng lưu trữ & Hiển thị (Storage & Visualization Layer): InfluxDB v3 tiếp nhận dữ liệu chuỗi thời gian từ EMQX, lưu trữ tối ưu nhờ kiến trúc Columnar (bằng ngôn ngữ Rust) và cung cấp dữ liệu cho Dashboard trực quan hóa (như Grafana hoặc EMQX Dashboard tích hợp).
Kiến trúc này đảm bảo tính toàn vẹn của dữ liệu, giảm thiểu độ trễ xuống mức mili-giây và cho phép hệ thống mở rộng lên tới hàng triệu thiết bị kết nối đồng thời.

3. Tại sao chọn EMQX và InfluxDB v3?

EMQX - MQTT Broker chuẩn công nghiệp

EMQX là một trong những MQTT Broker mã nguồn mở phổ biến nhất hiện nay dành cho IoT nhờ các ưu điểm vượt trội:

  • Khả năng chịu tải cực cao, hỗ trợ hàng triệu kết nối đồng thời trên một cụm (cluster).
  • Tích hợp sẵn Rule Engine mạnh mẽ, cho phép chuyển đổi, lọc và đẩy dữ liệu trực tiếp sang các cơ sở dữ liệu khác mà không cần viết thêm mã code trung gian (middleware).

InfluxDB v3 - Tương lai của Time-series Database

Phiên bản InfluxDB v3 (được xây dựng trên Apache Arrow) mang lại những cải tiến mang tính đột phá cho các ứng dụng IoT:

  • Hiệu năng vượt trội: Tốc độ ghi và truy vấn nhanh hơn gấp nhiều lần so với các phiên bản tiền nhiệm.
  • Hỗ trợ SQL: Cho phép các kỹ sư dữ liệu sử dụng ngôn ngữ SQL chuẩn để truy vấn dữ liệu chuỗi thời gian, giảm thiểu thời gian học công nghệ mới.
  • Tối ưu hóa dung lượng lưu trữ: Nén dữ liệu cực kỳ hiệu quả, giúp tiết kiệm chi phí tài nguyên lưu trữ trên VPS.

4. Hướng dẫn triển khai chi tiết trên VPS

Bước 1: Chuẩn bị môi trường VPS

Để đảm bảo hiệu năng ổn định, bạn nên sử dụng một VPS chạy hệ điều hành Ubuntu Server (22.04 LTS trở lên) với cấu hình tối thiểu là 2 vCPU và 4GB RAM. Tiến hành cài đặt Docker và Docker Compose để quản lý các dịch vụ một cách dễ dàng.

sudo apt update && sudo apt upgrade -y
sudo apt install docker.io docker-compose -y

Bước 2: Cấu hình File Docker Compose

Tạo một file docker-compose.yml để khởi chạy đồng thời cả EMQX Broker và InfluxDB v3:

version: '3.8'
services:
  emqx:
    image: emqx/emqx:5.3.0
    container_name: emqx_broker
    ports:
      - "1883:1883"
      - "18083:18083"
    environment:
      - "[email protected]"

  influxdb:
    image: influxdb:3.0
    container_name: influxdb_v3
    ports:
      - "8086:8086"
    environment:
      - INFLUXD_TLS_MIN_VERSION=1.3
      - INFLUXD_BOLT_PATH=/var/lib/influxdb2/influxd.bolt
      - INFLUXD_ENGINE_PATH=/var/lib/influxdb2/engine

Chạy lệnh docker-compose up -d để khởi động toàn bộ hệ thống.

Bước 3: Cấu hình kết nối dữ liệu qua Rule Engine trên EMQX

Sau khi khởi động, truy cập vào trang quản trị EMQX Dashboard qua cổng http://:18083 (Tài khoản mặc định: admin/public). Tại đây, chúng ta sẽ cấu hình Rule Engine:

  1. Tạo Data Integration: Chọn mục Integration > Data Bridge, tìm đến InfluxDB kết nối thông qua giao thức HTTP API hoặc sử dụng Connector được tích hợp sẵn.
  2. Thiết lập Rule (Quy tắc): Viết câu lệnh SQL của EMQX để lọc dữ liệu từ topic thời tiết, ví dụ: SELECT payload.temperature AS temp, payload.humidity AS hum FROM "weather/station/#"
  3. Ánh xạ dữ liệu: Điền thông số Token, Bucket, và Organization từ InfluxDB v3 vào cấu hình để dữ liệu tự động chảy từ MQTT Topic vào Database chuỗi thời gian.

5. Mô phỏng dữ liệu trạm thời tiết gửi lên hệ thống

Để kiểm tra tính ổn định, chúng ta có thể sử dụng một đoạn mã Python ngắn để mô phỏng một trạm thời tiết gửi dữ liệu định kỳ mỗi 5 giây:

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

client = mqtt.Client()
client.connect("YOUR_VPS_IP", 1883, 60)

while True:
    payload = {
        "temperature": round(random.uniform(25.0, 35.0), 2),
        "humidity": round(random.uniform(60.0, 80.0), 2),
        "pressure": round(random.uniform(1008.0, 1013.0), 2)
    }
    client.publish("weather/station/01", json.dumps(payload))
    print(f"Published: {payload}")
    time.sleep(5)

6. Xây dựng IoT Dashboard hiển thị trực quan

Khi dữ liệu đã được lưu trữ thành công vào InfluxDB v3, bạn có thể sử dụng chính công cụ Visualization tích hợp hoặc kết nối với Grafana. Bằng cách thiết lập Data Source trỏ về InfluxDB v3, người quản trị có thể dễ dàng thiết kế các biểu đồ đường (Line Chart) biểu diễn biến thiên nhiệt độ, biểu đồ cột cho lượng mưa, hoặc các đồng hồ đo (Gauge) hiển thị thời gian thực.

Việc trực quan hóa này giúp doanh nghiệp nhanh chóng phát hiện các dấu hiệu bất thường của thời tiết, từ đó đưa ra các cảnh báo kịp thời cho chuỗi cung ứng hoặc hoạt động sản xuất nông nghiệp công nghệ cao.

7. Kết luận và Khuyến nghị vận hành

Xây dựng một hệ thống giám sát thời tiết IoT với EMQX và InfluxDB v3 trên VPS không chỉ giúp tối ưu hóa chi phí hạ tầng mà còn đảm bảo hiệu năng xử lý dữ liệu ở quy mô lớn. Đối với các doanh nghiệp có ý định triển khai thực tế, chúng tôi khuyến nghị áp dụng thêm các biện pháp bảo mật như: Kích hoạt mã hóa SSL/TLS cho giao tiếp MQTT, thiết lập tường lửa (Firewall) giới hạn cổng truy cập, và sử dụng cơ chế xác thực kết nối (Authentication) nghiêm ngặt cho thiết bị đầu cuối.

Xây dựng Hệ thống Giám sát Thời tiết IoT: Tích hợp EMQX MQTT Broker và InfluxDB v3 trên Cloud VPS | DPTCloud