1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

74 17 0

Đ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 74
Dung lượng 1,44 MB

Nội dung

TRƢỜNG ĐẠI HỌC VINH KHOA ĐIỆN TỬ VIỄN THÔNG ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC ĐỀ TÀI: NGHIÊN CỨU VÀ THỬ NGHIỆM GIAO THỨC MQTT TRONG HỆ THỐNG IOT Giảng viên hướng dẫn: ThS Đinh Văn Nam inh viên h hi n : Trần Thị Thuận : 52K - ĐTTT Mã số sinh viên : 1151083817 NGHỆ AN - 2016 I MỤC LỤC LỜI MỞ ĐẦU IV TÓM TẮT ĐỒ ÁN V DANH MỤC CÁC BẢNG BIỂU VI DANH MỤC CÁC HÌNH VẼ VII DANH SÁCH CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT VIII CHƢƠNG TỔNG QUAN VỀ ĐỀ TÀI 1.1 Giới thiệu đề tài 1.1.1 Lý chọn đề tài .1 1.1.2 Mục đích chọn đề tài 1.1.3 Đối tƣợng phạm vi nghiên cứu 1.1.4 Ý nghĩa khoa học ý nghĩa thực tiễn đề tài 1.2 Một số giao thức sử dụng truyền thông 1.2.1 Mơ hình TCP/IP 1.2.1.1 Kiến trúc TCP/IP .3 1.2.1.2 Quá trình truyền liệu mơ hình TCP/IP 1.2.3 Mơ hình OSI 1.2.3.1 Kiến trúc chức lớp mơ hình OSI 1.2.3.2 So sánh hai giao thức TCP/IP OSI .12 1.2.4 Truyền thông Socket .13 1.2.4.1 Định nghĩa .13 1.2.4.2 Nguyên lý hoạt động .15 CHƢƠNG GIAO THỨC MQTT TRONG HỆ THỐNG IOT 17 2.1 Hệ thống IoT (Internet of Things) 17 2.1.1 Định nghĩa .17 2.1.2 Kiến trúc tham chiếu .17 2.1.3 Phân loại thiết bị IoT phƣơng thức kết nối Internet 20 2.1.4 Các yêu cầu kiến trúc tham chiếu cho IoT 21 II 2.2 Nền tảng truyền thông IoT .23 2.2.1 Giao thức Zigbee .24 2.2.2 Giao thức Bluetooth 27 2.2.3 Công nghệ Wifi .30 2.3 Giao thức MQTT 33 2.3.1 Định nghĩa .33 2.3.2 Các đặc trƣng giao thức 35 2.3.3 Định dạng message 36 2.3.3.1 Message CONNECT – Client yêu cầu kết nối đến server 42 2.3.3.2 Message PUBLISH 46 2.3.3.3 Message SUBSCRIBE 47 2.3.4 Nguyên lý làm việc 49 2.3.5 Bảo mật MQTT .50 CHƢƠNG THỬ NGHIỆM GIAO THỨC MQTT .53 3.1 Giới thiệu hệ điều hành Linux 53 3.2 Hệ điều hành Ubuntu .54 3.3 Ngôn ngữ lập trình Python .56 3.4 Cấu trúc số lệnh thƣ viện Python Client MQTT 58 3.5 Thử nghiệm truyền nhận liệu MQTT Python 61 KẾT LUẬN .63 TÀI LIỆU THAM KHẢO 64 PHỤ LỤC 65 III LỜI MỞ ĐẦU Trong năm gần khái niệm ngành công nghệ đƣợc nhắc đến nhiều "Internet of Things" Khái niệm Internet of Things đƣợc thực đƣa vào năm 1999, mà ngƣời ta bắt đầu nhìn nhận đƣợc 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 đƣợc khai phá Mặc dù khái niệm Internet of Things đƣợc đƣa từ lâu nhƣng năm gần đƣợc nhiều doanh nghiệp nhƣ 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 đƣợc 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 đƣợc 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 đƣợc 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 khơng thể tránh đƣợc sai sót, em hy vọng nhận đƣợc lời khuyên đóng góp thầy, bạn đọc Nghệ An, Ngày 20 tháng năm 2016 Sinh viên thực Trần Thị Thuận IV TÓM TẮT ĐỒ ÁN Đồ án sâu tìm hiểu giao thức MQTT Giao thức MQTT đƣợc 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, đƣợc ứng dụng mạng có độ tin cậy cao nhƣng 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 đƣợc tạo từ client để kết nối client với broker Giao thức có mơ hình publish/subscribe tin đƣợc 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 nhƣ q 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 V 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 đƣợc 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 đƣợc 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 đƣợc 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 đƣợc với message ID 10 48 VI DANH MỤC CÁC HÌNH VẼ Hình 1.1 Kiến trúc TCP/IP Hình 1.2 Khn dạng UDP datagram Hình 1.3 Khn dạng TCP segment Hình 1.4 Q trình truyền liệu mơ hình TCP/IP Hình 1.5 Các lớp mơ hình OSI 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 VII DANH SÁCH CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT Message Queuing Telemetry Công nghệ truyền nhận tốc độ Transport tức thời IoT Internet of Thing Internet vật M2M Machine to Machine Máy đến Máy TCP Transmission Control Protocol Giao thức điều khiển truyền MQTT thông IP Internet Protocol Giao thức Internet MAC Media Access Control Địa vật lý thiết bị UDP User Datagram Protocol Giao thức gói liệu ngƣời dùng OSI Open Systems Interconnection Mơ hình tham chiếu kết nối hệ thống mở CoAP Constrained Application Protocol HTTP Hyper Text Transfer Protocol HTTPS Hyper Text Transfer Protocol Giao thức ràng buộc ứng dụng Giao thức truyền tải siêu văn Phiên giao thức HTTP Secure Mạng máy tính cục LAN Local Area Network GPRS General Packet Radio Service FTP File Transfer Protocol IEEE Institute of Electrical and Dịch vụ liệu di động dạng gói Giao thức chuyển nhƣợng tập tin Viện kỹ nghệ Điện Điện tử Electronics Engineers SSL TLS Secure Sockets Layer Giao thức bảo mật Transport Layer Security Giao thức an toàn tầng giao vận VIII 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 đƣợc giới thơng minh nhƣ 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 đƣợc 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 nhƣ 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 q 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 nhƣ ố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 hồn tồn cách sống ngƣời tƣơng lai không xa Khi vật đƣợc "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 q 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 hồn chỉnh quản lý q trình liệu đƣợc xử lý, chuyển nhận mạng sử dụng TCP/IP Một hệ thống giao thực chứng client với SSL, chứng danh tính client với mật Nó xác nhận cho khách hàng với mật đƣợc gửi client đến server tiêu đề giao thức MQTT Các server chọn để xác thực định danh client, ngƣời sử dụng ID, giấy chứng nhận với mật khẩu, phụ thuộc vào server Thông thƣờng server xác thực ngƣời dùng ID Xác nhận mật thông qua kết nối SSL đƣợc đảm bảo cách kiểm tra máy chủ, để tránh việc gửi mật rõ ràng Ủy quyền Uỷ quyền phần giao thức MQTT Nó đƣợc cung cấp MQTT server Những đƣợc ủ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 sốt mà client quản lí khía cạnh khác server Số lƣợng client lớn, khơng phải 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 nhƣng chủ yếu khác 52 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 nhƣ AMD, Cyrix Linux ngày cịn chạy máy Macsintosh Sun Sparc Linux thoả mãn chuẩn POSIX.1 Linux đƣợc viết lại toàn nhƣ 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 đƣợc 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 đƣợc phận cần thiết lên nhớ, phận khác đƣợ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 tồn tính phần cứng máy tính Ngồi ra, 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 hốn đổi đĩa (Swap pace) để lƣu trữ liệu xử lý chƣơng trình Bên cạnh Linux cịn 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 tồ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ý Ngồi ra, Shell cịn 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ự nhƣ file.bat Có nhiều loại Shell đƣợc dùng Linux Điểm quan trọng để phân biệt 53 shell với lệnh shell Ví dụ C shell sử dụng lệnh tƣơng tự nhƣ 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 đƣợc 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 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, nhƣng hệ điều hành có bƣớc tiến nhảy vọt, sức lan toả lớn, đƣợc 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, nhƣng sử dụng môi trƣờng Desktop KDE thay GNOME Phiên phần dự án Ubuntu có tảng bên dƣới với Ubuntu  Edubuntu dẫn xuất thức Ubuntu, đƣợc 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 nhƣ GCompris, KDE Edutainment Suite, Schooltool Calendar  Xubuntu dẫn xuất thức Ubuntu, nhƣng sử dụng mơi trƣờng 54 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, nhƣng 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 đƣợc 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 Hình 3.1 Giao diện hệ điều hành Ubuntu 55 Ubuntu sử dụng giao diện đồ họa thân thiện GNOME, qua hƣớng đến đơn giản hóa q 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 đƣợc thiết kế để sau cài đặt sử dụng đƣợc Đó ứ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ỏ nhƣ chụp hình, máy tính tố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 tồn ứng dụng miễn phí Ubuntu khuyên dùng cài đặt máy, cịn Synaptic Package Manager cơng cụ nâng cao, giúp ngƣời dùng cài đặt gói ứng dụng Ngồi cịn số cơng cụ sử dụng dịng lệnh, nhƣ apt-get, aptitude… Ln ln có 17.000 ứng dụng khác ln 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ự nhƣ Perl, Ruby, Scheme, Smalltalk, Tcl Python đƣợc phát triển dự án mã mở, tổ chức phi lợi nhuận Python Software Foundation quản lý Python đƣợc cài đặt nhiều hệ điều hành khác nhƣ ubuntu, windows,… Python ngơn ngữ lập trình động với nhiều tính đƣợc sử dụng loạt ứng dụng Là ngôn ngữ kịch hƣớng đối tƣợng (object56 oriented scripting language) Khơng vậy, cịn 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 dịch chƣơng trình trƣớc thực (tƣơng tự nhƣ 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 đƣợc 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, nhƣng 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 nhƣ C, C ++, Java) 57 - 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 đƣợc viết di ANSI C, biên dịch chạy hầu nhƣ 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 đƣợc 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 khơng có “switch” do…while - Khơng có private, protected public 3.4 Cấu trúc số lệnh thƣ viện Python Client MQTT 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, đƣợc 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 đƣợc 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 tồ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 58 đƣợc 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 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 đƣợc 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) đƣợc cho phép giao tiếp với broker Nếu khơng có tin đƣợc trao đổi, giá trị mà client gửi tin “ping message” tới broker Nó giúp broker biết đƣợc 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 đƣợc vƣợt giá trị keepalive Tham số max_packets đƣợc khuyến cáo không nên sử dụng publish() publish(topic, payload=None, qos=0, retain=False) Hàm đƣợc 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 đƣợc set True, tin tin dạng “last known good” cho topic mà publish tới 59 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 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, ngồi giá trị kết nối khơng thành cơng on_message() on_message(client, userdata, message) Hàm đƣợc gọi có tin đƣợc 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 đƣợc 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 hồn thành Đối với QoS 0, điều có nghĩa tin nhắn đƣợc gửi cho client Hàm callback quan trọng hàm publish() trả thành cơng, khơng có nghĩa tin nhắn đƣợc gửi on_subscribe() on_subscribe(client, userdata, mid, granted_qos) Đƣợc gọi broker đáp ứng yêu cầu đăng kí 60 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 nhƣ hình sau: Hình 3.3 Kết trình publish thiết bị với mức QoS Kết q trình subscribe thiết bị cịn lại nhƣ sau: Hình 3.4 Kết trình subscribe thiết bị 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 đƣợc liệu Tuy nhiên q trình publish subscribe có trễ đƣờng truyền, liệu nhận bị chậm so với liệu publish 61 Đối với mức QoS thời gian trễ từ lúc gửi đến lúc nhận gần nhƣ 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 đƣợc 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, cịn với mức QoS thời gian trễ nằm khoảng 0.55 đến 0.56s 62 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 đƣợc 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, nhƣng có nhiều thành phần, đó, ví dụ nhƣ chế tự động khóa cửa, phải sử dụng nguồn lƣợng nhƣ 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 nhƣ 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 63 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 64 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): 65 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) mqttc.subscribe("demo/mqtt", 0) mqttc.loop_forever() 66 " ... giới IoT Trình bày số giao thức truyền thơng thƣờng đƣợc 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 đƣợc sử dụng Đi sâu nghiên cứu tìm hiểu giao thức. .. lƣợng Giao thức MQTT nhƣ ố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ệ. .. sâu nghiên cứu giao thức MQTT q 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: 01/08/2021, 10:40

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w