Site icon TAPIT

Luồng dữ liệu cảm biến khi sử dụng AWS IoT Core

Theo quy trình luồng dữ liệu cảm biến trên nền tảng điện toán đám mây AWS được nhóm nghiên cứu lựa chọn như mô tả tại Hình 1, bài viết này sẽ phân tích chi tiết về luồng dữ liệu từ thiết bị qua các thành phần dịch vụ của nền tảng điện toán đám mây AWS đến ứng dụng người dùng.

Hình 1: Quy trình luồng dữ liệu cảm biến trên nền tảng AWS

SQS action: mỗi khi dữ liệu định kỳ từ cảm biến được thiết bị thu thập gửi đến AWS IoT Core, SQS action sẽ được kích hoạt theo quy tắc được định nghĩa ở câu lệnh sau:

Câu lệnh trên có chức năng trích xuất dữ liệu mã thiết bị (current.state.reported.deviceid) và các giá trị cảm biến (current.state.reported.sensorValue) nhận được từ topic $aws/things/SmhThing/shadow/update/documents để gửi đến hàng đợi của dịch vụ hàng đợi SQS có tên là SmhQueue:

Hình 2: Cấu hình chuyển tiếp dữ liệu từ AWS IoT Rule đến SQS

Amazon SQS (Simple Queue Service): là dịch vụ hàng đợi được cung cấp bởi đám mây AWS với các tính năng bảo mật, dữ liệu lưu trữ bền vững an toàn cho phép tích hợp và phân tách các hệ thống nhắn tin phân tán.

Có ba thành phần chính trong hệ thống nhắn tin phân tán:

Quy trình về vòng đời tin nhắn được xử lý gồm 3 bước:

Hình 3: Minh họa bước 1 trong quy trình vòng đời tin nhắn SQS

Hình 4: Minh họa bước 2 trong quy trình vòng đời tin nhắn SQS

Hình 5: Minh họa bước 3 trong quy trình vòng đời tin nhắn SQS

Trong trường hợp tin nhắn chưa được xóa bởi đối tượng tiêu thụ, Amazon SQS sẽ tự động xóa các tin nhắn đã nằm trong hàng đợi quá thời gian lưu giữ tin nhắn tối đa (maximum message retention period). Giá trị thời gian lưu giữ tin nhắn mặc định là 4 ngày và có thể cấu hình được với giá trị từ 60 giây đến 1.209.600 giây (14 ngày). Amazon SQS hỗ trợ cả hàng đợi tiêu chuẩn và hàng đợi FIFO, vì dữ liệu cảm biến được gửi định kỳ theo thời gian và thuật toán tổ chức lưu trữ có dấu thời gian được sắp xếp theo thứ tự trong CSDL, mặt khác yêu cầu về tính duy nhất của gói tin đối với dữ liệu cảm biến không quá quan trọng nên luận văn sử dụng hàng đợi tiêu chuẩn để thiết kế ứng dụng [1].

AWS Lambda: là dịch vụ kiến trúc không máy chủ (serverless) được cung cấp bởi AWS, giúp thực thi các đoạn mã logic dưới dạng các hàm độc lập mà không cần phải quản lý máy chủ, các hàm Lambda chỉ thực thi khi cần thiết để xử lý các sự kiện.

Trong luồng dữ liệu cảm biến, Lambda sẽ đóng vai trò là đối tượng tiêu thụ tin nhắn từ hàng đợi SmhQueue qua trình kích hoạt ánh xạ nguồn sự kiện event source mapping, Lambda sẽ thực hiện thăm dò hàng đợi liên tục, sau đó đọc và tổ chức tin nhắn thành các lô và gọi hàm SmhInsertSensor cho mỗi lô (batch) để thực thi phương thức PUT ghi dữ liệu vào CSDL DynamoDB. Sau khi hàm xử lý thành công một lô, Lambda sẽ gửi lệnh xóa tin nhắn đã xử lý trong hàng đợi.

Hình 7: Cấu hình SmhQueue làm trình kích hoạt Lambda đến hàm SmhInsertSensor

Hình 8: Lambda sử dụng trình kích hoạt ánh xạ sự kiện đọc dữ liệu từ SmhQueue

Amazon DynamoDB: bảng sensor lưu trữ giá trị cảm biến sử dụng phương thức khóa chính tổng hợp, thuộc tính khóa phân vùng là deviceid(String) và thuộc tính khóa sắp xếp là datetime(String):


Hình 9: Giá trị cảm biến lưu trữ trong DynamoDB

Tìm hiểu thêm:
Tổng hợp hướng dẫn Internet of Things với NodeMCU ESP8266 và ESP32
Tổng hợp các bài hướng dẫn Lập trình vi điều khiển STM32
[HỌC ONLINE: LẬP TRÌNH VI ĐIỀU KHIỂN STM32, VI XỬ LÝ ARM CORTEX – M]
Fanpage Cộng đồng Kỹ thuật TAPIT: TAPIT – Learning, Research and Sharing Community

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!

Tài liệu tham khảo
[1] AWS, “Basic Amazon SQS architecture”, Amazon Simple Queue Service Developer Guide, Amazon Web Services, 2020.