Hướng Dẫn Cách Setup MQTT-Broker Trên Raspbery-Pi

<!--break-->

MQTT (Message Queuing Telemetry Transport) là một giao thức gửi dạng publish/subcribe sử dụng cho các thiết bị IOT (Internet Of Things) với băng thông thấp, độ tin cậy cao và khả năng được sử dụng trong các hệ thống mạng không ổn định. MQTT được định nghĩa rất nhiều, rất chi tiết trên google, chỉ cần lên google và search với từ khóa: MQTT, what is MQTT, MQTT mosquitto, v.v...

Ở bài viết này, mình sẽ không giải thích về MQTT vì nó có rất nhiều trên google, thay vào đó mình sẽ hướng dẫn các bạn cách setup 1 MQTT server tại nhà trên Raspberry để làm các dự án về Internet Of Things. Nó tồn tại hơn một thập kỷ nhưng nó thực sự được đông đảo người dùng biết đến khi có sự ra đời của M2M (máy truyền thông máy) và IOT (internet of things) thì giao thức này được sử dụng rộng rãi và phổ biến hơn.

Một số thuật ngữ:

Client: Bất kỳ nhà xuất bản hoặc người đăng ký nào kết nối với nhà môi giới tập trung qua mạng đều được coi là khách hàng. Điều quan trọng cần lưu ý là có các máy chủ và máy khách trong MQTT. Cả nhà xuất bản và người đăng ký đều được gọi là khách hàng vì họ kết nối với dịch vụ tập trung, khách hàng có thể liên tục hoặc tạm thời. Khách hàng liên tục duy trì một phiên với nhà môi giới trong khi khách hàng tạm thời không được nhà môi giới theo dõi. Khách hàng thường kết nối với nhà môi giới thông qua thư viện và SDK. Có hơn một tá thư viện có sẵn cho C, C ++, Go, Java, C #, PHP, Python, Node.js và Arduino.

Broker: Người môi giới là phần mềm nhận tất cả các tin nhắn từ các khách hàng xuất bản và gửi chúng đến các khách hàng đăng ký. Nó giữ kết nối với các khách hàng liên tục. Tùy thuộc vào người triển khai để quyết định cách tạo lớp môi giới có thể mở rộng. Một số triển khai thương mại của các nhà môi giới MQTT bao gồm HiveMQ, Xively, AWS IoT và Loop.

Topic: Một chủ đề trong MQTT là điểm cuối mà khách hàng kết nối. Nó hoạt động như nơi phân phối trung tâm để xuất bản và đăng ký tin nhắn. Trong MQTT, một chủ đề là một vị trí nổi tiếng cho nhà xuất bản và người đăng ký. Nó được tạo ra khi chúng ta thiết lập kết nối với nhà môi giới. Chủ đề là các chuỗi phân cấp đơn giản, được mã hóa bằng UTF-8, được phân cách bằng dấu gạch chéo. Người đăng ký có thể chọn đăng ký một chủ đề cụ thể hoặc tất cả các chủ đề phụ thông qua các ký tự đại diện.

Connection: MQTT có thể được sử dụng bởi các máy khách dựa trên TCP/IP. Cổng tiêu chuẩn được giới thiệu bởi các công ty môi giới năm 1883, không phải là một cổng an toàn. Những nhà môi giới hỗ trợ TLS / SSL thường sử dụng cổng 8883. Để liên lạc an toàn, khách hàng và nhà môi giới dựa vào chứng chỉ kỹ thuật số. AWS IoT là một trong những triển khai an toàn của MQTT, yêu cầu khách hàng sử dụng chứng chỉ X.509.

Nhiêu đó là quá nhiều rồi, bắt tay vào làm thôi.

I. Chuẩn Bị

  • Máy tính (tất nhiên rồi)
  • Mạng wifi đủ ổn định
  • Raspbery - Pi (mình xài model 3+)
  • Dây nguồn đầy đủ cho Pi

II. Bắt Đầu Setup

Bước 1: Đầu tiên bạn phải truy cập vào Pi, có thể truy cập từ xa bằng teamviewer hoặc remote connection hoặc bạn làm trực tiếp trên con Pi luôn, cái nào cũng được, ở đây mình sẽ remote con Pi thông qua mạng nội bộ.

Nhập tài khoản - mật khẩu, cái này mình setup từ đầu nên giờ cứ vô là mình nhập thôi, các bạn tìm trên mạng để chọn ra 1 cách truy cập phù hợp với bạn nha.

Giao diện khi mình truy cập vô thành công, mình xài hệ điều hành Raspbian.

Bước 2: bạn copy lệnh dưới đây và paste vào Terminal (nhớ mở Terminal lên trước nhé, update và upgrade nếu cần)

