Thực tập đồ án: Ứng dụng biểu đồ tuần tự vào mô phỏng hệ thống nhà thông minh Smart Home

MỤC LỤC

Biểu đồ tuần tự (Sequence diagram)

Sequence diagram phía trên trình bày quá trình thao tác giữa cảm biến và thiết bị quạt, cảm biến sẽ thông báo tới đèn tùy vào các ngưỡng đã được thiết lập trước đó , tùy vào mỗi ngưỡng thì đèn sẽ bật tắt theo các thông tin được gửi từ các cảm biến, sau đó hệ thống sẽ cập nhật lại tráng thái mới và lưu xuống database. Sequence diagram phía trên trình bày quá trình người dùng thao tác với hệ thống để xem nhiệt độ hoặc độ ẩm của căn phòng trong nhà. Sau đó người dùng nhấn vào mục “Bảng điều khiển” trên sidebar và hệ thống hiển thị ra danh sách các phòng mà người dùng muốn xem nhiệt độ và độ ẩm.

Hệ thống hiển thị ra danh sách các thiết bị có kết nối với phần mềm trong phòng được chọn. Sequence diagram phía trên trình bày quá trình người dùng thao tác với hệ thống để bật, tắt chế độ phát hiện người thông qua phần mềm. Ban đầu người dùng sẽ đăng nhập và ấn vào mục "Bảng điều khiển" trên giao diện chính của chương trình, sau đó người dùng sẽ được hệ thống điều hướng tới phần Bảng điều khiển.

Sau khi ấn chọn phòng xong màn hình sẽ hiện ra danh sách tất cả các thiết bị, chức năng, người dùng có thể ấn vào toggle của chế độ phát hiện người để bật/tắt. Sequence diagram phía trên trình bày quá trình thao tác giữa cảm biến và hệ thống, cảm biến sẽ gửi phản hồi đến hệ thống nếu phát hiện người, sau đó hệ thống sẽ gửi thông báo tới thiết bị và lưu thời gian phát hiện vào database. Sequence diagram phía trên trình bày quá trình người dùng ra lệnh cho hệ thống thông qua giọng nói.

Đầu tiên, người dùng nhấn vào biểu tượng micro, hệ thống hiển thị modal sẵn sàng lắng nghe lệnh của người dùng. Sau khi nhận được lệnh, hệ thống sẽ gửi yêu cầu điều khiển thiết bị đến server Adafruit đến feed tương ứng.

Casestudy cho các thiết bị và State chart diagram

Result Đèn được điều khiển tự động khi có sự thay đổi về cường độ ánh sáng. Conclude Quạt được thiết lập để người dùng có khả năng chuyển qua chế độ tự động thay vì chỉnh bằng tay. Điều này giúp gia tăng trải nghiệm của người dùng khi sử dụng hệ thống đáp ứng được sự thay đổi nhiệt độ không khí.

Cảm biến chuyển động phát hiện có sự chuyển động trong phạm vi 6m và cảm biến ánh sáng ghi nhận cường độ ánh sáng dưới 20%. Cảm biến chuyển động phát hiện không có sự chuyển động trong phạm vi 6m và cảm biến ánh sáng ghi nhận cường độ ánh sáng dưới 20%. Cảm biến chuyển động phát hiện có sự chuyển động trong phạm vi 6m và cảm biến ánh sáng ghi nhận cường độ ánh sáng trên 20%.

Cảm biến chuyển động phát hiện không có sự chuyển động trong phạm vi 6m và cảm biến ánh sáng ghi nhận cường độ ánh sáng trên 20%. Result Đèn được điều khiển tự động khi phát hiện chuyển động và cường độ ánh sáng yếu. Conclude Đèn được thiết lập để có khả năng bật tắt tự động thay vì chỉnh bằng tay khi phát hiện chuyển động và cường độ ánh sáng yếu.

Result Cửa tự động mở khi có người trong phạm vi 50cm và tự động đóng khi không có người. Conclude Cửa được điều khiển thông qua ứng dụng giúp cho việc kiểm tra và kiểm soát an ninh tốt hơn, giúp cho việc đóng mở khóa cửa thực hiện từ xa và dễ dàng.

Hình 2: Điều khiển đèn LED theo độ sáng
Hình 2: Điều khiển đèn LED theo độ sáng

Mockup

Thay vào đó, hệ thống sẽ dẫn tới trang Đăng nhập khi người dùng nhấn nút trên Sidebar để truy cập các trang trên. • Slider: bao gồm ảnh, nội dung tổng quan về trang web và nút điều khiển cho phép chuyển qua lại giữa các nội dung. Nếu chưa có tài khoản, người dùng có thể chuyển sang tab Đăng ký để tiến hành tạo tài khoản mới để truy cập vào hệ thống.

Giao diện Quản lý tài khoản cho phép người dùng xem và chỉnh sửa thông tin cá nhân bao gồm tên, email, số điện thoại. Người dùng có thể xem giá trị hiện tại mà cảm biến đo được cũng như xem các ngưỡng input của cảm biến. Mỗi thiết bị bao gồm biểu tượng, tên, nút điều khiển trạng thái và chế độ (tự động hoặc chỉnh tay), đối với quạt thì có thêm nút để điều khiển tốc độ quay.

