1
MỞ ĐẦU
1
CHƯƠNG 1: GIỚI THIỆU VẤN ĐỀ NGHIÊN CỨU
1.1. Giới thiệu hệ thống nền IoT
Hệ thống nền IoT (IoT Platform) là một thành phần cốt lõi
1.1.1. Giới thiệu về IoT
trong kiến trúc tổng thể IoT. Hệ thống nền IoT cung cấp các công cụ
Khái niệm IoT:
phát triển các sản phẩm, ứng dụng IoT một cách thuận tiện và nhanh
Những ý tưởng ban đầu về Internet of Things (IoT) đã xuất
chóng. Hệ thống nền IoT đóng vai trò kết nối các thiết bị, cảm biến,
hiện ngay từ thời kỳ sơ khai của Internet, khi các nhà phát minh
IoT gateway và cho phép chúng trao đổi dữ liệu với nhau một cách
mong muốn kết nối tất cả mọi thứ qua một mạng lưới đồng nhất để
an toàn theo thời gian thực; quản lý số lượng lớn các thiết bị kết nối;
có thể điều khiển chúng để phục vụ cho mục đích của con người.
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 dung nghiên cứu và bố cục của đề tài:
- Phần Mở Đầu
nối. Cụm từ này được đưa ra bởi Kevin Ashton vào năm 1999
Như vậy có thể hiểu Internet of Things là tất cả mọi thứ được
- Chương 1: Giới thiệu vấn đề nghiên cứu
kết nối với nhau qua mạng Internet, người dùng có thể kiểm soát mọi
- Chương 2: Thiết kế hệ thống nền IoT
đồ vật của mình qua mạng mà chỉ bằng một chiếc smartwatch nhỏ bé
- Chương 3: Thử nghiệm hệ thống nền cho bài toán giám
trên tay. Gần đây, Internet of Things còn bao gồm cả những giao tiếp
sát môi trường trồng trọt nông nghiệp.
- Kết luận
kiểu máy với máy (M2M), giúp hạn chế sự tác động của con người
trong sản xuất năng lượng hay các ngành công nghiệp nặng. Viễn
cảnh này đã dần trở thành hiện thực trên thực tế, với sự phát triển của
nhà thông minh, TV thông minh, tủ lạnh thông minh,… và cũng
không thể kể tới sự mở rộng không gian địa chỉ từ IPv4 lên IPv6 như
hiện nay.
qua các lớp. Như ở trên chúng ta đã mô tả lớp thiết bị. Theo thuật
và linh hoạt để cho phép tất cả các thành phần trong mạng được kết
ngữ chức năng truyền thông, lớp thiết bị bao gồm các lớp vật lý và
nối với nhau, giám sát và có khả năng giao tiếp. Trong trường hợp bị
liên kết dữ liệu OSI
lỗi thời, hư hỏng hoặc vi phạm an ninh thì hệ thống quản lý của
- Lớp mạng
platform có thể loại bỏ hoặc đưa thiết bị đó vào danh sách cần phải
- Lớp hỗ trợ dịch vụ và ứng dụng
xem xét.
- Lớp ứng dụng
1.2.2. Khả năng kết nối hai chiều linh hoạt
- Lớp các khả năng quản lý:
Kết nối hai chiều giúp kiểm soát tốt hơn các sản phẩm, phân
1.1.2. Giới thiệu hệ thống nền IoT
các kết nối đó được đặt lên hàng đầu. Các IoT Gateway và các thiết
cập nhật các trạng thái, cấu hình, cập nhật phần mềm.
bị Edge cần phải tinh vi và linh hoạt, đủ để thích ứng với các phương
1.2.3. Phân tích dữ liệu
pháp bảo mật mới. Lớp thiết bị nên hỗ trợ mức cao của mã hóa để
Dữ liệu sau khi được thu thập từ các thiết bị IoT, thì chúng cần
gửi cũng như nhận thông điệp. Hệ thống nền cần phải cung cấp các
được phân tích cũng như sàng lọc để đem lại những thứ giá trị cao
phương thức xác thực khi kết nối với các Gateway cũng như các thiết
trong việc quản lý cũng như giải quyết các vấn đề cấp bách cho các
bị khác. Có thể sử dụng các cơ chế đã được kiểm chứng như
thành phần trong hệ thống IoT. Một nền tảng IoT cần cung cấp đầy
TLS/SSL để mã hóa các thông tin trong truyền thông tin.
đủ các phương tiện phân tích, từ đó đưa ra các giá trị. Mục tiêu là để
Mỗi người dùng tham gia giải pháp IoT phải được chứng thực
1.3.1. Kaa
1.2.4. Tính sẵn sàng, khả năng mở rộng và độ tin cậy
Kaa cho phép quản lý dữ liệu cho các đối tượng được kết nối
Đó là những vấn đề luôn được đặt ra với bất kỳ giải pháp công
và hạ tầng back-end bằng cách cung cấp server và các phần từ SDK
nghệ nào. Hệ thống nền phải được thiết kế theo cách tăng cường khả
đầu cuối. Các SDK được nhúng vào thiết bị được kết nối và thực hiện
năng thích ứng, độ linh hoạt và linh động của môi trường công nghệ
trao đổi dữ liệu song hướng với server. Các SDK của Kaa có khả
nhằm cung cấp khả năng tái cấu hình và tái sắp xếp để thích ứng
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
những thay đổi trong các mục tiêu và phương hướng nghiệp vụ một
nối
cách hiệu quả về chi phí và kịp thời.
Các công nghệ và giải pháp về phân tán và mở rộng luôn sẵn
Kaa server cung cấp tất cả các chức năng back-end cần thiết để
- Tải các Nimbits server on chips, các server trên đám mây.
OpenIoT khả dụng như một Kit phát triển ảo, cung cấp giải
- Là một platform mã nguồn mở.
pháp đám mây toàn diện cho IoT, cho phép người sử dụng dễ dàng
- Làm thuận tiện việc khởi sự sự kiện và các cảnh báo.
kích hoạt, vận hành và nhận thông tin từ các đám mây cảm biến và
- Xử lý dữ liệu được gắn nhãn không gian và thời gian.
kết nối thông tin này với các dịch vụ Web mà không cần quan tâm
- Được xây dựng cung cấp cho Google App Engine và các hệ
đến các loại cảm biến khác nhau được sử dụng.
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.
thống Linux để phát triển.
- Tương thích hầu hết các J2EE server
1.3.4 Eclipse IoT
Nimbits là một platform mã nguồn mở được xây dựng dựa trên
nhúng, có thể chạy JVM như Raspberry Pi.
kiến trúc điện toán đám mây PaaS, có thể tài về từ Raspberry Pi, Web
Eclipse Smart Home là một framework để xây dựng các giải
server, Amazone EC2, hoặc Google App Engine. Platform được sử
pháp thông minh với việc tích hợp các giao thức hoặc các tiêu chuẩn
dụng để phát triển các giải pháp phần cứng và phần mềm có thể kết
khác nhau. ESH được sử dụng như là cơ sở của openHAB và
nối tới đám mây hoặc tới nhau và cho phép logging và nhận được
QIVICON bởi Deutsche Telecom.
8
9
ESH là một platform mã nguồn mở với hơn 2000 công cụ, ứng
- Sự thực hiện cụ thể API được thực hiện bởi Bộ cho phép
- Mỗi yêu cầu của HTTP trong một FIWARE RESTful API có
thể yêu cầu bao gồm các uỷ nhiệm xác thực cụ thể.
- Việc biể diễn tài nguyên được phát giữa client và server bằng
cách sử dụng giao thức HTTP 1.1, được định nghĩa bởi IETF RFC2616.
- Các FIWARE RESTful API có thể hỗ trợ XML hoặc JSON
như là định dạng biểu diễn cho các tham số yêu cầu và đáp ứng.
10
CHƯƠNG 2: THIẾT KẾ HỆ THỐNG NỀN IoT
11
cùng nhau một cách hiệu quả và có khả năng mở rộng thông qua hỗ
trợ cơ chế tích hợp ứng dụng.
2.1. Yêu cầu kiến trúc đối với hệ thống nền IoT:
Các dịch vụ bảo mật: Thành phần này cung cấp các giải pháp
a. Yêu cầu về tích hợp ứng dụng IoT
nhận diện và bảo mật đối với việc chứng thực, cấp phép và quản lý
b. Yêu cầu về các dịch vụ kết nối dữ liệu
an toàn các ứng dụng và quy trình nghiệp vụ.
c. Yêu cầu về tích hợp dữ liệu IoT
Các dịch vụ chung: Các dịch vụ này là các dịch vụ tiện ích
thường được sử dụng trong chung cho các ứng dụng IoT
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
Thực tế khi hiện thực hóa hạ tầng dịch vụ IoT trong kiến trúc
đề xuất cho thấy một số khó khăn cơ bản: 1) đảm bảo thu thập dữ liệu
đồng thời từ số lượng lớn các thiết bị IoT một cách tin cậy; 2) xử lý
dữ liệu lớn cho bài toán đòi hỏi xử lý luồng dữ liệu chuỗi thời gian
theo thời gian thực; 3) cơ chế phát hiện lỗi và hồi phục đối với các
thành phần thu thập và xử lý dữ liệu IoT.
Hệ thống truyền thông điệp phân tán (Distributed Messaging
System - DMS) được thiết kế như là một hệ thống phân tán nhằm
đảm bảo khả năng mở rộng hoạt động với thông lượng lớn theo mô
hình publish/subscribe. Một giao thức phổ biến trong ứng dụng IoT
hoạt động theo mô hình publish/subscribe là MQTT. Hệ thống hỗ trợ
nhiều thành phần đăng kỹ và tự động cân bằng tải khi xay ra lỗi.
Trong hệ thống DMS, một luồng các thông điệp cùng loại được định
nghĩa là một chủ đề (topic) ở đó các thông điệp được xuất bản đến.
Một Publisher là một thực thể thực hiện xuất bản thông điệp đến một
chủ đề nào đó. Một Consumer có thể đăng ký một hoặc nhiều chủ đề
và sử dụng các thông điệp được xuất bản bằng cách lấy dữ liệu từ
12
13
phân cụm DMS. Một phân cụm DMS bao gồm nhiều thể hiện DMS
chạy song song.
Trong mô hình mô hình triển khai DCS với DMS này các
Producer và Consumer được hệ thống DCS gửi thông báo về sự xuất
Hệ thống xử lý dữ liệu lớn thời gian thực (Realtime Bigdata
hiện của một thể hiện DMS hoặc về sự cố gây lỗi của một thể hiện
Processing System– RBPS) thực hiện xử lý tức thời luồng dữ liệu lớn
DCS. Khi nhận được các thông báo từ hệ thống DCS, các Producer
từ các thiết bị IoT được thu nhận qua hệ thống DMS. Đối với ứng
và Consumer ra quyết định bắt đầu điều phối hoạt động đến một thể
dụng IoT, dữ liệu hướng luồng là một nhóm liên tục các bản ghi dữ
hiện DMS khác.
liệu được tạo từ các thiết bị IoT. Xử lý dữ liệu hướng luồng theo thời
Chương này trình bày về một hướng tiếp cận trong xây dựng
gian thực đóng vai trò quan trọng trong các ứng dụng như bản tin
và hiện thức hóa kiến trúc hệ thống IoT. Một số vấn đề và giải pháp
trực tiếp, hệ thống tư vấn thời gian thực hoặc các hệ thống chẩn đoán
trong hiện thực hóa kiến trúc IoT như vấn đề thu thập dữ liệu lớn và
14
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
15
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
Phần này chúng ta sẽ thiết kế giải pháp triển khai cụ của hệ
thống nền IoT, như đã trình bày ở trên hệ thống nền chúng ta sẽ xây
3.1. Mô tả bài toán thử nghiệm
Luận văn thử nghiệm kịch bản giám sát môi trường sinh
trưởng của cây trồng từ xa với 3 tham số giám sát cơ bản: nhiệt độ,
dựng sẽ có những thành phần sau:
- Sử dụng giao thức MQTT để giao tiếp với các thiết bị IoT
hoặc các IoT Gateway.
độ ẩm đất và ánh sáng. Đây là 3 tham số cơ bản ảnh hưởng đến quá
- Hệ thống truyền thông điệp phân tán.
trình sinh trưởng của cây trồng cả trong môi trường nuôi cấy mô
- Hệ thống điều phối phân tán.
trong nhà lẫn môi trường ngoài trời. Mục đích của thử nghiệm kịch
kí” theo dõi cho phép việc lấy thông điệp ra gần như tức thời ngay
16
17
khi dữ liệu đi vào hàng đợi. Kafka được thiết kế hỗ trợ tốt cho việc
nhiệm vụ đẩy dữ liệu vào một hoặc nhiều topic. Người dùng có thể
thu thập dữ liệu thời gian thực.
quyết định liệu những thông điệp (mỗi dòng của dữ liệu) nào sẽ cùng
Apache Kafka là hệ thống lưu trữ thông điệp được phát triển
tại LinkedIn. Kafka có những đặc điểm sau đây :
- Tốc độ nhanh
- Khả năng mở rộng
thuộc vào một partition thông qua một chuỗi khóa đính kèm với
thông điệp. Nếu không producer sẽ gán một khóa ngẫu nhiên và
quyết định đích đến của thông điệp dựa trên giá trị băm của khóa.
Consumer: sẽ đọc dữ liệu từ broker. Kafka là hệ thống sử
- Độ tin cậy
dụng mô hình truyền thông public-subscribe nên mỗi một topic có
Các thành phần chính của Kafka như sau:
Partition: mỗi topic sẽ được phân chia thành nhiều partition.
Partition là nơi lưu trữ dữ liệu cho 1 topic, trên mỗi partition, dữ liệu
sẽ được lưu theo một thứ tự bất biến và được gán cho một id gọi là
offset, được hiểu như chỉ số của một mảng. Offset trên mỗi partition
là độc lâp. Một partition có thể được sao chép trên hiều máy khác
Hình 3.7 Mô hình Apache Kafka kết nối tới
nhau trong một cụm Kafka
nguồn là MQTT server
Broker: Kafka chạy trên một cụm bao gồm một hoặc nhiều
Các thông điệp được publish đến một topic trên MQTT Server
máy (node), mỗi máy được gọi là một broker. Broker là nơi lưu trữ
sẽ được mapping tới một topic trên Kafka server, từ đó khi một
các partition, một broker có thể lưu trữ nhiều partition.
Consumer subscribe topic này của Kafka server cũng sẽ đọc được
Producer: sẽ viết dữ liệu tới broker. Cụ thể hơn, producer có
nhiệm vụ chọn message nào để đưa vào topic nào, nhiệm vụ này rất
quan trọng giúp cho Kafka có khả năng mở rộng tốt. Producer có
thông tin các thông tin mà được publish tới một topic trên MQTT
server ban đầu.
Hadoop YARN, Apache Mesos hoặc trên chính cluster manager được
cung cấp bởi Spark được gọi là Standalone Scheduler.
Hình 3.10 Mô hình xử lý luồng dữ liệu của Spark Streaming
Spark Streaming nhận dữ luồng dữ liệu trực tiếp từ Kafka, sau
đó nó sẽ chia nhỏ luồng dữ liệu thành các batch, sau đó các batch
- Spark SQL cho phép truy vấn dữ liệu cấu trúc qua các câu
được sử lý dữ liệu bởi Spark Engine và đưa ra kết quả của dữ liệu đã
lệnh SQL. Spark SQL có thể thao tác với nhiều nguồn dữ liệu như
qua xử lý với các batch tương ứng. Mỗi batch được xem như là một
Hive tables, Parquet, và JSON.
tập các RDD (Resilient Distributed Dataset) và một dãy các RDD thì
- Spark Streaming cung cấp API để dễ dàng xử lý dữ liệu
Spark gọi đó là DStream.
stream
- MLlib Cung cấp rất nhiều thuật toán của học máy như:
classification, regression, clustering, collaborative filtering…
- GraphX là thư viện để xử lý đồ thị.
Đối với hệ thống nền IoT, Spark Streaming đóng vai trò quan
trọng trong việc xử lý luồng dữ liệu và lưu trữ dữ liệu.
nghiệp thông minh. Từ đó giúp chúng ta có cơ sở để có thể dễ dàng
Dữ liệu sau khi xử lý sẽ được trả lại bằng một Dstream mới với
xây dựng cũng như triển khai một ứng dựng IoT một cách nhanh
giá trị của mỗi RDD là kết quả đã được xử lý tương ứng. Như hình
chóng.
24 là một ví dụ minh họa cho chúng ta thấy rằng dữ liệu sau khi xử lý
Tùy với từng ứng dụng IoT cụ thể, ta có thể mở rộng hệ thống
sẽ được lưu tại một DStream mới với các RDD là các kết quả xử lý
nền này phù hợp theo yêu cầu ứng dụng. Do có những hạn chế nhất
của DStream ban đầu. Từ đó chúng ta sẽ sử dụng DStream mới này
định về mặt thời gian của luận văn, thì luận văn mới đưa ra một kịch
để truyền lên màn hình điều khiển trực tiếp (DashBoard) hoặc lưu trữ
bản thử nghiệm chạy thử hệ thống nền với những tính năng cơ bản
xuống dưới cơ sở dữ liệu tùy vào nghiệp vụ cũng như yêu cầu của
trong nông nghiệp thông minh. Nghiên cứu tiếp theo đó là sẽ tích hợp