sudo apt-get install mosquitto -y
sudo apt-get install mosquitto-clients

tới như hình thì enter tiếp cho nó chạy nha.

Bước 3: copy tiếp đoạn này paste vào terminal và ấn enter để truy cập.

sudo nano /etc/mosquitto/mosquitto.conf

sau khi enter truy cập vào sẽ hiện thị như bên dưới, xóa hết nó đi 

đúng vậy, xóa hết trên màn hình đi và paste cái đoạn dưới này vô nè

# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example
 
pid_file /var/run/mosquitto.pid
 
persistence true
persistence_location /var/lib/mosquitto/
 
log_dest file /var/log/mosquitto/mosquitto.log
 
allow_anonymous false
password_file /etc/mosquitto/pwfile
listener 1883

paste xong các bạn bấm tổ hợp Ctrl + X để lưu lại, sau đó ấn Y trên bàn phím (chọn Yes), sau đó enter lần nữa để quay trở lại màn hình terminal ban đầu.

Bước 4: copy tiếp đoạn này và paste vào sau khi đã ra lại màn hình terminal

sudo mosquitto_passwd -c /etc/mosquitto/pwfile TYPE_YOUR_USERNAME_HERE

ở phần TYPE_YOUR_USERNAME_HERE các bạn lưu ý đâu là password truy cập vào broker của bạn, bạn phải đặt 1 cái mật khẩu nào bạn luôn nhớ nha, không thì phải setup lại từ đầu mất công lắm đó.

nhập mật khẩu xong, Terminal hiện nhập lại mật khẩu thì bạn nhập mật khẩu ban đầu bạn tạo vào nhé

Bước 5: đến bước khởi động, copy đoạn này và sửa lại như hình nha

mosquitto_sub -d -u MOSQUITTO_USERNAME -P MOSQUITTO_PASSWORD -t dev/test

 

enter và xem broker khởi động

Như thế này là thành công rồi nhé. Nếu xem bài viết bạn thấy khó khăn thì hãy xem video này nhé

Ở bài sau mình sẽ hướng dẫn các bạn cách test broker hoạt động thế nào.

III. Lời Kết

Thật đơn giản phải không nào, đây sẽ là khởi đầu đầy thú vị cho những bạn đam mê về Internet Of Things, hãy khám phá thế giới IOT trên Cộng Đồng Arduino Việt Nam nhé. Chúc bạn thành công, đừng quên chia sẻ kiến thức bổ ích đến tất cả bạn bè của bạn nhé.

lên
5 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

HƯỚNG DẪN SỬ DỤNG INUT CẢM BIẾN VÀ NODE RED IDE ĐỂ HIỆN THỊ BIỂU ĐỒ THỜI TIẾT

Chào các bạn, hôm nay mình sẽ cùng các bạn làm một ví dụ điển hình về thế mạnh của iNut Node - RED IDE. Đặt vấn đề đơn giản thế này, nếu bây giờ các bạn muốn làm một giao diện về biểu đồ ( biểu đồ gió, mưa, lưu lượng nước v.v..) thì sao nhỉ, với những bạn không phải chuyên về làm phần mềm hay làm web mà chỉ quen làm phần cứng (như mình) thì ôi thôi, vấn đề làm front-end, back-end cho web nó quá xa vời với mình, chưa kể còn đồng bộ dữ liệu theo thời gian thực, v.v.. Suy nghĩ mới tới đó là thấy có quá nhiều rào cản để một hardware-er như tụi mình muốn làm một dự án IOT nhỏ để giám sát bằng biểu đồ. 

Nhưng, với iNut Node - RED IDE, bạn sẽ không phải lo lắng vấn đề giao diện nữa, chỉ cần những khối lệnh kéo thả đơn giản là bạn đã có thể làm ra một giao diện đơn giản để giám sát rồi. Thần kì phải không nào, trong bài viết lần này, mình sẽ hướng dẫn bạn cách sử dụng iNut cảm biến và iNut Node RED - IDE để làm việc này. Bắt tay vào làm nhé.

lên
3 thành viên đã đánh giá bài viết này hữu ích.

CHUNG TAY GÓP SỨC XÂY DỰNG CỘNG ĐỒNG ARDUINO VIỆT NAM

Từ 19/5/2014 đến nay, Cộng đồng Arduino Việt Nam đã trải qua hơn 5 năm phụng sự bạn đọc và đã cùng với nhiều thế hệ sinh viên và người đam mê nghiên cứu. Hôm nay, chúng ta cùng chung tay hỗ trợ sức mình để duy trì và vận hành cộng đồng Arduino bạn nhé.

lên
35 thành viên đã đánh giá bài viết này hữu ích.