Chương 1 Giới thiệu đề tài 1.1 Tổng quan IoT (Internet of Things), hay còn gọi là Internet vạn vật, là một hệ thống các thiết bị tính toán, máy móc cơ khí và kỹ thuật số hoặc con người có liên quan với nhau và khả năng truyền dữ liệu qua mạng mà không yêu cầu sự tương tác giữa con người với máy tính. IoT giúp công việc và đời sống mọi người trở nên thuận tiện và hiệu quả hơn. Việc áp dụng IoT giúp các doanh nghiệp có thể kiểm soát hoàn toàn hệ thống của họ, tự động hóa các quy trình và giảm thiểu chi phí lao động, cung cấp thông tin chi tiết về mọi thứ, từ hiệu suất của máy móc đến chuỗi cung ứng và hoạt động hậu cần. Nhận thấy tiềm năng phát triển cũng như sự cần thiết đó, chúng tôi đã lên ý tưởng và thực hiện đề tài phát triển một phần mềm dịch vụ (Software as a Service) cung cấp giải pháp giám sát và quản lý các thiết bị IoT.
Ứng dụng cho phép khách hàng đăng ký tạo workspace để quản lý hệ thống IoT của từng cá nhân, tổ chức. Trong đó, workspace là một không gian làm việc chứa dữ liệu của một hệ thống IoT và được cô lập với các workpsace khác. Để thực hiện điều này, chúng tôi sử dụng kiến trúc multi-tenant để xây dựng cơ sở dữ liệu. Qua đó, giúp ứng dụng có khả năng thiết lập và khả cấu hình cho các mục đích khác nhau của khách hàng.
Ứng dụng cung cấp giải pháp quản lý và giám sát mô hình thiết bị IoT gồm các chức năng sau: • Đối với website: 17 Trường Đại Học Bách Khoa, Đại Học Quốc Gia TPHCM Khoa Khoa Học & Kỹ Thuật Máy Tính - Quản lý workspace • Đối với ứng dụng di động: - Quản lý dự án - Quản lý nhóm thiết bị - Quản lý loại thiết bị - Quản lý MQTT broker - Quản lý thiết bị - Quản lý cảnh báo - Quản lý lập lịch - Quản lý bảng điều khiển - Quản lý tài khoản người dùng 1.2 Nội dung thực hiện BeeBee là một hệ thống gồm website quản trị và ứng dụng di động cho phép khách hàng quản lý, giám sát các thiết bị IoT. Để xây dựng một hệ thống như vậy, chúng tôi đã nghiên cứu và thực hiện những nội dung sau: • Nghiên cứu các hệ thống tương tự • Nghiên cứu kiến trúc multi-tenant để áp dụng vào hệ thống • Nghiên cứu các công nghệ nền tảng dùng để hiện thực hệ thống • Thiết kế giao diện thân thiện với người dùng • Hiện thực và kiểm thử hệ thống • Triển khai và đánh giá hệ thống đã hiện thực • Hoàn thiện báo cáo về đề tài đã thực hiện Luận Văn Tốt Nghiệp Page 18/183 Trường Đại Học Bách Khoa, Đại Học Quốc Gia TPHCM Khoa Khoa Học & Kỹ Thuật Máy Tính 1.3 Ý nghĩa của đề tài 1.1 Ý nghĩa thực tiễn Hệ thống được xây dựng hướng tới các lợi ích cho doanh nghiệp: • Triển khai nhanh chóng các dự án IoT • Cung cấp cái nhìn tổng thể đối với các dự án • Đảm bảo tính an toàn và riêng tư cho dữ liệu 1.2 Ý nghĩa khoa học, kỹ thuật Xây dựng hệ thống BeeBee là cơ hội để chúng tôi tìm hiểu về các công nghệ được sử dụng trong dự án IoT như giao thức MQTT. Để xây dựng hệ thống, chúng tôi đã tổng hợp, áp dụng các kiến thức đã học về cơ sở dữ liệu, kiến trúc hệ thống; tìm hiểu và làm việc với các công nghệ phổ biến hiện nay như Next.js để phát triển website, Flutter để phát triển ứng dụng di động, thư viện shelf của Dart để phát triển back-end. Đây cũng là cơ hội để chúng tôi nâng cao khả năng tự học, kỹ năng tìm hiểu kiến thức mới, kỹ năng giải quyết các vấn đề phát sinh khi hiện thực và triển khai hệ thống.4 Giới hạn đề tài Trong quá trình xây dựng hệ thống, chúng tôi chỉ tập trung vào việc quản lý các thiết bị IoT sử dụng giao thức MQTT.
Các MQTT broker sẽ do khách hàng tự triển khai trước đó hoặc sử dụng các dịch vụ có sẵn. Ngoài ra, hệ thống chưa cung cấp một số chức năng sau đây: • Cài đặt nâng cao cho MQTT broker như chứng chỉ SSL • Hỗ trợ các giao thức khác như HTTP, LoRaWAN • Thiết lập quyền hạn cụ thể cho tài khoản người dùng trong workspace Luận Văn Tốt Nghiệp Page 19/183 Trường Đại Học Bách Khoa, Đại Học Quốc Gia TPHCM Khoa Khoa Học & Kỹ Thuật Máy Tính • Đồng bộ hóa thời gian thực dữ liệu khi thông tin các đối tượng trong cơ sở dữ liệu thay đổi Bởi vì giới hạn về nhân lực và thời gian hiện thực, chúng tôi sẽ phát triển những chức năng này trong tương lai. Luận Văn Tốt Nghiệp Page 20/183 Chương 2 Kiến thức nền tảng 2.1 Giao thức MQTT MQTT (Message Queuing Telemetry Transport) [9] được công bố vào năm 1999 bởi IBM và EuroTech. MQTT hoạt động dựa trên mô hình Publish/Subscribe (hay còn gọi là pub/sub), sử dụng TCP/IP để truyền dữ liệu.
Mô hình pub/sub bao gồm các thành phần chính sau: • Broker: là một máy chủ giao tiếp với các thiết bị (publisher và subscriber) thông qua mạng Internet hoặc mạng cục bộ. Công việc của broker là lọc các tin nhắn dựa trên topic, sau đó phân phối các tin nhắn đến các thiết bị đã đăng ký topic đó. • Publisher: Là các thiết bị kết nối đến Broker để thực hiện việc gửi gói tin của một chủ đề (topic). • Subscriber: Là các thiết bị kết nối đến Broker để thực hiện việc nhận gói tin về một chủ đề mà thiết bị đó đã đăng ký theo dõi.
Publisher và subcriber có thể hoán đổi vai trò cho nhau, và đôi khi một thiết bị có thể đảm nhiệm cả hai vai trò cùng một lúc. Số lượng publisher và subscriber có thể bị giới hạn bởi khả năng xử lý của server. 21 Trường Đại Học Bách Khoa, Đại Học Quốc Gia TPHCM Khoa Khoa Học & Kỹ Thuật Máy Tính Quality of Service - QoS Giao thức MQTT có thể truyền dữ liệu ngay cả với các kết nối không ổn định. Nó cung cấp ba tùy chọn về Quality of Service (QoS) [14] để đảm bảo độ tin cậy trong việc gửi gói tin.
Việc lựa chọn tùy chọn phụ thuộc vào mức độ quan trọng của dữ liệu và độ ổn định của kết nối. • QoS 0 (Nhiều nhất một lần): Phía gửi gửi thông tin mà không yêu cầu xác nhận từ phía nhận. Do đó, phía nhận có thể nhận được thông tin một lần hoặc không nhận được do kết nối không ổn định. Đây là chế độ gửi nhanh nhất khi chỉ cần thực hiện 1 tương tác giữa hai bên, nhưng cũng là chế độ ít tin cậy nhất nên thường được sử dụng đối với các thông tin không quá quan trọng và kết nối ổn định.1: Cơ chế QoS 0 • QoS 1 (Ít nhất một lần): Phía gửi gửi thông tin cho đến khi nhận được xác nhận truyền tin thành công (PUBACK) từ phía nhận.
Do đó, chế độ này đảm bảo rằng thông tin sẽ được gửi đến phía nhận ít nhất một lần. Cụ thể, phía gửi sẽ truyền thông tin đến phía nhận và chờ xác nhận thành công. Sau một khoảng thời gian cố định, nếu vẫn chưa nhận được xác nhận từ phía nhận, phía nhận sẽ gửi lại thông tin một lần nữa với flag DUP (duplicate). QoS 1 đảm bảo rằng phía nhận có thể nhận được thông tin ít nhất một lần nên thường được sử dụng khi thông tin truyền tải là quan trọng và kết nối không ổn định.
Luận Văn Tốt Nghiệp Page 22/183 Trường Đại Học Bách Khoa, Đại Học Quốc Gia TPHCM Khoa Khoa Học & Kỹ Thuật Máy Tính Hình 2.2: Truyền gói tin thành Hình 2.4: Thất lạc gói tin Hình 2.3: Thất lạc tin nhắn công ACK • QoS 2 (Duy nhất một lần): Đây là chế độ có độ tin cậy cao nhất khi đảm bảo rằng phía nhận chỉ nhận thông tin duy nhất một lần. Tuy nhiên QoS 2 cũng tốn nhiều thời gian nhất bởi nó bao gồm ít nhất 4 luồng gửi/nhận để hoàn tất việc truyền thông tin. Đầu tiên phía gửi gửi một tin nhắn và chờ xác nhận từ phía nhận. Sau đó, phía nhận sẽ lưu ID của tin nhắn và gửi gói tin PUBREC đến phía nhận.
Khi nhận được gói tin PUBREC, phía gửi sẽ gửi tiếp gói tin PUBREL chứa thông tin chính cần gửi và chờ gói tin PUBCOMP từ phía nhận để kết thúc quá trình. Các sơ đồ sau đây minh họa quá trình truyền nhận theo chế độ QoS 2 đối với các trường hợp khác nhau. Cần chú ý rằng tin nhắn chỉ được xử lý duy nhất một lần ở phía nhận. Qua đó đảm bảo các nghiệp vụ tương ứng với thông tin chỉ được thực hiện một lần.
Luận Văn Tốt Nghiệp Page 23/183 Trường Đại Học Bách Khoa, Đại Học Quốc Gia TPHCM Khoa Khoa Học & Kỹ Thuật Máy Tính Hình 2.5: Truyền gói tin thành Hình 2.7: Thất lạc gói tin Hình 2.6: Thất lạc tin nhắn công PUBREC Hình 2.8: Thất lạc gói tin Hình 2.9: Thất lạc gói tin PUBREL PUBCOMP Ưu điểm • MQTT sử dụng gói tin có kích thước nhỏ, do đó có thể được sử dụng cho kết nối có băng thông thấp. Luận Văn Tốt Nghiệp Page 24/183 Trường Đại Học Bách Khoa, Đại Học Quốc Gia TPHCM Khoa Khoa Học & Kỹ Thuật Máy Tính • Một thiết bị có thể gửi dữ liệu đến máy chủ bất kỳ lúc nào bất kể trạng thái của nó. • Là giao thức có độ tin cậy cao khi có các tùy chọn QoS để chọn mức độ đảm bảo khi truyền nhận dữ liệu. • Có khả năng mở rộng cao nhờ sử dụng mô hình pub/sub, Nhược điểm • Tài nguyên hệ thống dành cho MQTT nó thay đổi theo số lượng Topic.
• MQTT không được mã hóa. Thay vào đó, nó sử dụng TLS (Transport Layer Security) / SSL (Secure Sockets Layer) để mã hóa bảo mật.2 Kiến trúc multi-tenant Kiến trúc multi-tenant là mô hình mà một ứng dụng duy nhất phục vụ nhiều khách hàng khác nhau. Trong đó, khách hàng, có thể là cá nhân hay tổ chức, được gọi là tenant. Mỗi tenant có khả năng tùy chỉnh một khía cạnh của ứng dụng như các thành phần giao diện.