เชื่อมต่อ Node-red กับ MQTT x DrZin

L Pasawee
Dr-Zin
Published in
3 min readAug 16, 2019

สอน Publish Subscribe ข้อมูลจาก MQTT Broker ด้วย Node-red พร้อมทั้งส่งข้อมูลไปที่ M5GO ( esp32 ) มาเริ่มทดลองกันเลย

สรุปความรู้ที่ต้องใช้กันก่อน

  • Node-red คืออะไร แล้วมันใช้ยังไง ? ถ้ายังไม่รู้เข้าไปอ่านในบทเก่าๆของเราได้
  • MQTT คืออะไร MQTT Broker คืออะไร ถ้ายังไม่รู้เข้าไปอ่านในบทเก่าๆของเรา

เราจะถือว่าทุกคนอ่านเข้าใจกันเป็นอย่างดี มาเริ่มกันเลย

ทำความรู้จักกับ MQTT node ใน node-red

เริ่มกันด้วยลาก MQTT node มาวางบน Flow แล้ว Double Click โลดดดด

mqtt แบบ Input

เป็น node ที่ใช้สำหรับ Subscribe ข้อมูลจาก Topic

Properties จะมีแบบนี้

Server : ตั้งค่า Server ของ MQTT Broker ที่เราจะใช้งาน

Topic : Topic ที่เราจะ Subscribe

QoS : Quality of Service สำหรับการจัดสรรเส้นทางแบนด์วิธในระบบเครือข่ายที่มีอยู่อย่างจำกัด

  • QoS 0 : ส่งข้อมูลเพียงครั้งเดียว ไม่สนใจว่าผู้รับจะได้รับหรือไม่
  • QoS 1 : ส่งข้อมูลเพียงครั้งเดียว ไม่สนใจว่าผู้รับจะได้รับหรือไม่ แต่ให้จำค่าที่ส่งล่าสุดไว้ เมื่อมีการเชื่อมต่อใหม่จะได้รับข้อมูลครั้งล่าสุดอีกครั้ง
  • QoS 2 : ส่งข้อมูลหลาย ๆ ครั้งจนกว่าปลายทางจะได้รับข้อมูล มีข้อเสียที่สามารถทำงานได้ช้ากว่า QoS0 และ QoS1

Output : คือ เมื่อรับข้อมูลมาจะแปลงข้อมูลให้อยู่ในรูปแบบไหน

mqtt แบบ Output

เป็น node ที่ใช้สำหรับ Publish ข้อมูลไปยัง Topic ที่เรากำหนด

Properties จะมีแบบนี้

Server : ตั้งค่า Server ของ MQTT Broker ที่เราจะใช้งาน

Topic : Topic ที่เราจะ Subscribe

QoS : Quality of Service สำหรับการจัดสรรเส้นทางแบนด์วิธในระบบเครือข่ายที่มีอยู่อย่างจำกัด

  • QoS 0 : ส่งข้อมูลเพียงครั้งเดียว ไม่สนใจว่าผู้รับจะได้รับหรือไม่
  • QoS 1 : ส่งข้อมูลเพียงครั้งเดียว ไม่สนใจว่าผู้รับจะได้รับหรือไม่ แต่ให้จำค่าที่ส่งล่าสุดไว้ เมื่อมีการเชื่อมต่อใหม่จะได้รับข้อมูลครั้งล่าสุดอีกครั้ง
  • QoS 2 : ส่งข้อมูลหลาย ๆ ครั้งจนกว่าปลายทางจะได้รับข้อมูล มีข้อเสียที่สามารถทำงานได้ช้ากว่า QoS0 และ QoS1

Retain : เก็บข้อมูลที่ส่งไปแล้วไว้ ปกติตั้งเป็น false

ตั้งค่า Server ให้พร้อมใช้งาน

กดเข้าไปที่รูป ดินสอ หลัง Server แล้วเราจะเห็นช่องให้ใส่ข้อมูลมากมายเลย ช่องที่เราควรกรอก คือ Name, Server, Port ,Security

Name : ชื่อของ Server ตั้งอะไรก็ได้

Server : เอามาจาก หน้า Details ใน CloudMQTT ได้เลย

Port : เอามาจาก หน้า Details ใน CloudMQTT ได้เลย

จากหน้านี้ ได้เลย

เข้าไปที่ Tabs Security ใส่ Uername Password ที่เราตั้งไว้ใน CloudMQTT ให้เรียบร้อย

เสร็จแล้ว Deploy กันได้เลยลุยยยย

Subscribe ข้อความแรกจาก MQTT Broker

เราตั้งค่า Server เรียบร้อยแล้วต่อกันด้วยการ Subscribe ข้อความจาก WebSocket UI ของ CloudMQTT

ลาก node mqtt กับ debug ลงมาบน Flow แบบนี้ กด Deploy อีกสักรอบ

ตั้งค่า Topic ที่เราจะ Subscribe เป็น /ESP32_1/Test กด Deploy !!!

เข้า WebSocket UI จัดการส่ง “Hello From WebSocket” ที่ Topic /ESP32_1/Test

กด Send จากนั้นเข้ามาดูที่ debug ของ node-red จะเห็นข้อความที่ส่งมา

เป็นอันเสร็จง่ายมากกกกกก มาต่อกันเลย

Publish ข้อความแรกผ่าน MQTT Broker

เลือก node mqtt แบบ output และ inject มาต่อกันแบบนี้

ตั้งค่าให้ inject ส่งข้อมความว่า “Hello From Node-red”

กด Deploy แล้ว กดที่ inject โลด เสร็จแล้วเราจะเห็นข้อความมาปรากฎที่ WebSocket แบบนี้

ได้แล้วแค่นี้เอง ง่ายมากเราสามารถนำเอาเรื่องแบบนี้ไปต่อไปยอดไม่ว่าจะเป็นการต่อกับ MongoDB หรือ ใช้งานอย่างอื่นได้อีก ไม่เชื่อลองไปทำดู

แถมให้ลองเอาไปทำดูได้ Publish ค่า โดยการใช้ Node-red แล้ว Subscribe ค่าโดยการใช้ M5GO อ่านเรื่องการใช้ MQTT บน M5GOได้ที่

--

--