IV. PHẠM VI NGHIÊN CỨU
2.2. XÁC ĐỊNH YÊU CẦU
2.2.1. Yêu cầu chức năng
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. 2 Bảo mật Người dùng lúc tạo tài khoản sẻ phải xác thực bằng email hoặc sms của mình. Thông tin người dùng được mã hóa để tránh trường hợp lộ thông tin tài khoản mật khẩu.
Nhận diện được giọng nói
Ứng dụng nhận diện giọng nói của người dùng để đưa ra các hành động: bật – tất theo tên, bât- tất tắt cả, bật- tất theo vị trí công tắt.
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 để
19
thiết bị. Nhắc nhở người
dùng
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.
20
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
21
3.1. 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
- Phân quyề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ị
3 Khách - Tạo tài khoản
3.2. SƠ ĐỒ USE CASE
22
Hình 3- 2: Use case Quản lý thông tin cá nhân
23
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 (3)Nhấn nút “Login”
(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.
Bảng 3-3: Use case Setting
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
“Menu”
(2)Màn hình sẽ hiển thị 2 mục chọn:
- Đổi người dùng
- 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
24
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:
- Không hỏi
- 1 tuần
- 1 tháng
(3)Nếu người dùng chọn một trong ba mục trên và bấm nút “APPLY” hệ thống sẽ lưu trữ lại thời gian lúc người dùng bấn nút để làm cơ sở kiểm tra yêu cầu login lại trong lần đăng nhập sau.
(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
25
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
“Scenes”
(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.
26
(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
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
(6)Sau khi server cập nhật và trả về kết quả thành công thì sẻ thông báo tên switch đã được cập nhật, nếu cập nhật thất bại hệ thống cũng hiện thông báo báo cho người dùng biết thao tác bị lỗi.
(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
28
(7) Có 2 trường hợp xảy ra:
- Nếu thuộc các intent tạo, api.ai của dialogflow sẻ trả về một chuỗi json chứa nội dung kết quả trả về với các action do admin đã thiết lập trước đó
- Nếu không có trong các intent tạo, api.ai sẻ trả về 1 json có chứa action: “input.unknown”.
{ "id": "eb021898-6a88-437f-8a01- c174f283ea5e-5b26cf67", "lang": "en", "sessionId": "bff8700c-792c-ffdf-1c8c- 78c20df58daf", "timestamp": "2019-07- 14T18:48:59.279Z", "result": { "source": "agent", "resolvedQuery": "bật đèn", "action": "batTheoTen", "actionIncomplete": false, "score": 1, "parameters": { "any": [ "đèn" ] }, "contexts": [], "metadata": {
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" } ] } }, "status": { "code": 200, "errorType": "success" } }
(8)Sau khi nhận được file json chứa thông tin action. Hệ thống sẽ bất xem action đó là gì:
30
- batTheoTen/tatTheoTen: nếu là action này, thì hệ
thống sẻ lấy thêm parameters “any” trong file json để tìm kiếm trong danh sách switch có chứa tên switch như trong không.
+ Trường hợp có:
. 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 chỉ có 1 switch giống tên hoặc có nhiều switch cùng tên nhưng đã có trạng thái
bật/tất theo yêu cầu: Hệ thống tự động cập nhật
trạng thấy của switch còn lại. Và hiện thêm 1 đoạn text thông báo đã cập nhật thành công cho người dùng biết.
.Nếu trạng thái của các switch có cùng tên
giống như yêu cầu: Hệ thống sẻ thêm một thông báo
trong list view chat: “Hình như bạn đã bật nó rồi. Hoặc không có cái này…”.
+ Trường hợp không có:
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.
31
cầu.
. 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”.
Bảng 3-10: Use case chat
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.
(3)Khi người dùng bấm vào nút “Send”, nội dung văn bản sẻ được thêm vào trong khung chat và đồng thời thực hiện thao tác gửi thông tin lên api.ai để nhận dạng nội dung văn bản.
(4)Các bước sau đó được thực hiện như Use case Voice chat nêu trên.
32
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
Tb_UserType
Tb_UserType(UserType, NameUserType)
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
33
Tb_Permission
Tb_Permission(PermissionID, NamePermission)
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ú
1 Permission Varchar(250) Khóa chính
Id
2 NamePermission nvarchar(256) Tên
Permission
Tb_UserType_Permission
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
Id userType
2 PermissionID Varchar(250) Khóa chính, khóa ngoại
Id
permission 3 ActtionID Varchar(50) Khóa chính Id acttion
AspNetUsers
AspNetUsers(Id, Email, EmailCOnfirmed, PasswordHash, SecurityStamp,
PhoneNumber, PhoneNumberConfirmed, TwoFactorEnabled, LockoutEnđateUtc, LockoutEnabled, AccessFaileCount, UserName, UserType, FullName, Pictures, Status, Address, DateCreate, DateUpdate, IdThanhVien)
34
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ú 1 Id Nvarchar(128) Khóa chính Id
2 Email Nvarchar(256) Email user
3 EmailConfirmed Bit Trạnh thái
true/false email confirmed
4 PasswordHash Nvarchar(MAX) Mật khẩu
người dùng
5 SecurityStamp Nvarchar(MAX)
6 PhoneNumber Nvarchar(MAX) Số điện
thoại người dùng 7 PhoneNumberConfirmed Bit 8 TwoFactorEnabled Bit Bật/tất towFactor 9 LockoutEnđateUtc Datetime 10 LockoutEnabled Bit 11 AccessFaileCount Int
12 UserName Nvarchar(256) Tên tài
khoản
13 UserType Nvarchar(256) Khóa
ngoại
35
15 Pictures Nvarchar(256) Ảnh người
dùng 16 Status bit 17 Address Nvarchar(MAX) 18 DateCreate Datetime 19 DateUpdate Datetime 20 IdThanhVien Nvarchar(128) Tb_Projects
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ú
1 ProjectID Nvarchar(50) Khóa
chính
Id Projects
2 ProjectName Nvarchar(250) Name
3 CommentProject Nvarchar(MAX)
4 DateCreate Datetime Ngày tạo
tài khoản
5 DateModify Datetime
6 UserName Nvarchar(256) Khóa
ngoại Tên user 7 Id Nvarchar(128) Khóa ngoại Id user 8 SubUname Nvarchar(256) 9 FullName Nvarchar(256)
36
Tb_Switches
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ú
1 SwitchID Int Khóa
chính
Id
2 NameSwitch Nvarchar(250) Name
3 ProjectID Nvarchar(50) Khóa
ngoại
Id project
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 5 CommentSwitch Nvarchar(MAX)
6 TrangThai Bit Trạng thái
hẹn giờ
37 9 Giay Int 10 Offset Float 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
16 NguongPinTren Float Ngưỡng
Pin 17 KindSswitchID Nvarchar(50)
18 TimerType Nvarchar(50)
19 TrangThaiSlider Bit 20 SecondsTimeSpan Real
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
38
nghiên cứu
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 SƠ ĐỒ QUAN HỆ Hình 3- 6: Sơ đồ quan hệ
39
4.1. 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
4.1.2.1. Màn hình Chờ
Ý nghĩa:
Nếu người dùng mới dùng app thì hiện button login, còn người dùng chưa đăng xuất thì kiểm tra xem thời gian yêu cầu login lại tới chưa, nếu chưa thì tiến thành đăng nhập với tài khoản và mật khẩu đã lưu trên máy trước đó, nếu đã hết hạng thì xóa đi mật khẩu lưu trên máy và hiện button login cho người dùng đăng nhập lại
40
Các đối tượng trong hình
Bảng 4-1: Bảng các đối tượng Màn hình chờ
STT Loại Ý nghĩa
1 Button Chuyển đến màn hình đăng nhập
41
4.1.2.2. Màn hình Đăng nhập
Ý nghĩa: Cho phép người dùng đăng nhập vào hệ thống.
Chi tiết màn hình:
Màn hình chờ
Chuyển người dùng tới màn hình login
Click Login
Hình 4- 3: Sơ đồ biến cố màn hình chờ
42
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
STT Loại Ý nghĩa
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