Workflow IOT
Bước 1: Khởi tạo hệ thống
1. :Khởi động phần cứng phần mềm
o Khi hệ thống được bật lên, sẽ bắt đầu khởi tạo kết nối với các cảm ESP8266
biến (DHT11, DS18B20, relay) các phần cứng khác như .nút nhấn
o Arduino IDE sẽ chạy các hàm trong setup(), bao gồm việc thiết lập kết nối Wi-
Fi MQTT.
o Các cảm biến như (nhiệt độ độ ẩm) (nhiệt độ để giám sátDHT11 DS18B20
2. :Kết nối Wi-Fi
o ESP8266 sẽ cố gắng kết nối vào Wi-Fi qua WiFi.begin(ssid, password).
o Nếu kết nối thành công, hệ thống in ra địa chỉ IP của ESP8266.
3. :Kết nối đến Broker MQTT
o Sau khi kết nối Wi-Fi thành công, ESP8266 sẽ kết nối đến (ở địa server MQTT
chỉ ).mqtt_server
o Sau khi kết nối, ESP8266 sẽ tất cả các chủ đề liên quan để nhận các subscribe
lệnh điều khiển (điều khiển relay).
Bước 2: Quản các nút nhấn (Button Events)
1. :Nhấn nút (Button1 hoặc Button2)
o Khi một trong hai nút hoặc được nhấn hoặc thả, sự kiện được Button1 Button2
gửi tới hàm hoặc .button1Handler button2Handler
o Trong các hàm này, hệ thống kiểm tra trạng thái của nút:
Nếu nút trạng thái (được nhấn), relay tương ứng sẽ bật (chân LOW
relay ).HIGH
Nếu nút trạng thái (được thả), relay sẽ tắt (chân relay ).HIGH LOW
2. :Cập nhật trạng thái relay
o Sau khi relay được bật/tắt, hệ thống cập nhật trạng thái của relay vào MQTT
server để thông báo tới các thiết bị khác về trạng thái thay đổi.
Bước 3: Thu thập gửi dữ liệu cảm biến
1. :Đọc dữ liệu cảm biến
o DHT11 sẽ được đọc để lấy dữ liệu nhiệt độ độ ẩm.
o DS18B20 sẽ được đọc để lấy nhiệt độ từ cảm biến.
o Các cảm biến sẽ gửi dữ liệu theo chu kỳ hoặc khi yêu cầu từ hệ thống.
2. :Gửi dữ liệu lên MQTT
o Dữ liệu cảm biến được đóng gói thành định dạng (sử dụng thư viện JSON
ArduinoJson).
o Sau khi đóng gói dữ liệu, hệ thống sẽ thông tin vào các chủ đề MQTT publish
tương ứng.
o Dữ liệu gửi bao gồm giá trị của cảm biến loại sự kiện (event_type =
"client_update").
3. :Thực hiện gửi định kỳ
o Hệ thống sẽ tự động gửi trạng thái cảm biến một lần nữa để cập nhật thông tin lên
MQTT.
Bước 4: Xử các lệnh từ MQTT (nhận dữ liệu từ server)
1. :Nhận thông tin từ server MQTT
o Khi MQTT server gửi lệnh tới các chủ đề ESP8266 đã , hệ thống sẽ subscribe
gọi hàm .callback()
o Trong hàm này, hệ thống kiểm tra xem lệnh liên quan đến hay không.relay
2. :Cập nhật trạng thái relay
o Nếu lệnh đến lệnh bật/tắt relay (event_type "server_update" = ), hệ thống sẽ
bật hoặc tắt relay tương ứng lưu lại trạng thái của relay.
o Sau khi thay đổi trạng thái, hệ thống gửi lại trạng thái mới lên MQTT để các thiết
bị khác thể nhận xử lý.
Bước 5: Chế độ giám sát duy trì kết nối
1. :Kiểm tra kết nối MQTT
o Trong hàm loop(), hệ thống liên tục kiểm tra trạng thái kết nối đến MQTT.
o Nếu kết nối mất, hệ thống sẽ cố gắng kết nối lại bằng cách gọi hàm reconnect().
Khi kết nối lại thành công, hệ thống sẽ tiếp tục nhận gửi dữ liệu.
2. :Duy trì việc đọc gửi cảm biến định kỳ
o Hệ thống gửi thông tin cảm biến định kỳ, giúp luôn duy trì sự ổn định cập nhật
dữ liệu liên tục.
WORLFLOW AI
1. Tải ảnh lên:
o Người dùng tải ảnh lên thông qua giao diện web.
o Ảnh được lưu tạm thời hoặc xử trực tiếp.
o API nhận ảnh từ client (frontend) gửi đến backend.
2. Tiền xử ảnh:
o Chuyển đổi ảnh về kích thước tiêu chuẩn (ví dụ: hoặc pixel).256x256 224x224
o Chuẩn hóa giá trị pixel (scaling từ về [0, 255] [0, 1]).
o Chuyển đổi định dạng ảnh sang tensor phù hợp với hình AI.
3. Dự đoán bằng hình:
o Sử dụng hình đã huấn luyện trước (Pre-trained model).
o hình thể là:
Custom Model: Huấn luyện từ đầu với dataset cụ thể.
4. Trả kết quả:
o hình trả về nhãn dự đoán (class label).
o Gửi kết quả qua API về frontend để hiển thị.

Preview text:

Workflow IOT
Bước 1: Khởi tạo hệ thống
1. Khởi động phần cứng và phần mềm: o
Khi hệ thống được bật lên, ESP8266 sẽ bắt đầu khởi tạo và kết nối với các cảm
biến (DHT11, DS18B20, relay) và các phần cứng khác như nút nhấn. o
Arduino IDE sẽ chạy các hàm trong setup(), bao gồm việc thiết lập kết nối Wi- Fi và MQTT. o
Các cảm biến như DHT11 (nhiệt độ và độ ẩm) và DS18B20 (nhiệt độ để giám sát
độ ẩm của nước ) sẽ được khởi tạo và bắt đầu đọc dữ liệu. 2. Kết nối Wi-Fi: o
ESP8266 sẽ cố gắng kết nối vào Wi-Fi qua WiFi.begin(ssid, password). o
Nếu kết nối thành công, hệ thống in ra địa chỉ IP của ESP8266.
3. Kết nối đến Broker MQTT: o
Sau khi kết nối Wi-Fi thành công, ESP8266 sẽ kết nối đến server MQTT (ở địa chỉ mqtt_server). o
Sau khi kết nối, ESP8266 sẽ subscribe tất cả các chủ đề liên quan để nhận các
lệnh điều khiển (điều khiển relay).
Bước 2: Quản lý các nút nhấn (Button Events)
1. Nhấn nút (Button1 hoặc Button2): o
Khi một trong hai nút Button1 hoặc
được nhấn hoặc thả, sự kiện được Button2
gửi tới hàm button1Handler hoặc button2Handler. o
Trong các hàm này, hệ thống kiểm tra trạng thái của nút: 
Nếu nút ở trạng thái LOW (được nhấn), relay tương ứng sẽ bật (chân relay ). HIGH  Nếu nút ở trạng thái
(được thả), relay sẽ tắt (chân relay HIGH LOW).
2. Cập nhật trạng thái relay: o
Sau khi relay được bật/tắt, hệ thống cập nhật trạng thái của relay vào MQTT
server để thông báo tới các thiết bị khác về trạng thái thay đổi.
Bước 3: Thu thập và gửi dữ liệu cảm biến
1. Đọc dữ liệu cảm biến: o
DHT11 sẽ được đọc để lấy dữ liệu nhiệt độ và độ ẩm. o
DS18B20 sẽ được đọc để lấy nhiệt độ từ cảm biến. o
Các cảm biến sẽ gửi dữ liệu theo chu kỳ hoặc khi có yêu cầu từ hệ thống.
2. Gửi dữ liệu lên MQTT: o
Dữ liệu cảm biến được đóng gói thành định dạng JSON (sử dụng thư viện ArduinoJson). o
Sau khi đóng gói dữ liệu, hệ thống sẽ publish thông tin vào các chủ đề MQTT tương ứng. o
Dữ liệu gửi bao gồm giá trị của cảm biến và loại sự kiện (event_type = "client_update").
3. Thực hiện gửi định kỳ: o
Hệ thống sẽ tự động gửi trạng thái cảm biến một lần nữa để cập nhật thông tin lên MQTT.
Bước 4: Xử lý các lệnh từ MQTT (nhận dữ liệu từ server)
1. Nhận thông tin từ server MQTT: o
Khi MQTT server gửi lệnh tới các chủ đề mà ESP8266 đã subscribe, hệ thống sẽ gọi hàm callback(). o
Trong hàm này, hệ thống kiểm tra xem lệnh có liên quan đến relay hay không.
2. Cập nhật trạng thái relay: o
Nếu lệnh đến là lệnh bật/tắt relay (event_type = "server_update"), hệ thống sẽ
bật hoặc tắt relay tương ứng và lưu lại trạng thái của relay. o
Sau khi thay đổi trạng thái, hệ thống gửi lại trạng thái mới lên MQTT để các thiết
bị khác có thể nhận và xử lý.
Bước 5: Chế độ giám sát và duy trì kết nối 1. :
Kiểm tra kết nối MQTT o
Trong hàm loop(), hệ thống liên tục kiểm tra trạng thái kết nối đến MQTT. o
Nếu kết nối mất, hệ thống sẽ cố gắng kết nối lại bằng cách gọi hàm reconnect().
Khi kết nối lại thành công, hệ thống sẽ tiếp tục nhận và gửi dữ liệu.
2. Duy trì việc đọc và gửi cảm biến định kỳ: o
Hệ thống gửi thông tin cảm biến định kỳ, giúp luôn duy trì sự ổn định và cập nhật dữ liệu liên tục. WORLFLOW AI 1. Tải ảnh lên: o
Người dùng tải ảnh lên thông qua giao diện web. o
Ảnh được lưu tạm thời hoặc xử lý trực tiếp. o
API nhận ảnh từ client (frontend) gửi đến backend.
2. Tiền xử lý ảnh: o
Chuyển đổi ảnh về kích thước tiêu chuẩn (ví dụ: 256x256 hoặc 224x224 pixel). o
Chuẩn hóa giá trị pixel (scaling từ [0, 255] về [0, 1]). o
Chuyển đổi định dạng ảnh sang tensor phù hợp với mô hình AI.
3. Dự đoán bằng mô hình: o
Sử dụng mô hình đã huấn luyện trước (Pre-trained model). o Mô hình có thể là: 
Custom Model: Huấn luyện từ đầu với dataset cụ thể. 4. Trả kết quả: o
Mô hình trả về nhãn dự đoán (class label). o
Gửi kết quả qua API về frontend để hiển thị.