Mục đích nghiên cứu của đề tài là dựa trên nền tảng hệ điềuhành Android để phát triển ứng dụng có khả năng giám sát các thiết bị cảmbiến, điều khiển, quản lý các thiết bị trong nhà ở...
Trang 1ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
ĐỒ ÁN CƠ SỞ 3
TRÊN ANDROID
Sinh viên thực hiện : NGUYỄN NGỌC ĐỊNH
Giảng viên hướng dẫn : ThS NGUYỄN ANH TUẤN
Đà nẵng, tháng 8 năm 2020
Trang 2ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
ĐỒ ÁN CƠ SỞ 3
ỨNG DỤNG SMARTHOME
TRÊN ANDROID
Trang 3Đà Nẵng, tháng 8 năm 2020
MỞ ĐẦU
Trong thời đại công nghệ thông tin hiện nay, mạng Internet và các ứngdụng của Internet ngày càng phát triển và trở nên phổ biến Các ứng dụng đóđang góp phần giúp cuộc sống trở nên thuận tiện và dễ dàng hơn Trong đóInternet of Things hay Internet vạn vật, mà cụ thể là Nhà thông minh –Smarthome giúp điều khiển, quản lý, kết nối mọi thiết bị điện, điển tử trongnhà nhanh chóng, dễ dàng và tiện lợi Đồng thời các thiết bị có khả năng kếtnối và truy cập internet ngày càng phổ biến, dễ dàng tiếp cận như điện thoạithông minh, máy tính bảng… nên các ứng dụng Smarthome dần khả thi hơntrong thực tế
Nhận thấy điều đó, em muốn áp dụng kiến thức đã học để xây dựngmột ứng dụng Smarthome trên nền tảng hệ điều hành di động phổ biến nhấtthế giới Android Mục đích nghiên cứu của đề tài là dựa trên nền tảng hệ điềuhành Android để phát triển ứng dụng có khả năng giám sát các thiết bị cảmbiến, điều khiển, quản lý các thiết bị trong nhà ở
Trang 4
LỜI CẢM ƠN
Em xin chân thành cảm ơn Khoa Công nghệ Thông tin và Truyền thông Đại học Đà Nẵng đã tạo điều kiện tốt cho em thực hiện đề tài này Em xin chânthành cảm ơn tới thầy giáo – ThS Nguyễn Anh Tuấn đã tận tình hướng dẫn, chỉbảo, giúp đỡ em hoàn thành đề tài này Em cũng xin gửi lời cảm ơn sâu sắc đến quýThầy Cô trong Khoa đã tận tình giảng dạy, trang bị cho em những kiến thức quýbáu trong những học kì vừa qua
-Em xin gửi lòng biết ơn sâu sắc đến gia đình đã luôn động viên, ủng hộ, cácanh chị và bạn bè đã gắn bó, chia sẻ rất nhiều kinh nghiệm và kiến thức và nhất làtrong thời gian thực hiện đề tài
Mặc dù em đã cố gắng hoàn thành báo cáo trong phạm vi và khả năng chophép, nhưng chắc chắn sẽ không tránh khỏi những sai sót, kính mong sự cảmthông và tận tình chỉ bảo của quý Thầy Cô và các bạn
Em xin chân thành cảm ơn
Đà Nẵng, ngày 4 tháng 8 năm 2020
Sinh viên thực hiện
Nguyễn Ngọc Định
Trang 5NHẬN XÉT
(Của giảng viên hướng dẫn)
………
………
………
………
………
………
………
………
………
………
Trang 6MỤC LỤC
Trang
MỞ ĐẦU 3
LỜI CẢM ƠN 4
Chương 1 GIỚI THIỆU TỔNG QUAN 10
1.1 Tổng quan 10
1.2 Phương pháp, kết quả 10
1.3 Cấu trúc đồ án 10
Chương 2 CƠ SỞ LÝ THUYẾT 11
2.1 Kiến trúc hệ điều hành Android 11
2.2 Mô hình MVC 12
2.2.1 Khái niệm: 12
2.2.2 Luồng dữ liệu trong mô hình MVC 13
2.3 RESTful API 13
2.3.1 Khái niệm: 13
2.3.2 Các thành phần 13
2.3.3 Các thức hoạt động 14
2.4 ExpressJS framework 14
2.4.1 Khái niệm NodeJS 14
2.4.2 ExpressJS 14
2.5 Cơ sở dữ liệu MongoDB 15
2.5.1 NoSQL 15
2.5.2 MongoDB 15
2.6 Retrofit 15
Chương 3 PHÂN TÍCH THIẾT KẾ HỆ THỐNG 16
3.1 Mô hình hóa yêu cầu 16
3.1.1 Xác định các tác nhân (actors) 16
3.1.2 Xác định các trường hợp sử dụng (use case) 16
3.1.3 Đặc tả ca sử dụng (use case descriptions) 16
3.2 Mô hình hóa khái niệm 20
3.2.1 Các lớp biên của hệ thống (boundary classes) 20
3.2.2 Các lớp điều khiển của hệ thống (control classes) 20
3.2.3 Biểu đồ lớp mức phân tích 21
3.3 Mô hình hóa hành vi 22
3.3.1 Biểu đồ tuần tự 22
3.4 Thiết kế chi tiết biểu đồ lớp 22
3.5 Biểu đồ thành phần và biểu đồ triển khai 22
3.5.1 Biểu đồ thành phần 22
3.5.2 Biểu đồ triển khai 22
Chương 4 TRIỂN KHAI XÂY DỰNG 23
4.1 Cấu trúc chương trình 23
4.1.1 Cấu trúc ứng dụng Android 23
4.1.2 Cấu trúc web server 24
4.2 Chức năng đăng ký 25
4.3 Chức năng đăng nhập 26
4.4 Màn hình chính 27
4.5 Chức năng thêm phòng 28
Trang 74.6 Chức năng thêm thiết bị 29
4.7 Quản lý thiết bị 30
KẾT LUẬN 31
1.Kết quả đạt được 31
2 Hướng phát triển 31
Trang 8DANH MỤC HÌNH
Trang
Hình 2.1 Kiến trúc hệ điều hành Android 11
Hình 2.2 Luồng dữ liệu trong mô hình MVC 13
Hình 2.3 Cách thức hoạt động RESTful API 14
Hình 4.1 Cấu trúc ứng dụng Android 23
Hình 4.2 Cấu trúc web server 24
Hình 4.3 Giao diện đăng ký 25
Hình 4.4 Giao diện đăng nhập 26
Hình 4.5 Giao diện màn hình chính 27
Hình 4.6 Giao diện thêm phòng 28
Hình 4.7 Giao diện thêm thiết bị 29
Hình 4.8 Giao diện quản lý thiết bị 30
Trang 9DANH MỤC CỤM TỪ VIẾT TẮT
2 JavaScript JS
3 Representational State Transfer REST
4 Application Programming Interface API
5 Structure Query Language SQL
6 Cơ sở dữ liệu CSDL, DB
7 Object Oriented Analysis and Design OOAD
8 Unified Modeling Language UML
9 Hệ điều hành HĐH
10 Internet of Things IoT
11 HyperText Transfer Protocol HTTP
12 Model - View - Controller MVC
13 Tiếp theo tt
Trang 10Chương 1 GIỚI THIỆU TỔNG QUAN
1.1 Tổng quan
- Tên đề tài: Ứng dụng Smarthome trên Android
- Bối cảnh thực hiện đề tài: Nhận thấy tính thực tế của ứng dụng Smarthometrong cuộc sống Em quyết định chọn đề tài xây dựng ứng dụngSmarthome trên Android nhằm dễ dàng điều khiển, quản lý, kết nối cácthiết bị trong đời sống hàng ngày
- Vấn đề cần giải quyết: Sử dụng ngôn ngữ Java để phát triển một ứng dụngAndroid có khả năng tạo, quản lý các phòng, các thiết bị trong nhà ở.Đồng thời sử dụng nền tảng NodeJS và framework ExpressJS để xây dựngmột REST API server có khả năng kết nối, xử lý các yêu cầu, chức năngcủa ứng dụng Android
- Đề xuất nội dung thực hiện: nghiên cứu và phát triển một ứng dụngAndroid có chức năng tạo và quản lý các phòng, điều khiển các thiết bị,xây dựng một web server có khả năng xử lý các dữ liệu cho ứng dụng
1.2 Phương pháp, kết quả
- Phương pháp triển khai:
+ Tìm hiểu về các thành phần, các chức năng của một ứng dụngSmarthome
+ Tìm hiểu về các công cụ lập trình, ngôn ngữ lập trình để phát triển ứngdụng Android
+ Tìm hiểu cấu trúc và cách thức xây dựng một RESTful API server.+ Tìm hiểu và sử dụng các kiến thức đã được học từ môn Phân tích vàThiết kế Hệ thống để phân tích và thiết kế server phù hợp
+ Sử dụng kiến thức đã được học từ môn Lập trình di động để xây dựngứng dụng và kiến thức Công nghệ web để xây dựng server phù hợp
- Kết quả đạt được:
+ Nắm được các chức năng, thành phần cơ bản của một ứng dụngSmarthome
+ Phân tích và thiết kế hệ thống web server phù hợp
+ Xây dựng được ứng dụng Android có chức năng tạo, quản lý phòng,điều khiển thiết bị
+ Nắm được cách thức hoạt động của một RESTful API server
1.3 Cấu trúc đồ án
Đồ án gồm có 5 chương:
- Chương 1: GIỚI THIỆU TỔNG QUAN
- Chương 2: CƠ SỞ LÝ THUYẾT
- Chương 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
- Chương 4: TRIỂN KHAI XÂY DỰNG
Trang 11Chương 2 CƠ SỞ LÝ THUYẾT
2.1 Kiến trúc hệ điều hành Android
Hình 2.1 Kiến trúc hệ điều hành Android
Linux Kernel
Dưới cùng là lớp Linux - Linux 3.6 cùng với khoảng 115 bản vá Lớp này cung cấp 1 cấp độ trừu tượng giữa phần cứng của thiết bị và các thành trình điều khiển phần cứng thiết yếu như máy ảnh, bàn phím, màn hình hiển thị Đồng thời, hạt nhân (kernel) còn xử lý tất cả các thứ mà Linux có thể làm tốt như mạng kết nối và 1 chuỗi các trình điều khiển thiết bị, giúp cho giao tiếp với các thiết bị ngoại vi dễ dàng hơn
Các thư viện
Ở trên lớp nhân Linux là tập các thư viện bao gồm WebKit - trình duyệt Web mã nguồn mở, được biết đến như thư viện libc, cơ sở dữ liệu SQLite - hữu dụng cho việc lưu trữ và chia sẻ dữ liệu ứng dụng, các thư viênj chơi vàghi âm audio, video, hay các thư viện SSL chiụ trách nhiệm bảo mật
Internet
Trang 12Android Runtime
Đây là phần thứ 3 của kiến trúc và nằm ở lớp thứ 2 từ dưới lên Phần này cung cấp 1 bộ phận quan trọng là Dalvik Vỉtual Machine - là 1 loại Java Virtual Machine được thiết kế đặc biệt để tối ưu cho Android
Dalvik VM sử dụng các đặc trưng của nhân Linux như quản lý bộ nhớ và đaluồng, những thứ mà đã có sẵn trong Java Dalvik VM giúp mọ ứng dụng Android chạy trong tiến trình riêng của nó, với các thể hiện (instance) riêng của Dalvik virtual Machine
Android Runtime cũng cung cấp 1 tập các thư viện chính giúp các nhà phát triển ứng dụng Android có thể viết ứng dụng Android bằng Java
Application Framework
Lớp Android Framework cung cấp các dịch vụ cấp độ cao hơn cho các ứng dụng dưới dạng các lớp Java Các nhà phát triển ứng dụng được phép sử dụng các dịch vụ này trong ứng dụng của họ
Android Framework bao gồm các dịch vụ chính sau:
Activitty Manager - Kiểm soát tất cả khía cạnh của vòng đời ứng dụng và ngăn xếp các Activity
Content Providers - Cho phép các ứng dụng chia sẽ dữ liệu với các ứng dụng khác
Resource Manager - Cung cấp quyền truy cập vào các tài nguyên nhưcác chuỗi, màu sắc, các layout giao diện người dùng
Notifications Manager - Cho phép các ứng dụng hiển thị cảnh báo và các thông báo cho người dùng
View System - Tập các thành phần giao diện (view) được sử dụng đểtạo giao diện người dùng
mô hình phân bố source code thành 3 phần, mỗi thành phần có một nhiệm
vụ riêng biệt và độc lập với các thành phần khác Bao gồm:
- Model : là nơi chứa những nghiệp vụ tương tác với dữ liệu hoặc hệquản trị cơ sở dữ liệu (mysql, mssql… ); nó sẽ bao gồm cácclass/function xử lý nhiều nghiệp vụ như kết nối database, truy vấn
dữ liệu, thêm – xóa – sửa dữ liệu…
- View : là nới chứa những giao diện như một nút bấm, khung nhập,menu, hình ảnh… nó đảm nhiệm nhiệm vụ hiển thị dữ liệu và giúpngười dùng tương tác với hệ thống
Trang 13- Controller : là nới tiếp nhận những yêu cầu xử lý được gửi từ ngườidùng, nó sẽ gồm những class/ function xử lý nhiều nghiệp vụ logicgiúp lấy đúng dữ liệu thông tin cần thiết nhờ các nghiệp vụ lớpModel cung cấp và hiển thị dữ liệu đó ra cho người dùng nhờ lớpView.
2.2.2 Luồng dữ liệu trong mô hình MVC
Khi có một yêu cầu từ phía client gửi đến server, Bộ phận controller cónhiệm vụ nhận yêu cầu, xử lý yêu cầu đó Và nếu cần, nó sẽ gọi đến phầnmodel, vốn là bộ phần làm việc với Database
Sau khi xử lý xong, toàn bộ kết quả được đẩy về phần View Tại View, sẽgen ra mã Html tạo nên giao diện, và trả toàn bộ html về trình duyệt đểhiển thị
Hình 2.2 Luồng dữ liệu trong mô hình MVC
API (Application Programming Interface) là một tập các quy tắc và cơ chế
mà theo đó, một ứng dụng hay một thành phần sẽ tương tác với một ứng dụng hay thành phần khác API có thể trả về dữ liệu mà bạn cần cho ứng dụng của mình ở những kiểu dữ liệu phổ biến như JSON hay XML
Trang 14REST (REpresentational State Transfer) là một dạng chuyển đổi cấu trúc
dữ liệu, một kiểu kiến trúc để viết API Nó sử dụng phương thức HTTP đơn giản để tạo cho giao tiếp giữa các máy Vì vậy, thay vì sử dụng một URL cho việc xử lý một số thông tin người dùng, REST gửi một yêu cầu HTTP như GET, POST, DELETE, vv đến một URL để xử lý dữ liệu
2.3.3 Các thức hoạt động
Hình 2.3 Cách thức hoạt động RESTful API
REST hoạt động chủ yếu dựa vào giao thức HTTP Các hoạt động cơ bản nêu trên sẽ sử dụng những phương thức HTTP riêng
GET (SELECT): Trả về một Resource hoặc một danh sách Resource
POST (CREATE): Tạo mới một Resource
PUT (UPDATE): Cập nhật thông tin cho Resource
DELETE (DELETE): Xoá một Resource
Những phương thức hay hoạt động này thường được gọi là CRUD tương ứng với Create, Read, Update, Delete – Tạo, Đọc, Sửa, Xóa
2.4 ExpressJS framework
2.4.1 Khái niệm NodeJS
Nodejs là một nền tảng (Platform) phát triển độc lập được xây dựng
ở trên Javascript Runtime của Chrome mà chúng ta có thể xây dựngđược các ứng dụng mạng một cách nhanh chóng và dễ dàng mở rộng
Nodejs tạo ra được các ứng dụng có tốc độ xử lý nhanh, realtime thờigian thực
Nodejs áp dụng cho các sản phẩm có lượng truy cập lớn, cần mởrộng nhanh, cần đổi mới công nghệ, hoặc tạo ra các dự án Startupnhanh nhất có thể
Trang 15 Define router cho phép sử dụng với các hành động khác nhau dựatrên phương thức HTTP và URL.
Cho phép trả về các trang HTML dựa vào các tham số
2.5 Cơ sở dữ liệu MongoDB
2.5.1 NoSQL
NoSQL là 1 dạng CSDL mã nguồn mở không sử dụng Transact-SQL đểtruy vấn thông tin NoSQL viết tắt bởi: None-Relational SQL, hay có nơithường gọi là Not-Only SQL CSDL này được phát triển trên JavascriptFramework với kiểu dữ liệu JSON (Cú pháp của JSON là “key:value”)NoSQL ra đời như là 1 mảnh vá cho những khuyết điểm và thiếu xót cũngnhư hạn chế của mô hình dữ liệu quan hệ RDBMS về tốc độ, tính năng,khả năng mở rộng, memory cache,
2.5.2 MongoDB
MongoDB là một chương trình cơ sở dữ liệu mã nguồn mở và là một cơ sở
dữ liệu NoSQL được thiết kế theo kiểu hướng đối tượng trong đó các bảngđược cấu trúc một cách linh hoạt cho phép các dữ liệu lưu trên bảng khôngcần phải tuân theo một dạng cấu trúc nhất định nào Chính do cấu trúc linhhoạt này nên MongoDB có thể được dùng để lưu trữ các dữ liệu có cấutrúc phức tạp và đa dạng và không cố định
Lợi thế của MongoDB so với các cơ sở dữ liệu dạng quan hệ (RDBMS):
Ít Schema hơn: MongoDB là một cơ sở dữ liệu dựa trên Document,trong đó một Collection giữ các Document khác nhau Số trường,nội dung và kích cỡ của Document này có thể khác với Documentkhác
Cấu trúc của một đối tượng là rõ ràng
Không có các Join phức tạp
Khả năng truy vấn sâu hơn MongoDB hỗ trợ các truy vấn độngtrên các Document bởi sử dụng một ngôn ngữ truy vấn dựa trênDocument mà mạnh mẽ như SQL
Retrofit là một thư viện Java giúp phân tích cú pháp phản hồi API dễ dàng
và được xử lý tốt hơn để sử dụng trong ứng dụng
Retrofit là một type-safe HTTP client cho Java và Android được phát triểnbởi Square Retrofit giúp dễ dàng kết nối đến một dịch vụ REST trên web bằng cách chyển đổi API thành Java Interface
Trang 16Chương 3 PHÂN TÍCH THIẾT KẾ HỆ THỐNG
3.1 Mô hình hóa yêu cầu
3.1.1 Xác định các tác nhân (actors)
User
3.1.2 Xác định các trường hợp sử dụng (use case)
Tạo tài khoản
3.1.3 Đặc tả ca sử dụng (use case descriptions)
a Ca sử dụng Tạo tài khoản
- Các tác nhân: User
- Điều kiện trước: User đã truy cập ứng dụng
- Điều kiện sau: Tài khoản được tạo thành công
- Mô tả: Sau khi truy cập vào ứng dụng và nhấn nút đăng ký, User cung cấpcác thông tin cần thiết và nhấn đăng ký Nếu thành công thông tin sẽ đượclưu vào database và tài khoản được tạo
Luồng sự kiện chính
Hành động của tác nhân Hành động của hệ thống
1 Chọn chức năng đăng ký
2 Điền thông tin tài khoản
3 Gửi các thông tin đã nhập đến hệ
thống
4 Kiểm tra các thông tin nhập vào
5 Lưu thông tin tài khoản vào database
6 Phản hồi trạng thái đăng ký thành công
Luồng sự kiện phụ
Hành động của tác nhân Hành động của hệ thống
3 Nhập các thông tin không chính xác
5 Hiển thị lỗi và yêu cầu thực hiện lại
b Ca sử dụng Đăng nhập
Trang 17- Các tác nhân: User
- Điều kiện trước: User đã truy cập vào ứng dụng
- Điều kiện sau: User đăng nhập vào ứng dụng
- Mô tả: Sau khi truy cập vào ứng dụng, User nhập thông tin đăng nhập vànhấn đăng nhập Thông tin sẽ được kiểm tra với dữ liệu trong DB, nếuđúng User sẽ được đăng nhập vào ứng dụng
Luồng sự kiện chính
Hành động của tác nhân Hành động của hệ thống
1 Điền thông tin đăng nhập
2 Gửi thông tin đăng nhập đến hệ
4 Kiểm tra thông tin đăng nhập
6 Phản hồi trạng thái đăng nhập thànhcông
Luồng sự kiện phụ
Hành động của tác nhân Hành động của hệ thống
3 Nhập các thông tin không chính xác
6 Hiển thị lỗi và yêu cầu thực hiện lại
c Ca sử dụng Thêm phòng
- Các tác nhân: User
- Điều kiện trước: User đã đăng nhập vào ứng dụng
- Điều kiện sau: Phòng đã được thêm vào DB và hiển thị lên ứng dụng
- Mô tả: Sau khi đăng nhập vào ứng dụng, user nhấn thêm phòng, điềnthông tin và tạo ra một phòng mới
4 Kiểm tra các thông tin nhập vào
5 Lưu thông tin vào database
6 Phản hồi trạng thái thành công
7 Hiển thị phòng vừa thêm lên ứng dụng
Luồng sự kiện phụ