NỘI DUNG
Dialogflow được đổi tên từ Api.ai sau khi được Google mua lại vào tháng 9 năm
2016 Tiền thân là một công ty nổi tiếng với trợ lý ảo Speaktoit
Dialogflow, trước đây gọi là API.AI, là dịch vụ của Google hỗ trợ lập trình viên trong việc phát triển sản phẩm có khả năng giao tiếp với người dùng thông qua hội thoại bằng văn bản hoặc giọng nói.
Dialogflow hiện nay hoàn toàn miễn phí cho mọi người, cho phép bạn dễ dàng tạo ra các kịch bản tương tác Được phát triển trên nền tảng Machine Learning, Dialogflow giúp bạn huấn luyện bot của mình để xử lý nhiều trường hợp và ngữ cảnh khác nhau một cách hiệu quả.
Dialogflow hiện có sẵn nhiều kịch bản và được đào tạo với một lượng dữ liệu phong phú Tuy nhiên, nó hoạt động hiệu quả hơn với tiếng Anh và một số ngôn ngữ của các quốc gia đông dân khác.
CƠ SỞ LÝ THUYẾT
TÌM HIỂU VỀ DIALOGFLOW
Dialogflow được đổi tên từ Api.ai sau khi được Google mua lại vào tháng 9 năm
2016 Tiền thân là một công ty nổi tiếng với trợ lý ảo Speaktoit
Dialogflow, trước đây gọi là API.AI, là dịch vụ của Google hỗ trợ lập trình viên trong việc phát triển các sản phẩm giao tiếp với người dùng thông qua hội thoại bằng văn bản hoặc giọng nói.
Dialogflow hiện nay hoàn toàn miễn phí cho người dùng, cho phép bạn dễ dàng tạo ra các kịch bản Được phát triển dựa trên công nghệ Machine Learning, Dialogflow giúp bạn dạy cho bot của mình cách xử lý nhiều trường hợp và ngữ cảnh khác nhau.
Dialogflow hiện cung cấp nhiều kịch bản và được đào tạo với một lượng dữ liệu phong phú Tuy nhiên, hiệu suất của Dialogflow thường tốt hơn khi xử lý tiếng Anh và một số ngôn ngữ của các quốc gia đông dân khác.
Ngoài ra Dialogflow còn cho phép bạn liên kết Chatbot của bạn với Messanger hay Skype hay Slack… một cách rất đơn giản
Hình 1- 2: Các ứng dụng có thể sử dụng Dialogflow
INTENT là một tập những gì người dùng nói mà chúng có cùng một ý nghĩa
Entities là công cụ quan trọng giúp trích xuất giá trị tham số từ ngôn ngữ tự nhiên Mọi thông tin mà bạn muốn khai thác từ nội dung người dùng đều có thể được đại diện bằng một ENTITY tương ứng.
AGENT là một mô-đun NLU (Phân tích để hiểu ngôn ngữ tự nhiên) giúp phân tích đầu vào từ người dùng, bao gồm văn bản và giọng nói, chuyển đổi thành dữ liệu có thể xử lý bằng lập trình AGENT cho phép bạn quản lý các đoạn hội thoại thông qua INTENTS và ENTITIES, nâng cao khả năng tương tác và hiểu biết của hệ thống.
Bot là ứng dụng cơ bản và dễ hiểu nhất của trí tuệ nhân tạo (AI), được phát triển từ các kịch bản đã được lập trình cùng với một số yếu tố của Máy Học (Machine Learning) Mục tiêu chính của Bot là cung cấp câu trả lời và gợi ý một cách tự nhiên và chính xác nhất có thể.
Bot có thể được so sánh với Siri của Apple hoặc Cortana của Microsoft, và mức độ thông minh của Bot phụ thuộc vào hai yếu tố chính cấu thành nên bộ não của nó.
Để bắt đầu, bạn cần tạo một tài khoản trên trang Dialogflow Hãy truy cập vào trang web và đăng ký bằng tài khoản Google của bạn Sau khi hoàn tất đăng ký và đăng nhập, bạn sẽ thấy giao diện chính của Dialogflow.
Hình 1- 4: Giao diện khi đăng nhập vào Dialogflow
Tiếp theo đây sẽ là cách để tạo một Intent
Trước tiên ta sẽ tìm hiểu rõ hơn về Intent và các thành phần của nó
Một Intent phân loại ý định của người dùng trong một cuộc trò chuyện Mỗi Agent có thể xác định nhiều Intent, và sự kết hợp của các Intent này giúp xử lý một đoạn hội thoại hoàn chỉnh Khi người dùng viết hoặc nói, được gọi là biểu thức người dùng cuối, Dialogflow sẽ kết nối những biểu thức này với Intent có nội dung phù hợp nhất trong Agent.
Hình 1- 5: Ví dụ về một Intent
Cụm từ huấn luyện (training phrases) là những ví dụ mà người dùng có thể nói, và khi người dùng phát biểu tương tự như một trong các cụm từ này, Dialogflow sẽ so sánh với intent Không cần phải định nghĩa chi tiết từng ví dụ, vì Dialogflow sử dụng công nghệ Machine Learning để tự động mở rộng danh sách các cụm từ.
Action: Ta có thể định nghĩa một hành động cho mỗi intent Khi một intent trùng khớp,
Dialogflow cung cấp hành động cho hệ thống của bạn, cho phép bạn kích hoạt những chức năng cụ thể trên nền tảng của mình.
When an intent matches at runtime, Dialogflow provides a value from the user's input as a parameter Each parameter has a type known as an entity, which defines the data type it stores Parameters help organize data for easier use in executing logic and generating responses.
Phản hồi: Chúng tôi xác định văn bản, giọng nói và phản hồi trực quan để cung cấp cho người dùng cuối Điều này giúp người dùng nhận được câu trả lời, yêu cầu thông tin hoặc ngắt quãng một cuộc hội thoại.
Hình 1- 6: Agent có thể quản lý nhiều Intent
Trong Dialogflow, ngữ cảnh hoạt động giống như bối cảnh trong ngôn ngữ tự nhiên, giúp hiểu rõ hơn về ý nghĩa của các câu nói Ví dụ, khi một người nói “họ màu cam”, cần có ngữ cảnh để xác định đối tượng mà họ đang đề cập đến Tương tự, để Dialogflow có thể xử lý các biểu thức của người dùng một cách chính xác, việc cung cấp ngữ cảnh là rất quan trọng để kết nối với intent.
Events: Với các sự kiện, bạn có thể gọi một intent dựa trên điều gì đó đã xảy ra, thay vì những gì người dùng cuối truyền đạt
Ta sẽ click vào nút CREATE INTENT ở góc trên bên phải màn hình
Hình 1- 7: Màn hình khi tạo Intent
Tiếp theo, Tùy theo ngữ cảnh, ý định mà ta muốn thực hiện, ta sẽ điền dữ liệu cần thiết cho từng trường trong đây
Khung bên phải là nơi bạn có thể chạy thử và kiểm tra kết quả mà nó trả về
Hình 1- 12: Khung để check kết quả
When clicking on DIAGNOSTIC INFO in Dialogflow, a raw API response is displayed, essentially a JSON file We can download this JSON file to execute the necessary actions.
Hình 1- 13: Khung để check kết quả
Sau khi đã điền đủ dữ liệu cần thiết ta nhấn Save để tạo Intent.
INTERNET OF THINGS (IOTS) LÀ GÌ?
Thuật ngữ "Internet of Things" (viết tắt là IoT) đang ngày càng trở nên phổ biến và thu hút sự chú ý lớn từ cộng đồng công nghệ Sự bùng nổ của IoT trong tương lai hứa hẹn sẽ có ảnh hưởng sâu rộng đến cuộc sống, công việc và xã hội của con người.
Internet of Things (IoT) đã bắt đầu hình thành từ nhiều thập kỷ trước, nhưng đến năm 1999, thuật ngữ này mới được Kevin Ashton, một nhà khoa học và người sáng lập Trung tâm Auto-ID tại MIT, giới thiệu Tại đây, ông đã thiết lập các tiêu chuẩn toàn cầu cho công nghệ RFID, một phương thức giao tiếp không dây sử dụng sóng radio, cùng với nhiều loại cảm biến khác.
IoT (Internet of Things) là một khái niệm mô tả một thế giới trong đó mỗi đồ vật và con người đều có định danh riêng, cho phép truyền tải và trao đổi thông tin qua một mạng duy nhất mà không cần tương tác trực tiếp Công nghệ IoT phát triển từ sự kết hợp của công nghệ không dây, vi cơ điện tử và Internet, tạo thành một hệ thống các thiết bị kết nối với nhau, với Internet và môi trường xung quanh để thực hiện các nhiệm vụ cụ thể.
LẬP TRÌNH ANDROID LÀ GÌ?
Lập trình Android là một nghề chuyên sử dụng các ngôn ngữ lập trình để phát triển phần mềm, nhằm nâng cao tiện ích cho thiết bị di động, đặc biệt là các thiết bị sử dụng hệ điều hành Android.
Android là hệ điều hành dựa trên nền tảng Linux, được phát triển đặc biệt cho các thiết bị di động có màn hình cảm ứng như smartphone và tablet.
Android là một hệ điều hành mã nguồn mở, được Google phát hành theo Giấy phép Apache, giúp cho việc phát triển hệ thống trở nên thuận lợi Sự tự do trong việc điều chỉnh và phân phối Android đã thu hút các nhà phát triển thiết bị, mạng di động và lập trình viên nhiệt huyết Hơn nữa, cộng đồng đông đảo các lập trình viên và chuyên gia đã đóng góp vào việc viết ứng dụng, mở rộng chức năng cho thiết bị Android.
Những ngôn ngữ để lập trình ứng dụng android
Java : Ngôn ngữ Java là kiến thức cơ bản nhất cho bước đầu lập trình ứng dụng
Để lập trình ứng dụng Android hiệu quả, bạn cần nắm vững cấu trúc vòng lặp, danh sách, biến và cấu trúc điều khiển trong Java Hiện nay, nhiều công ty vẫn sử dụng ngôn ngữ Java để phát triển ứng dụng, nhằm mang đến trải nghiệm hoàn hảo cho người dùng.
Người lập trình Android cần nắm vững kiến thức cơ bản về SQL để xây dựng cấu trúc cơ sở dữ liệu cho ứng dụng SQL không chỉ giúp tạo ra cơ sở dữ liệu mà còn cho phép truy cập và lấy thông tin từ đó trong quá trình lập trình.
SDK (Bộ công cụ phát triển phần mềm Android) là môi trường phát triển tích hợp (IDE) giống như Android Studio, nơi lập trình viên có thể viết mã và xây dựng ứng dụng từ các gói và thư viện khác nhau Android SDK cung cấp các đoạn mã ví dụ, thư viện phần mềm, công cụ lập trình tiện ích, và nhiều tài nguyên khác để hỗ trợ quá trình xây dựng, kiểm thử và gỡ lỗi ứng dụng Android.
XML là công cụ lý tưởng để lập trình viên mô tả dữ liệu một cách hiệu quả, phục vụ cho nhiều mục đích khác nhau Cú pháp XML đóng vai trò quan trọng trong việc phát triển ứng dụng Android, đặc biệt trong thiết kế giao diện người dùng (UI) và phân tích dữ liệu từ internet Hầu hết các thao tác liên quan đến XML đều được thực hiện qua Android Studio, giúp lập trình viên nắm vững ngôn ngữ đánh dấu này.
C# là ngôn ngữ lập trình đơn giản, được phát triển bởi Microsoft vào năm 2000 dưới sự dẫn dắt của Anders Hejlsberg và Scott Wiltamuth Đây là ngôn ngữ hiện đại, hướng đối tượng, được xây dựng dựa trên C++ và Java C# được thiết kế cho Common Language Infrastructure (CLI), cho phép sử dụng các ngôn ngữ high-level trên nhiều nền tảng khác nhau Với sự hỗ trợ của NET Framework, việc phát triển ứng dụng Windows Forms và WPF trở nên dễ dàng hơn bao giờ hết.
Hiện nay khi lập trình Android, người ta còn sử dụng ngôn ngữ Kotlin
Lập trình ứng dụng Android là quá trình phát triển phần mềm di động, giúp người lập trình hiểu rõ hơn về các ứng dụng mà chúng ta sử dụng hàng ngày Bài viết cung cấp kiến thức cơ bản về khái niệm lập trình ứng dụng Android và các ngôn ngữ lập trình phổ biến được sử dụng trong lĩnh vực này.
13 không còn là vấn đề quá lớn
THIẾT BỊ PHẦN CỨNG
Công tắc cảm ứng Lumi LM-S1 (2,3,4) là thiết bị thông minh sử dụng công nghệ cảm ứng điện dung, với mặt kính cường lực chống xước và va đập, mang đến vẻ đẹp tinh tế và sang trọng nhờ vòng tròn LED phát sáng xung quanh Sản phẩm tích hợp công nghệ không dây Zigbee, cho phép người dùng điều khiển từ xa, bật tắt công tắc dễ dàng qua điện thoại hoặc máy tính bảng từ bất kỳ đâu có kết nối Internet.
Công tắc được thiết kế tương thích với các đế âm tường phổ biến, giúp việc lắp đặt và thay thế dễ dàng mà không làm ảnh hưởng đến hạ tầng điện trong nhà Sản phẩm hoạt động hiệu quả với điện áp từ 100 – 240V và tần số 50/60Hz.
Công tắc cảm ứng Lumi LM-S1 (2,3,4) có thiết kế sang trọng, có 2 mẫu là: Kính đen viền vàng và kính trắng viền vàng
Hình 1- 14: Công tắc cảm ứng Lumi
ESP8266 là một dòng chip tích hợp Wifi 2.4Ghz sẵn bên trong có thể lập trình được
Là một mạch vi điều khiển có thể giúp chúng ta điều khiển các thiết bị điện tử
Trong project, ESP8266 được sử dụng để điều khiển bóng đèn và các sensor node
KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU
KHẢO SÁT HIỆN TRẠNG
Trong xã hội hiện đại, ứng dụng nhà thông minh đã trở nên phổ biến trong đời sống hàng ngày Nhiều công ty phần mềm hiện nay đã phát triển các ứng dụng trên cả website và mobile app, đáp ứng nhu cầu ngày càng cao của người tiêu dùng.
Chúng tôi xin giới thiệu một số ứng dụng website và di động mà chúng tôi đã khảo sát thực tế, nhằm cung cấp thông tin đầy đủ để thực hiện đề tài.
TELUS SmartHome là một ứng dụng có giao diện đơn giản và thân thiện với người dùng, cho phép điều khiển thiết bị với độ chính xác cao và tức thì Ứng dụng này đảm bảo tính bảo mật tốt và mang lại sự tương tác cao giữa các thiết bị thông minh và người dùng Hiện tại, trên CH Play, ứng dụng được đánh giá trung bình 3.8 sao dựa trên 108 đánh giá từ người dùng.
Samsung đã trở thành một thương hiệu quen thuộc trong lĩnh vực công nghệ, không chỉ với các dòng smartphone mà còn với các phần mềm hữu ích Ứng dụng Samsung Smart Home, đã ra mắt từ lâu, nhận được phản hồi tích cực nhờ giao diện đơn giản và dễ sử dụng, cho phép kết nối với nhiều thiết bị điện tử trong nhà như quạt, đèn, tủ lạnh, máy lạnh và tivi Tuy nhiên, ứng dụng cũng gặp phải một số chỉ trích về việc yêu cầu quyền truy cập vào danh bạ, số điện thoại, vị trí và mạng xã hội, điều này khiến một số người dùng lo ngại về quyền riêng tư Hiện tại, trên CH Play, ứng dụng có đánh giá trung bình chỉ 2.6 sao từ 8209 người dùng.
Ứng dụng Tuya Smart là một trong những ứng dụng Smart Home phổ biến hiện nay, được nhiều người dùng tải về nhờ giao diện trực quan và bắt mắt Ứng dụng cho phép người dùng quản lý một lượng lớn thiết bị điện tử với độ chính xác cao, đồng thời cung cấp thông tin về tình trạng bật tắt, cường độ sử dụng và lượng điện tiêu thụ Tuy nhiên, ứng dụng cũng gặp phải phản hồi về việc ngắt kết nối bất ngờ, khiến người dùng không thể truy cập vào danh sách quản lý thiết bị Hiện tại, trên CH Play, Tuya Smart nhận được đánh giá trung bình 3.8 sao từ 14,826 người dùng.
XÁC ĐỊNH YÊU CẦU
2.2.1.1 Yêu cầu chức năng nghiệp vụ Điều khiển: Người dùng có thể sử dụng giọng nói, văn bản hoặc nhấn phím để điều khiển các trạng thái bật - tắt của thiết bị khả dụng trong account mà họ đang sử dụng Đồng bộ dữ liệu: Khi hệ thống nhận được yêu cầu thực hiện một hành động của người dùng từ app di động thì dữ liệu sẽ được đẩy lên và được cập nhật lại trên server Khi đó thì trạng thái của thiết bị khi hiển thị trên website cũng phải được đồng bộ và tất nhiên là thiết bị phần cứng cũng phải được đồng bộ tương ứng
2.2.1.2 Yêu cầu chức năng hệ thống
Bảng 2-1 Bảng yêu cầu chức năng hệ thống
STT Nội dung Mô tả chi tiết Ghi chú
1 Real time Các hoạt động của người dùng: điều kiển bật tất các công tắc được đồng bộ với nhau giữa app – web – phần cứng
Để đảm bảo bảo mật cho người dùng khi tạo tài khoản, việc xác thực thông qua email hoặc SMS là bắt buộc Thông tin cá nhân của người dùng sẽ được mã hóa nhằm ngăn chặn rò rỉ dữ liệu tài khoản và mật khẩu.
Ứng dụng nhận diện giọng nói cho phép người dùng thực hiện các hành động như bật hoặc tắt thiết bị theo tên, tắt tất cả thiết bị, và bật hoặc tắt theo vị trí công tắc.
Phân quyền Admin: Quản lý thông tin người dùng, phân quyền người dùng, thao tác để
Nhắc nhở hoặc yêu cầu người dùng đăng nhập lại sau khoảng thời dài không dùng ứng dụng
2.2.2 Yêu cầu phi chức năng
Bảng 2-2 Bảng yêu cầu phi chức năng
STT Nội dung Tiêu chuẩn Mô tả chi tiết
1 Tốc độ xử lý quá trình điều khiển thiết bị nhanh chóng
Hiệu quả Một lần có thể cho nhiều tài khoản đăng nhập vào để điều khiển
2 Tiết kiệm được thời gian, công sức, điện năng và giảm chi phí
Hiệu quả Tiết kiệm thời gian so với quản lý thủ công và bật tắt bằng tay
Dễ dàng quản lý các thiết bị từ xa và có thể tắt những thiết bị không có nhu cầu sử dụng
3 Dễ dàng quản lý, kiểm soát và lắp đặt
Tiện dụng Dễ dàng cài đặt và thêm thiết bị cho user khi user có nhu cầu mở rộng danh sách các thiết bị điều khiển
4 Có thể thiết kế thêm theo yêu cầu của doanh nghiệp
Tiến hóa Các doanh nghiệp, người dùng có thể yêu cầu thêm tính năng hữu ích cho app
5 Cho phép người dùng gia tăng số lượng các thiết bị mà họ muốn điều khiển
Tiến hóa Người dùng có thể dễ dàng yêu cầu admin thêm thiết bị điều khiển
6 Giao diện thân thiện, đơn giản
Tiện dụng Khách hàng ở mọi lứa tuổi đều có thể dễ dàng sử dụng
7 Dễ thao tác Tiện dụng Các thao tác nhập xuất chỉnh sửa đơn giản, gần gũi với người dùng
PHÂN TÍCH VÀ THIẾT KẾ CƠ SỞ DỮ LIỆU
NHẬN DIỆN TÁC NHÂN VÀ CHỨC NĂNG TRONG SỞ ĐỒ USE CASE
Bảng 3-1 Bảng tác nhân toàn hệ thống
STT Tác nhân Chức năng
1 Admin - Quản lý thông tin tài khoản người dùng
- Thiết lập, xử lý code cho phần cứng
- Thống kê, quản lý dữ liệu
2 Người dùng - Quản lý thông tin tài khoản
- Thiết lập thời gian login
- Xem danh sách các devices
- Xem danh sách các switch trong một device
- Điều kiển các thiết bị
SƠ ĐỒ USE CASE
Hình 3- 1: Use case chung của hệ thống
Hình 3- 2: Use case Quản lý thông tin cá nhân
Hình 3- 3: Use case Điều khiển thiết bị
Mô tả các Use case liên quan tới Tài khoản người dùng
Bảng 3-2: Use case Đăng nhập
Mô tả Cho phép người dùng đăng nhập vào hệ thống
Tác nhân kích hoạt Người dùng
Tiền điều kiện Người dùng biết tài khoản và mật khẩu đăng nhập
Các bước thực hiệ (1) Người dùng mở ứng dụng
(2) Nhập tên đăng nhập và mật khẩu
(4) Nếu đăng nhập thất bại, thông báo “Tài khoản hoặc mật khẩu không đúng” Người dùng nhập lại thông tin và đăng nhập lại lần nữa
(5) Nếu đăng nhập thành công: Mở giao diện Trang chủ chứa các chức năng của người dùng
Mô tả Cho phép người dùng thiết lặp tài khoản, yêu cầu thời gian đăng nhập lại hệ thống
Tác nhân kích hoạt Người dùng
Tiền điều kiện Đã đăng nhập thành công vào hệ thống
Các bước thực hiện (1) Tại màn hình chính người dùng chạm vào nút
(2) Màn hình sẽ hiển thị 2 mục chọn:
- Hẹn thời gian login lại
Bảng 3-4: Use case Đổi người dùng
Mô tả Cho phép người dùng thay đổi tài khoản đăng nhập
Tác nhân kích hoạt Người dùng
Tiền điều kiện Đã chạm vào nút “Menu”
Các bước thực hiện (1) Người dùng chọn mục đổi người dùng
(2) Hệ thống lưu trữ dữ liệu sẻ xóa thông tin password người dùng lưu trong thiết bị
(3) Mở màn hình Đăng nhập
(4) Load lại email người dùng trước đó, và yêu cầu người dùng nhập lại mật khẩu tài khoản
Bảng 3-5: Use case hẹn thời gian login lại
Mô tả Cho phép người dùng chọn thời gian yêu cầu login lại hệ thống
Tác nhân kích hoạt Người dùng
Tiền điều kiện Đã chạm vào nút “Menu”
Các bước thực hiện (1) Nếu người dùng chọn “Hẹn thời gian login lại”
(2) Hệ thống sẻ hiện thị 3 mục cho người dung chọn:
Nếu người dùng chọn một trong ba tùy chọn và nhấn nút “APPLY”, hệ thống sẽ ghi lại thời gian nhấn nút để làm cơ sở kiểm tra yêu cầu đăng nhập lại trong lần truy cập tiếp theo.
(4) Nếu lưu trữ thành công, hệ thống thông báo cập nhật thành công và đóng popup
(5) Nếu lưu trữ thất bại, hệ thống thông báo cập nhất thất bại và đóng popup
Hình 3- 4: Cơ sở dữ liệu tương tác
Mô tả các Use case liên quan tới Điều kiển
Bảng 3-6: Use case Xem tất cả devices
Mô tả Cho phép người dùng xem tất cả các project được tạo trong tài khoản cá nhân
Tác nhân kích hoạt Người dùng
Tiền điều kiện Đã đăng nhập vào hệ thống
Các bước thực hiện (1) Tại màn hình chính của người dùng Chọn mục
(2) Màn hình sẻ chuyển sang màn hình xem tổng quát danh sách các devices Với các thông tin của device, trạng thái bật tất của từng
(3) Người dùng có thể xem chi tiết khi chạm vào từng item trong danh mục
Bảng 3-7: Use case Xem tất cả switch
Mô tả Cho phép người dùng xem tất cả switch trong một device
Tác nhân kích hoạt Người dùng
Tiền điều kiện Sau khi chọn một project trong danh sách
Các bước thực hiện (1) Tại màn hình của người dùng Chọn vào mục xem tất cả
(2) Màn hình sẽ hiện thị danh sách các switch hiện đang có trong project và trạng thái của các switch đó
Bảng 3-8: Use case bật/tất switch
Mô tả Cho phép người dùng bật tất một hoặc nhiều switch cùng một lúc
Tác nhân kích hoạt Người dùng
Tiền điều kiện Sau khi mở màn hình Switch Activity
Các bước thực hiện (1) Tại màn hình chính của người dùng Người dùng chạm vào một switch trong danh sách các switch
(2) Khi người dùng chạm vào một switch, hệ thống sẻ kiểm tra xem trạng thái hiện tại của switch đó là đang bật hay đang tất
(3) Sau khi kiểm tra trạng thái của switch đó, có 2 trường hợp:
- Switch đang ở trạng thái bật
- Switch đang chọn ở trạng thái tất
27 request lên server yêu cầu cập nhật lại trạng thái của switch thành tất
(5) Nếu switch đang ở trạng thái tất, hệ thống sẽ gửi 1 request lên server yêu cầu cập nhật lại trạng thái của switch thành bật
Sau khi server cập nhật thành công, hệ thống sẽ thông báo rằng tên switch đã được cập nhật Nếu quá trình cập nhật thất bại, người dùng sẽ nhận được thông báo lỗi để biết thao tác không thành công.
(7) Sau khi hiện thông báo, sẽ cập nhập lại adapter danh sách trạng thái các switch và hiện thị cho người dùng
Bảng 3-9: Use case Voice chat
Mô tả Cho phép người dùng điều kiển thiết bị bằng giọng nói
Tác nhân kích hoạt Người dùng
Tiền điều kiện Sau khi mở màn hình Switch Activity
Các bước thực hiện (1) Tại màn hình chính của người dùng
(2) Người dùng chạm vào icon mic
(3) Hệ thống sẻ hiện dialog của google voice
(4) Sau khi người dùng nói một yêu cầu của mình (bật, tất), hệ thống sẻ chuyển đổi file âm thanh thành văn bản text
(5) Sau khi chuyển đổi thành nội dung văn bản, hệ thống sẻ gửi nội dung văn bản tới api.ai của google
(6) Khi nội dung được gửi lên, thông qua api dialogflow nhận diện đoạn văn bản trên thuộc về một intent nào trong danh sách các intent đã tạo
(7) Có 2 trường hợp xảy ra:
If the intents are categorized as creation intents, Dialogflow's api.ai will return a JSON string containing the results along with the actions that have been pre-configured by the admin.
- Nếu không có trong các intent tạo, api.ai sẻ trả về 1 json có chứa action: “input.unknown”
"lang": "en", "sessionId": "bff8700c-792c-ffdf-1c8c- 78c20df58daf",
"source": "agent", "resolvedQuery": "bật đèn", "action": "batTheoTen", "actionIncomplete": false, "score": 1,
29 c14f93c059ef", "intentName": "bat theo ten", "endConversation": true, "webhookUsed": "false", "webhookForSlotFillingUsed": "false", "isFallbackIntent": "false"
}, "fulfillment": { "speech": "đèn đã được bật", "messages": [
{ "lang": "en", "type": 0, "speech": "đèn đã được bật"
(8) Sau khi nhận được file json chứa thông tin action Hệ thống sẽ bất xem action đó là gì:
The action "batTheoTen/tatTheoTen" prompts the system to retrieve additional parameters labeled "any" from the JSON file, enabling it to search for switches that include the specified switch name.
Nếu có 2 tên switch giống: Hệ thống sẽ hiện lên dialog cho phép người dùng chọn các switch mình muốn tất
Nếu hệ thống phát hiện chỉ có một switch với tên giống nhau hoặc nhiều switch cùng tên đã được bật hoặc tắt theo yêu cầu, nó sẽ tự động cập nhật trạng thái của switch còn lại Đồng thời, hệ thống sẽ hiển thị thông báo cho người dùng biết rằng việc cập nhật đã thành công.
Nếu các switch có cùng tên và trạng thái giống như yêu cầu, hệ thống sẽ hiển thị một thông báo trong danh sách trò chuyện: “Hình như bạn đã bật nó rồi Hoặc không có cái này…”.
Hệ thống show một thông báo nhở với lời nhắc là “Không có cái này”
- batTatCa/tatTatCa: nếu là action này, hệ thống sẻ gửi một request lên server yêu cầu cập nhật tất cả các switch bật/tất
- batViTri/tatViTri: nếu action là batViTri/tatViTri, hệ thống sẻ kiểm tra parameters “number” Xác định vị trí yêu cầu có vượt qua số lượng switch hay < 0 hay không
Nếu không hợp lệ: Thông báo người dùng vị trí này không tồn tại
- Các trường hợp còn lại (input.unknown,…): Hệ thống sẻ thông báo là “Xin lỗi mình gặp khó khăn khi hiểu câu hỏi của bạn”
Mô tả Cho phép người dùng điều kiển thiết bị bằng nội dung văn bản
Tác nhân kích hoạt Người dùng
Tiền điều kiện Sau khi mở màn hình Switch Activity
Các bước thực hiện (1) Người dùng chạm vào edittext chat
(2) Hệ thống sẽ hiện thị keyboard cho người dùng nhập nội dung yêu cầu thực hiện Trong quá trình nhập, button Send sẻ thay đổi màu sắc
Khi người dùng nhấn nút "Send", nội dung văn bản sẽ được thêm vào khung chat và gửi lên api.ai để nhận dạng.
(4) Các bước sau đó được thực hiện như Use case Voice chat nêu trên
Cơ sở dữ liệu liên quan:
Hình 3- 5: Cơ sở dữ liệu liên quan
3.4 CHI TIẾT CÁC BẢNG DỮ LIỆU
Bảng 3-11: Chi tiết Bảng Tb_UserType
STT Thuộc tính Kiểu Miền giá trị Ý nghĩa Ghi chú
1 UserType nvarchar(256) Khóa chính Id
2 NameUserType nvarchar(256) Tên user type
Bảng 3-12: Chi tiết Bảng Tb_Permission
STT Thuộc tính Kiểu Miền giá trị Ý nghĩa Ghi chú
Tb_UserType_Permission(UserTye,PermissionID,ActtionID)
Bảng 3-13: Chi tiết Bảng Tb_UserType_Permission
STT Thuộc tính Kiểu Miền giá trị Ý nghĩa Ghi chú
1 UserType Nvarchar(256) Khóa chính, khóa ngoại
2 PermissionID Varchar(250) Khóa chính, khóa ngoại
3 ActtionID Varchar(50) Khóa chính Id acttion
AspNetUsers(Id, Email, EmailCOnfirmed, PasswordHash, SecurityStamp,
PhoneNumber, PhoneNumberConfirmed, TwoFactorEnabled, LockoutEnđateUtc, LockoutEnabled, AccessFaileCount, UserName, UserType, FullName, Pictures, Status, Address, DateCreate, DateUpdate, IdThanhVien)
Bảng 3-14: Chi tiết Bảng AspNetUser
STT Thuộc tính Kiểu Miền giá trị Ý nghĩa Ghi chú
3 EmailConfirmed Bit Trạnh thái true/false email confirmed
4 PasswordHash Nvarchar(MAX) Mật khẩu người dùng
6 PhoneNumber Nvarchar(MAX) Số điện thoại người dùng
8 TwoFactorEnabled Bit Bật/tất towFactor
12 UserName Nvarchar(256) Tên tài khoản
15 Pictures Nvarchar(256) Ảnh người dùng
Tb_Projects(ProjectID, ProjectName, CommentProject, DateCreate, DateModify, UserName, Id, SubUname, FullName)
Bảng 3-15: Chi tiết Bảng Tb_Projects
STT Thuộc tính Kiểu Miền giá trị Ý nghĩa Ghi chú
4 DateCreate Datetime Ngày tạo tài khoản
Tb_Switches(SwitchID, NameSwitch, ProjectID, ValueSwitch, CommentSwitch, TrangThai, Gio, Phut, Giay, Offset, PicturesOn, Pictureoff, NguongAnhSangTren, NguongNhietDoTren, NguongDoAmTren, NguongPinTren, KindSwitchID,
TimerType, TrangThaiSlider, SecondsTimeSpan, RepeatTime, ScheduleJobID, RepeatDayWeek, CountValueSwitchOn, CountValueSwitchOff)
Bảng 3-16: Chi tiết Bảng Tb_Projects
STT Thuộc tính Kiểu Miền giá trị Ý nghĩa Ghi chú
4 ValueSwitch Int Trạng thái của switch, (0 – 255)
Trạng thái này kiểm tra switch đang bật or tất hoặc độ sáng của switch
6 TrangThai Bit Trạng thái hẹn giờ
11 PicturesOn Nvarchar(255) ảnh switch on
12 PicturesOff Nvarchar(255) ảnh switch off
13 NguongAnhSangTren Float Ngưỡng ánh sáng trên
14 NguongNhietDo Float Ngưỡng nhiệt độ
15 NguongDoAm Float Ngưỡng Độ Ẩm
21 ScheduleJobId Nvarchar(50) Không thuộc phạm vi nghiên cứu
22 RepeatDayWeek Nvarchar(50) Không thuộc phạm vi
23 CountValurSwitchOn Numeric(18,0) Không thuộc phạm vi nghiên cứu
24 CountValueSwitchOff Numeric(18,0) Không thuộc phạm vị nghiên cứu
Hình 3- 6: Sơ đồ quan hệ
THIẾT KẾ GIAO DIỆN VÀ XỬ LÝ
THIẾT KẾ GIAO DIỆN
4.1.1 Danh sách các màn hình và sơ đồ chuyển đổi
Hình 4- 1: Danh sách các màn hình và sơ đồ chuyển đổi
4.1.2 Mô tả chi tiết các màn hình
Nếu người dùng mới sử dụng ứng dụng, sẽ hiển thị nút đăng nhập Đối với người dùng chưa đăng xuất, cần kiểm tra xem thời gian yêu cầu đăng nhập lại đã đến chưa Nếu chưa, ứng dụng sẽ tự động đăng nhập bằng tài khoản và mật khẩu đã lưu trên thiết bị Nếu thời gian đã hết, hệ thống sẽ xóa mật khẩu lưu và hiển thị nút đăng nhập để người dùng thực hiện đăng nhập lại.
Các đối tượng trong hình
Bảng 4-1: Bảng các đối tượng Màn hình chờ
1 Button Chuyển đến màn hình đăng nhập
Ý nghĩa: Cho phép người dùng đăng nhập vào hệ thống
Chuyển người dùng tới màn hình login
Hình 4- 3: Sơ đồ biến cố màn hình chờ
Hình 4- 4: Màn hình đăng nhập
Các đối tượng trong hình
Bảng 4-2: Bảng các đối tượng Màn hình Đăng nhập
1 Edittext Nhập tên đăng nhập của tài khoản
2 Edittext Nhập mật khẩu của tài khoản
3 Button Đăng nhập vào hệ thống
Sơ đồ các biến cố
Ý nghĩa: Giao diện xem thông tin của các devices mà người dùng đã tạo, cho phép người dùng quản lý thông tin đăng nhập
Hình 4- 6: Màn hình đăng nhập
Màn hình Đăng nhập
Chuyển người dùng tới màn hình Trang chủ
Hình 4- 5:Sơ đồ biến cố màn hình đăng nhập
Bảng 4-3: Bảng các đối tượng Màn hình Trang chủ
1 ImageButton Menu quản lý tài khoản thiết lập, mở popup khi người dùng chạm vào
2 linkText Mở cửa sổ cho phép người dùng xem tất cả các devices hiện có của mình
3 RelativeLayout Bất sử kiện khi người dùng chạm vào device, mở màn hình SwitchActivity
4 TextView Hiện thị trạng thấy của device hiện tại (nếu có một công tất bật, nút này sẻ sáng xanh)
5 CircleImageView Hiện thị hình ảnh của device
6 TextView Hiện thì tên của device
Hiện thị popup thiết lập các cài đặt thông tin đăng nhập Click Menu
Mở màn hình scenes all device
Mở màn hình Switch Activity
Hình 4- 7: Sơ đồ biến cố màn hình trang chủ (1)
Ý nghĩa: Cho phép người dùng thiết lặp một số thao tác quản lý tài khoản
Các đối tượng trong màn hình:
Bảng 4-4: Bảng các đối tượng Màn hình Setting
1 ImageView Đóng popup khi người dùng chạm vào
2 TextView Đăng xuất tài khoản khỏi ứng dụng, và trở về màn hình Đăng nhập
4 RadioButton Danh sách các kiểu hẹn giờ cho người dùng chọn
5 Button Xác nhận yêu cầu login sau khi chọn chế độ hẹn giờ
4.1.2.5 Màn hình Xem tất cả devices
Ý nghĩa: Cho phép người dùng xem tất cả các devices có trong tài khoản một cách nhanh nhất
Trang chủ Đóng popup cài đặt
Click TextView Đổi người dùng
Xóa thông tin người dùng đang lưu trong local, chuyển đén màn hình Đăng nhập
Cập nhập thời gian yêu cầu đăng nhập lại
Hình 4- 9:Sơ đồ biến cố màn hình trang chủ (2)
Hình 4- 10: Màn hình xem tất cả devices
Các đối tượng trong màn hình:
Bảng 4-5: Bảng các đối tượng Màn hình Xem tất cả device
1 Button Trở về màn hình Trang chủ khi người dùng chạm vào
2 RelativeLayout Mở màn hình switch khi người dùng chạm vào các item trong danh sách
Trở về màn hình Trang chủ Click button Back
Mở màn hình Switch Activity
Hình 4 - 11: Sơ đồ biến cố màn hình xem tất cả devices
Ý nghĩa: Cho phép người dùng quản lý các thiết bị thông qua internet bằng giọng nói hoặc nút nhấn
Hình 4-11: Màn hình Switch Activity (1)
Hình 4- 12: Màn hình Switch Activity (2)
Hình 4- 13: Màn hình Switch Activity (3)
Các đối tượng trong màn hình:
Bảng 4-6: Bảng các đối tượng Màn hình Switch Activity
1 Button Trở về màn hình Trang chủ khi người dùng chạm vào
Nút 2 Button cho phép người dùng nhanh chóng kiểm tra trạng thái bật hoặc tắt của công tắc, đồng thời cũng là phím nhấn tiện lợi để dễ dàng điều khiển công tắc.
3 Button Mở tất cả danh sách các switch có trong phòng này
Khi người dùng nhấn vào nút mic, một popup sẽ xuất hiện để thông báo rằng hệ thống đang lắng nghe giọng nói của họ nhằm thực hiện các thao tác bật tắt switch.
5 Edittext Ngoài việc điều khiển bằng giọng nó và nút nhấn người dùng cũng có thể dùng chat để điều kiển
6 Button Nút này dành cho người dùng khi dùng chức năng chát, sẻ gửi nội dung trong ô chat lên server để thực hiện thao tác đó
49 bằng giọng nói, sẻ được hiện thị trong danh sách các textview , cũng như thông tin do hệ thống trả về
Sơ đồ các biến cố:
4.1.2.7 Màn hình Xem tất cả các Switch
Ý nghĩa: Cho phép người dùng xem tất cả các switch có trong project hiện tại, cũng như người dùng có thể điều khiển tại đây
Trở về màn hình Trang chủ Click Back
Cập nhật trạng thái của công tắc
Mở màn hình xem tất cả các switch có trong project
Show dialog Google voice để người dùng điều khiển bằng giọng nói
Lấy nội dung trong edittext để thực hiện các yêu cầu trong edittext
Hình 4- 14: : Sơ đồ biến cố màn hình Switch Activity
Hình 4- 15: : Màn hình xem tất cả các switch
Các đối tượng trong màn hình:
Bảng 4-7: Bảng các đối tượng Màn hình Xem tất cả switch
1 Button Trở về màn hình Trang chủ khi người dùng chạm vào
2 LinearLayout Khi người dùng chạm vào sẻ cập nhật trạng thái của công tắc
LƯỢC ĐỒ SEQUENCE DIAGRAM
4.2.1 Sequence Diagram cho Use case màn hình chờ
Hình 4- 17: Sequence Diagram cho Use case màn hình chờ
Trở về màn hình Trang chủ Click button Back
Cập nhật trạng thái công tắc
Hình 4- 16: : Sơ đồ biến cố màn hình xem tất cả switch
4.2.2 Sequence Diagram cho Use case màn hình đăng nhập
Hình 4- 18: Sequence Diagram cho Use case màn hình đăng nhập
4.2.3 Sequence Diagram cho Use case màn hình load device
Hình 4- 19:Sequence Diagram cho Use case màn hình load device
4.2.4 Sequence Diagram cho Use case load switch
Hình 4- 20: Sequence Diagram cho Use case load switch
4.2.5 Sequence Diagram cho Use case màn hình điều khiển bật tắt
Hình 4- 21: Sequence Diagram cho Use case màn hình điều khiển bật tắt
4.2.6 Sequence Diagram cho Use case màn hình điều khiển bằng giọng nói
Hình 4- 22: Sequence Diagram cho Use case màn hình điều khiển bằng giọng nói
CÀI ĐẶT - KIỂM THỬ
CÀI ĐẶT PHẦN MỀM
Với phần mềm phát triển trên nền tảng Android, người dùng chỉ cần truy cập CHPlay để tải ứng dụng sau khi sản phẩm được triển khai Sau đó, họ có thể thực hiện các thao tác thiết lập theo hướng dẫn có trong ứng dụng.
Với việc cài đặt ứng dụng, yêu cầu người dùng sử dụng điện thoại android có API 21: Android 5.0
Microsoft SQL Server là phần mềm quản trị cơ sở dữ liệu hàng đầu hiện nay, được sử dụng phổ biến trong học tập và công việc.
Yêu cầu hệ thống Để cài đặt Microsoft SQL Server hệ thống cần những yêu cầu sau:
Os : Windows 7 (32 bit hoặc 64 bit) trở lên
CPU : Pentium IV trở lên
Ổ đĩa trống: Ít nhất 6GB
NET Framework: Phiên bản 3.5 SP1
Lưu ý trước khi cài đặt SQL SERVER
Trước khi cài đặt Microsoft SQL Server bạn cần chú ý:
Nên cài SQL Server trước khi cài Microsoft Visual Studio để tránh xung đột
Phải cài Net Framework 3.5 trước khi mở file cài đặt SQL Server để tránh bị lỗi
Phải cài SQL Server 2014 trước khi cài Red Gate SQL(SQL Toolbelt) nhé
Hiện các trang web hướng dẫn chi tiết cài SQL Server có rất nhiều trên internet, sau đây là một số trang web tham khảo:
https://longvan.net/sql-server-la-gi.html
https://youtu.be/pUjOF9-dQCY
KIỂM THỬ PHẦN MỀM
Để đảm bảo chất lượng phần mềm trước khi phát hành, nhóm kiểm thử sẽ xây dựng một số bộ kiểm thử cơ bản nhằm phát hiện lỗi và cải thiện hiệu suất.
5.2.1 Danh sách TestCase cho module Login
Bảng 5-1: TestCase cho module Login
ID Test Case Procedure Expected Output Inter-test case dependence
2 Nhập UserName không nhập mật khẩu hoặc nhập mật khẩu không nhập username
Hiện thị thông báo tài khoản hoặc mật khẩu không được bỏ trống
2 Nhập tài khoàn và mật khẩu
- Nếu tài khoản và mật khẩu chưa validate thì hiện thông báo chưa validate
- nếu tài khoản hoặc mật khẩu không chính xác thì thông báo không chính xác
- nếu tài đăng nhập thành công thì mở màn hình Trang chủ
5.1.2 Danh sách TestCase cho module Trang Chủ
Bảng 5-2: TestCase cho module Trang Chủ
ID Test Case Procedure Expected Output Inter-test case dependence
1 1 Tại màn hình Trang chủ
Mở màn hình xem tất cả các device
2 1 Tại màn hình Trang chủ
2 Bấm vào item trong danh sách device
Mở màn hình Switch Activity chứa chi tiết các switch điều khiển
3 1 Tại màn hình Trang chủ
3 Bấm vào “Đổi người dùng”
Màn hình sẻ chuyển về màn hình login để thay đổi tài khoản khác
5.1.3 Danh sách TestCase cho module Switch
Bảng 5-3: TestCase cho module Switch
ID Test Case Procedure Expected Output Inter-test case dependence
Trở về màn hình Trang chủ
2 Bấm vào nút Xem tất cả
Mở màn hình Danh sách Switch
2 Bấm vào item trong danh sách các switch
-Nếu switch đang trạng thái bật thì chuyển sang tất, ngược lại
- Thông báo switch được cập nhật
2 Bấm vào mic người dùng diều khiển bằng giọng nói
- Nội dung văn bản từ giọng nói được thêm vào danh sách
- Cập nhật trạng thái switch hoặc thông báo lỗi
2 Bấm nhập nội dung điều khiển
- Nội dung văn bản được thêm vào danh sách
-Thực thi yêu cầu của nội dung trong văn bản
- Thông báo khi thực thi xong
5.1.4 Danh sách TestCase cho module Xem tất cả các switch
Bảng 5-4: TestCase cho module Xem tất cả các switch
ID Test Case Procedure Expected Output Inter-test case dependence
1 1 Tại màn hình Xem tất cả các switch
2 Bấm vào item trong danh sách các switch
- Switch được cập nhật trạng thái
2 1 Tại màn hình Xem tất cả các switch
2 Bấm vào item trong danh sách các switch
- Switch được cập nhật tại màn hình Trang Chủ
Hoàn thành được các yêu cầu và mục tiêu đã đề ra
Ứng dụng đáp ứng được các nhu cầu của người sử dụng
Thời gian thực hiện tương đối đúng so với tiến độ dự kiến ban đầu
Xây dựng ứng dụng Android cho phép điều khiển thiết bị điện tử thông qua nhập văn bản hoặc giọng nói Ứng dụng này có giao diện đơn giản, dễ sử dụng và thân thiện với người dùng.
Nắm vững và hiểu thêm các kiến thức về lập trình Android, nhúng, cách gọi API để nhận diện giọng nói
Có những từ khi nói, Google không thể nhận dạng để chuyển thành văn bản
Giao chưa bắt mắt còn đơn giản, chưa thu hút
Vẫn còn thiếu sót về mặt vật chất và thiết bị để kiểm thử
HƯỚNG PHÁT TRIỂN ĐỀ TÀI
Khắc phục những hạn chế về Google API không thể chuyển giọng nói thành văn bản
Sửa và thiết kế lại giao diện cho đẹp và thu hút hơn
Tiếp tục phát triển ứng dụng chạy trên nền tảng IOS với những dữ liệu đã có sẵn
DANH MỤC TÀI LIỆU THAM KHẢO
[1] Adi Cucolaș, Dialogflow Restaurant Chatbot Tutorial | 1,Medium, https://chatbotslife.com/dialogflow-restaurant-bot-tutorial-1-45ce1d3c0ab5 ,
Lập trình ứng dụng Android là một lĩnh vực đang phát triển mạnh mẽ, giúp doanh nghiệp tăng doanh thu thông qua các giải pháp công nghệ hiệu quả Tại Hoàn Vũ Solutions, chúng tôi cung cấp các dịch vụ lập trình ứng dụng Android chuyên nghiệp, đáp ứng nhu cầu của khách hàng Để tìm hiểu thêm về các giải pháp của chúng tôi, hãy truy cập vào website: http://www.hoanvusolutions.com.vn/lap-trinh-ung-dung-android-la-gi.
[3] Intents, https://cloud.google.com/dialogflow/docs/intents-overview, 4/6/2019
[4] Internet of things là gì?, http://iot.dtt.vn/InternetofThings.html , 20/5/2019
[5] TuanPM, Lập trình ESP8266 Arduino, https://arduino.esp8266.vn, 10/5/2019
[6] RecognizerIntent, https://developer.android.com/reference/android/speech/RecognizerIntent?fbclid= IwAR2lI10j1IOyrjeTyLcjmfFMhOsDh4nbN1qOudlsFcOg8egHEnmPYXWzD40, 25/5/2019
[7] 4 nhóm thiết bị điện thông minh Lumi ai cũng muốn sở hữu, https://lumi.net.vn/4-nhom-thiet-bi-dien-thong-minh-lumi-ai-cung-muon-so-huu , 11/5/2019