Giao thức MQTT và ứng dụng trong IOT cho giải pháp ngôi nhà thông minh (tt)Giao thức MQTT và ứng dụng trong IOT cho giải pháp ngôi nhà thông minh (tt)Giao thức MQTT và ứng dụng trong IOT cho giải pháp ngôi nhà thông minh (tt)Giao thức MQTT và ứng dụng trong IOT cho giải pháp ngôi nhà thông minh (tt)Giao thức MQTT và ứng dụng trong IOT cho giải pháp ngôi nhà thông minh (tt)Giao thức MQTT và ứng dụng trong IOT cho giải pháp ngôi nhà thông minh (tt)Giao thức MQTT và ứng dụng trong IOT cho giải pháp ngôi nhà thông minh (tt)Giao thức MQTT và ứng dụng trong IOT cho giải pháp ngôi nhà thông minh (tt)Giao thức MQTT và ứng dụng trong IOT cho giải pháp ngôi nhà thông minh (tt)Giao thức MQTT và ứng dụng trong IOT cho giải pháp ngôi nhà thông minh (tt)Giao thức MQTT và ứng dụng trong IOT cho giải pháp ngôi nhà thông minh (tt)Giao thức MQTT và ứng dụng trong IOT cho giải pháp ngôi nhà thông minh (tt)Giao thức MQTT và ứng dụng trong IOT cho giải pháp ngôi nhà thông minh (tt)
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
-LÊ 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
TÓM TẮT LUẬN VĂN THẠC SĨ KỸ THUẬT
HÀ NỘI – 2017
Luận văn được hoàn thành tại:
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Trang 2Người hướng dẫn khoa học: PGS.TS NGUYỄN TIẾN BAN
Phản biện 1:
Phản biện 2:
Luận văn đã được bảo vệ trước Hội đồng chấm luận văn thạc sĩ tại Học viện Công nghệ Bưu chính Viễn thông
Vào lục: giờ ngày tháng năm 2017
Có thể tìm hiểu luận văn tại:
‐ Thư viện của Học viện Công nghệ Bưu chính Viễn Thông
Trang 3MỞ ĐẦ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 4CHƯƠ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
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 hay đạ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
Trang 51.2 Công nghệ trong IoT
1.2.1 Công nghệ trong IoT
Các giao thức chính
‐ 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)
Giao thức truyền thông không dây
1.2.2 Đặc điểm của một 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:
‐ 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 [7]
‐ 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ù
‐ Lớp mạng (Network Layer)
Trang 6+ 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 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…
‐ 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
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
‐ Ứng dụng trong lĩnh vực vận tải
‐ Ứng dụng trong nông nghiệp
‐ Ứng dụng trong nhà thông minh
‐ Ứng dụng trong thành phố thông minh
‐ Ứng dụng trong lưới điện thông minh
1.3.2 Các thách thức trong việc nghiên cứu, triển khai IoT
‐ Chưa có ngôn ngữ chung
Hiện tại các thiết bị IoT, chúng phả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
Trang 7giả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
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 8CHƯƠ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)
2.1.2 Mô hình MQTT(Message Queuing Telemetry Transport)
Các thành phần chính của MQTT là clients, servers (=brokers), sessions, subscriptions và topics [8]
Hình 2 1 Mô hình cơ bản của giao thức MQTT
- MQTT client (publisher, subscriber): Client thực hiện subscribe đến topics để publish và receive các gói tin
Trang 9- 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
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
‐ Loại Message : vị trí byte 1, bits 7-4
‐ Các cờ: bit còn lại của byte đầu chứa các trường DUP, QoS và RETAIN
+ 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
Trang 10tin đã 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
+ 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ữ message 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
+ Độ 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
2.2.2 Câu lệnh của message
Bảng 2 2 Các lệnh của message
CONNECT 1 Client yêu cầu kết nối đến Server
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
DISCONNECT 14 Client đang mất kết nối
Trang 112.2.3 Quy trình truyền nhận dữ liệu chính trong MQTT
Trường hợp 1: Session và subscription được thiết lập với clean session flag = 1 (transient subscription)
Quy trình truyền nhận dữ liệu trong MQTT khi session flag = 1:
- Client và Server được kết nối qua giao thức TCP
- Client gửi gói tin CONNECT yêu cầu kết nối đến Server, clean session = 1 Đây là thời điểm đánh dấu session được thiết lập
- Server gởi gói CONNACK xác nhận thiết lập kết nối thành công
- Client thực hiện SUBSCRIBE đến topic XYZ Đây là thời điểm bắt đầu timeout của một subscription
- Server gởi gói SUBACK xác nhận quá trình subscription
- Client PUBLISH để gởi topic - message đến server
- Sau khi nhận đủ thông tin, client gửi gói UNSUBSCRIBE topic XYZ để kết thúc quá trình Subscribe
- Server trả về gói UNSUBACK
- Client gửi gói DISCONNECT để kết thúc session truyền thông
Trường hợp 2: Session và subscription được thiết lập với clean session flag = 0 (durable subscription)
Quy trình truyền nhận dữ liệu trong MQTT khi session flag = 0:
- Subscription lifetime đã được thiết lập trước
- Client và Server được kết nối qua giao thức TCP
- Client gửi gói tin CONNECT yêu cầu kết nối đến Server, clean session = 0 Đây là thời điểm đánh dấu session được thiết lập
- Server gởi gói CONNACK xác nhận thiết lập kết nối thành công
- Client PUBLISH để gởi topic - message đến server
‐ Client gửi gói DISCONNECT để kết thúc session truyền thông
2.3 So sánh những điểm cơ bản giữa hai chuẩn giao thức MQTT và CoAP
2.3.1 Điểm giống nhau giữa hai giao thức
MQTT và CoAP là hai giao thức triển vọng nhất trong IoT, chúng có những đặc điểm giống nhau như:
Trang 12- Là các chuẩn mở
- Phù hợp hơn HTTP đối với các môi trường bị hạn chế
- Cung cấp cơ chế truyền tin không đồng bộ
- Chạy trên IP (Internet Protocol)
- Có hàng loạt cách triển khai
2.3.2 Điểm khác nhau giữa hai giao thức
MQTT và CoAP đều hữu ích như các giao thức IoT, nhưng có các khác biệt cơ bản sau:
- MQTT là một giao thức truyền thông N-N để truyền các thông điệp giữa nhiều khách hàng thông qua broker trung tâm Nó tách riêng người sản suất producer
và người tiêu thụ consumer bằng cách cho phép các client gửi bản tin đi và có các broker quyết định đường đi và sao chép bản tin MQTT có một số hỗ trợ để duy trì bản tin, nhưng nó làm tốt nhất nhiệm vụ là bus truyền dữ liệu trực tiếp CoAP chủ yếu là giao thức 1-1 để truyền trạng thái thông tin giữa client và máy chủ Nó hỗ trợ quan sát tài nguyên, CoAP phù hợp nhất với mô hình state transfer (***) chứ không chỉ đơn thuần dựa trên các sự kiện
- Client MQTT tạo một kết nối TCP lâu dài đến broker Điều này thường không dành cho các thiết bị phía sau NAT Client và máy chủ CoAP đều gửi và nhận các gói tin UDP Trong các môi trường NAT, luồng hoặc cổng chuyển tiếp có thể được sử dụng để thông qua CoAP hoặc các thiết bị lần đầu tiên mở kết nối đến đầu cuối như LWM2M
- MQTT không hỗ trợ các nhãn bản tin với các loại hoặc dữ liệu khác để giúp client hiểu nó Bản tin MQTT có thể được sử dụng cho bất kì mục đích nào, nhưng tất cả các client phải biết định dạng bản tin để cho phép truyền thông CoAP ngược lại, nó hỗ trợ việc đàm phán nội dung và khám phá cho phép các thiết bị thăm dò nhau để tìm cách trao đổi dữ liệu
2.4 Kết luận chương
Chương 2 đã trình bày cho chúng ta phần nào hình dung được về khái niệm và
mô hình giao thức MQTT, một giao thức gởi dạng publish/subscribe sử dụng cho các thiết bị Internet of Things với băng thông thấp, độ tin cậy cao và khả năng được sử