Tính năng điều khiển và cập nhật trạng thái tuân theo quy trình mô hình reported-desired được thiết kế ở phần 2 của chuỗi hướng dẫn này và nhóm đã đề xuất thiết kế trên nền tảng điện toán đám mây AWS IoT ở Hình 1:
Hình 1: Quy trình luồng dữ liệu điều khiển và cập nhật trạng thái trên nền tảng AWS
Dịch vụ được sử dụng chính làm CSDL cho hai luồng dữ liệu này là Device Shadow hay còn gọi là Thing Shadow, đây là dịch vụ cung cấp một phiên bản dữ liệu trạng thái của đối tượng (gọi là shadow) thing dưới dạng một tài liệu chuỗi JSON được lưu trữ trên đám mây cho phép các ứng dụng hoặc dịch vụ khác có thể tương tác với trạng thái của thiết bị cho dù thiết bị có đang kết nối đến AWS hoặc không. Tài liệu shadow có thể được tạo, cập nhật và xóa bởi thiết bị hoặc ứng dụng khác thông qua giao thức MQTT (dùng các reserved topic), HTTP (dùng REST API). Tài liệu shadow mặc định được thiết kế mô hình reported-desired, trường reported dùng để lưu trữ trạng thái thực của thiết bị và trường desired dùng để lưu trữ trạng thái mong muốn yêu cầu thiết bị thực hiện thay đổi. Hai trường reported và desired có thể chứa nhiều dữ liệu khác nhau được tổ chức theo các cặp key-value tạo nên các khối dữ liệu như thiết kế. Ứng dụng tương tác với đám mây qua Khối API được thiết kế sẵn theo kiến trúc REST API.
Ngoài trường state ra, tài liệu Device Shadow còn có thể chứa các thuộc tính khác như metadata, timestamp, clientToken, version,… để thể hiện các thông tin cụ thể khác nhau về thời gian, phiên bản,… của Device Shadow, giúp việc quản lý và xác thực dễ dàng hơn và các trường này sẽ được tự động quản lý bởi AWS. Shadow có thể chia thành nhiều tài liệu con bằng cách đặt tên hoặc sử dụng duy nhất một shadow cổ điển không có tên (mặc định), nhóm nghiên cứu sử dụng tài liệu shadow cổ điển để lưu dữ liệu điều khiển và cập nhật trạng thái; tài liệu shadow threshold để lưu dữ liệu cấu hình ngưỡng.
Tương tác với Device Shadow qua giao thức MQTT: thiết bị ESP32 khi giao tiếp với dịch vụ Device Shadow dùng giao thức MQTT, quá trình giao tiếp tuân theo mô hình request/response được thiết kế sẵn bởi cơ chế publish/subscribe của giao thức MQTT, cụ thể các ứng dụng có thể thực hiện các tương tác với thiết bị liên quan đến 3 loại truy vấn đối với reported và desired là: UPDATE (cập nhật dữ liệu), GET (truy xuất dữ liệu) hoặc DELETE (xóa dữ liệu). Mỗi một hành động truy vấn với shadow qua giao thức MQTT đều bao gồm 3 topic là: topic gửi yêu cầu, topic phản hồi nếu yêu cầu hợp lệ (accepted) và topic phản hồi nếu yêu cầu lỗi (rejected). Cấu trúc tên của các topic đã được định nghĩa sẵn bởi AWS IoT, đối với shadow cổ điển thì topic có định dạng như sau: $aws/things/thingName/shadow/queryType, trong đó thingName là tên của thiết bị và queryType là tên phương thức truy vấn, cụ thể có các phương thức sau được AWS IoT cung cấp:
Hình 2: Các phương thức truy vấn với dịch vụ Device Shadow
Tài liệu shadow của thiết bị ESP32 trong hệ thống nhà thông minh trong trường reported lưu 4 thông số chính:
- sensorValue: thông số giá trị cảm biến đo định kỳ (temperature, humidity, gas, pir)
- relayState: thông số trạng thái các relay (light1, light2, fan)
- connected: báo trạng thái kết nối của thiết bị (true hoặc false)
- deviceid: mã trạng thái thiết bị (ESP01)
Hình 3: Tài liệu shadow lưu dữ liệu trạng thái và điều khiển
Hình 4: Tài liệu shadow lưu dữ liệu cấu hình
Chuỗi bài viết được thực hiện và chia sẻ bởi LCV.Khải và Các nhóm nghiên cứu tại Cộng đồng Kỹ thuật TAPIT
Chúc các bạn thành công!