Skip to main content

Giao thức cho thiết bị cảnh báo cơ bản

Cấu Trúc MQTT Topics (Topics Structure)

 

MQTT topics được thiết kế lại, sử dụng tên thiết bị cụ thể là notice_device_esp32, cùng với cấu trúc tổng thể và các cơ chế giao tiếp.

Chúng ta sẽ sử dụng cấu trúc topic cơ bản: smart/notice_device_esp32/danh_muc/thong_tin.


 

1. Cấu Trúc MQTT Topics cho thiết bị notice_device_esp32

 

A. Topics để Thiết bị Gửi Dữ Liệu Lên Server (PUBLISH)

 

Thiết bị notice_device_esp32 sẽ gửi (Publish) dữ liệu lên các topic này.

Mục đíchTopic (Ví dụ)Nội dung Bản tin (Payload)Ghi chú
1) Trạng thái Thiết bịsmart/notice_device_esp32/status/generalJSON: {"4G": "ON/OFF", "PIN": "OK/LOW", "WIFI": "ON/OFF", "DATA_TXRX": "ON/OFF"}Trạng thái tổng quan của các đèn hiển thị (Power, 4G, WiFi, Data).
2) Trạng thái Nút nhấn (Input)smart/notice_device_esp32/input/D11 (Nhấn) hoặc 0 (Nhả)Trạng thái nút nhấn D1. Tương tự cho D2, D3, D4, D5, D6.
 smart/notice_device_esp32/input/allJSON: {"D1": 0, "D2": 1, ...}(Tùy chọn) Gửi tất cả trạng thái input trong một bản tin.
4) Dữ liệu Hình ảnhsmart/notice_device_esp32/data/cameraChuỗi Base64 của ảnh JPEG.Dữ liệu hình ảnh được lấy qua Digest Auth.

 

B. Topics để Server Gửi Lệnh Xuống Thiết bị (SUBSCRIBE)

 

Thiết bị notice_device_esp32 sẽ đăng ký nhận (Subscribe) các topic này.

Mục đíchTopic (Ví dụ)Nội dung Bản tin (Payload)Ghi chú
3) Điều khiển Outputsmart/notice_device_esp32/control/O11 (BẬT) hoặc 0 (TẮT)Lệnh điều khiển Output O1. Tương tự cho O2, O3, v.v.
5) Cài đặt Định kỳsmart/notice_device_esp32/config/interval300 (giây) hoặc JSON: {"interval_sec": 300}Cài đặt chu kỳ gửi dữ liệu trạng thái (ví dụ: 300s = 5 phút).
Gửi lại lệnhsmart/notice_device_esp32/cmd/restart1Lệnh server yêu cầu thiết bị khởi động lại.

 

2. Các Cơ Chế Giao Tiếp (Phần 4 & 5)

 

 

Giao Tiếp Hai Chiều và Định Kỳ (Yêu cầu 5)

 

Giao tiếp hai chiều được thực hiện thông qua việc thiết lập các topic PUBLISH (cho trạng thái) và SUBSCRIBE (cho lệnh điều khiển).

 

1. Cơ chế Gửi Định kỳ (Heartbeat)

 

  • Thiết bị notice_device_esp32 sẽ triển khai một Timer nội bộ ( chạy RTOS)

  • Cứ sau khoảng thời gian  (ví dụ: 3 phút hoặc 5 phút) thiết bị sẽ PUBLISH bản tin trạng thái tổng thể lên topic smart/notice_device_esp32/status/general.

  • Đây là cơ chế quan trọng để Server biết thiết bị vẫn đang online (Heartbeat) và cập nhật tình trạng dữ liệu.

 

2. Cài đặt Chu kỳ từ Server

 

  • Để thay đổi  (3 phút  5 phút), Server sẽ PUBLISH xuống topic smart/notice_device_esp32/config/interval.

  • notice_device_esp32 SUBSCRIBE topic này, nhận giá trị mới (ví dụ: 180 giây) và cập nhật Timer nội bộ.

  • Lưu ý: Cài đặt mặc định (ví dụ 300 giây) nên được lưu trữ trong Flash/EEPROM của ESP32 để duy trì qua các lần khởi động lại.

 

Truyền Dữ Liệu Hình Ảnh (Yêu cầu 4)

 

  1. Thu thập: ESP32 sử dụng Digest Auth để lấy dữ liệu ảnh từ Camera, thường là định dạng JPEG.

  2. Mã hóa: Dữ liệu ảnh thô (byte array) được chuyển đổi sang chuỗi Base64. Điều này giúp bản tin MQTT payload chỉ chứa các ký tự hợp lệ và an toàn.

  3. Gửi: Thiết bị PUBLISH chuỗi Base64 lên topic smart/notice_device_esp32/data/camera.

  4. Chất lượng dịch vụ (QoS): Nên dùng QoS 1 cho các bản tin hình ảnh quan trọng để đảm bảo server nhận được ảnh (ít nhất một lần).