Giao diện thông báo cho phép người dùng xem được các thông báo về cảm biến vượt ngưỡng hoặc khi phát hiện có người. • Tab lọc thông báo: Lọc thông báo theo từng loại: Tất cả, Cảm biến vượt ngưỡng và Phát hiện có người. Giao diện Báo cáo cho phép người dùng xem được các thống kê về mức độ sử dụng điện của thiết bị, cũng như biểu đồ để theo dừi nhiệt độ, độ ẩm trong từng phũng của ngụi nhà.

• Mục thống kê hàng tháng: Cho phép người dùng xem các biểu đồ về mức độ sử dụng điện của thiết bị, cũng như nhiệt độ, độ ẩm. • Mục thiết bị: Khi người dùng đang xem biểu đồ về mức độ sử dụng điện năng, người dùng có thể chọn từng thiết bị cụ thể để xem chi tiết cho thiết bị đó.

Bảng điều khiển
Bảng điều khiển

Database design

Trang chủ chính sau khi đăng nhập Click, đến trang hiển thị các chức năng Click, đến trang cài đặt. Click, đến trang đăng ký Click, đến trang đăng nhập Click, đến trang đăng ký.

Hình 13: Entity-Relationship Diagram cho toàn hệ thống 2.5.2 Relation Schema
Hình 13: Entity-Relationship Diagram cho toàn hệ thống 2.5.2 Relation Schema

Tìm hiểu công nghệ

• Giao diện đẹp và hiện đại: TailwindCSS cung cấp các class CSS hiện đại và dễ dàng tùy chỉnh, giúp tạo ra giao diện đẹp và phù hợp với xu hướng thiết kế hiện nay. Node.js là một môi trường thực thi JavaScript trên máy chủ, Express.js là một framework web cho Node.js, và MongoDB là một hệ thống cơ sở dữ liệu NoSQL. • Non-blocking I/O: Node.js sử dụng mô hình xử lý không đồng bộ (non-blocking) để xử lý các yêu cầu I/O, giúp tăng hiệu suất của ứng dụng bằng cách cho phép xử lý đồng thời nhiều yêu cầu mà không bị chặn.

• JavaScript Everywhere: Node.js cho phép sử dụng JavaScript cả phía server và phía client, giúp đơn giản hóa việc phát triển và duy trì ứng dụng bằng cách chia sẻ mã nguồn giữa cả hai môi trường. • Integration with Other Libraries: Express.js dễ dàng tích hợp với các thư viện và middleware bổ sung, giúp mở rộng chức năng của ứng dụng một cách linh hoạt. • Document-Oriented: MongoDB lưu trữ dữ liệu trong các tài liệu JSON có cấu trúc linh hoạt, cho phép lưu trữ các loại dữ liệu phức tạp mà không cần phải tuân thủ một schema cố định.

Adafruit là một công ty chuyên cung cấp các sản phẩm và dịch vụ liên quan đến IoT và phát triển phần cứng, trong khi Ohstem là một nền tảng phần mềm cho việc quản lý thiết bị IoT. • Sản Phẩm Phần Cứng: Adafruit cung cấp một loạt các module và board phát triển phần cứng (hardware) cho các dự án IoT, bao gồm các board Arduino và Raspberry Pi, cảm biến, màn hình và nhiều hơn nữa. • Cộng Đồng và Hỗ Trợ: Adafruit có một cộng đồng sôi động và hỗ trợ mạnh mẽ, với diễn đàn, blog và các kênh truyền thông xã hội để chia sẻ kiến thức và kinh nghiệm trong việc phát triển IoT.

• Quản Lý Thiết Bị: Ohstem cung cấp giao diện quản lý đơn giản để đăng ký, theo dừi và quản lý các thiết bị IoT, bao gồm cả việc xem trạng thái và cập nhật phần mềm từ xa. • Giám Sát và Phân Tích: Nền tảng này cho phép giám sát trực tiếp các dữ liệu từ các thiết bị IoT, cũng như phân tích và hiển thị dữ liệu theo cách tùy chỉnh.

Tính năng đặc trưng CNPM: Design Pattern

• Facade: là một Structural Design Pattern với mục đích làm đơn giản hóa interface của thư viện, framework hoặc các class phức tạp. Một ví dụ thực tế của facade ta có thể nói tới đó chính là việc ta đặt hàng qua điện thoại, quá trình đặt hàng của ta cực kì đơn giản chỉ cần gọi cho người đại diện của cửa hàng là ta muốn đặt gì, giao ở đâu, trả tiền bằng gì, giao hàng bởi đơn vị nào. Chỉ cần như thế là ta đã đặt hàng xong sau 1 cuộc gọi và 1 cuộc nói chuyện, nhưng phía sau đó nó là một chuỗi các quá trình gồm việc kiểm tra sản phầm còn hàng hay không, cập nhật hình thức thanh toán, đóng hàng như nào, đơn vị nào cung cấp, tính thuế bao nhiêu,.

• Đối với project của nhóm thì việc ta thao tác với Database là một việc rất phức tạp vì MongoDB cung cấp cho ta rất nhiều hàm như findOne, findById, findAndReplace,. Vậy nên lớp function đóng vai trò như là Facade lớp bao gồm các hàm của MongoDB cung cấp.

Hình 17: Áp dụng Design Pattern: Adapter vào dự án 2.8.2 Design Pattern: Facade
Hình 17: Áp dụng Design Pattern: Adapter vào dự án 2.8.2 Design Pattern: Facade