เริ่มต้นใช้งาน Node-red ! ฉบับปี 2018–19

Mr.P L
mmp-li
Published in
4 min readJun 30, 2018
Node-RED

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 จะเข้ามาแก้ปัญหาตรงนี้ให้คุณเอง !!

  1. Node-RED จะรับข้อมูลจาก Node ทุกตัว (สมมุติคุยกันผ่าน MQTT) แล้วเราก็แค่ลากเส้นไปยังปลายทาง อยากได้ 10 ปลายทาง ก็ลาก 10 เส้น !!
4 ต้นทาง 1 ปลายยังไหว สบายๆ ชิวๆ

2. ระหว่างลากเส้น จะดัดแปลง แก้ไข เพิ่มเติมยังไงก็ได้ !!

ดักข้อมูลไว้เลย ทีนี้ก็ไม่ต้องกลัวพลาด หึหึ

3. จะเปลี่ยน protocol ปลายทางก็ได้ ไม่มีอะไรเสียหาย เช่น ต้นทางเป็น mqtt ปลายทางเป็น http ก็ยังได้ไม่มีปัญหา

ต้นทางไม่เหมือนกันก็ไม่มีปัญหา

โอเค พิมพ์เยอะมากไปละ มาติดตั้งกันเลย

ขั้นตอนการติดตั้ง !

  1. ติดตั้ง 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 ประเภทนะครับ

  1. Input จะมีจุดให้ลากด้านขวาด้านเดียว node ที่นำข้อมูลเข้า node-red
  2. Function มีจุดทั้ง2ข้าง สามารถจัดการข้อมูลทั้งขาเข้า และ ขาออก
  3. Output จะมีจุดให้ลากแค่ด้านซ้าย นำข้อมูลออกไปแสดงผล

โดยเราสามารถลาก Node มาวางตรงไหนก็ได้บน Flow ของเรา

ตัวซ้ายคือประเภทที่ 1 ตัวกลางคือประเภทที่ 2 ตัวขวาคือประเภทที่ 3

โดย 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 อะไรก็ได้

ส่งจาก Web

แล้วลองกลับไปดูหน้า Node-red ของเรา ปุ่มข้างล่าง Deploy ให้ปรับเป็นหน้า Debug ก็จะแสดงข้อความที่ส่ง (ถ้า Topic ผู้รับ-ผู้ส่งตรงกัน)

ขึ้นบน Node-RED แล้ว

เพียงแค่นี้ก็สามารถส่งข้อมูลจากที่หนึ่งไปยังอีกอีกที่หนึ่งได้ง่ายๆแล้ว โดยคนส่งอาจจะเป็นเจ้า 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/

--

--

Mr.P L
mmp-li
Editor for

Lifestyle of Programmer & IoT (Node-RED|Blynk) & Data Science (ML,DL,NLP) and Whatever I want to do | cat can coding too | Ph.D. -> VISTEC -> IST