Node-red MQTT và ESP8266

Node-red MQTT và ESP8266phối hợp với nhau thì sẽ như thế nào ? Trong bài viết này mình sẽ hướng dẫn về cách để tạo broker MQTT để sử dụng ở local, dùng Node-red tạo giao diện điều khiển ON/OFF cho LED trên NodeMCU(ESP8266) qua MQTT

Bắt đầu

Để bắt đầu thì mình nghĩ chúng ta nên xem lại bài viết về MQTT với ESP8266 để có thể nắm qua được 1 số khái niệm cơ bản cũng như cách thực hiện điều khiển LED thông qua Cloud MQTT có sẵn.

Thứ 2 là bạn xem qua bài Node-RED cơ bản để mình nắm được cách cài Node-RED và tạo giao diện với Node-RED dashboard luôn.

Vậy bài này sẽ có gì khác so với bài trước ?

  • Không sử dụng GUISocket trên CloudMQTT để gõ lệnh điều khiển nữa mà thay vào đó là tạo một giao diện với Node-RED để điều khiển
  • Không sử dụng CloudMQTT nữa mà cài đặt MQTT trên Ubuntu, ở đây mình dùng Mosquitto.

Tạm thời là như thế, mình bắt đầu vào các bước thực hiện thôi

Cài đặt Mosquitto

Trước tiên mình sẽ cài đặt Mosquitto Broker.

Bước 1: Thêm repositories mosquitto

sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa

Bước 2: Add repositories này vào ubuntu

sudo apt-get update

Bước 3: Cài broker mosquitto

sudo apt-get install mosquitto

Bước 4: Cài thư viện development

sudo apt-get install libmosquitto-dev

Bước 5: Cài MQTT client

sudo apt-get install mosquitto-clients

Bước 6: Kiểm tra trạng thái của MQTT

sudo service mosquitto status

Vậy là xong các bước cài đặt, giờ mình thử test MQTT hoạt động chút xem

Bước 1: Tạo subscriber với topic là “Sensor_MQTT”, subscriber ngày chỉ ngồi hóng hớt xem có anh nào publish lên không

mosquitto_sub -h localhost -t "Sensor_MQTT" -v

Bước 2: Tạo publisher, publish này sẽ gửi tin “Error Sensor” lên topic “Sensor_MQTT”

mosquitto_pub -h localhost -t "Sensor_MQTT" -m "Error_Sensor"

Bước 3: Thay đổi một chút về tin gửi lên là “Temp_Sensor” và “Soil_Sensor” và kiểm tra kết quả trên subscriber

mosquitto_pub -h localhost -t "Sensor_MQTT" -m "Temp_Sensor"
mosquitto_pub -h localhost -t "Sensor_MQTT" -m "Soil_Sensor"

Bước 4: Thay đổi topic dưới publisher là “ABC_MQTT” và kiểm tra trên sub, khác topic là không nhận được gì cả

mosquitto_pub -h localhost -t "ABC_MQTT" -m "Error_Sensor"

Các bạn có thể xem kết quả hình dưới

Lập trình ESP8266

Mình sẽ thực hiện lập trình với ESP8266 có 2 nhiệm vụ, 1 là pub dữ liệu lên với dòng Helloword # x, 2 là sub dữ liệu điều khiển ON/OFF. Chương trình vẫn dùng thư viện sẵn có là Pubsubclient, LED tận dụng LED có sẵn trên NodeMCU ở chân D0.

Có một số lưu ý:

  • Thay đổi thông tin wifi và server cho phù hợp của bạn
  • LED có sẵn trên NodeMCU kích ON ở mức LOW và OFF ở HIGH.
  • Nhận lệnh 1 thì bật LED, 0 thì tắt LED.
  • Topic điều khiển LED ở đây là event.
Chương trình

Tạo giao diện với Node-RED

Bước 1: Mở node-red

cd node-red
node red

Bước 2: Kiểm tra kết nối

Kết quả

Bước 3: Tạo giao diện nút nhấn ON OFF

Tạo nút

Cấu hình

Kết quả debug sau khi bấm thử trên giao diện

Kết quả thực tế

Nếu phát triển 1 một chút nữa ta sẽ có hệ thống dùng với MQTT Node-red ESP8266 như sau

Tạm kết

Coi như mình đã thực hiện được cài đặt MQTT Broker để sử dụng trên máy tính sử dụng Ubuntu, kết nối và điều khiển bật tắt LED trên hardware là ESP8266. Đây mới chỉ là mức độ làm quen và tìm hiểu, các bạn muốn tìm hiểu thêm về node-red có thể tham khảo thêm tại nodered.org.

19
Leave a Reply

avatar
11 Comment threads
8 Thread replies
1 Followers
 
Most reacted comment
Hottest comment thread
12 Comment authors
TohicanscVăn NguyễnNgô văn việtTấn Tài Recent comment authors

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.

  Subscribe  
newest oldest most voted
Notify of
Minatu
Guest

Hay nhỉ!

NGUYỄN MINH CHÍ
Guest
NGUYỄN MINH CHÍ

hướng dẫn thêm phần mySQL nữa thì quá tốt

Hoan Nguyen
Guest
Hoan Nguyen

cho mình hỏi mình muốn áp dụng cái này với esp8266 v1 với arduino được không, và cách làm có tương tự không ạ. Mình cảm ơn nhiều

NGUYỄN MINH CHÍ
Guest
NGUYỄN MINH CHÍ

sao lâu quá chưa thấy anh làm bài nói về mySQL đang chờ để học, hjhj

Trần Trung
Admin
Trần Trung

Hiện nay nhóm hocarm đang có kế hoạch hoàn thành 1 số bài viết về arm, sau đó sẽ lên kế hoạch tiếp cho chủ đề này sớm nhất có thể! cảm ơn bạn đã quan tâm và ủng hộ các bàn viết của nhóm! chúc bạn vui vẻ và thành công.

Học Nguyễn
Guest
Học Nguyễn

anh ơi cái cuối nếu phát triển thành 1 hệ thống như hình cuối cùng thì làm sao anh ạ. Anh có thể chỉ giúp em ko. Em đang cần cái đó.

Nam
Guest
Nam

Mình đã cải tiến code để bật thêm đèn. Nhưng bị trường hợp: Mình mở các chân D0, D1, D2 … tạo các 3 topic trên node-red. Nhưng chỉ có 2 topic khi nhấn button thì nó mới push qua relay. Nhìn serial monitor trong Arduino thì không thấy nó hiện thông báo topic này. Nhưng nhấn buttion của 2 topic kia thì trên serial monitor nó hiện thông báo ON / OFF.
Bác thớt chỉ mình cách fix với.

Phạm Ngọc Dương
Guest
Phạm Ngọc Dương

cho mình hỏi nếu dùng giao diện với Node-RED này kết hợp với CloudMQTT được không, cảm ơn

Ngô văn việt
Guest
Ngô văn việt

Mosquitto có cài đc trên window không

Tấn Tài
Guest
Tấn Tài

sao mình làm giống như trên mà ở đoạn tạo giao diện node-red sau khi nạp chương trình code vào board 8266 thì không kết nối được tới mqtt nhỉ

Ngô văn việt
Guest
Ngô văn việt

code dòng số 10 – 11 là để làm gì vậy
WiFiClient espClient;
PubSubClient client(espClient);

Văn Nguyễn
Guest
Văn Nguyễn

Cho mình hỏi là: không chạy Node-red ở local mà chạy trên host free được k ạ