Node-RED is a programming tool for wiring together hardware devices, APIs and online services in new and interesting ways.
Node-Red คือ ?
Message Queuing Telemetry Transport (MQTT) เป็น Protocol ที่ออกแบบมาเพื่อการเชื่อมต่อแบบ M2M (machine-to-machine) คือ อุปกรณ์ติดต่อหรือสื่อสารกับอุปกรณ์ โดยเป็นส่วนหนึ่งของเทคโนโลยี IoT (Internet of Things) ซึ่งเป็นเทคโนโลยีที่อินเทอร์เน็ตเชื่อมต่อกับอุปกรณ์ต่าง ๆ เช่น โทรศัพท์มือถือ รถยนต์ โทรทัศน์ ตู้เย็น เข้ากับอินเทอร์เน็ตทำให้สามารถเชื่อมโยงสื่อสารกับอุปกรณ์ต่าง ๆ ได้ โดยผ่านเครือข่ายอินเทอร์เน็ต ซึ่งจะทำให้มนุษย์สามารถ ควบคุมอุปกรณ์ต่าง ๆ จากที่อื่นได้ เช่นการสั่งปิดเปิดไฟในบ้านจากที่อื่น ๆ
ซึ่ง MQTT เป็นชื่อเรียกสำหรับโปรโตคอลนี้เท่านั้น โดยหลักการทำงานของ MQTT จริง ๆนั้นมีส่วนประกอบ 3 อย่างคือ ผู้ส่ง (publish) , ผู้รับ (subscribe) และ ตัวกลาง (MQTT broker) โดยผู้รับหรือผู้ส่งจะใช้อุปกรณ์ชนิดไหนก็ได้ ขอเพียงมีแอพพลิเคชั่นหรือโปรแกรมที่รองรับโปรโตคอล MQTT ก็เพียงพอแล้ว
มีเทคโนโลยีอะไรบ้างที่เราคุ้นเคยและใช้ MQTT ?
แอพ Messenger ของ Facebook ในเวอร์ชั่นปี 2017–18 ก็ได้มีการนำเอา MQTT มาประยุกต์ใช้กับแอพพลิเคชั่นตัวเองนั้นเอง
โจทย์ : ถ้าเกิดคุณมี NodeMCU 2 ตัว คุณจะให้มันเชื่อมต่อส่งข้อมูลหากันยังไง ?
วิธีแรกคือ มีตัวหนึ่งเป็น Client อีกตัวเป็น Server (TCP/IP) งั้นถ้าคุณอยากจะส่งข้อมูลไปข้างนอก ตัว Server จะต้องจัดการอยู่ Node เดียว อ่าวแล้วถ้ามันพังละ…แล้วถ้า Server ต้องส่งข้อมูลไปปลายทางอีก 100 ที่ละ ต้องมาเขียนโค้ดจัดการเองเลยเหรอตั้ง 100 ที่ ……
Node-RED จะเข้ามาแก้ปัญหาตรงนี้ให้คุณเอง !!
- Node-RED จะรับข้อมูลจาก Node ทุกตัว (สมมุติคุยกันผ่าน MQTT) แล้วเราก็แค่ลากเส้นไปยังปลายทาง อยากได้ 10 ปลายทาง ก็ลาก 10 เส้น !!
2. ระหว่างลากเส้น จะดัดแปลง แก้ไข เพิ่มเติมยังไงก็ได้ !!
3. จะเปลี่ยน protocol ปลายทางก็ได้ ไม่มีอะไรเสียหาย เช่น ต้นทางเป็น mqtt ปลายทางเป็น http ก็ยังได้ไม่มีปัญหา
โอเค พิมพ์เยอะมากไปละ มาติดตั้งกันเลย
ขั้นตอนการติดตั้ง !
- ติดตั้ง NodeJS https://nodejs.org/en/download/
2. เปิดหน้า CMD แล้วพิมพ์ชุดคำสั่ง
สำหรับ MAC/Linuxsudo npm install -g --unsafe-perm node-red
สำหรับ Windows npm install -g --unsafe-perm node-red
3. รันคำสั่ง node-red
ในหน้า CMD ได้เลยครับ
4. เข้าเว็บของเราพิมพ์ url : http://127.0.0.1:1880 คุณก็จะได้ Node-RED พร้อมใช้งานแล้ว !
วิธีติดตั้ง Flow , Node เสริม
ไปที่ url : https://flows.nodered.org/?num_pages=1 เลือก Node ที่อยากได้ ข้างในจะมีวิธี install บอกไว้ละเอียดเลยครับ ที่ผมใช้งานหลักๆคือ Firebase, Line, MySQL
เริ่มต้นใช้งาน Node-RED
Node ที่เราจะใช้งานมีอยู่ 3 ประเภทนะครับ
- Input จะมีจุดให้ลากด้านขวาด้านเดียว node ที่นำข้อมูลเข้า node-red
- Function มีจุดทั้ง2ข้าง สามารถจัดการข้อมูลทั้งขาเข้า และ ขาออก
- Output จะมีจุดให้ลากแค่ด้านซ้าย นำข้อมูลออกไปแสดงผล
โดยเราสามารถลาก Node มาวางตรงไหนก็ได้บน Flow ของเรา
โดย Node ประเภท 1 และ 3จะต้องตั้งค่าเซิฟเวอร์ก่อนถึงจะใช้งานได้
ส่วนประเภท 2แค่ตั้งค่า output กับ input (ลากเส้น)ให้มันก็สามารถใช้งานได้แล้ว
เริ่มต้น ลองลาก Node ที่เป็น input ที่ชื่อว่า mqtt มาวางบนจอ แล้วคลิกดูรายละเอียด
ก็จะเจอตั้งค่าแบบนี้ขึ้นมา
Server : ตั้งค่า/กำหนด Server mqtt ที่เราจะ connect
Topic : หัวข้อในการพูดคุย
QoS : ลำดับความสำคัญ (กรณีมีหลายๆ Node มาต่อกันแล้วมีข้อความเข้าพร้อมๆกัน)
Name : ชื่อ node ที่เราจะตั้งให้กับอุปกรณ์
กดรูปปากกาตรง Server เราก็จะเจอกับหน้าตั้งค่า Server แบบนี้ครับ
Name : ชื่อเซิฟเวอร์ที่เราต้องการแสดงบนจอของเรา
Server : broker.hivemq.com Port : 1883 (ใช้งานได้ฟรี )
** Port ใช้ใน Node-RED จะเป็น Port ใช้กับ Hardware ส่วนมากจะเป็น 1883
จากนั้นกด Add เพื่อเซฟการตั้งค่าของเรา
จากนั้นเพิ่ม Topic เข้าไป เป็นคำว่า Test
Topic คือ หัวข้อที่จะพูดคุยกันในเครือข่ายเดียวกัน โดยทั้งผู้รับและผู้ส่งจะต้องตั้งหัวข้อในการส่งข้อความเป็นหัวข้อเดียวกัน จึงจะสื่อสารกันได้
ลาก output ตัวแรกสุดที่ชื่อว่า Debug มาดูหน่อย ลากเส้นจาก mqtt เข้า Debug ได้เลยนะครับ แล้วกด Deploy มุมขวาบนได้เลย
วิธีทดสอบ
เข้าเว็บไซต์ http://www.hivemq.com/demos/websocket-client/
กด Connect เข้าไปได้เลยครับ
กดปุ่ม Subscriptions เปลี่ยนข้อความเป็น test
Topic : test (Topic ตามที่ตั้งไว้)
ทดสอบส่ง Message อะไรก็ได้
แล้วลองกลับไปดูหน้า Node-red ของเรา ปุ่มข้างล่าง Deploy ให้ปรับเป็นหน้า Debug ก็จะแสดงข้อความที่ส่ง (ถ้า Topic ผู้รับ-ผู้ส่งตรงกัน)
เพียงแค่นี้ก็สามารถส่งข้อมูลจากที่หนึ่งไปยังอีกอีกที่หนึ่งได้ง่ายๆแล้ว โดยคนส่งอาจจะเป็นเจ้า NodeMCU (วิธีใช้ Node-MCU+MQTT) , Web , Line ก็ได้
โดยเจ้า MQTT รองรับบนทุกอุปกรณ์ (Web,Hardware,Mobile) และเกือบทุกภาษา c,c++ ,java,c#,js,php,python อื่นๆอีกมากมาย
อีกทั้ง Node-RED ยังรองรับ Node อีกมากมาย เช่น Google IoT , AWS , Netpi,Weather Station ลองหาเล่นดูได้ครับ
บทความถัดไปจะเป็น
Node-RED DashBoard ทำเว็บด้วย Node-RED โดยไม่เขียนโค้ดสักตัว ฉบับปี 2018 !
Medium : https://medium.com/@pingloaf
Linkedin : https://www.linkedin.com/in/peerat-limkonchotiwat/