1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Nghiên cứu và thử nghiệm giao thức MQTT trong hệ thống IOT

72 1,8K 11

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 72
Dung lượng 0,94 MB

Nội dung

MỤC LỤC LỜI MỞ ĐẦU Trong năm gần khái niệm ngành công nghệ nhắc đến nhiều "Internet of Things" Khái niệm Internet of Things thực đưa vào năm 1999, mà người ta bắt đầu nhìn nhận tiềm xu hướng này, lúc mà rào cản giới hạn Internet, khoa học công nghệ dần khai phá Mặc dù khái niệm Internet of Things đưa từ lâu năm gần nhiều doanh nghiệp nhà khoa học để ý phát triển mạnh mẽ Các thiết bị IoT nhỏ, chúng trao đổi lượng thông tin nhỏ với nhau, nhiên giao thức truyền thống không phù hợp với giao tiếp IoT mà cần có giao thức tối ưu dành riêng cho IoT Nhận biết tầm quan trọng giao thức phát triển giới thông minh em chọn đồ án “Nghiên cứu thử nghiệm giao thức MQTT hệ thống IoT” để tìm hiểu giao thức MQTT cách thức hoạt động Đồ án bao gồm chương: Chương 1: Tổng quan đề tài Nêu rõ lý do, mục đích lựa chọn đề tài, ý nghĩa đề tài phát triển giới IoT Trình bày số giao thức truyền thông thường sử dụng Chương 2: Giao thức MQTT hệ thống IoT Trình bày hiểu biết giới IoT giao thức tảng sử dụng Đi sâu nghiên cứu tìm hiểu giao thức MQTT Chương 3: Thử nghiệm giao thức MQTT Thử nghiệm truyền nhận liệu giao thức MQTT phần mềm Python Em xin gửi lời cảm ơn chân thành đến thầy giáo Th.S Đinh Văn Nam hướng dẫn tận tình giúp đỡ em trình thực đồ án Trong trình thực đồ án tránh sai sót, em hy vọng nhận lời khuyên đóng góp thầy, cô bạn đọc Nghệ An, Ngày 20 tháng năm 2016 Sinh viên thực Trần Thị ThuậnTÓM TẮT ĐỒ ÁN Đồ án sâu tìm hiểu giao thức MQTT Giao thức MQTT sử dụng nhiều lĩnh vực công nghiệp khác đặc biệt hệ thống IoT Nó không kéo dài tuổi thọ pin mà cung cấp tin nhắn “vài trăm mili giây” Giao thức MQTT sử dụng băng thông thấp phù hợp với thiết bị có hạn chế tốc độ đường truyền độ tin cậy thấp, ứng dụng mạng có độ tin cậy cao cần tiết kiệm băng thông MQTT cho phép giao tiếp hai chiều, sử dụng kết nối TCP tạo từ client để kết nối client với broker Giao thức có mô hình publish/subscribe tin thiết kế ứng dụng sử dụng công nghệ M2M gọn nhẹ Chương trình sử dụng phần mềm lập trình Python để thử nghiệm trình publish/subscribe client broker Qua hiểu rõ giao thức MQTT trình hoạt động ABSTRACT This thesis was studied about protocol MQTT The MQTT protocol is used today throughout a variety of industries and IoT environments It’s to not only save battery life but also deliver messages in "the hundreds of milliseconds" MQTT's low bandwidth makes it ideal for constrained devices and unreliable networks, though it is often also used on reliable networks to preserve bandwidth MQTT enables bidirectional communication, uses a TCP connection initiated by the client to connect client and broker MQTT is a publish/subscribe messaging protocol designed for lightweight M2M communications Using Python programming software for testing process publish/ subscribe between client and broker Through that can better understand the protocol MQTT well as its operational processes DANH MỤC CÁC BẢNG BIỂU Bảng 2.1 Định dạng phần header cố định message 36 Bảng 2.2 Định dạng phần header thay đổi message CONNECT 38 Bảng 2.3 Các giá trị ý nghĩa mã rc 41 Bảng 2.4 Định dạng phần header cố định message CONNECT 42 Bảng 2.5 Ví dụ biểu diễn phần hesder thay đổi message CONNECT 43 Bảng 2.6 Định dạng phần header cố định message PUBLISH .46 Bảng 2.7 Header có độ dài thay đổi message PUBLISH .47 Bảng 2.8 Ví dụ phần header thay đổi message PUBLISH 47 Bảng 2.9 Định dạng phần header cố định message SUBSCRIBE 48 Bảng 2.10 Ví dụ phần header thay đổi với message ID 10 .48 DANH MỤC CÁC HÌNH VẼ Hình 1.1 Kiến trúc TCP/IP .3 Hình 1.2 Khuôn dạng UDP datagram Hình 1.3 Khuôn dạng TCP segment .6 Hình 1.4 Quá trình truyền liệu mô hình TCP/IP Hình 1.5 Các lớp mô hình OSI .9 Hình 1.6 Quá trình truyền liệu mô hình OSI 12 Hình 1.7 So sánh mô hình TCP/IP OSI 13 Hình 1.8 Mô hình OSI rút gọn 14 Hình 1.9 Mô hình Socket .14 Hình 2.1 Kiến trúc tham chiếu cho IoT 17 Hình 2.2 Kiến trúc lớp (hay ngăn xếp – Stack) kiến trúc Zigbee 25 Hình 2.3 Các mô hình mạng Zigbee .26 Hình 2.4 Các tầng nghi thức Bluetooth 28 Hình 2.5 Quá trình Subscribe client B client C 34 Hình 2.6 Quá trình Publish client A nhận liệu client B, C 34 Hình 3.1 Giao diện hệ điều hành Ubuntu .55 Hình 3.2 Giao diện Python Ubuntu .57 Hình 3.3 Kết trình publish thiết bị 61 Hình 3.4 Kết trình subscribe thiết bị 61 DANH SÁCH CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT MQTT Message Queuing Telemetry Transport Công nghệ truyền nhận tốc độ IoT Internet of Thing tức thời M2M Machine to Machine Internet vật TCP Transmission Control Protocol Máy đến Máy Giao thức điều khiển truyền IP Internet Protocol thông MAC Media Access Control Giao thức Internet UDP User Datagram Protocol Địa vật lý thiết bị Giao thức gói liệu người OSI Open Systems Interconnection dùng Mô hình tham chiếu kết nối CoAP Constrained Application Protocol HTTP Hyper Text Transfer Protocol HTTPS Hyper Text Transfer Protocol Secure Local Area Network GPRS General Packet Radio Service FTP File Transfer Protocol IEEE Institute of Electrical and Giao thức truyền tải siêu văn Mạng máy tính cục Dịch vụ liệu di động dạng gói Giao thức chuyển nhượng tập tin Electronics Engineers TLS Giao thức ràng buộc ứng dụng Phiên giao thức HTTP LAN SSL hệ thống mở Viện kỹ nghệ Điện Điện tử Secure Sockets Layer Giao thức bảo mật Transport Layer Security Giao thức an toàn tầng giao vận CHƯƠNG TỔNG QUAN VỀ ĐỀ TÀI 1.1 Giới thiệu đề tài 1.1.1 Lý chọn đề tài Giao thức MQTT giao thức quan trọng hệ thống IoT IoT nhằm đưa giới tiến tới kỹ thuật tiên tiến nhất, thông minh nhất, giới mà thiết bị đo lường đưa nhận xét xác Để thực giới thông minh việc tìm hiểu cách thức hoạt động giao tiếp thiết bị IoT quan trọng Nhận biết tầm quan trọng đó, đồ án em lựa chọn nghiên cứu giao thức MQTT nhằm giúp bạn đọc hiểu rõ giao thức vai trò IoT 1.1.2 Mục đích chọn đề tài Mục đích đề tài sâu nghiên cứu giao thức MQTT trình truyền nhận liệu thông qua giao thức Sự phát triển giới thông minh cần có giao thức phù hợp với thiết bị IoT, thiết bị IoT nhỏ, tiêu tốn công suất giao thức truyền nhận cần tiêu tốn lượng Giao thức MQTT ống dẫn luồng liệu nhị phân cho thiết bị IoT, giao thức thực quan trọng hoàn thiện giới IoT 1.1.3 Đối tượng phạm vi nghiên cứu Đối tượng nghiên cứu đồ án giao thức MQTT hệ thống IoT lập trình truyền nhận liệu thông qua giao thức MQTT phần mềm Python Phạm vi nghiên cứu trình giao tiếp M2M thông qua công nghệ kết nối Wifi M2M kết nối tất loại thiết bị máy móc hệ thống mạng, từ chúng giao tiếp với thông qua máy chủ trung tâm dựa đám mây doanh nghiệp sử hữu 1.1.4 Ý nghĩa khoa học ý nghĩa thực tiễn đề tài Ý nghĩa khoa học: Sự giao tiếp thiết bị M2M phụ thuộc vào giao thức MQTT Khi thiết bị M2M giao tiếp với cách dễ dàng tự động kết nối với làm việc thay cho người Từ xây dựng nên giới thông minh Một giới mà cảm biến đo lường đưa nhận xét xác môi trường, thiên tai, lũ lụt, gửi cho thông qua giao thức MQTT Ý nghĩa thực tiễn: Sự phát triển giao thức MQTT dẫn tới phát triển thiết bị M2M đẩy nhanh hoàn thiện giới IoT IoT thay đổi hoàn toàn cách sống người tương lai không xa Khi vật "Internet hóa" người dùng điều khiển chúng từ nơi nào, không bị giới hạn mặt không gian thời gian cần thiết bị thông minh có kết nối Internet Internet of Thing chìa khóa thành công tương lai 1.2 Một số giao thức sử dụng truyền thông Một máy tính tương tác với giới thông qua nhiều ứng dụng Những ứng dụng thực nhiệm vụ cụ thể quản lý liệu vào Nếu máy tính phần hệ thống mạng, số ứng dụng giao tiếp với ứng dụng máy tính khác thuộc hệ thống mạng Bộ giao thức mạng hệ thống quy định chung giúp xác định trình truyền liệu phức tạp Dữ liệu từ ứng dụng máy này, qua phần cứng mạng máy, tới phận trung gian đến nơi nhận, thông qua phần cứng máy tính đích tới ứng dụng 1.2.1 Mô hình TCP/IP TCP/IP viết tắt Transmission Control Protocol (Giao thức Điều Khiển Truyền Thông) / Internet Protocol (Giao thức Internet) TCP/IP giao thức (bao gồm nhiều giao thức) hỗ trợ việc truyền thông máy tính thiết bị tương tự mạng TCP/IP giao thức có vai trò xác định trình liên lạc mạng quan trọng định nghĩa “hình dạng” đơn vị liệu thông tin chứa để máy tính đích dịch thông tin cách xác TCP/IP giao thức liên quan tạo hệ thống hoàn chỉnh quản lý trình liệu xử lý, chuyển nhận mạng sử dụng TCP/IP Một hệ thống giao thức liên quan, chẳng hạn TCP/IP, gọi giao thức Thực tế trình định dạng xử lý liệu TCP/IP thực lọc hãng sản xuất Một chuẩn TCP/IP hệ thống quy định quản lý việc trao đổi mạng TCP/IP Bộ lọc TCP/IP phần mềm có chức cho phép máy tính hoà vào mạng TCP/IP Các chức TCP/IP: Một hệ thống giao thức TCP/IP phải đảm bảo khả thực công việc sau: - Cắt thông tin thành gói liệu để dễ dàng qua phận truyền tải trung gian - Tương tác với phần cứng adapter mạng - Xác định địa nguồn đích: Máy tính gửi thông tin phải xác định nơi gửi đến Máy tính đích phải nhận đâu thông tin gửi cho - Định tuyến: Hệ thống phải có khả hướng liệu tới tiểu mạng, cho dù tiểu mạng nguồn đích khác mặt vật lý - Kiểm tra lỗi, kiểm soát giao thông xác nhận: Đối với phương tiện truyền thông tin cậy, máy tính gửi nhận phải xác định sửa chữa lỗi trình vận chuyển liệu - Chấp nhận liệu từ ứng dụng truyền tới mạng đích Để thực công việc trên, người sáng tạo TCP/IP chia thành phần riêng biệt, theo lý thuyết, hoạt động độc lập với Mỗi thành phần chịu trách nhiệm riêng biệt hệ thống mạng 1.2.1.1 Kiến trúc TCP/IP Hình 1.1 Kiến trúc TCP/IP Tầng liên kết mạng (Network Access Layer): Tầng liên kết (còn gọi tầng liên kết liệu tầng giao thiếp mạng) tầng thấp mô hình TCP/IP, bao gồm thiết bị giao tiếp mạng chương trình cung cấp thông tin cần thiết để hoạt động, truy nhập đường truyền vật lý qua thiết bị giao tiếp mạng Tầng gồm thiết bị phần cứng vật lí chẳng hạn Card Mạng Cáp Mạng Card mạng chẳng hạn card Ethernet chứa số HEX 12 kí tự (00-18-3703-C0-F4) gọi địa MAC hay địa truy nhập phương tiện MAC đóng vai trò quan trọng việc gán địa truyền liệu Một số giao thức thuộc tầng bao gồm: + ATM + Ethernet + Token Ring + FDDI + Frame Relay Tầng Internet (Internet Layer): Tầng Internet (hay gọi tầng mạng) xử lý trình truyền gói tin mạng bao gồm chức năng: gán địa chỉ, đóng gói định tuyến (Route) liệu giao thức quan trọng giao thức là: + IP: Có chức gán địa cho liệu trước truyền định tuyến chúng tới đích + ARP: Có chức biên dịch địa IP máy đích thành địa MAC + ICMP: Có chức thông báo lỗi trường hợp truyền liệu bị hỏng + IGMP: Có chức điều khiển truyền đa hướng (Multicast) Tầng giao vận (Transport Layer): 10 Uỷ quyền phần giao thức MQTT Nó cung cấp MQTT server Những ủy quyền phụ thuộc vào server làm MQTT server broker publish/subscribe, MQTT ủy quyền quy tắc điều khiển mà client kết nối đến server, topic mà client xuất đăng kí Nếu MQTT client quản lý server, nhiều quy tắc kiểm soát mà client quản lí khía cạnh khác server Số lượng client lớn, khả thi phép client riêng biệt Một MQTT server có phương pháp cho nhóm client theo cấu hình, nhóm Danh tính client, từ cách nhìn truy cập ủy quyền cho MQTT client Danh tính client nhận dạng client giống chủ yếu khác 58 CHƯƠNG THỬ NGHIỆM GIAO THỨC MQTT 3.1 Giới thiệu hệ điều hành Linux Linux hệ điều hành dạng UNIX ( Unix-like Operating System) chạy máy PC với điều khiển trung tâm (CPU) Intel 80386 hệ sau đó, hay vi xử lý trung tâm tương thích AMD, Cyrix Linux ngày chạy máy Macsintosh Sun Sparc Linux thoả mãn chuẩn POSIX.1 Linux viết lại toàn số không, tức không sử dụng dòng lệnh Unix, để tránh vấn đề quyền Linux, nhiên hoạt động Linux hoàn toàn dựa nguyên tắc hệ điều hành Unix Kiến trúc hệ điều hành Linux: • Hạt Nhân (Kernel) Là trung tâm điều khiển hệ điều hành Linux chứa mã nguồn điều khiển hoạt động toàn hệ thống Hạt nhân phát triển không ngừng, thường có hai phiên nhất, để phát triển ổn định Kernel thiết kế theo dạng module, kích thước thật Kernel nhỏ Chúng tải phận cần thiết lên nhớ, phận khác tải lên có yêu cầu sử dụng Do không sử dụng lãng phí nhớ Kernel Linux truy xuất tới toàn tính phần cứng máy tính Ngoài ra, yêu cầu chương trình cần nhiều nhớ, hệ thống có nhớ, hệ điều hành sử dụng không gian hoán đổi đĩa (Swap pace) để lưu trữ liệu xử lý chương trình Bên cạnh Linux hổ trợ đặc tính sau: - Bảo vệ vùng nhớ tiến trình, điều không cho phép tiến trình làm tắt toàn hệ thống - Chỉ tải chương trình có yêu cầu • Shell Shell cung cấp tập lệnh cho người dùng thao tác với kernel để thực công việc Shell đọc lệnh từ người dùng xử lý Ngoài ra, Shell cung cấp đặc tính như: chuyển hướng xuất nhập, ngôn ngữ lệnh để tạo file lệnh tương tự file.bat Có nhiều loại Shell dùng Linux Điểm quan trọng để phân biệt 59 shell với lệnh shell Ví dụ C shell sử dụng lệnh tương tự ngôn ngữ C, Bourne shell dùng ngôn ngữ lệnh khác Shell sử dụng Linux GNU Bourne Again Shell Shell shell phát triển từ Bourne shell Là shell sử dụng hệ thống Unix, với nhiều tính như: điều khiển tiến trình, lệnh history, tên file dài … Các tiện ích Được sử dụng thường xuyên Dùng cho nhiều thứ như: thao tác file, đĩa, nén, lưu file … Tiện ích Linux lệnh thao tác hay chương trình giao diện đồ họa Hầu hết sản phẩm GNU Linux có nhiều tiện ích như: trình biên dịch, trình gỡ lỗi soạn văn bản… Tiện ích người dùng hay hệ thống Chương trình ứng dụng Khác với tiện ích, chương trình word, hệ quản trị sở liệu chương trình ứng dụng có độ phức tạp lớn nhà sản xuất viết 3.2 Hệ điều hành Ubuntu Ubuntu hệ điều hành mã nguồn mở xây dựng xung quanh nhân Linux, cộng đồng phát triển Hệ điều hành Ubuntu có đầy đủ chức hệ điều hành đại, hoạt động tốt máy tính để bàn, máy tính xách tay hệ thống máy chủ Tuy đời chưa lâu, hệ điều hành có bước tiến nhảy vọt, sức lan toả lớn, sử dụng rộng rãi giới phổ biến Việt Nam Ubuntu có nhiều phiên để nhắm vào người sử dụng mục tiêu khác nhau:  Kubuntu dẫn xuất thức Ubuntu, sử dụng môi trường Desktop KDE thay GNOME Phiên phần dự án Ubuntu có tảng bên với Ubuntu 60  Edubuntu dẫn xuất thức Ubuntu, thiết kế dành cho việc sử dụng trường học Edubuntu bao gồm nhiều ứng dụng giáo dục  GCompris, KDE Edutainment Suite, Schooltool Calendar Xubuntu dẫn xuất thức Ubuntu, sử dụng môi trường Desktop Xfce thay GNOME Phiên nhắm đến máy tính cấu hình không cao, hệ thống đặc biệt yêu cầu môi trường Desktop hiệu suất  cao, tốc độ nhanh Gobuntu dẫn xuất Ubuntu cho mong muốn hệ điều hành Desktop phần mềm tự Phiên loại bỏ driver có gói binary, bảo đảm không sử dụng phần mềm giới hạn việc hiệu chỉnh hay phân phối lại Cài đặt Ubuntu cung cấp tập hợp đầy đủ tính hoạt động từ cài đặt chuẩn, lại vừa vặn đĩa CD Có đĩa chạy trực tiếp đĩa cài đặt truyền thống cho lần phát hành CD chạy trực tiếp cho phép người dùng xem xét phần cứng họ có tương thích với hệ điều hành hay không trước cài đặt lên đĩa cứng Đĩa Ubuntu, Edubuntu gửi miễn phí cho yêu cầu, tập tin ảnh đĩa có sẵn để tải Ubuntu chạy cần 256 MB RAM, cài đặt lên đĩa cứng, chiếm 3GB dung lượng đĩa trống Quá trình cài đặt Ubuntu sử dụng giao diện đồ họa, tốc độ cài đặt nhanh hay chậm tuỳ thuộc vào cấu hình máy tính, trung bình từ 20 – 30 phút Giao diện 61 Hình 3.1 Giao diện hệ điều hành Ubuntu Ubuntu sử dụng giao diện đồ họa thân thiện GNOME, qua hướng đến đơn giản hóa trình sử dụng Đặc điểm nhận thấy rõ giao diện mặc định Ubuntu màu chuyển nâu cam Ubuntu kèm với CompizFusion, để tạo bóng bẩy trình sử dụng Ứng dụng Mặc định, Ubuntu thiết kế để sau cài đặt sử dụng Đó ứng dụng văn phòng LibreOffice (từ phiên Ubuntu 10.04), trình duyệt Internet Firefox, trình quản lý thư điện tử Evolution, trình gửi tin nhắn tức thời (IM) Empathy, trình tải file torrent Tranmission trình biên tập đồ họa GIMP Về truyền thông đa phương tiện, Ubuntu tích hợp trình phát, rip CD Sound Juicer, trình quản lí thư viện nhạc Rhythmbox, trình xem phim Totem Movie Player trình ghi âm Sound Recorder Một số ứng dụng nhỏ chụp hình, máy tính toán, trò chơi trò chơi giải đố có sẵn Việc cài đặt ứng dụng Ubuntu có nhiều phương tiện, phổ biến dùng Sofware Center, Add/Remove Application Synaptic Package Manager Trong đó, Add/Remove Application cho phép người dùng tìm toàn ứng dụng miễn phí Ubuntu khuyên dùng cài đặt máy, Synaptic Package Manager công cụ nâng cao, giúp người dùng cài đặt gói ứng dụng Ngoài 62 số công cụ sử dụng dòng lệnh, apt-get, aptitude… Luôn có 17.000 ứng dụng khác có sẵn mạng để tải cài đặt 3.3 Ngôn ngữ lập trình Python Python ngôn ngữ lập trình thông dịch nhẹ Guido van Rossum tạo năm 1990 Python hoàn toàn tạo kiểu động dùng chế cấp phát nhớ tự động; tương tự Perl, Ruby, Scheme, Smalltalk, Tcl Python phát triển dự án mã mở, tổ chức phi lợi nhuận Python Software Foundation quản lý Python cài đặt nhiều hệ điều hành khác ubuntu, windows,… Python ngôn ngữ lập trình động với nhiều tính sử dụng loạt ứng dụng Là ngôn ngữ kịch hướng đối tượng (objectoriented scripting language) Không vậy, ngôn ngữ cấp cao có khả thông dịch (interpreted language) có tính tương tác (interactive language) cao Hình 3.2 Giao diện Python Ubuntu Nhờ chức thông dịch mà trình thông dịch (Interpreter) Python xử lý lệnh thời điểm chạy chương trình (runtime) Nhờ mà ta không cần biên 63 dịch chương trình trước thực (tương tự Perl PHP) Tính tương tác Python giúp ta tương tác trực tiếp với trình thông dịch dấu nhắc lệnh Cụ thể: Ta thực lệnh cách trực tiếp dấu nhắc Python Python hỗ trợ mạnh cho phong cách lập trình hướng đối tượng kỹ thuật lập trình gói mã đối tượng Mặc dù Python xem ngôn ngữ lập trình dành cho làm quen với việc lập trình máy tính, hỗ trợ mạnh cho việc phát triển nhiều loại ứng dụng khác nhau, từ chương trình xử lý văn đơn giản đến ứng dụng web, chương trình game,… Ưu điểm python: - Dễ dàng để tìm hiểu, đọc trì: Cú pháp python đơn giản Nó dễ dàng để tìm hiểu đọc Mã nhìn thấy nhiều dễ dàng - để trì Một tiêu chuẩn thư viện mạnh mẽ ngôn ngữ phát triển hệ thống (chẳng hạn - C, C ++, Java) Chế độ tương tác: Python hỗ trợ cho chế độ tương tác cho phép thử nghiệm - tương tác gỡ lỗi đoạn mã Portable: Việc thực tiêu chuẩn Python viết di ANSI C, biên - dịch chạy tất tảng lớn sử dụng Extendable: Bạn thêm module mức độ thấp để thông dịch Python Những module cho phép lập trình để thêm vào tùy chỉnh công cụ - họ có hiệu Cơ sở liệu: Python cung cấp giao diện cho tất sở liệu thương mại - lớn GUI Programming: đơn giản nhanh chóng Python làm cho người dùng đồ họa hướng đối tượng tiêu chuẩn để Tk GUI API gọi Tkinter (Tkinter 2.x) cho phép chương trình Python để thực ảnh minh hoạ di động với - nhìn tự nhiên cảm nhận Khả mở rộng: chương trình phức tạp xây dựng python Tốc độ: Nó nhanh so với PHP Nhược điểm python: Không nhanh so với C, C ++ Java Python “switch” do…while Không có private, protected public 3.4 Cấu trúc số lệnh thư viện Python Client MQTT 64 Client() Mqtt=mqtt.Client(client_id="", clean_session=True, userdata=None, protocol=MQTTv31) client_id: Là giá trị toàn mạng lưới MQTT sử dụng, • sử dụng kết nối tới Broker Nếu giá trị client_id có độ dài họăc None, giá trị client_id ngẫu nhiên sinh Trong trường hợp • giá trị clean_session phải True clean_session: Một giá trị kiểu True/False, xác định kiểu clien Nếu True, broker xóa toàn thông tin client mà ngắt kết nối Nếu False, client có kiểu durable client thông tin đăng ký hàng đợi tin nhắn • tiếp tục mà client ngắt kết nối userdata: Người dùng định nghĩa liệu thuộc kiểu để kiểm tra tham số userdata hàm callback Nó cập nhật sau sử dụng hàm • user_data_set() protocol: Phiên MQTT sử dụng cho client Có thể là: MQTTv31 họăc MQTTv311 Connect() mqttc.connect(host, port = 1883, keepalive=60, bind_address="") • Hàm kết nối client tới broker host: Địa IP Broker port: Cổng sử dụng cho Broker Nếu bạn cài đặt Mosquitto cổng • mặc định 1883 Phần lớn broker khác sử dụng cổng keepalive: Chu kỳ lớn tính theo đơn vị giây (s) cho phép giao tiếp • với broker Nếu tin trao đổi, giá trị mà client gửi tin “ping message” tới broker Nó giúp broker biết xem client • “online” hay “offline” bind_address: Địa IP mạng để liên kết client tới loop() mqttc.loop(timeout=1.0,max_packets=1) Duy trì kết nối client tới broker Giá trị timeout không vượt giá trị keepalive Tham số max_packets khuyến cáo không nên sử dụng publish() publish(topic, payload=None, qos=0, retain=False) 65 Hàm sử dụng để client gửi tin (payload) tới broker vào topic thêm • • • • topic: Topic muốn publish tin payload: Giá trị truyền Ở mặc định None qos: Giá trị “quality of service level” sử dụng retain: Nếu set True, tin tin dạng “last known good” cho topic mà publish tới subscribe() subscribe(topic, qqos=0) Đăng kí tới topic nhiều topic với mức QoS muốn đăng kí on_connect() on_connect(client, userdata, rc) Được gọi broker phản hồi yêu cầu kết nối client • • client: đối tượng client cho callback userdata: Người dùng định nghĩa liệu thuộc kiểu để kiểm tra tham số userdata hàm callback Nó cập nhật sau sử dụng hàm • user_data_set() rc: kết kết nối: kết trả kết nối thành công, giá trị kết nối không thành công on_message() on_message(client, userdata, message) Hàm gọi có tin truyền tới Có nghĩa topic mà đăng kí có client khác publish liệu lên broker, broker gửi lại tới Các tham số tương tự hàm callback on_connect, nhiên với tham số message: có nghĩa đối tượng MQTTMessage Nó class với tham số: topic, payload, qos, retain on_publish() on_publish(client, userdats, mid) Được gọi tin nhắn gửi sử dụng hàm publish() hoàn thành việc truyền tới cho broker Đối với mức QoS 2, điều có nghĩa kết hợp hoàn thành Đối với QoS 0, điều có nghĩa tin nhắn gửi cho client 66 Hàm callback quan trọng hàm publish() trả thành công, nghĩa tin nhắn gửi on_subscribe() on_subscribe(client, userdata, mid, granted_qos) Được gọi broker đáp ứng yêu cầu đăng kí Biến mid phù hợp với biến mid trở từ hàm subscribe() tương ứng Biến granted_qos danh sách số nguyên cung cấp cho mức QoS broker cung cấp cho client đăng kí 3.5 Thử nghiệm truyền nhận liệu MQTT Python Kết trình publish liệu thiết bị với topic “demo/mqtt”, nội dung publish “truyền nhận liệu”, thời gian publish lần giây hình sau: Hình 3.3 Kết trình publish thiết bị với mức QoS Kết trình subscribe thiết bị lại sau: Hình 3.4 Kết trình subscribe thiết bị 67 Từ thực nghiệm truyền nhận ta thấy, thiết bị publish liệu lên thiết bị subscribe kênh nhận liệu Tuy nhiên trình publish subscribe có trễ đường truyền, liệu nhận bị chậm so với liệu publish Đối với mức QoS thời gian trễ từ lúc gửi đến lúc nhận gần Còn mức QoS thời gian trễ gấp đôi so với mức QoS Bởi trình truyền liệu với QoS có nhiều gói tin xác nhận cho thiết bị gửi thiết bị nhận thời gian liệu nhận lâu Ở trình thử nghiệm này, với mức QoS QoS trời gian trễ nằm khoảng 0.27 đến 0.28s, với mức QoS thời gian trễ nằm khoảng 0.55 đến 0.56s 68 KẾT LUẬN Giao thức MQTT giao thức quan trọng xây dựng phát triển hệ thống IoT Các thiết bị hệ sinh thái IoT tích hợp cảm biến để phát thay đổi nhiệt độ, ánh sáng, áp lực, âm thanh, chuyển động vị trí địa lí Chúng mắt đôi tai điện tử người sử dụng, với khả phát ghi lại thay đổi giới xung quanh Đa số thiết bị cảm biến mạng IoT sử dụng điện từ điện lưới gia dụng, có nhiều thành phần, đó, ví dụ chế tự động khóa cửa, phải sử dụng nguồn lượng pin Các thiết bị độc lập gửi nhận lượng thông tin nhỏ theo chu kì định sẵn Vì vậy, cần sử dụng giao thức MQTT để kết nối thiết bị phù hợp với việc tiêu tốn lượng băng thông, sử dụng pin thời lượng sử dụng thiết bị kéo dài lên tới năm hay chí thập kỉ Thực xong đồ án này, em hiểu rõ giao thức MQTT tảng giới IoT Sự phát triển giới IoT cần có giao thức phù hợp, giao thức MQTT giao thức phù hợp IoT 69 TÀI LIỆU THAM KHẢO [1] Hồ Hoàng Triết, Kỹ thuật mạng, Nhà xuất Thống Kê, Năm 2001 [2] Trần Công Hùng, Đinh Việt Hào, Kỹ thuật mạng máy tính, Học Viện Công Nghệ Bưu Chính Viễn Thông Tp.HCM, Năm 2002 [3] https://github.com/, truy cập ngày cuối 15/5/2016 [4] http://public.dhe.ibm.com/, truy cập ngày cuối 12/5/2016 [5] https://sanphandinh.github.io/, truy cập ngày cuối 16/5/2016 [6] www.eclipse.org/, truy cập ngày cuối 10/5/2016 [7] https://www.ibm.com/, truy cập ngày cuối 20/5/2016 70 PHỤ LỤC Chương trình publish: import paho.mqtt.client as mqtt import time import datetime def on_connect(client, userdata, rc): if rc == 0: print("Ket noi toi broker cong!") client.subscribe("demo/mqtt") else: print("Khong ket noi duoc toi broker") def on_message(client, userdata, msg): print(msg.topic +": "+str(msg.payload)) client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message client.connect("iot.eclipse.org", 1883, 60) client.loop_start() index = while True: index = index + time.sleep(2) client.publish("demo/mqtt", payload = "truyen nhan du lieu "+str(datetime.datetime.now().strftime("%H:%M:%S.%f")), qos = 2, retain = False) Chương trình subscribe: import paho.mqtt.client as mqtt import datetime def on_connect(client, userdata, flag, rc): print("rc: "+str(rc)) def on_message(client, userdata, msg): print(str(datetime.datetime.now().strftime("%H:%M:%S.%f")+" " +str(msg.qos)+" "+str(msg.payload)) def on_publish(client, userdata, mid): print("mid: "+str(mid)) def on_subscribe(client, userdata, mid, granted_qos): print("Subscribe: "+str(mid)+" "+str(granted_qos)) def on_log(client, userdata, level, string): print(string) mqttc = mqtt.Client() mqttc.on_connect = on_connect mqttc.on_message = on_message mqttc.on_publish = on_publish mqttc.on_subscribe = on_subcsribe client.connect("iot.eclipse.org", 1883, 60) 71 mqttc.subscribe("demo/mqtt", 0) mqttc.loop_forever() 72 ... giới IoT Trình bày số giao thức truyền thông thường sử dụng Chương 2: Giao thức MQTT hệ thống IoT Trình bày hiểu biết giới IoT giao thức tảng sử dụng Đi sâu nghiên cứu tìm hiểu giao thức MQTT. .. lượng Giao thức MQTT ống dẫn luồng liệu nhị phân cho thiết bị IoT, giao thức thực quan trọng hoàn thiện giới IoT 1.1.3 Đối tượng phạm vi nghiên cứu Đối tượng nghiên cứu đồ án giao thức MQTT hệ thống. .. sâu nghiên cứu giao thức MQTT trình truyền nhận liệu thông qua giao thức Sự phát triển giới thông minh cần có giao thức phù hợp với thiết bị IoT, thiết bị IoT nhỏ, tiêu tốn công suất giao thức

Ngày đăng: 17/06/2017, 13:41

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w