i
LỜI CAM ĐOAN
Tôi cam đoan đây là công trình nghiên cứu riêng của tôi.
Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được ai
công bố trong bất kỳ công trình nào khác.
Học viên
Nguyễn Duy Thành
ii
LỜI CẢM ƠN
Trước tiên, tôi xin gửi lời cảm ơn sâu sắc nhất đến thầy giáo PGS. TS. Hà
Hải Nam - Phó viện trưởng Viện Khoa học Kỹ thuật Bưu điện. Người đã tận tình
hướng dẫn chỉ bảo tôi trong suốt quá trình thực hiện khóa luận. Tôi cũng đồng thời
cảm ơn các thầy cô Khoa Công nghệ Thông tin I – Học viện Công nghệ Bưu chính
Viễn thông đã truyền đạt những kiến thức bổ ích. Tôi cũng xin cảm ơn các thầy cô
Khoa Đào tạo Sau Đại học đã giúp đỡ trong quá trình tôi làm luận văn.
Tôi xin chân thành cảm ơn gia đình tôi đã giúp đỡ để tôi có thời gian hoàn
thành khóa luận. Cuối cùng, tôi xin chân thành cảm ơn các anh chị, bạn bè và các
bạn sinh viên đã giúp đỡ tôi trong quá trình thu thập và xử lý dữ liệu.
Hà Nội, ngày 09 tháng 11 năm 2017
Học viên
Nguyễn Duy Thành
iii
2.3 Một số vấn đề và giải pháp trong hiện thực hóa kiến trúc hệ thống IoT .. 27
2.4 Kết luận ..................................................................................................... 32
CHƯƠNG 3: THỬ NGHIỆM HỆ THỐNG NỀN CHO BÀI TOÁN GIÁM SÁT
MÔI TRƯỜNG TRỒNG TRỌT NÔNG NGHIỆP ................................................. 33
3.1 Mô tả bài toán tử nghiệm ............................................................................... 33
3.2 Thiết kế giải pháp hiện thực hóa hệ thống nền IoT trên nền tảng ảo hóa . 35
3.2.1 Eclipse Mostquitto ................................................................................. 37
3.2.2 Apache Kafka ........................................................................................ 39
3.2.3 Apache Spark ........................................................................................ 44
3.3 Cài đặt, cấu hình tùy biến các thành phần của hệ thống nền IoT .............. 46
iv
3.3.1 Cài đặt Mosquitto Server ....................................................................... 46
3.3.2 Cài đặt Kafka Server ............................................................................. 49
3.3.3 Cài đặt Spark ......................................................................................... 52
3.4 Kết luận ..................................................................................................... 55
KẾT LUẬN .............................................................................................................. 56
DANH MỤC TÀI LIỆU THAM KHẢO ................................................................. 57
v
DANH MỤC CÁC TỪ VIẾT TẮT
Viết tắt
Tiếng Anh
Tiếng Việt
Kiểm soát truy cập dựa vào vai
trò
SDK
Software development kit
Bộ phát triển phần mềm
MQTT
Message Queuing Telemetry
Truyền thông điệp hàng đợi từ
Transport
xa
SSO
Single sign-on
Đăng nhập một lần
MQTT
Message Queuing Telemetry
Transport
Hình 1.4 Platform của Kaa....................................................................................... 10
Hình 1.5 Platform của OpenIoT............................................................................... 12
Hình 1.6 Platform của Nimbits ................................................................................ 14
Hình 1.7 Platform của Eclipse Smart Home ............................................................ 15
Hình 1.8 Platform của OpenRemote ........................................................................ 17
Hình 1.9 Platform của FIWARE .............................................................................. 19
Hình 2.1 Kiến trúc tham chiếu IoT với hạ tầng dịch vụ IoT.................................... 26
Hình 2.2 Mô hình giải pháp cho thu thập và xử lý dữ liệu tin cậy. ......................... 28
Hình 2.3 Mô hình hoạt động hệ thống DMS. .......................................................... 28
Hình 2.4 Kiến trúc hệ thống RBPS. ......................................................................... 29
Hình 2.5 Mô hình triển khai DCS với DMS ............................................................ 30
Hình 3.1 Mô hình tổng quan hệ thống thử nghiệm .................................................. 35
Hình 3.2 Mô hình triển khai hệ thống nền IoT ........................................................ 36
Hình 3.3 Mô hình Publish/Subcribe trong giao thức MQTT ................................... 38
Hình 3.4 Mô hình kết nối của MQTT sử dụng Bridge ........................................... 39
Hình 3.5 Mô hình đọc/ghi dữ liệu vào một topic của Kafka ................................... 41
Hình 3.6 Mô hình Partition trong Kafka .................................................................. 42
Hình 3.7 Mô hình Apache Kafka kết nối tới nguồn là MQTT server...................... 43
Hình 3.8 Thành phần của Apache Spark ................................................................. 44
Hình 3.9 Mô hình tổng quan của Spark Streaming .................................................. 45
Hình 3.10 Mô hình xử lý luồng dữ liệu của Spark Streaming ................................. 45
Hình 3.11 Mô hình của một Dstream....................................................................... 46
Hình 3.12 Cách xử lí dữ liệu trên Dstream .............................................................. 46
1
MỞ ĐẦU
Lý do chọn đề tài:
Hệ thống nền IoT (IoT Platform) là một thành phần cốt lõi trong kiến trúc
IoT – Internet of Things là một cụm từ thường xuyên bắt gặp trong cuộc
sống hiện nay và được các chuyên gia đánh giá là nó sẽ bùng nổ trong thời gian tới
đây với sự gia tăng về số lượng thiết bị cũng như các ứng dụng IoT áp dụng cho đời
sống hàng ngày. Vì vậy chúng ta có thể thấy rằng IoT chính là một xu thế của công
nghệ trong cuộc sống hiện đại.
Những ý tưởng ban đầu về Internet of Things (IoT) đã xuất hiện ngay từ thời
kỳ sơ khai của Internet, khi các nhà phát minh mong muốn kết nối tất cả mọi thứ
qua một mạng lưới đồng nhất để có thể điều khiển chúng để phục vụ cho mục đích
của con người. Trong các tư liệu về IoT, người ta thường nhắc đến một chiếc máy
bán nước giải khát tự động tại trường Đại học Carnegie Melon (Mỹ) vào đầu những
năm 1980 như là một thiết bị đầu tiên mở màn cho xu hướng này. Chiếc máy được
lập trình để có thể kết nối với người điều khiển qua Internet, nhằm kiểm tra tình
trạng của máy và bổ sung nước khi cần thiết mà không cần có sự tiếp xúc kiểm tra
trực tiếp. IoT là thuật ngữ dùng để chỉ các đối tượng có thể được nhận biết cũng
như chỉ sự tồn tại của chúng trong một kiến trúc mang tính kết nối. Cụm từ này
được đưa ra bởi Kevin Ashton vào năm 1999. Ông là một nhà khoa học sáng lập ra
trung tâm Auto-ID ở Đại học MIT, nơi thiết lập các quy chuẩn toàn cầu cho RFID
(phương thức giao tiếp không dây dùng sóng radio) cũng như một số loại cảm biến
khác. IoT sau đó cũng được dùng nhiều trong các ấn phẩm đến từ các hãng và nhà
phân tích.
3
Hình 1.1 Các thiết bị được kết nối Internet và sự phát triển trong tương lai
Hầu hết các tài liệu nghiên cứu đều xem IoT bao gồm các đối tượng thông
minh được liên kết truyền thông với nhau. Khuyến nghị ITU-T Y.2060 mở rộng
khái niệm này, bao gồm các thứ ảo. ITU Y.2060 đặc tả IoT bằng cách bổ sung thêm
chiều “truyền thông với bất kỳ thứ nào” vào các công nghệ thông tin và truyền
đến việc truyền tải dịch vụ IoT và thông tin cụ thể ứng dụng cũng như thông tin
quản lý và điều khiển liên quan đến IoT. Về cơ bản, các khả năng này tương ứng
với các khả năng của mạng OSI và các lớp truyền tải.
-
Lớp hỗ trợ dịch vụ và ứng dụng: cung cấp các khả năng mà ứng dụng sử dụng.
Rất nhiều các ứng dụng khác nhau có thể sử dụng các khả năng hỗ trợ tổng quát.
Các ví dụ bao gồm các khả năng xử lý dữ liệu phổ biến và các khả năng quản lý
cơ sở dữ liệu. Các khả năng hỗ trợ cụ thể là các khả năng phục vụ cho các yêu
cầu của một tập con các ứng dụng IoT cụ thể.
-
Lớp ứng dụng: Bao gồm tất cả các ứng dụng tương tác với các thiết bị IoT
-
Lớp các khả năng quản lý: Bao gồm các chức năng quản lý định hướng truyền
thống như lỗi, cấu hình, tính toán và quản lý chất lượng.
Lớp các khả năng bảo mật bao gồm các khả năng bảo mật tổng quát độc lập
với các ứng dụng. ITU-T Y.2060 đưa ra các ví dụ sau đây về khả năng bảo mật tổng
quát:
-
Lớp ứng dụng: Cấp phép, xác thực, bảo vệ toàn vẹn và tin cậy dữ liệu ứng dụng bảo
vệ tính riêng tư, kiểm toán bảo mật và chống lại virus.
-
khác bắt đầu đưa ra quá nhiều thông tin.
1.2 Nghiên cứu tổng quan về yêu cầu đối với hệ thống nền IoT
Đối với IoT Platform người ta quan tâm đến độ tin cậy nhiều hơn chứ không
phải là sự đổi mới, đó là sự tiêu chí khi phát triển phần cứng và phần mềm đối với
hệ thống nền IoT. Sự khác biệt đó là các dịch vụ điều khiển từ xa, các màn hình
thông minh và các tương tác M2M (Machine to machine) là trọng tâm của giải pháp
IoT. Bằng sự tập trung vào những vấn đề đó, các doanh nghiệp có thể xây dựng
được các hệ thống IoT của họ được nhanh hơn, hiệu quả hơn và chi phí ít hơn cho
nghiên cứu và các nguồn đầu tư.
Nhưng để đạt được điều đó, nền tảng này phải được đưa vào trong nhiều mặt
trận. Các chỉ số của một nền tảng IoT công nghiệp chủ yếu được xác định bởi mức
độ linh hoạt, số lượng các chức năng, tính ổn định và sự an toàn trong nó. Các thành
phần thiết yếu của một nền tảng IoT bao gồm như sau:
1.2.1 Quản lý thiết bị
Các thiết bị không phải lúc nào cũng hoạt động trong một tình trạng ổn định.
Chúng cần được liên tục quản lý, cấu hình lại, cập nhật cũng như điểu khiển cài đặt.
Các thiết bị Edge đóng vai trò như là một thành phần biên dịch và cổng dữ liệu giữa
các mạng, và nó tạo ra khá nhiều vấn đề khi vận hành và chúng cần được sửa chữa
theo cách thủ công. Vì vậy điều khiển truy cập từ xa thông qua nền tảng IoT là rất
cần thiết cho yêu cầu đối với một hệ thống IoT.
7
Kiến trúc quản lý thiết bị phải có 2 chiều (chiều nhận thông tin từ các thiết bị
IoT và gửi các thông điệp điều khiển đến các thiết bị) và linh hoạt để cho phép tất
cả các thành phần trong mạng được kết nối với nhau, giám sát và có khả năng giao
tiếp. Trong trường hợp bị lỗi thời, hư hỏng hoặc vi phạm an ninh thì hệ thống quản
lý của platform có thể loại bỏ hoặc đưa thiết bị đó vào danh sách cần phải xem xét.
với rất nhiều những dòng thông tin và không biết phải xử lý chúng như thế nào để
đưa ra giải pháp cho từng vấn đề. Vì vậy việc phân tích dữ liệu, chuẩn đoán, ảo hóa
dữ liệu bằng những biểu đồ trên các Dashboard là yêu cầu cần thiết đối với hệ thống
nền IoT. Mục tiêu là để nâng cao khả năng chuẩn đoán của hệ thống, tinh lọc các
chức năng và giải quyết vấn đề, đồng thời có khả năng đáp ứng thời gian thực với
các tình huống khẩn cấp.
Không phải tất cả các dữ liệu nhận được từ các thiết bị đều cần được xử lý
theo thời gian thực. Một giải pháp IoT cần phải tạo ra được sự tách biệt rõ ràng giữa
những luồng dữ liệu nào cần được xử lý thời gian thực và luồng dữ liệu nào sẽ được
xử lý và có giá trị trong thời gian dài sau đó. Việc tách biệt này giúp làm rõ ra
những loại dữ liệu với những mục đích riêng, từ đó giúp tối ưu được khả năng xử lý
dữ liệu của hệ thống IoT.
1.2.4 Tính sẵn sàng, khả năng mở rộng, và độ tin cậy
Đó là những vấn đề luôn được đặt ra với bất kỳ giải pháp công nghệ nào.
Thông qua việc thiếu tầm nhìn và không xem xét các kịch bản có thể xảy ra đối với
hệ thống. Hệ thống nền phải được thiết kế theo cách tăng cường khả năng thích
ứng, độ linh hoạt và linh động của môi trường công nghệ nhằm cung cấp khả năng
tái cấu hình và tái sắp xếp để thích ứng những thay đổi trong các mục tiêu và
phương hướng nghiệp vụ một cách hiệu quả về chi phí và kịp thời.
Các công nghệ được triển khai cần được rà soát cẩn thận nhằm xác định các
yếu tố có thể ảnh hưởng đến khả năng thích ứng, tính sẵn sàng, khả năng mở rộng
và độ tin cậy của chúng. Các công nghệ và giải pháp về phân tán và mở rộng luôn
sẵn sàng về các khía cạnh sau:
-
Lưu trữ dữ liệu
-
Năng lực tính toán
kiểm soát các thiết bị được triển khai trên sàn của mình.
10
1.3 Nghiên cứu, khảo sát, đánh giá các hệ thống nền IoT trên thị trường
1.3.1 Kaa
Kaa là platform IoT để xây dựng các giải pháp IoT toàn diện, các ứng dụng
được kết nối và các sản phẩm thông minh. Platform Kaa cung cấp một công cụ giàu
tính mã nguồn mở để phát triểu sản phẩm IoT, do đó giảm chi phí, rủi ro và thời
gian đưa ra thị trường.
Hình 1.4 Platform của Kaa
Kaa cho phép quản lý dữ liệu cho các đối tượng được kết nối và hạ tầng
back-end bằng cách cung cấp server và các phần từ SDK đầu cuối. Các SDK được
nhúng vào thiết bị được kết nối và thực hiện trao đổi dữ liệu song hướng với server.
Các SDK của Kaa có khả năng tích hợp với hầu hết các kiểu thiết bị hoặc microchip
được kết nối.
11
Kaa server cung cấp tất cả các chứng năng back-end cần thiết để hoạt động
trên quy mô rộng và trong các giải pháp IoT quan trọng. Nó điều khiển tất cả các
truyền thông giữa các đối tượng được kết nối, bao gồm tính nhất quán và bảo mật
dữ liệu, liên kết hoạt động của thiết bị và kết nối không bị thất bại.
Kaa server có tính năng gồm các giao diện được thiết lập tốt cho việc tích
hợp với quản lý dữ liệu và các hệ thống phân tích, cũng như các dịch vụ sản phẩm
cụ thể. Nó đóng vai trò là nền tảng cho hệ thống back-end, do đó cho phép tự do mở
Platform OpenIoT bao gồm các tính năng duy nhất như khả năng soạn các
dịch dụ IoT cơ bản và quan trọng trên nền ứng dụng hoặc đám mây. OpenIoT là nỗ
lực liên kết của cộng đồng mã nguồn mở hướng tới cho phép phát triển các ứng
dụng IoT thông minh trên quy mô rộng mở theo mô hình phân tán của điện toán
đám mây. Hạ tầng OpenIoT cung cấp các phương thức để:
-
Thu thập các xử lý dữ liệu từ hầu hết các cảm biến, bao gồm các thiết bị vật
lý, các thuật toán xử lý cảm biến, các thuật toán xử lý phương tiện xã hội.
-
Truyền tải dòng dữ liệu từ các cảm biến khác nhau với hạ tầng điện toán
đám mây.
13
-
Khám phá/truy vấn động các cảm biến và dữ liệu của chúng.
-
Soạn và phân phát các dịch vụ IoT bao gồm dữ liệu từ nhiều cảm biến.
-
Ảo hoá dữ liệu IoT dựa trên các mashup phù hợp (các biểu đồ, đồ thị, bản
Hình 1.6 Platform của Nimbits
Các đặc tính chính của Nimbits platform gồm.
-
Tải các Nimbits server on chips, các server trên đám mây.
-
Là một platform mã nguồn mở.
-
Làm thuận tiện việc khởi sự sự kiện và các cảnh báo.
-
Xử lý dữ liệu được gắn nhãn không gian và thời gian.
-
Được xây dựng cung cấp cho Google App Engine và các hệ thống Linux để
phát triển.
-
Tương thích hầu hết các J2EE server
1.3.4 Eclipse IoT smart home
1.3.5 OpenRemote (HIT)
OpenRemote là một platform tích hợp phần mềm mã nguồn mở cho tự động
hoá toà nhà thương mại và dân cư. Platform OpenRemote không thể nhận biết giao
thức tự động, hoạt động trên phần cứng có sẵn và khả dụng miễn phí dưới giấy phép
mã nguồn mở. Kiến trúc của OpenRemote cho phép tự trị đầy đủ và các toà nhà
thông minh độc lập với người sử dụng. Các giao diện điều khiển người sử dụng đầu
cuối khả dụng cho các thiết bị iOS và Android, và cho các thiết bị có các trình duyệt
web hiện đại. Việc thiết kế giao diện người sử dụng, quản lý tích hợp và cấu hình có
thể điều khiển từ xa bởi các công cụ thiết kế dựa trên đám mây OpenRemote.
-
Tích hợp: AMX, KNX, Lutron, Z-Wave, 1-Wire, EnOcean, xPL, Insteaon, X10,
hồng ngoại, Russound, GlobalCache, IRTrans, XBMC, VLC, paStamps, Denon
AVR, FreeBox, MythTV…
-
Thiết kế: Tuỳ biến các giao diện điều khiển cho mỗi thiết bị, cá nhân hoá các
giao diện người sử dụng cho mỗi người sử dụng.
-
Điều khiển: Điều khiển các panel cho các thiết bị Android và iOS, các trình
duyệt web di động, cá máy tính để bàn.
-
Tự động hoá: Các toà nhà thông minh với các quy tắc, các script và các sự kiện
được tự động hoá.
-
Các công cụ thiết kế dựa trên đám mây.
Sử dụng các công cụ thiết kế dựa trên đám mây của OpenRemote để phát
triển các giải pháp tuỳ biến toàn diện, nâng cấp được thực hiện hợp lý.
1.3.6 FIWARE
FIWARE là một platform mã nguồn mở, cung cấp tập các công cụ cho các
chức năng khác nhau, là một hệ thống tiên tiến để tạo ra các ứng dụng mới và các
dịch vụ Internet.
18
Platform cung cấp các khả năng đám mây dựa trên OpenStack và tập các
công cụ và các thư viện được gọi là Generic Enablers (Ges) với các đặc tả và giao
diện công cộng và nguồn mở. Các FIWARE GE được phân phối ở các chương khác
nhau và cung cấp các khả năng khác nhau. Ví dụ, chương Internet of Things cung
cấp các công cụ để kết nối cảm biến và các thiết bị khác, trong khi chương các ứng
dụng cung cấp các công cụ thông minh thương mại mạnh và để phát triển các giao
diện, chương các giao diện tiên tiến cho phép thực hiện các chức năng liên quan đến
thực tế ảo, thực tế gia tăng hoặc 3D.
FIWARE Lab là môi trường thí nghiệm nơi mà các nhà cung cấp công nghệ,
các nhà phát triển giải pháp và các nhà đầu tư và các nhà cung cấp dữ liệu có thể
mô tả các vấn đề, thiết kế và xây dựng các giải pháp trên platform và thí nghiệm
với chúng.
Khả năng cơ bản khác của kiến trúc FIWARE là quản lý ngữ cảnh. FIWARE
cung cấp cơ chế để tạo ra, thu thập, xuất bản hoặc truy vấn thông tin ngữ cảnh rộng
và sử dụng nó cho các ứng dụng để phản ứng tới ngữ cảnh của chúng. Đây là một