ĐẠI HỌC BÁCH KHOA HÀ NỘI TRƯỜNG ĐIỆN ĐIỆN TỬ BỘ MÔN KỸ THUẬT ĐO VÀ TIN HỌC CÔNG NGHIỆP MẠNG VÀ CÁC GIAO THỨC TRONG IOT ĐỀ TÀI Triển khai một hệ thống cảm biến với mục đ.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Trang 1ĐẠI HỌC BÁCH KHOA HÀ NỘI
TRƯỜNG ĐIỆN - ĐIỆN TỬ
BỘ MÔN KỸ THUẬT ĐO VÀ TIN HỌC CÔNG NGHIỆP
*******************************
MẠNG VÀ CÁC GIAO THỨC TRONG IOT
ĐỀ TÀI: Triển khai một hệ thống cảm biến với mục đích: Đếm số lượng lượt khách dừng lại xem sản phẩm và thời gian khách lưu lại tại sản phẩm đó.
1
Trang 2Hà Nội – 2022
Nội dung
1.1 Yêu cầu chung: 6
1.2 Yêu cầu cần đạt : 6
1.3 Các bước cần thực hiện: 7
3.1 Phân tích yêu cầu và đề xuất giải pháp 10
3.1.1 Node cảm biến: 10
1.2 MQTT Server 10
1.3 MQTT Client: 11
3.2 Kiến trúc của hệ thống 11
3.2.1 Mô hình Client-Sever 11
3.2.2 Sơ đồ khối kiến trúc hệ thống 13
3.2.3 Một số vấn đề, khái niệm liên quan 14
3.2.3.1 Giao thức MQTT 14
3.2.3.2 MQTT Server (Broker) 15
3.2.3.3 MQTT client 16
3.4.2.4 Bảo mật trong giao thức MQTT 16
3.3 Triển khai dự án 20
3.3.1 Node cảm biến 20
3.3.1.1 Cảm biến hồng ngoại thụ động PIR 20
3.3.1.2 ESP32 NodeMCU 21
3.3.1.3 Thiết kế node cảm biến: 23
3.3.1.4 Lập trình node cảm biến: 23
3.3.2 MQTT Server 23
3.3.2.1 Mosquitto 23
3.3.2.2 Cài đặt sử dụng và thiết lập bảo mật 24
3.3.3 MQTT Client 28
3.3.3.1 MIT APP INVENTOR 28
Phần 4: Đánh giá, kiểm tra 33
Phần 5: Kết luận 33
Phần 6: Tài liệu tham khảo 34
2
Trang 4LỜI NÓI ĐẦU
Internet vạn vật (IoTs) đang phát triển với tốc độ nhanh chóng và ngày càng trởnên quan trọng đối mọi lĩnh vực Để khai thác một cách hiệu quả sức mạnh của IoT,chúng ta cần hiểu nó là gì, hoạt động như thế nào và làm cách nào để vận dụng IoTtrong các ứng dụng và mô hình kinh doanh Trong môn học Mạng và các giao thứcIoT, chúng em đã được học về cách thức hoạt động của IoTs, về các mạng IoTs vàcách mà các “things” kết nối trong mạng IoTs cũng như việc xử lý thông tin cục bộ và
từ xa (Cloud) Bên cạnh đó, chúng em được tìm hiểu về các kiểu kết nối, mô hìnhphân lớp của các mạng cũng như các giao thức và chuẩn trong IoTs
Và để ứng dụng những kiến thức được giảng dạy ở trên lớp, nhóm chúng em đãcùng nhau thực hiện Project do thầy giao “Thiết kế hệ thống chat thông qua mạngLAN (hoặc Internet)
4
Trang 5Danh mục hình ảnh
5
Trang 6Phần 1: Yêu cầu, mục tiêu, kết quả cần đạt
1.1 Yêu cầu chung:
Hình 1: Mô hình hệ thống
Cấu trúc hệ thống được thiết kế bao gồm:
Các nút cảm biến PIR có kết nối Wifi
Access point để gần các nút cảm biến
Gateway để kết nối Internet
MQTT server để nhận thông tin từ cảm biến và xử lý thông tin nếu cần thiết
Các client là các App hoặc phần mềm trên PC để nhận thông báo sự kiện khi cómột khách đến và khi khách rời đi (ví dụ: sự kiện tại kệ số 1 có khách đến , tại
kệ số 3 khách rời đi….)
1.2 Yêu cầu cần đạt :
Triển khai hệ thống được mô tả như trên
Phần cảm biến có thể tích hợp các mô-đun, không nhất thiết phải làm PCB
Lập trình nút cảm biến và MQTT server
Hiển thị thông tin nhận được trên MQTT server để kiểm tra
Client trên App hoặc Máy tính
6
Trang 7 Lưu ý đến tính bảo mật thông tin khi truyền dữ liệu từ nút cảm biến đến MQTTserver
Lưu ý về năng lượng tiêu thụ của các nút cảm biến
1.3 Các bước cần thực hiện:
Phân tích yêu cầu
Tìm các giải pháp liên quan
Phân tích, đánh giá sơ bộ và lựa chọn giải pháp
Thiết kế sơ đồ kiến trúc mô tả luồng thông tin của hệ thống (có thể sử dụng môhình TCP/IP, MQTT publisher/broker… để mô tả )
Phân công nhiệm vụ cho các thành viên (cần phân công công liên quan đếnmạng cho tất cả các thành viên Ví dụ: nhóm làm nút cảm biến, nhóm làmMQTT server, Nhóm làm App…)
Các nhóm triển khai Lưu ý mỗi thành phần trong hệ thống khi được thiết kếcần có kịch bản đánh giá riêng thành phần đó trước khi tích hợp thành hệthống
- Test thử một số tính năng cơ bảnpublish/subscribe
Trung - Tìm hiểu về hoạt động của PIR,
ESP32
- Publish lên test server trênmqtt.eclipseprojects.io
7
Trang 8Phương - Tìm hiểu về MQTT Server &
MQTT Client
- Viết chương trình đơn giảnsubscribe 1 topic trên test server
2
Đức - Dịch địa chỉ Private IP sang
Public IP, test truyền nhận tin quaMQTT Server với public IP
- Tìm hiểu về phương thức bảomật của mosquitto
Trung - Test hoạt động của cảm biến
PIR, đo thời gian
Phương - Viết chương trình Client đơn
giản gửi nhận thông tin bằng MITApp Inventor
3&4
Đức - Tìm hiểu và thử nghiệm về bảo
mật TLS/SSL của mosquitto.Trung - Thử phương án sử dụng cảm
- Sửa lại giao diện hiển thị thêm
số lượng bản tin nhận được và nộidung mỗi bản tin
8
Trang 10Phần 3: Phân tích, thiết kế3.1 Phân tích yêu cầu và đề xuất giải pháp.
3.1.1 Node cảm biến:
Yêu cầu:
- Node cảm biến sử dụng cảm biến PIR và kết nối với WiFi
- Node cảm biến đếm số lượng khách hàng dừng lại ở mỗi sản phẩm và thời gianmỗi khách hàng dừng lại ở mỗi sản phẩm đó
- Phải chú ý đến vấn đề năng lượng của node cảm biến (không bắt buộc tối ưunhưng phải tính toán được)
Đề xuất:
- Sử dụng ESP32 NodeMCU tích hợp sẵn Wifi và hỗ trợ trên Arduino IDE
- Cảm biến PIR để phát hiện có người và sử dụng timer để đo thời gian
- MCU ở chế độ deepsleep và sử dụng ngắt ngoài để wake up khi phát hiệnngười đến
- Đối với mỗi lượt dừng lại MCU sẽ gửi đi 1 bản tin => số lượt người là số bảntin được gửi đi
- Nội dung bản tin được gửi đi là thời gian dừng lại mỗi lượt
- MCU gửi dữ liệu qua gateway lên Internet
Trang 11 Sử dụng Mosquitto - là một MQTT Broker mã nguồn mở Mosquitto có một thưviện viết bằng ngôn ngữ C để triển khai các MQTT Client và có thể dễ dàng sửdụng (libmosquitto)
Dùng kỹ thuật NAT để dịch địa chỉ Private IP sang Public IP
Hiển thị được số lượng người và thời gian người đó xem sản phẩm
3.2 Kiến trúc của hệ thống.
3.2.1 Mô hình Client-Sever.
Client-Server là mô hình mạng máy tính bao gồm 2 thành phần chính là máy khách(Client) và máy chủ (Server) Trong mô hình này, Server là nơi lưu trữ tài nguyên, càiđặt các chương trình dịch vụ và thực hiện các yêu cầu của Client Client đón vai trògửi yêu cầu đến Server Client gồm máy tính và thiết bị điện tử nói chung
11
Hình 2: Mô hình kết nối Client-Server
Trang 12Trên thực tế thì một Server có thể được nối tới nhiều Server khác nhằm làm việc hiệuquả và nhanh hơn
Hoạt động: Khi nhận được 1 yêu cầu từ Client, Server này có thể gửi tiếp yêu cầu vừa
nhận được cho Server khác ví dụ như Database Server vì bản thân nó không thể xử lýyêu cầu này được Máy Server có thể thi hành các nhiệm vụ đơn giản hoặc phức tạp
Ưu điểm của Client Server :
Client Server có khả năng chống quá tải mạng
Client Server đảm bảo toàn vẹn dữ liệu khi có sự cố xảy ra
Trang 13Client Server đảm bảo toàn vẹn dữ liệu khi có sự cố xảy ra.
Ví dụ :
Web Server: Người dùng nhập địa chỉ Website => Client gửi yêu cầu đến Web
Server => Web Server gửi toàn bộ nội dung của Website về cho Client
Mail Server: Người dùng soạn mail => Client gửi đến mail Server => mail
Server tiếp nhận, lưu trữ, tìm kiếm địa chỉ email được gửi đến & gửi mail đi
File Server: File Server nhận tập tin từ phía Client, lưu trữ và truyền tập tin đi.
Người dùng có thể upload, download các tập tin lên Server qua giao thức FTPhay Web Browse
Nhược điểm của Client Server là gì ?
Cần bảo trì, bảo dưỡng Server thường xuyên
Khả năng bảo mật thông tin mạng là một hạn chế nữa của Client Server Bởi vì,nguyên lý hoạt động của Client Server là trao đổi dữ liệu giữa Server và Client
ở 2 khu vực địa lý khác nhau Trong quá trình trao đổi dữ liệu, khả năng thôngtin mạng bị lộ là điều dễ xảy ra Tuy nhiên trong đề tài của nhóm em khắc phụcnhược điểm bằng cách phía bên người nhận gửi bản tin đi, sẽ thêm bảo mậttheo RSA
3.2.2 Sơ đồ khối kiến trúc hệ thống
13
Trang 14Hình 2 Sơ đồ khối kiến trúc hệ thống
14
Trang 15Giao thức này hoạt động trên nền tảng TCP/IP MQTT được thiết kế cho các kết nốicho việc truyền tải dữ liệu cho các thiết bị ở xa, các thiết bị hay vi điều khiển nhỏ cótài nguyên hạn chế hoặc trong các ứng dụng có băng thông mạng bị hạn chế.
Ưu điểm của giao thức MQTT:
Truyền thông tin hiệu quả hơn
Tăng khả năng mở rộng
Giảm đáng kể tiêu thụ băng thông mạng
Rất phù hợp cho điều khiển và do thám
Tối đa hóa băng thông có sẵn
Chi phí thấp
Rất an toàn, bảo mật
Được sử dụng trong các ngành công nghiệp dầu khí, các công ty lớn nhưAmazon, Facebook, …
Tiết kiệm thời gian phát triển
Giao thức publish/subscribe thu thập nhiều dữ liệu hơn và tốn ít băng thônghơn so với giao thức cũ
3.2.3.2 MQTT Server (Broker)
MQTT Broker hay máy chủ mô giới được coi như trung tâm, nó là điểm giao của tất
cả các kết nối đến từ Client (Publisher/Subscriber)
Nhiệm vụ chính của Broker là nhận thông điệp (message) từ Publisher, xếp vào hàngđợi rồi chuyển đến một địa điểm cụ thể Nhiệm vụ phụ của Broker là nó có thể đảmnhận thêm một vài tính năng liên quan tới quá trình truyền thông như: bảo mậtmessage, lưu trữ message, logs, …
15
Trang 16Mô tả hoạt động của cơ chế Publish/SubscribeMQTT Broker được cung cấp dưới dạng mã nguồn mở hoặc các phiên bản thươngmại giúp người dùng có thể tự cài đặt và tạo broker riêng Ngoài ra ta cũng có thể sửdụng Broker trên điện toán đám mây với các nền tảng IOT như hive broker, amazon,
…
3.2.3.3 MQTT client
2 thành phần publisher và subscriber là đặc trưng tạo nên giao thức MQTT CácMQTT Client không kết nối trực tiếp với nhau, mọi gói dữ liệu được gửi đi đều thôngqua MQTT Broker
Trong một hệ thống sử dụng giao thức MQTT, nhiều node trạm (gọi là mqtt client gọi tắt là client) kết nối tới một MQTT server (gọi là broker) Mỗi client sẽ đăng kýmột vài kênh (topic), ví dụ như "/client1/channel1", "/client1/channel2" Quá trìnhđăng ký này gọi là "subscribe Mỗi client sẽ nhận được dữ liệu khi bất kỳ trạm nàokhác gửi dữ liệu vào kênh đã đăng ký Khi một client gởi dữ liệu tới kênh đó, gọi là
-"publish"
3.4.2.4 Bảo mật trong giao thức MQTT
Khi nói đến Internet of Things là nói đến sự kết nối internet của mọi vật từ tivi, tủlạnh, điều hòa cho đến xe cộ, máy móc… Và với sự gia tăng chóng mặt của các thiết
bị và dữ liệu, sự an toàn của các hệ thống IoTs luôn là vấn đề lớn; lỗ hỗng bảo mật củacác hệ thống thông minh hiện nay rất nhiều, tạo điều kiện cho tin tặc dễ dàng tấn công
và khai thác Vì vậy bảo mật cho Internet of Things là vấn đề cần quan tâm hàng đầu.Bài viết này sẽ giới thiệu về các nguyên tắc bảo mật dùng trong một hệ thống IoTsnói chung và giao thức MQTT nói riêng
16
Trang 17Bảo mật trong MQTT được chia thành nhiều lớp Mỗi lớp có tác dụng ngăn ngừacác kiểu tấn công khác nhau Giao thức MQTT được tạo ra với mục đích là cung cấpgiao thức truyền thông thực sự nhẹ và dễ sử dụng cho các ứng dụng Internet ofThings, vì vậy bản thân giao thức chỉ cung cấp một vài cơ chế bảo mật đơn giản.Nhưng khi triển khai một dự án thực tế đòi hỏi sự an toàn dữ liệu cao, thì các tiêuchuẩn bảo mật hiện đại khác sẽ được sử dụng Thông thường có 3 lớp bảo mật được
sử dụng:
Lớp mạng (Network layer): Sử dụng một mạng bảo mật vật lý hoặc công nghệ
VPN (virtual private network) làm nền tảng cho quá trình giao tiếp giữa cácClient và Broker nhằm cung cấp một kết nối an toàn và đáng tin cậy
Lớp giao vận (Transport layer): Với mục đích cung cấp tính bảo mật ở lớp này,
TLS/SSL đang được sử dụng rộng rãi để mã hóa dữ liệu Giao thức bảo mậtnày cung cấp sự an toàn cho dữ liệu nhằm đảm bảo không ai có thể đọc trộmnội dung trong quá trình truyền tin ngoài client và server, ngoài ra giao thứccòn sử dụng các chứng chỉ xác thực số nhằm xác thực thông tin ở cả hai phíaclient và server
Lớp ứng dụng (Application layer): Nếu ở lớp giao vận có thể đảm bảo rằng
thông tin liên lạc giữa Client và Server được mã hóa và có thể xác thực thôngtin lẫn nhau thì ở lớp ứng dụng giao thức MQTT cung cấp hình thức bảo mật
đó là sử dụng định danh máy khách (Client identifier) và thông tin đăng nhậpusername/password Việc triển khai các thuộc tính bảo mật này nhằm kiểm soátquyền truy cập của các client nằm trong quyền hạn của MQTT broker Ngay cảkhi không có mã hóa tầng giao vận, thì bảo mật lớp ứng dụng vẫn có khả nănggiúp cho thông tin truyền đi được bảo mật bằng cách sử dụng cơ chết mã hóanội dung gói tin (payload encryption)
Đối với quy mô và mục đích của dự án này ta chỉ tìm hiểu vào vấn đề bảo mật ở hailớp sau
Bảo mật lớp ứng dụng (Application Layer Sercurity)
a, Xác thực với User và Password:
Xác thực (authentication) là một phần của cơ chế bảo mật ở tầng giao vận và tầngứng dụng được sử dụng trong giao thức MQTT, là hành động nhằm xác nhận sự thậthay nguồn gốc của một thuộc tính của một đơn vị dữ liệu hoặc một thực thể nào
đó Khi nói đến xác thực trong giao thức MQTT, bản thân giao thức cung cấp cáctrường username (tên người dùng) và password (mật khẩu) trong gói tin CONNECT
từ client gửi đến broker Nghĩa là một client có khả năng gửi một username vàpassword khi kết nối đến MQTT broker
17
Trang 18CONNECT MessageTrường username là một chuỗi có định dạng UTF-8 và trường password là dữ liệunhị phân với kích thước tối đa là 65535 bytes Sự bất cập trong phiên bản MQTT v3.1
là sử dụng mật khẩu với 12 ký tự đã được bãi bỏ ở phiên bản MQTT v3.1.1 Ngoài raphiên bản này cũng định nghĩa rằng: một client có thể có username mà không cầnpassword nhưng không thể tồn tại trạng thái ngược lại Khi sử dụng xác thực bằng tênngười dùng và mật khẩu, MQTT broker sẽ đánh giá thông tin client dựa trên cơ chếxác thực đã được triễn khai và gửi trả về gói tin phản hồi gọi là CONNACK, trong đó
bao gồm một mã trạng thái gọi là return code.
CONNACK MessageCác mã trạng thái được sử dụng để phản hồi về client đối với xác thựcbằng username / password là:
18
Trang 19b Xác thực với Client Identifier:
Mỗi MQTT client đều có một mã nhận dạng duy nhất được gọi là client identifier.Tương tự như Username/Password, mã nhận dạng này cũng được cung cấp bởi clientkhi gửi một gói tin CONNECT đến broker, được cung cấp trong trường clientid Giátrị của trường có thể chứa tối đa 65535 ký tự, trường hợp thường được sử dụng trongthực tế để thể hiện giá trị của trường clientid là sử dụng chuẩn UUID gồm 36 ký tự đểtạo ra các giá trị random không trùng nhau hoặc sử dụng địa chỉ MAC của thiết bị Vàtrong gói tin phản hồi kết nối CONNACK, cũng sẽ bao gồm mã trạng thái, tất cả cáctrạng thái trả về được cho trong bảng sau:
Trong quá trình xác thực, mã nhận dạng của client thường được sử dụng để xác thựcbên cạnh tên người dùng và mật khẩu Mặc dù không phải là cách thức bảo mật tốt khi
sử dụng trong thực tiễn tuy nhiên đối với các hệ thống khép kín và ít thiết bị thì loạixác thực này cũng đủ để chúng ta cân nhắc sử dụng
Bảo mật lớp giao vận (Transport Layer Sercurity)
Trang 20Mosquitto, HiveMQ đều cho phép sử dụng TLS Port 8883 được chuẩn hóa để sửdụng cho kết nối MQTT có bảo mật Tên được đặt theo tổ chức IANA là “secure-mqtt” và port 8883 được dành riêng cho giao thức MQTT sử dụng TLS Tuy nhiên, dễđoán rằng có một nhược điểm khi sử dụng TLS cho giao thức MQTT đó là tăng tínhbảo mật đồng nghĩa với tiêu tốn năng lượng cho CPU nhiều hơn và quá trình giao tiếp
sẽ không mượt mà như mọi khi Mặc dù so với TCP thông thường, việc sử dụng CPUdành cho giao thức bảo mật TLS nhiều hơn không đáng kể nhưng đối với các thiết bịđược thiết kế dành cho một nhiệm vụ chuyên sâu nào đó rất hạn chế về tốc độ, bộnhớ hay băng thông kênh truyền thì đó là một vấn đề lớn Vì vậy kỹ thuật SessionResump thường được sử dụng để tăng hiệu suất khi sử dụng TLS, đây là một kỹ thuậtdùng để nối lại phiên làm việc cũ mà không cần bắt đầu lại tất cả các bước
“handshake”
3.3 Triển khai dự án
3.3.1 Node cảm biến
3.3.1.1 Cảm biến hồng ngoại thụ động PIR
Cảm Biến Thân Nhiệt Chuyển Động PIR SR505:
20