Hack day
0

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-rednode 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.

Nguồn: hocarm.org

Tags:

More Similar Posts

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Fill out this field
Fill out this field
Vui lòng nhập địa chỉ email hợp lệ.
You need to agree with the terms to proceed

Check Featured Posts
Menu