Giao thức MQTT và ứng dụng trong IOT cho giải pháp ngôi nhà thông minh (LV thạc sĩ)Giao thức MQTT và ứng dụng trong IOT cho giải pháp ngôi nhà thông minh (LV thạc sĩ)Giao thức MQTT và ứng dụng trong IOT cho giải pháp ngôi nhà thông minh (LV thạc sĩ)Giao thức MQTT và ứng dụng trong IOT cho giải pháp ngôi nhà thông minh (LV thạc sĩ)Giao thức MQTT và ứng dụng trong IOT cho giải pháp ngôi nhà thông minh (LV thạc sĩ)Giao thức MQTT và ứng dụng trong IOT cho giải pháp ngôi nhà thông minh (LV thạc sĩ)Giao thức MQTT và ứng dụng trong IOT cho giải pháp ngôi nhà thông minh (LV thạc sĩ)Giao thức MQTT và ứng dụng trong IOT cho giải pháp ngôi nhà thông minh (LV thạc sĩ)Giao thức MQTT và ứng dụng trong IOT cho giải pháp ngôi nhà thông minh (LV thạc sĩ)Giao thức MQTT và ứng dụng trong IOT cho giải pháp ngôi nhà thông minh (LV thạc sĩ)Giao thức MQTT và ứng dụng trong IOT cho giải pháp ngôi nhà thông minh (LV thạc sĩ)Giao thức MQTT và ứng dụng trong IOT cho giải pháp ngôi nhà thông minh (LV thạc sĩ)Giao thức MQTT và ứng dụng trong IOT cho giải pháp ngôi nhà thông minh (LV thạc sĩ)Giao thức MQTT và ứng dụng trong IOT cho giải pháp ngôi nhà thông minh (LV thạc sĩ)
Trang 2LÊ HỮU TUẤN ANH
GIAO THỨC MQTT VÀ ỨNG DỤNG TRONG IOT CHO GIẢI PHÁP
NGÔI NHÀ THÔNG MINH
Chuyên ngành: Kỹ thuật viễn thông
Mã số: 60.52.02.08
LUẬN VĂN THẠC SĨ KỸ THUẬT
NGƯỜI HƯỚNG DẪN KHOA HỌC : PGS.TS NGUYỄN TIẾN BAN
HÀ NỘI - 2017
Trang 3LỜI CAM ĐOAN
Tôi cam đoan đây là công trình nghiên cứu của riêng tôi Nội dung của luận văn có tham khảo và sử dụng các tài liệu, thông tin được đăng tải trên những tạp chí
và các trang web theo danh mục tài liệu tham khảo Tất cả các tài liệu tham khảo đều có xuất xứ rõ ràng và được trích dẫn hợp pháp
Tôi xin hoàn toàn chịu trách nhiệm và chịu mọi hình thức kỷ luật theo quy định cho lời cam đoan của mình
Tác giả luận văn
LÊ HỮU TUẤN ANH
Trang 4LỜI CẢM ƠN
Trong quá trình nghiên cứu và hoàn thành Luận văn này, tôi đã nhận được sự hướng dẫn, giúp đỡ quý báu của gia đình, của thầy cô, các anh chị, các em và các bạn Với lòng kính trọng và biết ơn sâu sắc tôi xin được bày tỏ lời cảm ơn chân thành tới:
Ban giám đốc Học viện, các thầy cô giảng dạy và làm việc tại Khoa Quốc tế
và Đào tạo sau đại học – Học viện Công nghệ Bưu chính Viễn thông đã tạo mọi điều kiện thuận lợi cho tôi trong suốt quá trình học tập và hoàn thành luận văn Phó giáo sư Tiến sĩ Nguyễn Tiến Ban, người thầy kính mến đã hết lòng giúp đỡ, dạy bảo, động viên và tạo mọi điều kiện thuận lợi cho tôi trong suốt quá trình học tập và hoàn thành luận văn
Xin chân thành cảm ơn bố mẹ, anh chị và các em đã ở bên cạnh động viên, tạo điều kiện và giúp đỡ tôi trong suốt qua trình học tập, nghiên cứu và hoàn thành luận văn cao học
Tác giả luận văn
LÊ HỮU TUẤN ANH
Trang 5MỤC LỤC
LỜI CAM ĐOAN i
LỜI CẢM ƠN ii
MỤC LỤC iii
DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT v
DANH SÁCH BẢNG vi
DANH SÁCH HÌNH VẼ vii
MỞ ĐẦU 1
CHƯƠNG 1: TỔNG QUAN VỀ IOT VÀ ỨNG DỤNG 2
1.1 Giới thiệu chung về IoT 2
1.1.1 Khái niệm về IoT 2
1.1.2 Góc nhìn kỹ thuật về IoT 3
1.2 Công nghệ trong IoT 5
1.2.1 Công nghệ trong IoT 5
1.2.2 Đặc điểm của một hệ thống IoT 12
1.3 Các ứng dụng trong IoT 15
1.3.1 Các ứng dụng trong IoT 15
1.3.2 Các thách thức trong việc nghiên cứu, triển khai IoT 20
1.4 Kết luận chương 22
CHƯƠNG 2: GIAO THỨC MQTT 23
2.1 Giao thức MQTT 23
2.1.1 Các khái niệm cơ bản 23
2.1.2 Mô hình MQTT 24
2.2 MQTT v3.1 protocol specification 25
2.2.1 Định dạng của message 25
2.2.2 Câu lệnh của message 31
2.2.3 Quy trình truyền nhận dữ liệu chính trong MQTT 40 2.3 So sánh những điểm cơ bản giữa hai chuẩn giao thức MQTT và CoAP.44
Trang 62.3.1 Điểm giống nhau giữa hai giao thức 44
2.3.2 Điểm khác nhau giữa hai giao thức 44
2.4 Kết luận chương 46
CHƯƠNG 3: ỨNG DỤNG GIAO THỨC MQTT TRONG IOT CHO NGÔI NHÀ THÔNG MINH 48
3.1 Giới thiệu về arduino IDE 48
3.1.1 Tổng quan về arduino 48
3.1.2 Arduino IDE 48
3.2 Cài đặt Arduino IDE 49
3.2.1 Cài đặt chương trình Arduino IDE 49
3.2.2 Arduino IDE 50
3.3 Quá trình mô phỏng dùng giao thức MQTT trong một số ứng dụng cho ngôi nhà thông minh 54
3.3.1 Mô tả yêu cầu thiết kế hệ thống 54
3.3.2 Lưu đồ thuật toán 56
3.3.3 Phần cứng 56
3.3.4 Phần mềm 58
3.3.5 Quá trình mô phỏng 59
3.4 Đánh giá kết quả mô phỏng 64
3.5 Kết luận chương 64
KẾT LUẬN VÀ KIẾN NGHỊ 66
DANH MỤC TÀI LIỆU THAM KHẢO 67
Trang 7DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT
MQTT Message Queuing Telemetry
Transport Bản tin hàng đợi truyền từ xa IOT Internet of Thing Internet của vạn vật
HTTP HyperText Transfer Protocol Giao thức truyền tải siêu văn bản
SMTP Simple Mail Transfer Protocol giao thức truyền tải thư tín đơn
giản
IMAP Internet Message Access Protocol Giao thức truy cập thông điệp
internet M2M Mobile to mobile Thoại với thoại
CoAP Constrained Application Protocol Giao thức ứng dụng hạn chế
RFID Radio Frequency Identification Nhận dạng đối tượng bằng sóng
LTE Long Term Evolution Tiến hóa dài hạn
BLE Bluetooth low energy Bluetooth năng lượng thấp WSN Wireless Sensor Networks Mạng cảm biến không dây TCP Transmission Control Protocol Giao thức điều khiển truyền QoS Quality of Service Chất lượng dịch vụ
DSL Digital Subcriber Line Kênh thuê bao số
IEEE Institute of Electrical and
Electronics Engineers Viện kỹ thuật điện-điện tử
Trang 8DANH SÁCH BẢNG
Bảng 2 1 Header cố định 26
Bảng 2 2 Loại message 26
Bảng 2 3 Bảng các cờ 27
Bảng 2 4 Giá trị QoS 27
Bảng 2 5 Bảng miêu tả độ dài ứng với số byte 29
Bảng 2 6 Biểu diễn giá trị của trường Protocol version 29
Bảng 2 7 Định dạng header cố định câu lệnh connect 32
Bảng 2 8 Định dạng header cố định câu lệnh connack 33
Bảng 2 9 Ý nghĩa gói CONNACK 33
Bảng 2 10 Định dạng header cố định câu lệnh publish 34
Bảng 2 11 Giá trị mức QoS 34
Bảng 2 12 Định dạng header cố định câu lệnh puback 35
Bảng 2 13 Định dạng header cố định câu lệnh pubrec(1) 35
Bảng 2 14 Định dạng header cố định câu lệnh pubrel(2) 36
Bảng 2 15 Định dạng header cố định câu lệnh pubcomp(3) 37
Bảng 2 16 Định dạng header cố định câu lệnh subscribe 37
Bảng 2 17 Định dạng header cố định câu lệnh suback 38
Bảng 2 18 Định dạng header cố định câu lệnh unsubcribe 38
Bảng 2 19 Định dạng header cố định câu lệnh pingreq 39
Bảng 2 20 Định dạng header cố định câu lệnh pingresp 39
Bảng 2 21 Định dạng header cố định câu lệnh disconnect 40
Trang 9DANH SÁCH HÌNH VẼ
Hình 1 1“Internet of Thing” 2
Hình 1 2 IoT kết nối vạn vật 3
Hình 1 3 Sự gia tăng nhanh chóng của giao tiếp máy-máy 4
Hình 1 4 Ứng dụng tủ lạnh trong IoT 5
Hình 1 5 Ví dụ về MQTT 6
Hình 1 6 Ví dụ về XMPP 7
Hình 1 7 Năng lực truyền thông 8
Hình 1 8 Mô hình vận hành hệ thống RFID trong thư viện 9
Hình 1 9 Mô hình mạng Zigbee 10
Hình 1 10 Một số loại cảm biến hay gặp 11
Hình 1 11 Đáp ứng thời gian cho ứng dụng IoT 11
Hình 1 12 Tổng quan một mô hình hệ thống IoT 13
Hình 1 13 Tổng quan về ứng dụng của IoT 15
Hình 1 14 Theo dõi lộ trình đi của các xe chở hàng 16
Hình 1 15 Theo dõi tình trạng sinh trưởng của cây trồng 17
Hình 1 16 Mô hình ứng dụng nhà thông minh 18
Hình 1 17 Thành phố thông minh 19
Hình 1 18 Mô hình lưới điện thông minh 19
Hình 2 1 Ví dụ về kết nối trong mạng lưới MQTT 24
Hình 2 2 Mô hình cơ bản của giao thức MQTT 25
Hình 2 3 Session và subscription được thiết lập với clean session flag = 1 40 Hình 2 4 Session và subscription được thiết lập với clean session flag = 0 41 Hình 2 5 QoS mức 0 42
Hình 2 6 QoS mức 1 43
Hình 2 7 QoS mức 2 43
Hình 3 1 Giao diện chương trình tải arduino IDE 49
Trang 10Hình 3 2 Giao diện Arduino IDE 50
Hình 3 3 Arduino Toolbar 50
Hình 3 4 IDE Menu 51
Hình 3 5 File menu 51
Hình 3 6 Click Examples 52
Hình 3 7 Edit menu 52
Hình 3 8 Sketch menu 53
Hình 3 9 Tool menu 53
Hình 3 10 Chọn Board 54
Hình 3 11 Sơ đồ khối của hệ thống 55
Hình 3 12 Lưu đồ thuật toán chương trình 56
Hình 3 13 NodeMCU Esp8266 57
Hình 3 14 Cảm biến nhiệt độ, độ ẩm DHT11 58
Hình 3 15 Cài đặt thư viện esp8266 58
Hình 3 16 Cài đặt thành công library esp8266 59
Hình 3 17 Cài đặt thành công library sensor DHT11 59
Hình 3 18 Cấu hình MQTT broker 60
Hình 3 19 Quá trình kết nối thành công thiết bị lên webserver 61
Hình 3 20 Quá trình bật/tắt LED từ webserver truyền về thiết bị 61
Hình 3 21 Sơ đồ đấu nối cảm biến DHT11 với NodeMCU 62
Hình 3 22 Tạo hai trường dữ liệu nhiệt độ, độ ẩm trên thinkspeak 63
Hình 3 23 Dữ liệu trường nhiệt độ trên webserver 63
Hình 3 24 Dữ liệu trường độ ẩm trên webserver 64
Trang 11MỞ ĐẦU
IOT hiện nay đang là một xu hướng mạnh mẽ trên toàn thế giới, mở ra những cơ hội chưa từng có cho các nền kinh tế, doanh nghiệp, tổ chức và các cá nhân để cạnh tranh trong môi trường mới
Phạm vi ứng dụng công nghệ IoT thực sự rộng lớn và đa dạng, từ quản lý giao thông, quản lý đô thị, quản lý môi trường, ứng phó khẩn cấp đến mua sắm thông minh, các dịch vụ y tế chăm sóc sức khỏe, nhà thông minh và hướng tới nữa
là thành phố thông minh
Để các thiết bị có thể giao tiếp được với nhau, thiết bị sẽ cần một hoặc nhiều giao thức, đó là HTTP được dùng phổ biến để tải web hay một số khác như SMTP, IMAP cho email… Những giao thức này ít khi trao đổi thông tin, khi cần sẽ có một trung gian đứng ra giải mã cho hai bên hiểu Còn với các thiết bị IoT, chúng phải đảm đương nhiều thứ, trao đổi thông tin với nhiều loại thiết bị khác nhau, nhưng hiện người ta chưa có sự đồng nhất về các giao thức để IoT trao đổi dữ liệu Nói cách khác, tình huống này gọi là “communication fail”, một bên nói nhưng bên kia không tiếp nhận Hiện nay có rất nhiều giao thức giao tiếp giữa các thiết bị IoT như: HTTP, UpnP, CoAp, MQTT
Trong giai đoạn gần đây giao thức MQTT đang nổi lên như một giao thức được sử dụng phổ biến dùng trong IoT, rất nhiều hãng công nghệ đã áp dụng và hỗ trợ giao thức MQTT cho các ứng dụng sản phẩm của mình như Facebook cho ứng dụng facebook message, IBM cho dự án bảo vệ môi trường, Intel, Microsoft
Luận văn được xây dựng với nội dung chính như sau:
Chương 1: Tổng quan về IoT và ứng dụng
Chương 2: Giao thức MQTT
Chương 3: Ứng dụng giao thức MQTT trong IoT cho ngôi nhà thông minh
Trang 12CHƯƠNG 1: TỔNG QUAN VỀ IOT VÀ ỨNG DỤNG
1.1 Giới thiệu chung về IoT
1.1.1 Khái niệm về IoT
Internet of Things (IoT) là thuật ngữ dùng để chỉ các đối tượng có thể được nhận biết cũng như sự tồn tại của chúng trong một kiến trúc mang tính kết nối Đây
là một viễn cảnh trong đó mọi vật, mọi con vật hoặc con người được cung cấp các định danh và khả năng tự động truyền tải dữ liệu qua một mạng lưới mà không cần
sự tương tác giữa con người-với-con người hoặc con người-với-máy tính
IoT tiến hoá từ sự hội tụ của các công nghệ không dây, hệ thống vi cơ điện tử (MEMS) và Internet 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 (một 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 [13]
Hình 1 1“Internet of Thing”
IoT có thể được coi là một tầm nhìn sâu rộng của công nghệ và cuộc sống
Từ quan điểm của tiêu chuẩn kỹ thuật, IoT có thể được xem như là một cơ sở hạ tầng mang tính toàn cầu cho xã hội thông tin, tạo điều kiện cho các dịch vụ tiên tiến thông qua sự liên kết các “Things” IoT dự kiến sẽ tích hợp rất nhiều công nghệ
Trang 13mới, chẳng hạn như các công nghệ thông tin machine-to-machine, mạng tự trị, khai thác dữ liệu và ra quyết định, bảo vệ sự an ninh và sự riêng tư, điện toán đám mây Như hình dưới, một hệ thống thông tin trước đây đã mang đến 2 chiều – “Any TIME” và “Any PLACE” communication Giờ IoT đã tạo thêm một chiều mới trong hệ thống thông tin đó là “Any THING” Communication [2]
Hình 1 2 IoT kết nối vạn vật [12]
1.1.2 Góc nhìn kỹ thuật về IoT
Internet Of Things là một cơ sở hạ tầng mang tính toàn cầu cho xã hội thông tin, mang đến những dịch vụ tiên tiến bằng cách kết nối các “Things” (cả physical lẫn virtual) dựa trên sự tồn tại của thông tin, dựa trên khả năng tương tác của các thông tin đó, và dựa trên các công nghệ truyền thông
Devices là một phần của cả hệ thống với chức năng bắt buộc là truyền thông
và chức năng không bắt buộc là: cảm biến, thực thi,thu thập dữ liệu, lưu trữ và xử lý
dữ liệu
Things là một đối tượng của thế giới vật chất (physical things) hay thế giới thông tin ảo(virtual things) “Things” có khả năng được nhận diện, và “Things” có thể được tích hợp vào trong mạng lưới thong tin liên lạc Hai loại đối tượng này có thể ánh xạ (mapping) qua lại lẫn nhau Một đối tượng vật lý có thể được trình bài
Trang 14hay đại diện bởi một đối tượng thông tin, tuy nhiên một đối tượng thông tin có thể tồn tại mà không nhất thiết phải được ánh xạ từ một đối tượng vật lý nào [6]
Yêu cầu tối thiểu của các “device” trong IOT là khả năng giao tiếp Devices
sẽ được phân loại vào các dạng như device mang thông tin, device thu thập dữ liệu, device cảm nhận(sensor), device thực thi, hay general device
IoT phải có 2 thuộc tính: một là đó phải là một ứng dụng internet Hai là, nó phải lấy được thông tin của vật chủ
Hình 1 3 Sự gia tăng nhanh chóng của giao tiếp máy-máy Một ví dụ điển hình cho IoT là tủ lạnh thông minh, nó có thể là một chiếc tủ lạnh bình thường nhưng có gắn thêm các cảm biến bên trong giúp kiểm tra được số lượng các loại thực phẩm có trong tủ lạnh, cảm biến nhiệt độ, cảm biến phát hiện
mở cửa,…và các thông tin này được đưa lên internet Với một danh mục thực phẩm được thiết lập trước bởi người dùng, khi mà một trong các loại thực phẩm đó sắp hết thì nó sẽ thông báo ngay cho chủ nhân nó biết rằng cần phải bổ sung gấp, thậm chí nếu các loại sản phẩm được gắn mã ID thì nó sẽ tự động trực tiếp gửi thông báo cần nhập hàng đến siêu thị và nhân viên siêu thị sẽ gửi loại thực phẩm đó đến tận nhà
Trang 15Hình 1 4 Ứng dụng tủ lạnh trong IoT
1.2 Công nghệ trong IoT
1.2.1 Công nghệ trong IoT
1.2.1.1 Giao thức chính
Trong IoT, các thiết bị phải giao tiếp được với nhau (D2D) Dữ liệu sau đó phải được thu thập và gửi tới máy chủ (D2S) Máy chủ cũng có để chia sẻ dữ liệu với nhau (S2S), có thể cung cấp lại cho các thiết bị, để phân tích các chương trình, hoặc cho người dùng Các giao thức có thể dùng trong IoT là:
- MQTT: một giao thức cho việc thu thập dữ liệu và giao tiếp cho các máy chủ (D2S)
- XMPP: giao thức tốt nhất để kết nối các thiết bị với mọi người, một trường hợp đặc biệt của mô hình D2S, kể từ khi người được kết nối với các máy chủ
- DDS: giao thức tốc độ cao cho việc tích hợp máy thông minh (D2D)
- AMQP: hệ thống hàng đợi được thiết kế để kết nối các máy chủ với nhau (S2S)
Trang 16 MQTT
MQTT (Message Queue Telemetry Transport), mục tiêu thu thập dữ liệu và giao tiếp D2S Mục đích là đo đạc từ xa, hoặc giám sát từ xa, thu thập dữ liệu từ nhiều thiết bị và vận chuyển dữ liệu đó đến máy trạm với ít xung đột nhất MQTT nhắm đến các mạng lớn của các thiết bị nhỏ mà cần phải được theo dõi hoặc kiểm soát từ các đám mây
Hình 1 5 Ví dụ về MQTT MQTT hoạt động đơn giản, cung cấp nhiều lựa chọn điều khiển và QoS MQTT không có yêu cầu quá khắt khe về thời gian, tuy nhiên hiều quả của nó là rất lớn, đáp ứng tính thời gian thực với đơn vị tính bằng giây
Các giao thức hoạt động trên nền tàng TCP, cung cấp các đáp ứng đơn giản, đáng tin cậy
XMPP
XMPP ban đầu được gọi là "Jabber." Nó được phát triển cho các tin nhắn tức thời (IM) để kết nối mọi người với những người khác thông qua tin nhắn văn bản XMPP là viết tắt của Extensible Messaging và Presence Protocol
Trang 17Hình 1 6 Ví dụ về XMPP XMPP sử dụng định dạng văn bản XML, và cũng tương tự như MQTT chạy, XMPP chạy trên nền tảng TCP, hoặc có thể qua HTTP trên TCP Sức mạnh chính của nó là một chương trình name@domain.comaddressing trong mạng Internet khổng lồ
1.2.1.2 Năng lực truyền thông
Địa chỉ IP được coi là yếu tố quan trọng trong IoT, khi mà mỗi thiết bị được gán một địa chỉ IP riêng biệt Do đó khả năng cấp phát địa chỉ IP sẽ quyết định đến tương lai của IoT Hệ thống địa chỉ IPv4 được tạo ra mới mục đích đánh cho mỗi máy tính kết nối vào mạng internet một con số riêng biệt, giúp cho thông tin có thể tìm tới đúng nơi cần đến ngay khi nó được chuyển đi từ bất cứ địa điểm nào trên thế giới Theo thiết kế, Ipv4 có thể cung cấp 2^32 (tương ứng với khoảng 4,2 tỉ) địa chỉ
IP, một con số lớn không tưởng cách đây 30 năm Tuy nhiên, sự bùng nổ mạnh mẽ của Internet đã khiến cho số lượng địa chỉ IP tự do càng ngày càng khan hiếm Mới đây, RIPE NCC - Hiệp hội các tổ chức quản lý mạng Internet khu vực châu Âu phải
Trang 18đưa ra tuyên bố rằng họ đã sử dụng đến gói địa chỉ IP chưa cấp phát cuối cùng (khoảng 1,8 triệu địa chỉ)
Hình 1 7 Năng lực truyền thông
Và sự ra đời của IPv6 như là một giải pháp cứu sống kịp thời cho sự cạn kiệt của IPv4 Độ dài bit của là 128 Sự gia tăng mạnh mẽ của IPv6 trong không gian địa chỉ là một yếu tố quan trọng trong phát triển Internet of Things
1.2.1.3 Công suất thiết bị
Các tiêu chí hình thức chính của thiết bị khi triển khai một ứng dụng IoT là phải giá thành thấp, mỏng, nhẹ…và như vậy phần năng lượng nuôi thiết bị cũng sẽ trở nên nhỏ gọn lại, năng lượng tích trữ cũng sẽ trở nên ít đi Do đó đòi hỏi thiết bị phải tiêu tốn một công suất cực nhỏ (Ultra Low Power) để sử dụng nguồn năng lượng có hạn đó Bên cạnh đó yêu cầu có những giao thức truyền thông không dây gọn nhẹ hơn, đơn giản hơn, đòi hỏi ít công suất hơn (Low Energy Wireless Technologies) như Zigbee, BLE (Bluetooth low energy), RFID, …
RFID
Trong đó RFID là một trong các công nghệ chủ chốt của IoT trong môi trường truyền thông tỏa khắp mọi nơi (ubiquitius), là kỹ thuật nhận dạng bằng song
Trang 19vô tuyến sử dụng song radio để truyền dữ liệu từ một thiết bị điện tử gắn liền với một đối tượng (hoặc một sản phẩm hàng hóa) đến một hệ thống trung tâm thông qua một đầu đọc với mục đích xác định và theo dõi các đối tượng
Hình 1 8 Mô hình vận hành hệ thống RFID trong thư viện
Kỹ thuật RFID có liên quan đến hệ thống không dây cho phép một thiết bị đọc thông tin được chứa trong một chip không tiếp xúc trực tiếp ở khoảng cách xa,
mà không thực hiện bất kỳ giao tiếp vật lý nào hoặc yêu cầu một sự nhìn thấy giữa hai cái Nó cho ta phương pháp truyền và nhận dữ liệu từ một điểm đến điểm khác RFID đã có trong thương mại trong một số hình thức từ những năm 1970 Bây giờ
nó là một phần trong cuộc sống hàng ngày, có thể thấy trong những chìa khóa xe hơi, thẻ lệ phí quốc lộ và các loại thẻ truy cập an toàn, cũng như trong môi trường
mà nơi đó việc đánh nhãn bằng mã số vạch trên hàng hóa là không thực tế hoặc không hiệu quả lắm
ZigBee
Công nghệ ZigBee được xây dựng dựa trên tiêu chuẩn 802.15.4 của tổ chức IEEE (Institute of Electrical and Electronics Engineers) Tiêu chuẩn 802.15.4 này
Trang 20sử dụng tín hiệu radio có tần sóng ngắn, và cấu trúc của 802.15.4 có 2 tầng là tầng vật lý và tầng MAC (medicum Access Control) Công nghệ ZigBee vì thế cũng dùng sóng radio và có 2 tầng Hơn thế nữa ZigBee còn thiết lập các tầng khác nhờ thế mà các thiết bị của các nhà sản xuất dù khác nhau nhưng cùng tiêu chuẩn có thể kết nối với nhau và vận hành trong vùng bảo mật của hệ thống
Hình 1 9 Mô hình mạng Zigbee Nhờ chức năng điều khiển từ xa không dây, truyền dữ liệu ổn định, tiêu thụ năng lượng cực thấp, công nghệ mở đã giúp công nghệ ZigBee trở nên hấp dẫn sử dụng cho các ứng dụng, đặc biệt là ứng dụng trong IoT hiện nay
Tín hiệu công nghệ ZigBee có thể truyền xa đến 75m tính từ trạm phát, và khoảng cách có thể xa hơn rất nhiều nếu được tiếp tục phát từ nút liên kết tiếp theo trong cùng hệ thống
Các dữ liệu được truyền theo gói, gói tối đa là 128bytes cho phép tải xuống tối đa 104 bytes
Tiêu chuẩn này hỗ trợ địa chỉ 64bit cũng như địa chỉ ngắn 16bit Loại địa chỉ 64bit chỉ xác đinh được mỗi thiết bị có cùng 1 địa chỉ IP duy nhất Khi mạng được thiết lập, những địa chỉ ngắn có thể được sử dụng và cho phép hơn 65000 nút được liên kết
1.2.1.4 Công nghệ cảm biến
Trong Internet of Things, cảm biến đóng vai trò then chốt, nó đo đạt cảm nhận giá trị từ môi trường xung quanh rồi gửi đến bộ vi xử lý sau đó được gửi lên mạng Chúng ta có thể bắt gặp một số loại cảm biến về cảnh báo cháy rừng, cảnh
Trang 21báo động đất, cảm biến nhiệt độ, cảm biến độ ẩm, Để giúp cho thiết bị kéo dài được thời gian sống hơn thì đòi hỏi cảm biến cũng phải tiêu hao một lượng năng lượng cực kỳ thấp Bên cạnh đó độ chính xác và thời gian đáp ứng của cảm biến cũng phải nhanh Để giá thành của thiết bị thấp thì đòi hỏi giá cảm biến cũng phải thấp [1]
Hình 1 10 Một số loại cảm biến hay gặp
3 đến 5s
Hình 1 11 Đáp ứng thời gian cho ứng dụng IoT
Trang 221.2.2 Đặc điểm của một hệ thống IoT
1.2.2.1 Yêu cầu cần có đối với một hệ thống IoT
Một hệ thống IOT phải thoả mãn các yêu cầu sau:
- Kết nối dựa trên sự nhận diện: Nghĩa là các thiết bị phải có ID riêng biệt Hệ thống IOT cần hỗ trợ các kết nối giữa các thiết bị, và kết nối được thiết lập dựa trên định danh (ID) của thiết bị
- Khả năng cộng tác: hệ thống IoT khả năng tương tác qua lại giữa các mạng
và thiết bị
- Khả năng tự quản của network: Bao gồm tự quản lý, tự cấu hình, tự recovery, tự tối ưu hóa và tự có cơ chế bảo vệ Điều này cần thiết để mạng có thể thích ứng với các lĩnh vực ứng dụng khác nhau, môi trường truyền thông khác nhau, và nhiều loại thiết bị khác nhau
- Dịch vụ thoả thuận: dịch vụ này để có thể được cung cấp bằng cách thu thập, giao tiếp và xử lý tự động các dữ liệu giữa các thiết bị dựa trên các quy tắc (rules) được thiết lập bởi người vận hành hoặc tùy chỉnh bởi các người dùng
- Các khả năng dựa vào vị trí: Thông tin liên lạc và các dịch vụ liên quan đến một cái gì đó sẽ phụ thuộc vào thông tin vị trí của thiết bị và người sử dụng
Hệ thống IoT có thể biết và theo dõi vị trí một cách tự động Các dịch vụ dựa trên vị trí có thể bị hạn chế bởi luật pháp hay quy định, và phải tuân thủ các yêu cầu an ninh
- Bảo mật: Trong IoT, nhiều thiết bị được kết nối với nhau Chính điều này làm tăng mối nguy trong bảo mật, chẳng hạn như bí mật thông tin bị tiết lộ, xác thực sai, hay dữ liệu bị thay đổi hay làm giả
- Bảo vệ tính riêng tư: tất cả các thiết bị đều có chủ sở hữu và người sử dụng của
nó Dữ liệu thu thập được từ các thiết bị có thể chứa thông tin cá nhân liên quan chủ sở hữu hoặc người sử dụng nó Các hệ thống IoT cần bảo vệ sự riêng
tư trong quá trình truyền dữ liệu, tập hợp, lưu trữ, khai thác và xử lý Bảo vệ sự riêng tư không nên thiết lập một rào cản đối với xác thực nguồn dữ liệu
Trang 23- Plug and play: các thiết bị phải được plug-and-play một cách dễ dàng và tiện dụng
- Khả năng quản lý: hệ thống IoT cần phải hỗ trợ tính năng quản lý các thiết bị
để đảm bảo mạng hoạt động bình thường Ứng dụng IoT thường làm việc
tự động mà không cần sự tham gia của con người, nhưng toàn bộ quá trình hoạt động của họ nên được quản lí bởi các bên liên quan
1.2.2.2 Mô hình hệ thống IoT
Hình 1 12 Tổng quan một mô hình hệ thống IoT Bất kỳ một hệ thống IOT nào cũng được xây dựng lên từ sự kết hợp của 4 layer sau [9]:
- Lớp ứng dụng (Application Layer): Lớp ứng dụng cũng tương tự như trong
mô hình OSI 7 lớp, lớp này tương tác trực tiếp với người dùng để cung cấp một chức năng hay một dịch vụ cụ thể của một hệ thống IOT
- Lớp Hỗ trợ dịch vụ và hỗ trợ ứng dụng (Service support and application support layer):
+ Nhóm dịch vụ chung: Các dịch vụ hỗ trợ chung, phổ biến mà hầu hết các ứng dụng IOT đều cần, ví dụ như xử lý dữ liệu hoặc lưu trữ dữ liệu
+ Nhóm dịch vụ cụ thể, riêng biệt: Những ứng dụng IOT khác nhau sẽ có nhóm dịch phụ hỗ trợ khác nhau và đặc thù Trong thực tế, nhóm dịch vụ cụ thể riêng biệt là tính toán độ tăng trưởng của cây mà đưa ra quyết định tưới nước hoặc bón phân
Trang 24- Lớp mạng (Network Layer): có hai chức năng
+ Chức năng Networking: cung cấp chức năng điều khiển các kết nối kết nối mạng, chẳng hạn như tiếp cận được ngu n tài nguyên thông tin và chuyển tài nguyên đó đến nơi cần thiết, hay chứng thực, uỷ quyền…
+ Chức năng Transporting: tập trung vào việc cung cấp kết nối cho việc truyền thông tin của dịch vụ/ứng dụng IOT
- Lớp thiết bị (Device Layer): Lớp Device chính là các phần cứng vật lý trong
hệ thống IOT Device có thể phân thành hai loại như sau
+ Thiết bị thông thường: Device này sẽ tương tác trực tiếp với network: Các thiết bị có khả năng thu thập và tải lên thông tin trực tiếp (nghĩa là không phải sử dụng gateway) và có thể trực tiếp nhận thông tin (ví dụ, lệnh) từ các network Device này cũng có thể tương tác gián tiếp với network: Các thiết
bị có thể thu thập và tải network gián tiếp thông qua khả năng gateway Ngược lại, các thiết bị có thể gián tiếp nhận thông tin (ví dụ, lệnh) từ network Trong thực tế, các Thiết bị thông thường bao g m các cảm biến, các phần cứng điều khiển motor, đèn,…
+ Thiết bị Gateway: Gateway là cổng liên lạc giữa device và network Một Gateway hỗ trợ 2 chức năng: Một là có nhiều chuẩn giao tiếp: Vì các Things khác nhau có kiểu kết nối khác nhau, nên Gateway phải hỗ trợ đa dạng từ có dây đến không dây, chẳng hạn CAN bus, ZigBee, Bluetooth hoặc Wi-Fi Tại Network layer, gateway có thể giao tiếp thông qua các công nghệ khác nhau như PSTN, mạng 2G và 3G, LTE, Ethernet hay DSL Hai là chức năng chuyển đổi giao thức: Chức năng này cần thiết trong hai tình huống là: (1) khi truyền thông ở lớp Device, nhiều device khác nhau sử dụng giao thức khác nhau, ví dụ, ZigBee với Bluetooth, và (2) là khi truyền thông giữa các Device và Network, device dùng giao thức khác, network dùng giao thức khác, ví dụ, device dùng ZigBee còn tầng network thì lại dùng công nghệ 3G
Trang 25Trong thực tế, Gateway có thể được build từ các board như Raspberry Pi hay Arduino, hoặc Gateway được sản xuất công nghiệp bởi các tập đoàn lớn như Intel hay Texas Instrument
1.3 Các ứng dụng trong IoT
1.3.1 Các ứng dụng trong IoT
Với những hiệu quả thông minh rất thiết thực mà IoT đem đến cho con người, IoT đã và đang được tích hợp trên khắp mọi thứ, mọi nơi xung quanh thế giới mà con người đang sống Từ chiếc vòng đeo tay, những đồ gia dụng trong nhà, những mảnh vườn đang ươm hạt giống, cho đến những sinh vật sống như động vật hay con người…đều có sử dụng giải pháp IoT.Một trong những ứng dụng phổ biến nhất của IoT là ứng dụng nhà thông minh, hay thiết bị có thể mang theo như đồng
hồ thông minh Các ứng dụng của IoT được xếp hạng dựa trên 3 tiêu chí: sự tìm kiếm về IoT trên Google, điều được nói đến về IoT trên Twitter, điều được viết về IoT trên LinkedIn [5]
Hình 1 13 Tổng quan về ứng dụng của IoT
1.3.1.1 Ứng dụng trong lĩnh vực vận tải
Ứng dụng điển hình nhất trong lĩnh vực này là gắn chíp lấy tọa độ GPS lên
xe chở hàng, nhằm kiểm soát lộ trình, tốc độ, thời gian đi đến của các xe chở hàng Ứng dụng này giúp quản lý tốt khâu vận chuyển, có những xử lý kịp thời khi xe đi không đúng lộ trình hoạt bị hỏng hóc trên những lộ trình mà ở đó mạng di động không phủ sóng tới được, kiểm soát được lượng nhiên liệu tiêu hao ứng với lộ trình
đã được vạch trước…
Trang 26Hình 1 14 Theo dõi lộ trình đi của các xe chở hàng
1.3.1.2 Ứng dụng trong nông nghiệp
Quá trình sinh trưởng và phát triển của cây trồng trải qua nhiều giai đoạn từ hạt nảy mầm đến ra hoa kết trái Ở mỗi giai đoạn cần có sự chăm sóc khác nhau về chất dinh dưỡng cũng như chế độ tưới tiêu phù hợp Những yêu cầu này đòi hỏi sự bền bỉ và siêng năng của người nông dân từ ngày này sang ngày khác làm cho họ phải vất vả Nhưng nhờ vào ứng dụng khoa học kỹ thuật, sử dụng cảm biến để lấy thông số nhiệt độ, độ ẩm, độ pH của đất trồng, cùng với bảng dữ liệu về quy trình sinh trưởng của loại cây đó, hệ thống sẽ tự động tưới tiêu bón lót cho cây trồng phù hợp với từng giai đoạn phát triển của cây trồng Người nông dân bây giờ chỉ kiểm tra, quan sát sự vận hành của hệ thống chăm sóc cây trồng trên một màn hình máy tính có nối mạng
Trang 27Hình 1 15 Theo dõi tình trạng sinh trưởng của cây trồng Sản phẩm của mỗi loại nông sản sẽ được gắn mã ID, nếu tủ lạnh nhà chúng
ta sắp hết một loại nông sản nào đó thì ngay lập tức nó sẽ tự động gửi thông báo cần mua đến cơ sở dữ liệu của trang trại có trồng loại nông sản đó, và chỉ sau một thời gian nông sản mà bạn cần sẽ được nhân viên đem đến tận nhà
1.3.1.3 Ứng dụng trong nhà thông minh
Vài năm trở lại đây, khi thế giới đang dần tiến vào kỷ nguyên Internet of Things, kết nối mọi vật qua Internet, nhà thông minh trở thành một xu hướng công nghệ tất yếu, là tiêu chuẩn của nhà ở hiện đại Trong căn hộ thông minh, tất cả các thiết bị từ rèm cửa, điều hoà, dàn âm thanh, hệ thống ánh sáng, hệ thống an ninh, thiết bị nhà tắm… được kết nối với nhau và hoạt động hoàn toàn tự động theo kịch bản lập trình sẵn, đáp ứng đúng nhu cầu sử dụng của khách hàng
Trang 28Hình 1 16 Mô hình ứng dụng nhà thông minh Các thành phần cơ bản của một ngôi nhà thông minh bao gồm:
- Một máy tính điều khiển trung tâm (Home server)
- Các thiết bị gia dụng đầu cuối
- Hệ thống các phần mềm điều khiển ngôi nhà
- Các thiết bị điều khiển
1.3.1.4 Ứng dụng trong thành phố thông minh
Thành phố thông minh là ứng dụng để quản lý lưu lượng nước trong phân phối nước, quản lý chất thải, an ninh đô thị và giám sát môi trường Nhiều giải pháp thành phố thông minh được đưa ra hứa hẹn mạng lại chất lượng cuộc sống của con người tốt hơn Giải pháp IoT trong các khu vực của thành phố thông minh giải quyết vấn đề ùn tắc giao thông, giảm thiểu tiếng ồn và ô nhiễm, giúp làm cho thành phố an toàn hơn
Trang 29Hình 1 17 Thành phố thông minh
1.3.1.5 Ứng dụng trong lưới điện thông minh
Hệ thống điện thông minh là hệ thống điện có sử dụng các công nghệ thông tin và truyền thông để tối ưu việc truyền dẫn, phân phối điện năng giữa nhà sản xuất
và hộ tiêu thụ, hợp nhất cơ sở hạ tầng điện với cơ sở hạ tầng thông tin liên lạc Có thể coi hệ thống điện thông minh gồm có hai lớp: lớp 1 là hệ thống điện thông thường và bên trên nó là lớp 2, hệ thống thông tin, truyền thông, đo lường
Hình 1 18 Mô hình lưới điện thông minh
Trang 30Lưới điện thông minh là dạng lưới điện mà mục tiêu đặt ra là tiên đoán và phản ứng một cách thông minh với cách ứng xử và hành động của tất cả các đơn vị được kết nối điện với lưới điện, bao gồm các đơn vị cung cấp điện, các hộ tiêu thụ điện và các đơn vị đồng thời cung cấp và tiêu thụ điện, nhằm cung cấp một cách hiệu quả các dịch vụ điện tin cậy, kinh tế và bền vững Lưới điện thông minh phát triển trên 4 khâu:
- Phát điện: Smart Generation
- Truyền tải: Smart Transmission
- Phân phối: Smart Distribution
- Tiêu thụ: Smart Power Consumers
Lưới điện thông minh là một trường hợp đặc biệt của IoT Một lưới điện thông minh trong tương lai hứa hẹn mạng nâng cao hiệu quả, độ tin cậy và kinh tế của việc sử dụng điện dựa trên hành vi của người sử dụng điện và nhà cung cấp điện
1.3.2 Các thách thức trong việc nghiên cứu, triển khai IoT
1.3.2.1 Chưa có ngôn ngữ chung
Ở mức cơ bản nhất, Internet là một mạng dùng để nối thiết bị này với thiết bị khác Nếu chỉ riêng có kết nối không thôi thì không có gì đảm bảo rằng các thiết bị biết cách nói chuyện nói nhau Ví dụ, chúng ta có thể đi từ Việt Nam đến Mỹ, nhưng không đảm bảo rằng chúng ta có thể nói chuyện tới với người Mỹ Để các thiết bị có thể giao tiếp với nhau, chúng sẽ cần một hoặc nhiều giao thức (protocols), có thể xem là một thứ ngôn ngữ chuyên biệt để giải quyết một tác vụ nào đó Chắc chắn chúng ta đã ít nhiều sử dụng một trong những giao thức phổ biến nhất thế giới, đó là Hyper Text Transfer Protocol (HTTP) để tải web Ngoài ra chúng ta còn có SMTP, POP, IMAP dành cho email, FTP dùng để trao đổi file, [14]
Những giao thức như thế này hoạt động ổn bởi các máy chủ web, mail và FTP thường không phải nói với nhau nhiều, khi cần, một phần mềm phiên dịch đơn giản sẽ đứng ra làm trung gian để hai bên hiểu nhau Còn với các thiết bị IoT, chúng
Trang 31phải đảm đương rất nhiều thứ, phải nói chuyện với nhiều loại máy móc thiết bị khác nhau Đáng tiếc rằng hiện người ta chưa có nhiều sự đồng thuận về các giao thức
để IoT trao đổi dữ liệu Nói cách khác, tình huống này gọi là "giao tiếp thất bại", một bên nói nhưng bên kia không thèm (và không thể) nghe
1.3.2.2 Hàng rào subnetwork
Như đã nói ở trên, thay vì giao tiếp trực tiếp với nhau, các thiết bị IoT hiện nay chủ yếu kết nối đến một máy chủ trung tâm do hãng sản xuất một nhà phát triển nào đó quản lí Cách này cũng vẫn ổn thôi, những thiết bị vẫn hoàn toàn nói được với nhau thông qua chức năng phiên dịch của máy chủ rồi Thế nhưng mọi chuyện không đơn giản như thế, cứ mỗi một mạng lưới như thế tạo thành một subnetwork riêng, và buồn thay các máy móc nằm trong subnetwork này không thể giao tiếp tốt với subnetwork khác
Lấy ví dụ như xe ô tô chẳng hạn Một chiếc Ford Focus có thể giao tiếp cực
kì tốt đến các dịch vụ và trung tâm dữ liệu của Ford khi gửi dữ liệu lên mạng Nếu một bộ phận nào đó cần thay thế, hệ thống trên xe sẽ thông báo về Ford, từ đó hãng tiếp tục thông báo đến người dùng Nhưng trong trường hợp chúng ta muốn tạo ra một hệ thống cảnh báo kẹt xe thì mọi chuyện rắc rối hơn nhiều bởi xe Ford được thiết lập chỉ để nói chuyện với server của Ford, không phải với server của Honda, Audi, Mercedes hay BMW Lý do cho việc giao tiếp thất bại? Chúng ta thiếu đi một ngôn ngữ chung Và để thiết lập cho các hệ thống này nói chuyện được với nhau thì rất tốn kém, đắt tiền
Một số trong những vấn đề nói trên chỉ đơn giản là vấn đề về kiến trúc mạng,
về kết nối mà các thiết bị sẽ liên lạc với nhau (Wifi, Bluetooth, NFC, ) Những thứ này thì tương đối dễ khắc phục với công nghệ không dây ngày nay Còn với các vấn đề về giao thức thì phức tạp hơn rất nhiều, nó chính là vật vản lớn và trực tiếp trên còn đường phát triển của Internet of Things
1.3.2.3 Tiền và chi phí
Cách duy nhất để các thiết bị IoT có thể thật sự giao tiếp đó là khi có một động lực kinh tế đủ mạnh khiến các nhà sản xuất đồng ý chia sẻ quyền điều khiển
Trang 32cũng như dữ liệu mà các thiết bị của họ thu thập được Hiện tại, các động lực này không nhiều Có thể xét đến ví dụ sau: một công ty thu gom rác muốn kiểm tra xem các thùng rác có đầy hay chưa Khi đó, họ phải gặp nhà sản xuất thùng rác, đảm bảo rằng họ có thể truy cập vào hệ thống quản lí của từng thùng một Điều đó khiến chi phí bị đội lên, và công ty thu gom rác có thể đơn giản chọn giải pháp cho một người chạy xe kiểm tra từng thùng một
1.4 Kết luận chương
Chương 1 đã trình bày tóm tắt và hiểu rõ hơn về khái niệm, kiến trúc, mô hình, các ứng dụng cũng như thách thức trong môi trường IoT Như vậy Internet of Things hiểu đơn giản là một mạng lưới các vật thể được gắn cảm biến hoặc hệ thống điện tử đặc biệt cho phép chúng kết nối với nhau để thu thập và trao đổi dữ liệu Các vật thể trong mạng lưới này có thể được kết nối với mạng Internet cho mục đích điều khiển từ xa Internet Of Things ngày này đang phát triển một cách vô cùng mạnh mẽ Có thể nói IoT đang dần thay đổi thể giới và trở thành xu hướng của thời đại, khi mà nhắc đến bất kỳ một lĩnh vực nào đều có thể nghe đến IoT ở đó
Trang 33CHƯƠNG 2: GIAO THỨC MQTT
2.1 Giao thức MQTT
2.1.1 Các khái niệm cơ bản
MQTT được tạo ra bởi TS Andy Standford Clark của IBM và Arlen Nipper
of Arcom (giờ là Eurotech) năm 1999 như một phương thức đáng tin cậy hiệu quả với chi phí để kết nối các thiết bị giám sát sử dụng trong các ngành công nghiệp dầu
mỏ và khí đốt với các máy chủ doanh nghiệp từ xa Khi thử thách với việc tìm kiếm một cách để đẩy dữ liệu từ các cảm biến đường ống trong sa mạc để quản lý hệ thống SCADA, họ quyết định một giao thức TCP/IP dựa trên mô hình cung cấp/thuê bao (publish/subscrible) đó sẽ là sự kiện hướng tới giảm chi phí giữ liên kết truyền hình vệ tinh [3]
MQTT dựa trên một Broker (điểm trung gian) "nhẹ" (khá ít xử lý), và được thiết kế có tính mở (không đăng trưng cho ứng dụng nào), rất đơn giản và dễ để tích hợp MQTT phù hợp cho các ứng dụng M2M (Mobile to mobile), WSN (Wireless Sensor Networks) hay IoT (Internet of Things) Những đặc trưng này khiến MQTT rất lý tưởng để sử dụng trong các môi trường bị giới hạn tài nguyên như:
- Những nơi mà giá mạng quá đắt hoặc băng thông thấp, hoặc độ tin cậy thấp
- Khi chạy trên một thiết bị nhúng bị giới hạn về tài nguyên tốc độ và bộ nhớ
- Dạng truyền message cung cấp/thuê bao (publish/subcribe) cung cấp việc truyền tin phân tán 1- nhiều
- Việc truyền message là luôn không quan tâm đến nội dung truyền
- Dựa trên nền TCP/IP để cung cấp đường truyền
- Có 3 loại QoS được đưa ra:
+ "Hầu như chỉ 1 lần " : "At most once", message được truyền nhận dựa hoàn toàn vào tính tin cận của TCP/IP Việc mất hoặc lặp message có thể xảy
ra Ở QoS này, có thể ví dụ 1 trường hợp sử dụng: như trong môi trừong sensor mà việc mất 1 gói dữ liệu tại 1 thời điểm không ảnh hưởng đến toàn
bộ quá trình
Trang 34+ "Ít nhất 1 lần" : "At least once", các message được đảm bảo nhận được nhưng có thể xảy ra lặp
+ "Chính xác chỉ 1 lần" : "Exactly once", message được đảm bảo đến nơi đúng 1 lần Ở level này, các hệ thống thanh toán, nơi mà việc lặp hay mất message có thể gây ra việc tính tiền bị sai
- Dữ liệu bao bọc dữ liệu truyền (overhead) nhỏ (độ dài cố định luôn là 2 byte), and là gia thức giảm đến mức tối thiểu traffic đường truyền
- Một cơ chế để thông báo đến các thuê bao khi đường truyền bị đứt bất thường, sử dụng Last Will và Testament feature
- Light sensor liên tục gửi dữ liệu về broker
- Ứng dụng điều khiển tòa nhà nhận dữ liệu từ broker để quyết định trạng thái các thiết bị trong nhà
- Ứng dụng gửi tín hiệu điều khiển actor node thông qua broker
Hình 2 1 Ví dụ về kết nối trong mạng lưới MQTT [4]
2.1.2 Mô hình MQTT
Các thành phần chính của MQTT là clients, servers (=brokers), sessions, subscriptions và topics
Trang 35Hình 2 2 Mô hình cơ bản của giao thức MQTT [4]
- MQTT client (publisher, subscriber): Client thực hiện subscribe đến topics
để publish và receive các gói tin
- MQTT server (broker): Servers thực hiện run các topic, đồng thời nhận subscriptions từ clients yêu cầu các topics, nhận các messages từ clients và forward chúng
- Topic: Về mặt kỹ thuật, topics là các hàng đợi chứa message Về logic, topics cho phép clients trao đổi thông tin và dữ liệu
- Session: Một session được định nghĩa là kết nối từ client đến server Tất cả các giao tiếp giữa client và server đều là 1 phần của session
- Subscription: Không giống như sessions, subscription về mặt logic là kết nối
từ client đến topic Khi thực hiện subscribed đến topic, client có thể trao đổi messages với topic Subscriptions có thể ở trạng thái ‘transient’ hoặc
‘durable’, phụ thuộc vào cờ clean session trong gói Connect
- Message: Messages là các đơn vị dữ liệu được trao đổi giữa các topic clients
Trang 36Bảng 2 1 Header cố định
Byte 1 Loại message Cờ DUP QoS level RETAIN
Trong đó:
- Byte 1 : Chứa loại Message và các cờ (DUP, QoS level, and RETAIN)
- Byte 2 : (Ít nhất 1 byte) quy định độ dài còn lại
CONNECT 1 Client yêu cầu kết nối đến Server
CONNACK 2 Kết nối được chấp nhận
PUBLISH 3 Xuất bản message
PUBACK 4 Xuất bản message được chấp nhận
PUBREC 5 Xuất bản được nhận (đảm bảo nhận được part 1) PUBREL 6 Xuất bản release (đảm bảo nhận được part 2) PUBCOMP 7 Xuất bản hoàn thành (đảm bảo nhận được part 3) SUBSCRIBE 8 Yêu cầu subcribe từ client
SUBACK 9 Yêu cầu subcriber được chấp nhận
UNSUBSCRIBE 10 Yêu cầu unsubcribe
UNSUBACK 11 Yêu cầu unsubcribe được chấp nhận
PINGREQ 12 Request PING
PINGRESP 13 Response PING
DISCONNECT 14 Client đang mất kết nối
Reserved 15 Reserved
Trang 37- DUP : Vị trí byte 1, bit 3
Cờ này được bật khi client hoặc server đang cố chuyển lại một gói PUBLISH, PUBREL, SUBSCRIBE hoặc UNSUBSCRIBE Giá trị này được sử dụng trong các mesage mà có QoSS lớn hơn 0 và yêu cầu ACK Khi bit DUP được set, phần header thay đổi sẽ chứa Message ID Nhìn vào giá trị này sẽ biết được gói tin đã nhận được trước đó hay không Nó không nên sử dụng để tin ngay rằng có duplicates hay không
- QoS : Vị trí byte 1, bits 2-1
Cờ này sẽ cho biết độ đảm bảo việc nhận message PUBLISH Giá trị của QoS được miêu tả trong bảng 2.4
Bảng 2 4 Giá trị QoS Giá trị QoS bit 2 bit 1 Miêu tả
0 0 0 Cùng lắm là 1 lần Gửi rồi quên ngay <=1
1 0 1 Ít nhất 1 lần Xác nhận bằng ACK >=1
2 1 0 Chính xác 1 lần Nhận đảm bảo =1
- RETAIN: Vị trí byte 1, bit 0
Cờ này chỉ được sử dụng ở message PUBLISH Khi client gửi 1 message PUBLISH đến server, nếu cờ Retain được set (1), thì server phải hiểu rằng nên giữ
Trang 38message này ngay cả sau khi chuyển nó đến các subcribers hiện tại Khi có 1 subcription mới được thiết lập trên 1 topic, message cuối cùng của topic đó nên được gửi đến subscriber với 1 trường Retain được set trong header Nếu không có messsage nào còn, thì không cần gửi gì hết
Trường này sẽ có ích khi publisher gửi message để báo "report bằng ngoại lệ", thỉnh thoảng là nơi giữa các message Điều này cho phép những subcribers mới nhanh chóng nhận dữ cần thiết Trường hợp mà server chuyển tiếp nội dung vừa nhận được từ một Publisher thì trường Retain sẽ không được set Điều này sẽ giúp phân biệt được message có từ trước với message mới được publish lên Message Retained sẽ được giữ thậm chí sau khi restart lại server Server sẽ xóa message được retained nếu nó nhận được một message với payload bằng zero
- Độ dài còn lại Vị trí: byte 2
Miêu tả độ dài bao gồm cả phần header và payload có trong message Việc encoding với độ dài thay đổi sử dụng 1 byte để miêu tả độ dài, vì thế độ dài tối đa
sẽ là 127 Những message dài hơn sẽ được miêu tả theo cách sau 7 bít được dùng
để miêu tả giá trị, bít còn lại dùng để miêu tả phía sau còn byte nào miêu tả trường này hay không Mỗi byte tiếp sau đó cũng như vậy 7 bit để lưu giá trị, 1 bít gọi là bit tiếp tục Giá trị được tính bằng cách nhân giá trị được diên tả bởi 7 bit và lũy thừa tăng dần của 128 Ví dụ miêu tả độ Remain Length = 64, ta chỉ cần 1 byte, trong đó 7 bytes để miêu tả giá trị 64, 1 bit còn lại bằng 0 Một ví dụ nữa, giá trị là
321 chẳng hạn 321 = 65*128^0 + 2* 128^1, ta cần 2 byte để biểu diễn Byte đầu chứa giá trị 65 trong 7 bit và bit còn lại là 1 Byte thứ 2 chứa giá trị 2 ở 7 bit và 1 bit chứa giá trị bằng 0
Trường này được biểu diễn tối đa trong 4 byte Tức là cho độ dài cho phép sẽ
là đến 268 435 455 (256 MB)