Bối cảnh và vấn đề nghiên cứu
Lý do chọn đề tài và bối cảnh thực tiễn
Sự phát triển của kỹ thuật điện tử và công nghệ thông tin đã thúc đẩy mạnh mẽ các ứng dụng điều khiển từ xa, cho phép con người vận hành thiết bị mà không cần tương tác vật lý trực tiếp. Trong xu thế đó, nhà thông minh (Smart Home / Home Automation) trở thành một ứng dụng tiêu biểu của mạng lưới vạn vật kết nối (IoT). Hệ thống nhà thông minh tích hợp các thiết bị điện tử có khả năng tự động hóa hoặc bán tự động, giao tiếp với người dùng qua bảng điều khiển, ứng dụng di động hoặc giao diện web. Đồ dùng trong gia đình (hệ thống chiếu sáng, quạt, điều hòa, giải trí, tưới nước) được kết nối mạng Internet, cho phép giám sát trạng thái và vận hành theo kịch bản hoặc lịch trình định sẵn.
Theo số liệu từ tổ chức ABI Research được tác giả trích dẫn trong văn bản, vào năm 2012 tại Hoa Kỳ đã có hơn 1,5 triệu hệ thống nhà thông minh được triển khai và con số này được dự báo đạt mức 8 triệu hệ thống vào năm 2017. Sự sụt giảm chi phí lắp đặt phần cứng cùng nhu cầu tiện ích hóa không gian sống đặt ra yêu cầu xây dựng các giao diện điều khiển tự nhiên hơn, trong đó tương tác bằng giọng nói thông qua điện thoại thông minh là hướng tiếp cận mang tính thực tiễn cao, giúp người dùng tiết kiệm thời gian, tối ưu hóa điện năng và thuận tiện trong sinh hoạt hàng ngày.
Mục tiêu và nhiệm vụ nghiên cứu
Mục tiêu trọng tâm của đồ án là nghiên cứu và xây dựng một ứng dụng trên hệ điều hành Android (với định hướng mở rộng sang iOS) phục vụ việc giám sát và điều khiển các thiết bị trong nhà thông qua giọng nói và giao diện trực quan.
Để đạt được mục tiêu trên, đề cương đồ án xác lập 13 nhiệm vụ nghiên cứu và thực hiện theo tiến độ từ ngày 07/01/2019 đến 10/07/2019:
- Phân tích yêu cầu chức năng, mô hình hóa và lập tài liệu đặc tả yêu cầu hệ thống (15/02/2019 – 22/02/2019).
- Thiết kế cơ sở dữ liệu và phác thảo giao diện ứng dụng trên thiết bị di động (23/02/2019 – 01/03/2019).
- Nghiên cứu tài liệu Google API, công nghệ IoT, thông số thiết bị phần cứng và phương thức gọi API (02/03/2019 – 10/03/2019).
- Nghiên cứu cơ chế mã hóa mật khẩu và bảo mật dữ liệu người dùng (11/03/2019 – 18/03/2019).
- Phân luồng kiến trúc xử lý các tiến trình và chức năng hệ thống (19/03/2019 – 26/03/2019).
- Khởi tạo mã nguồn chương trình, hoàn thiện chức năng đăng nhập và cơ chế mã hóa bảo mật (27/03/2019 – 04/04/2019).
- Nghiên cứu nền tảng Dialogflow, thiết lập Intent và xây dựng tập dữ liệu huấn luyện nhận dạng văn bản (05/04/2019 – 14/04/2019).
- Nghiên cứu thư viện
RecognizerIntent trên Android để chuyển đổi giọng nói thành văn bản; tích hợp chuyển chuỗi văn bản lên Dialogflow API để nhận diện ý định và nhận về phản hồi định dạng JSON (15/04/2019 – 25/04/2019).
- Xây dựng mô-đun bóc tách dữ liệu từ tập tin JSON do Dialogflow trả về (trích xuất action, parameter); xử lý logic và kiểm thử điều khiển trực tiếp trên thiết bị phần cứng (26/04/2019 – 05/05/2019).
- Dò tìm và khắc phục lỗi giao diện, kiểm soát bất đồng bộ cơ sở dữ liệu và logic hệ thống (06/05/2019 – 13/05/2019).
- Biên soạn thuyết minh báo cáo đồ án tốt nghiệp (15/05/2019 – 15/06/2019).
- Hiệu chỉnh, hoàn thiện phần mềm và toàn văn báo cáo (16/06/2019 – 23/06/2019).
- Báo cáo giáo viên hướng dẫn, rà soát lần cuối và hoàn tất thủ tục in ấn (24/06/2019 – 01/07/2019).
Đối tượng và phạm vi nghiên cứu
- Đối tượng nghiên cứu: Nền tảng xử lý ngôn ngữ tự nhiên Dialogflow (tiền thân là Api.ai); hệ điều hành di động Android (kiến trúc, chu kỳ sống ứng dụng, SDK, ngôn ngữ Java và XML); ngôn ngữ C# và công nghệ Web API trên nền tảng .NET; hệ quản trị cơ sở dữ liệu quan hệ SQL Server; vi điều khiển kết nối mạng ESP8266 và công tắc cảm ứng thông minh Lumi LM-S1.
- Phạm vi không gian: Triển khai thử nghiệm ứng dụng di động trên nền tảng Android, kết nối mạng không dây điều khiển các tải điện gia dụng (bóng đèn chiếu sáng) thông qua mô hình phần cứng thực tế.
- Phạm vi thời gian: Đồ án được thực hiện trong khoảng thời gian từ tháng 01/2019 đến tháng 07/2019.
Cơ sở lý thuyết và phương pháp
Khung lý thuyết và công nghệ nền tảng
Hệ thống được xây dựng dựa trên sự kết hợp giữa mô hình xử lý ngôn ngữ tự nhiên (NLU), kiến trúc phần mềm phân tán và kỹ thuật nhúng:
- Khái niệm Internet of Things (IoT): Thuật ngữ được đưa ra năm 1999 bởi Kevin Ashton (nhà sáng lập Trung tâm Auto-ID thuộc Viện Công nghệ Massachusetts - MIT). IoT mô tả kịch bản trong đó các thiết bị phần cứng được định danh riêng biệt, có khả năng truyền tải và trao đổi dữ liệu tự động qua mạng Internet mà không đòi hỏi thao tác tương tác trực tiếp của con người.
- Nền tảng xử lý ngôn ngữ tự nhiên Dialogflow: Dịch vụ của Google (mua lại từ Api.ai vào tháng 9/2016, tiền thân gắn liền với trợ lý ảo Speaktoit). Các khái niệm nòng cốt được vận dụng gồm:
- Agent: Mô-đun phân tích ngôn ngữ tự nhiên (NLU) quản lý toàn bộ luồng hội thoại.
- Intent: Phân loại ý định của người dùng trong một lượt hội thoại. Trong Intent chứa Training phrases (các cụm từ mẫu dùng huấn luyện mô hình Machine Learning), Action (hành động định danh gắn với Intent) và Parameters (tham số trích xuất dựa trên Entity).
- Entities: Công cụ trích xuất giá trị dữ liệu từ câu lệnh ngôn ngữ tự nhiên.
- Contexts & Events: Ngữ cảnh ghi nhớ thông tin giữa các lượt thoại và sự kiện kích hoạt Intent không phụ thuộc vào câu nói của người dùng.
- Công nghệ lập trình ứng dụng Android: Sử dụng Android Studio, ngôn ngữ Java, thư viện
RecognizerIntent để thu nhận tín hiệu âm thanh và chuyển đổi sang chuỗi ký tự (Speech-to-Text). Giao diện người dùng được thiết kế bằng ngôn ngữ XML.
- Kiến trúc dịch vụ Web API: Sử dụng Visual Studio, ngôn ngữ C# xây dựng các dịch vụ RESTful API tiếp nhận yêu cầu từ ứng dụng di động, giao tiếp cơ sở dữ liệu SQL Server và đồng bộ trạng thái phần cứng.
Phương pháp nghiên cứu và nguồn dữ liệu
- Phương pháp khảo sát hiện trạng: Đồ án tiến hành khảo sát, so sánh và đánh giá các giải pháp ứng dụng Smart Home phổ biến trên kho ứng dụng Google Play Store (CH Play) nhằm xác định nhu cầu người dùng và hạn chế cần khắc phục:
| Tên ứng dụng |
Đánh giá trung bình |
Số lượt đánh giá |
Đặc điểm nhận xét từ thực tế |
| TELUS SmartHome |
3.8 / 5 sao |
108 |
Giao diện đơn giản, thân thiện, điều khiển tức thời với độ chính xác cao; tính năng bảo mật tốt. |
| Samsung Smart Home |
2.6 / 5 sao |
8.209 |
Kết nối đa dạng thiết bị gia dụng; tuy nhiên bị phản hồi tiêu cực về việc yêu cầu quá nhiều quyền riêng tư không cần thiết (danh bạ, vị trí, mạng xã hội). |
| Smart Life - Tuya Smart App |
3.8 / 5 sao |
14.826 |
Giao diện trực quan, quản lý số lượng lớn thiết bị, cung cấp thống kê tiêu thụ điện; hạn chế là tình trạng ngắt kết nối đột ngột khiến người dùng mất quyền truy cập thiết bị. |
- Phương pháp thiết kế phần mềm: Áp dụng phương pháp phân tích thiết kế hệ thống theo hướng đối tượng: xây dựng biểu đồ Use Case, xác định tác nhân, viết tài liệu đặc tả ca sử dụng, xây dựng biểu đồ tuần tự (Sequence Diagram) cho các luồng xử lý và mô hình hóa cơ sở dữ liệu quan hệ.
Thiết kế và triển khai
Kiến trúc hệ thống và luồng xử lý giọng nói
Hệ thống vận hành theo quy trình tương tác khép kín giữa bốn thành phần: Thiết bị di động (Android App) - Máy chủ dịch vụ Google Dialogflow - Máy chủ phụ trợ (Web API & CSDL SQL Server) - Thiết bị phần cứng (ESP8266 & Công tắc Lumi):
- Người dùng kích hoạt biểu tượng micro trên ứng dụng di động, hộp thoại Google Voice (
RecognizerIntent) xuất hiện thu âm giọng nói và chuyển đổi thành văn bản (text).
- Chuỗi văn bản được gửi lên Dialogflow API. Nền tảng NLU so khớp với các Intent đã huấn luyện và phản hồi về ứng dụng một tập tin định dạng JSON chứa các trường dữ liệu: mã nhận diện (
id), chuỗi truy vấn gốc (resolvedQuery), tên hành động (action), tham số trích xuất (parameters), câu phản hồi âm thanh (fulfillment) và mã trạng thái HTTP.
- Ứng dụng Android tiếp nhận tệp tin JSON, phân tích trường
action và parameters để xử lý logic điều phối:
| Tên Action |
Tham số trích xuất |
Cơ chế xử lý logic trên ứng dụng |
batTheoTen / tatTheoTen |
any (chứa tên thiết bị, ví dụ: "đèn") |
Tìm kiếm tên thiết bị trong danh sách switch: - Nếu có từ 2 switch trùng tên: hiển thị popup cho người dùng chọn switch cần điều khiển. - Nếu có 1 switch khớp tên hoặc switch kia đã ở trạng thái yêu cầu: tự động gửi lệnh cập nhật trạng thái switch còn lại, hiện thông báo thành công. - Nếu trạng thái thiết bị đã đúng như câu lệnh: hiển thị thông báo "Hình như bạn đã bật nó rồi. Hoặc không có cái này…". - Nếu không tìm thấy thiết bị: hiển thị cảnh báo "Không có cái này". |
batTatCa / tatTatCa |
Không có |
Gửi yêu cầu HTTP đến máy chủ dịch vụ để bật hoặc tắt toàn bộ các công tắc trong hệ thống. |
batViTri / tatViTri |
number (chỉ số vị trí) |
Kiểm tra tính hợp lệ của tham số number ($0 \le \text{number} < \text{tổng số switch}$). Nếu hợp lệ, gửi lệnh cập nhật trạng thái switch tại vị trí tương ứng; nếu không hợp lệ, thông báo vị trí không tồn tại. |
input.unknown |
Không xác định |
Hiển thị tin nhắn: "Xin lỗi mình gặp khó khăn khi hiểu câu hỏi của bạn". |
- Sau khi xác thực logic, ứng dụng gửi bản tin HTTP RESTful lên Web API (C#) để ghi nhận trạng thái vào cơ sở dữ liệu SQL Server, đồng thời gửi tín hiệu điều khiển trạng thái rơ-le trên vi điều khiển ESP8266 thông qua mạng không dây.
Thiết kế cơ sở dữ liệu và phân quyền
Hệ thống phân định 3 tác nhân chính:
- Admin: Quản trị thông tin người dùng, cấp phát quyền hạn, thiết lập và biên dịch mã nạp phần cứng, quản lý thống kê dữ liệu.
- Người dùng: Đăng nhập, cấu hình tài khoản cá nhân, hẹn thời gian yêu cầu đăng nhập lại, xem danh sách thiết bị (Devices/Projects), xem chi tiết các công tắc (Switches) và thực thi điều khiển.
- Khách: Đăng ký khởi tạo tài khoản mới.
Cơ sở dữ liệu lưu trữ trên SQL Server gồm các bảng chức năng:
Tb_UserType: Định nghĩa các nhóm quyền người dùng trong hệ thống.
Tb_Permission: Danh mục các quyền thao tác chi tiết.
Tb_UserType_Permission: Bảng liên kết trung gian thiết lập quan hệ phân quyền giữa nhóm người dùng và quyền hạn.
AspNetUser: Quản lý thông tin tài khoản người dùng, email xác thực và chuỗi mật khẩu đã mã hóa.
Tb_Projects: Quản lý các dự án, không gian lắp đặt hoặc danh mục các cụm thiết bị gắn liền với từng tài khoản người dùng.
Kiểm thử phần mềm
Nhóm tác giả thiết kế các bộ kiểm thử hộp đen (Test Case) tập trung vào bốn phân hệ chức năng chính:
- Module Login: Kiểm thử xác thực chuỗi tài khoản và mật khẩu, xử lý các trường hợp để trống thông tin, sai định dạng tài khoản, sai mật khẩu và đăng nhập thành công.
- Module Trang chủ: Kiểm thử tính năng hiển thị danh sách Scenes, chuyển đổi màn hình chức năng và tải dữ liệu cấu hình.
- Module Switch: Kiểm thử tính năng bật/tắt thiết bị đơn lẻ bằng thao tác chạm, kiểm tra thời gian đáp ứng và cơ chế phản hồi trạng thái từ máy chủ.
- Module Xem tất cả các switch: Kiểm thử tải danh sách toàn bộ công tắc thuộc project, thao tác chuyển đổi trạng thái đồng loạt và kiểm tra tính đồng bộ giao diện.
Nội dung chính theo từng chương
Chương 1: Tìm hiểu về Dialogflow, IoT, Android và thiết bị phần cứng
Chương 1 trình bày nền tảng lý thuyết và công nghệ sử dụng trong đề tài. Tác giả phân tích lịch sử hình thành của Dialogflow từ nền tảng Api.ai, chi tiết hóa cấu trúc hoạt động của Chatbot dựa trên Machine Learning và NLU với các thành phần cốt lõi: Agent, Intent, Training Phrases, Action, Parameters, Responses, Contexts và Events. Tiếp đó, chương sách làm rõ khái niệm Internet of Things bắt nguồn từ định nghĩa của Kevin Ashton năm 1999 và khái niệm lập trình hệ điều hành di động Android dựa trên nhân Linux.
Chương này cũng tổng hợp các ngôn ngữ, công cụ tham gia phát triển hệ thống gồm Java, XML, SQL, C#, .NET Framework, Android SDK và Visual Studio. Về phần cứng, tác giả giới thiệu thông số của công tắc cảm ứng thông minh Lumi LM-S1 (sử dụng cảm biến điện dung, kính cường lực viền vàng/đen, tích hợp sóng Zigbee, điện áp 100–240V 50/60Hz) và vi điều khiển ESP8266 tích hợp Wi-Fi băng tần 2.4GHz làm cổng giao tiếp điều khiển thiết bị chấp hành và các nút cảm biến (sensor nodes).
Chương 2: Khảo sát hiện trạng và xác định yêu cầu
Chương 2 trình bày kết quả phân tích ba ứng dụng thương mại tiêu biểu trên CH Play (TELUS SmartHome, Samsung Smart Home, Smart Life - Tuya Smart App), từ đó rút ra các bài học về bảo mật, đơn giản hóa giao diện và hạn chế yêu cầu quyền can thiệp sâu vào thông tin cá nhân. Dựa trên khảo sát, tác giả xác định cụ thể danh mục các yêu cầu hệ thống:
- Yêu cầu chức năng nghiệp vụ: Hỗ trợ người dùng điều khiển trạng thái bật/tắt thiết bị bằng 3 phương thức: giọng nói, tin nhắn văn bản (chat) hoặc phím bấm trực tiếp trên màn hình; bảo đảm dữ liệu đồng bộ tức thời giữa ứng dụng di động, giao diện web quản trị và phần cứng thực tế.
- Yêu cầu chức năng hệ thống: Vận hành thời gian thực (Real-time); cơ chế bảo mật xác thực tài khoản qua email/SMS và mã hóa mật khẩu; tích hợp nhận diện giọng nói hỗ trợ bật/tắt theo tên, vị trí hoặc tất cả thiết bị; phân quyền quản trị (Admin) và tính năng tự động nhắc nhở/yêu cầu đăng nhập lại sau khoảng thời gian dài không tương tác.
- Yêu cầu phi chức năng: Tối ưu hóa tốc độ xử lý đáp ứng cho nhiều tài khoản truy cập cùng lúc; tiết kiệm thời gian, công sức và điện năng tiêu thụ; quy trình cấu hình, cài đặt, bảo trì thuận tiện và khả năng mở rộng danh mục thiết bị theo nhu cầu thực tế.
Chương 3: Phân tích và thiết kế cơ sở dữ liệu
Nội dung chương 3 tập trung vào mô hình hóa chức năng và dữ liệu của đồ án. Tác giả lập bảng phân định tác nhân toàn hệ thống (Admin, Người dùng, Khách), xây dựng các sơ đồ Use Case chung, sơ đồ Use Case quản lý thông tin cá nhân và sơ đồ Use Case điều khiển thiết bị. Phần đặc tả Use Case chi tiết hóa 9 kịch bản thao tác: Đăng nhập, Setting, Đổi người dùng, Hẹn thời gian login lại (với 3 mức cấu hình: "Không hỏi", "1 tuần", "1 tháng"), Xem tất cả devices, Xem tất cả switch, Bật/tắt switch, Voice chat và Chat.
Mỗi ca sử dụng đều được xác định rõ tác nhân kích hoạt, tiền điều kiện và từng bước thực hiện tuần tự. Trong Use case Voice chat, đồ án mô tả chi tiết mẫu cấu trúc tập tin JSON trả về từ Dialogflow và xây dựng thuật toán phân nhánh bóc tách các action batTheoTen, tatTheoTen, batTatCa, tatTatCa, batViTri, tatViTri và fallback input.unknown. Về cấu trúc lưu trữ, chương sách trình bày chi tiết các bảng dữ liệu trong SQL Server gồm Tb_UserType, Tb_Permission, Tb_UserType_Permission, AspNetUser và Tb_Projects.
Chương 4: Thiết kế giao diện và xử lý
Chương 4 mô tả thiết kế trực quan của ứng dụng Android và động thái xử lý tương ứng trên hệ thống:
- Danh sách màn hình và sơ đồ chuyển đổi: Ứng dụng gồm 7 màn hình cơ bản: Màn hình Chờ (Splash Screen), Màn hình Đăng nhập, Màn hình Trang chủ (Home Activity), Màn hình Setting, Màn hình Xem tất cả devices, Màn hình Switch Activity và Màn hình Xem tất cả các switch. Mỗi màn hình đều đi kèm bảng kê chi tiết các thành phần đối tượng điều khiển (Button, TextView, EditText, ListView, Icon) và sơ đồ biến cố tương ứng.
- Biểu đồ tuần tự (Sequence Diagram): Tác giả xây dựng 6 sơ đồ tuần tự mô tả chi tiết dòng thông điệp tương tác giữa đối tượng giao diện (View), bộ điều phối (Controller/Activity), tầng giao tiếp dịch vụ (Service/API) và cơ sở dữ liệu:
- Sequence Diagram cho Use case màn hình chờ.
- Sequence Diagram cho Use case màn hình đăng nhập.
- Sequence Diagram cho Use case màn hình load device.
- Sequence Diagram cho Use case load switch.
- Sequence Diagram cho Use case màn hình điều khiển bật tắt.
- Sequence Diagram cho Use case màn hình điều khiển bằng giọng nói.
Chương 5: Cài đặt - Kiểm thử
Chương 5 thuyết minh quy trình cài đặt môi trường phần mềm và báo cáo kết quả kiểm thử. Nhóm tác giả thiết lập môi trường phát triển Android Studio cho ứng dụng di động, Visual Studio cho RESTful API và SQL Server Management Studio cho việc quản trị dữ liệu.
Phần kiểm thử phần mềm được trình bày dưới hình thức các bảng danh sách TestCase cụ thể cho từng mô-đun: Bảng 5-1 (TestCase cho module Login), Bảng 5-2 (TestCase cho module Trang Chủ), Bảng 5-3 (TestCase cho module Switch) và Bảng 5-4 (TestCase cho module Xem tất cả các switch). Các ca kiểm thử bao phủ toàn bộ các tình huống nhập liệu của người dùng, xác nhận tính chính xác của thuật toán phân luồng và sự đồng bộ trạng thái giữa ứng dụng với phần cứng thực tế.
Kết quả và đóng góp
Kết quả chính đạt được
- Xây dựng thành công ứng dụng di động hoàn chỉnh trên hệ điều hành Android có khả năng kết nối và điều khiển thiết bị điện gia dụng thông qua ba kênh tương tác: nhận dạng giọng nói tự nhiên, nhắn tin văn bản (chatbot tương tác trực tiếp) và thao tác chạm nút bật/tắt thủ công trên giao diện.
- Tích hợp thành công thư viện
RecognizerIntent của Android với nền tảng Google Dialogflow thông qua các lời gọi RESTful API, thực hiện chuyển đổi âm thanh sang chuỗi truy vấn văn bản, phân tích ngữ nghĩa và trích xuất chính xác ý định người dùng thành các action (batTheoTen, tatTheoTen, batTatCa, tatTatCa, batViTri, tatViTri) kèm bộ tham số tương ứng.
- Thiết kế hệ thống phần mềm trung gian Web API sử dụng C# kết nối cơ sở dữ liệu SQL Server, bảo đảm khả năng cập nhật trạng thái đồng thời giữa ứng dụng Android và mạch vi điều khiển ESP8266 điều khiển tải điện.
- Hoàn thành thiết kế giao diện với đầy đủ 7 màn hình chức năng và thực hiện kiểm thử thành công các ca kiểm thử thuộc 4 phân hệ chính: đăng nhập, điều hướng trang chủ, điều khiển switch đơn lẻ và quản lý danh sách thiết bị.
Đề xuất và giải pháp kỹ thuật của tác giả
- Đề xuất kiến trúc phân tách luồng: ứng dụng di động chỉ đóng vai trò thu nhận âm thanh thô và hiển thị giao diện, toàn bộ quá trình hiểu ngôn ngữ tự nhiên được giao cho dịch vụ đám mây Dialogflow, trong khi việc lưu trữ trạng thái và cấp quyền được quản lý tập trung bởi Web API và CSDL quan hệ.
- Xây dựng cơ chế xử lý logic thông minh tại tầng ứng dụng khi phân giải tham số thiết bị: giải quyết xung đột khi có nhiều thiết bị trùng tên (bằng cách hiển thị hộp thoại xác nhận trực quan cho người dùng), tự động kiểm tra biên chỉ số vị trí nhằm tránh lỗi tràn bộ nhớ hoặc cập nhật sai trạng thái phần cứng.
Đóng góp so với các nghiên cứu và ứng dụng khảo sát
- Khắc phục nhược điểm về vi phạm quyền riêng tư của các giải pháp thương mại (như ứng dụng Samsung Smart Home thu thập danh bạ, nhật ký cuộc gọi và mạng xã hội) bằng cách chỉ yêu cầu các quyền thực sự cần thiết phục vụ vận hành hệ thống (quyền sử dụng Micro thu âm và kết nối Internet).
- Tích hợp khả năng nhận dạng câu lệnh điều khiển tiếng Việt thông qua cơ chế tự huấn luyện các Intent trên nền tảng NLU, giúp người dùng trong nước tương tác tự nhiên mà không bắt buộc phải phát âm các câu lệnh tiếng Anh cố định.
Hạn chế và hướng nghiên cứu tiếp
Các mặt còn hạn chế theo văn bản
- Hệ thống mới chỉ được xây dựng và đóng gói hoàn chỉnh trên hệ điều hành Android; ứng dụng dành cho hệ điều hành iOS mới dừng ở mức định hướng phát triển mà chưa được lập trình thực tế.
- Khả năng xử lý ngôn ngữ tự nhiên của Dialogflow tại thời điểm thực hiện đề tài vẫn hoạt động tối ưu nhất với tiếng Anh và một số ngôn ngữ phổ biến; việc xử lý ngữ nghĩa tiếng Việt vẫn cần phụ thuộc nhiều vào việc thiết lập thủ công các cụm từ mẫu (Training phrases) trong từng Intent.
- Hệ thống phụ thuộc hoàn toàn vào đường truyền mạng Internet; nếu mất kết nối hoặc máy chủ đám mây của Google gặp sự cố phản hồi chậm, quá trình nhận diện giọng nói và truyền lệnh điều khiển phần cứng sẽ bị gián đoạn.
Hướng phát triển đề tài
- Nghiên cứu biên dịch và triển khai ứng dụng trên nền tảng di động thứ hai là iOS để phục vụ đa dạng đối tượng người dùng.
- Tiếp tục bổ sung và làm giàu tập dữ liệu huấn luyện (Training phrases) trên Dialogflow nhằm nâng cao độ chính xác khi nhận diện các câu lệnh phức tạp, câu lệnh có ngữ cảnh mở rộng hoặc cách diễn đạt địa phương.
- Mở rộng số lượng và chủng loại thiết bị chấp hành kết nối với ESP8266, tích hợp thêm các nút cảm biến môi trường (nhiệt độ, độ ẩm, ánh sáng, cảm biến chuyển động) để tự động hóa kịch bản hoạt động cho ngôi nhà thông minh.
Giá trị tham khảo
Đồ án tốt nghiệp là tài liệu tham khảo phù hợp cho sinh viên, kỹ sư và học viên thuộc các ngành:
- Công nghệ phần mềm: Cung cấp quy trình phân tích thiết kế hệ thống hoàn chỉnh từ đặc tả Use Case, thiết kế giao diện đến mô hình hóa biểu đồ tuần tự (Sequence Diagram) và xây dựng bộ kiểm thử chức năng (TestCase) cho ứng dụng di động kết hợp Web API.
- Kỹ thuật phần mềm di động (Android Development): Là tài liệu mẫu hữu ích trong việc triển khai thư viện
RecognizerIntent, xây dựng giao diện tương tác hội thoại (Voice & Text Chat), quản lý vòng đời Activity và xử lý bất đồng bộ dữ liệu mạng JSON.
- Hệ thống nhúng và IoT: Cung cấp mô hình tham chiếu về giải pháp tích hợp giữa thiết bị di động với các phần cứng nhúng (ESP8266, công tắc cảm ứng Lumi) qua mạng không dây và API trung gian.
Phần nội dung đáng tham khảo nhất trong đồ án là Quy trình phân giải và xử lý dữ liệu JSON từ Dialogflow API trong Use case Voice chat (Bảng 3-9), mô tả chi tiết logic điều kiện để xử lý triệt để các tình huống thực tế như câu lệnh mập mờ, thiết bị trùng tên hoặc câu lệnh không nằm trong tập huấn luyện.
Câu hỏi thường gặp
1. Hệ thống xử lý như thế nào khi người dùng ra lệnh giọng nói điều khiển thiết bị có tên bị trùng lặp?
Căn cứ đặc tả Use case Voice chat (Bảng 3-9), khi Dialogflow trả về action batTheoTen hoặc tatTheoTen cùng tham số any, hệ thống kiểm tra danh sách công tắc. Nếu phát hiện có từ hai công tắc cùng mang tên đó:
- Trường hợp có nhiều switch cùng tên nhưng có công tắc đã ở sẵn trạng thái yêu cầu, hệ thống sẽ tự động cập nhật trạng thái cho công tắc còn lại.
- Nếu cả hai công tắc đều chưa đúng trạng thái, hệ thống sẽ bật một hộp thoại (dialog) trên màn hình để người dùng chủ động chọn chính xác công tắc muốn thao tác.
2. Chức năng hẹn thời gian đăng nhập lại của ứng dụng cung cấp những tùy chọn cấu hình nào?
Theo đặc tả Use case Hẹn thời gian login lại (Bảng 3-5), hệ thống cho phép người dùng lựa chọn 1 trong 3 mức cấu hình trong phần Setting gồm:
- "Không hỏi"
- "1 tuần"
- "1 tháng"
Sau khi người dùng chọn và nhấn nút "APPLY", hệ thống sẽ lưu lại mốc thời gian để làm căn cứ kiểm tra yêu cầu đăng nhập lại trong các lần mở ứng dụng tiếp theo.
3. Những thiết bị phần cứng cụ thể nào đã được tích hợp trong mô hình thực nghiệm của đề tài?
Theo Chương 1 của đồ án, các thiết bị phần cứng thực tế được sử dụng gồm:
- Công tắc cảm ứng thông minh Lumi LM-S1 (các phiên bản 2, 3, 4 nút chạm): sử dụng công nghệ cảm ứng điện dung, mặt kính cường lực, kết nối không dây Zigbee, điện áp 100–240V 50/60Hz.
- Vi điều khiển ESP8266: mạch tích hợp Wi-Fi 2.4GHz dùng để nạp mã điều khiển trực tiếp tải bóng đèn và liên kết các nút cảm biến (sensor nodes).
4. Thuật toán kiểm tra tính hợp lệ của câu lệnh điều khiển theo vị trí (batViTri / tatViTri) được thực hiện ra sao?
Dựa trên đặc tả xử lý tại Bảng 3-9, khi nhận action batViTri hoặc tatViTri, hệ thống trích xuất tham số number từ tệp tin JSON và so sánh giá trị này với tổng số lượng công tắc khả dụng trong project. Nếu giá trị number nhỏ hơn 0 hoặc vượt quá tổng số switch, hệ thống sẽ từ chối thực thi và thông báo cho người dùng biết "vị trí này không tồn tại"; chỉ khi giá trị chỉ số hợp lệ thì yêu cầu cập nhật trạng thái mới được gửi lên máy chủ.
5. Khảo sát hiện trạng trong đồ án đã đánh giá những ứng dụng thương mại nào và số liệu thực tế ra sao?
Tại Chương 2, nhóm tác giả đã tiến hành khảo sát thực tế trên CH Play đối với ba ứng dụng:
- TELUS SmartHome: điểm đánh giá trung bình 3.8 sao trên tổng số 108 lượt đánh giá.
- Samsung Smart Home: điểm đánh giá trung bình 2.6 sao trên tổng số 8.209 lượt đánh giá (bị phản hồi về việc vi phạm quyền riêng tư).
- Smart Life - Tuya Smart App: điểm đánh giá trung bình 3.8 sao trên tổng số 14.826 lượt đánh giá (bị phản hồi về việc thỉnh thoảng ngắt kết nối đột ngột).
Kết luận
Đồ án tốt nghiệp "Xây dựng ứng dụng điều khiển IoTs bằng giọng nói" của sinh viên Huỳnh Văn Khen và Đặng Trương Duy Quang đã giải quyết trọn vẹn mục tiêu nghiên cứu ứng dụng công nghệ nhận dạng giọng nói và xử lý ngôn ngữ tự nhiên vào lĩnh vực nhà thông minh. Hệ thống kết nối hiệu quả ứng dụng di động Android với nền tảng Google Dialogflow, máy chủ dịch vụ Web API (C#) và phần cứng vi điều khiển ESP8266 điều khiển tải điện gia dụng. Toàn bộ quy trình từ khảo sát thực tế, phân tích đặc tả use case, thiết kế cơ sở dữ liệu quan hệ đến xây dựng test case kiểm thử đều được trình bày chặt chẽ, tạo nền tảng vững chắc cho việc tiếp tục hoàn thiện ứng dụng trên nền tảng iOS và mở rộng hệ sinh thái thiết bị phần cứng trong tương lai.