Dzn gửi vào
- 25386 lượt xem
<!--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é.