จุดประสงค์การเรียนรู้
เพื่อให้ผู้เรียนสามารถใช้เครื่องมือในNode-Redเบื้องต้นได้
สาระการเรียนรู้
เครื่องมือที่ใช้ในNode-Red เบื้องต้น
พื้นที่การใช้งาน
การใช้งานNode Red เบื้องต้น จะมีพื้นที่การใช้งานแบ่งออกเป็น 3 ส่วน คือ
Palette (หรือ Sidebar): พื้นที่นี้ประกอบด้วยเครื่องมือและโหนดที่สามารถลากเพื่อเพิ่มเข้าไปในพื้นที่การทำงาน (flow area) เพื่อสร้างกระบวนการหรือโปรแกรมตามต้องการ โหนดที่อยู่ใน Palette แบ่งเป็นหมวดหมู่ต่าง ๆ เช่น Input, Output, Function, Social, Storage เป็นต้น
Flow Area: เป็นพื้นที่ที่คุณสามารถลากและวางโหนดที่เลือกมาจาก Palette เพื่อสร้างกระบวนการหรือโปรแกรม โดยที่คุณสามารถเชื่อมโหนดต่าง ๆ เข้าด้วยกันเพื่อสร้างเส้นทางการทำงาน
Properties Panel: เป็นพื้นที่ที่แสดงข้อมูลและตัวเลือกที่เกี่ยวข้องกับโหนดที่เลือกอยู่ใน Flow Area โดยปกติจะแสดงฟอร์มเพื่อให้คุณสามารถปรับแต่งการตั้งค่าของโหนดได้ตามต้องการ เช่น การตั้งชื่อ, การกำหนดค่า, การเชื่อมโหนดกับตัวปลายทาง, การตั้งค่าขั้นสูง เป็นต้น
1. แถบPallette
จะประกอบด้วยกลุ่มคำสั่งNode ดังต่อไปนี้
1.1 กลุ่มคำสั่ง Common Node
โหนดในกลุ่มนี้เป็นโหนดที่ใช้งานทั่วไปและมีประโยชน์ในการสร้างกระบวนการในการสร้างและประมวลผลข้อมูล มีโหนดย่อยดังต่อไปนี้
Inject (inject): ใช้สร้างข้อมูลเหตุการณ์ (event) ใน flow โดยอัตโนมัติ เช่น ส่งข้อมูลทดสอบ, สร้างเหตุการณ์ตามเวลา, เป็นต้น
Debug (debug):ใช้สำหรับการดูข้อมูลที่ผ่านผ่าน Flow ไปยัง node นั้น ๆ โดยใช้เครื่องมือ Debug node เพื่อแสดงข้อมูลที่ผ่านผ่าน Node นั้นในที่สุดของ Flow Editor
Complete (complete):ใช้ส่งข้อมูลสำหรับการสั่งทำสำเร็จ โดยส่งข้อมูลไปยังทางออกของ Node ใน Flow
Catch (catch):ใช้สำหรับจัดการกับข้อผิดพลาด (error) ที่เกิดขึ้นใน Flow
Status (status):ใช้สำหรับการแสดงสถานะของ Node นั้น ๆ ใน Flow Editor หรือใน Dashboard
Link in (link in):ใช้สำหรับรับข้อมูลจากทางอื่นๆ เข้ามาใน Flow โดยใช้เป็นการเชื่อมต่อ Input Node กับ Flow
Link call (link call):ใช้สำหรับเรียกใช้โค้ดที่เก็บไว้ที่ Node อื่น ๆ ใน Flow โดยมีการส่งข้อมูลระหว่าง Node
Link out (link out):ใช้สำหรับส่งข้อมูลออกจาก Flow ไปยัง Node อื่น ๆ ใน Flow หรือไปยังตัวอื่น ๆ นอก Flow
Comment (comment):ใช้สำหรับการเพิ่มข้อคิดเห็นหรือคำอธิบายใน Flow เพื่อช่วยในการเข้าใจโค้ดหรือ Flow นั้น ๆ โดยมีการแสดงผลเฉพาะใน Flow Editor เท่านั้น
1.2 กลุ่มคำสั่ง Function node
โหนดในกลุ่มนี้ให้คุณเขียนโค้ด JavaScript สำหรับประมวลผลข้อมูล มีโหนดย่อยดังต่อไปนี้
Function: ใช้สร้างฟังก์ชันที่กำหนดเองสำหรับการประมวลผลข้อมูล โดยใช้ JavaScript เพื่อให้คุณสร้างการกระทำที่กำหนดเองได้ตามต้องการ
Switch: ใช้สร้างการแยกส่วนของข้อมูลออกเป็นช่วงๆ โดยใช้เงื่อนไขหรือค่าที่กำหนดเองเพื่อเป็นการตัดสินใจ
Change: ใช้เปลี่ยนแปลงหรือปรับแต่งข้อมูลที่ผ่านมา ซึ่งสามารถใช้ในการเปลี่ยนแปลงค่าของข้อมูล หรือเพิ่มข้อมูลเข้าไปในข้อมูลที่ผ่านมา
Range: ใช้สร้างช่วงของค่าที่กำหนดเพื่อให้สามารถกำหนดเงื่อนไขแบบช่วงได้ในการตัดสินใจ
Template: ใช้สร้างข้อความหรือโค้ด HTML ตามรูปแบบที่กำหนดเพื่อนำไปใช้งานต่อไป
Delay: การส่งออกข้อมูลตามระยะเวลาที่กำหนด
Trigger: ใช้เป็นตัวกระตุ้นหรือสั่งให้เกิดการกระทำตามเหตุการณ์ที่กำหนด
Exec: ใช้สั่งให้ระบบทำงานหรือเรียกใช้งานคำสั่งภายนอก
Filter: ใช้ในการกรองข้อมูลเพื่อเลือกเฉพาะข้อมูลที่ตรงตามเงื่อนไขที่กำหนด
1.3 กลุ่มคำสั่งnetwork node
โหนดในกลุ่มนี้ใช้สำหรับการสื่อสารผ่านเครือข่าย มีโหนดย่อยดังต่อไปนี้
mqtt in: ใช้สำหรับรับข้อมูลผ่าน MQTT (Message Queuing Telemetry Transport) ซึ่งเป็นโปรโตคอลสำหรับการสื่อสารระหว่างอุปกรณ์ IoT
mqtt out: ใช้สำหรับส่งข้อมูลผ่าน MQTT ไปยังโบรกเกอร์ MQTT หรืออุปกรณ์ IoT อื่น ๆ
http in: ใช้สำหรับรับคำขอ HTTP จากไคลเอ็นต์ เช่น เว็บเบราว์เซอร์
http response: ใช้สำหรับส่งคำตอบ HTTP กลับไปยังไคลเอ็นต์หลังจากทำการประมวลผลคำขอ
http request: ใช้สำหรับทำคำขอ HTTP ไปยังเซิร์ฟเวอร์อื่น ๆ หรือ API
websocket in: ใช้สำหรับรับข้อมูลผ่าน WebSocket ซึ่งเป็นโปรโตคอลสำหรับการสื่อสารแบบเต็มหลายทางที่ทำงานบนโปรโตคอล HTTP
websocket out: ใช้สำหรับส่งข้อมูลผ่าน WebSocket ไปยังเซิร์ฟเวอร์หรือไคลเอ็นต์อื่น ๆ
tcp in: ใช้สำหรับรับข้อมูลผ่าน TCP (Transmission Control Protocol) ซึ่งเป็นโปรโตคอลสำหรับการสื่อสารที่เชื่อมต่อแบบไคลเอ็นต์-เซิร์ฟเวอร์
tcp out: ใช้สำหรับส่งข้อมูลผ่าน TCP ไปยังเซิร์ฟเวอร์หรือไคลเอ็นต์ที่อื่น ๆ
tcp request: ใช้สำหรับทำคำขอ TCP ไปยังเซิร์ฟเวอร์หรืออุปกรณ์อื่น ๆ
udp out: ใช้สำหรับส่งข้อมูลผ่าน UDP (User Datagram Protocol) ซึ่งเป็นโปรโตคอลสำหรับการสื่อสารแบบไม่เชื่อมต่อ
aedes broker: ใช้เป็นโบรกเกอร์ MQTT ที่ใช้สำหรับการสื่อสารระหว่างอุปกรณ์ IoT โดยเฉพาะ
1.4 กลุ่มคำสั่งSequence node
โหนดในกลุ่มนี้ช่วยในการจัดการกับลำดับของข้อมูล มีโหนดย่อยดังต่อไปนี้
Split: ใช้สำหรับแยกข้อมูลที่เข้ามาเป็นส่วนย่อย ๆ เพื่อทำการประมวลผลแยกตามลำดับ หรือจัดการกับข้อมูลแต่ละส่วนอย่างต่างหาก
Join: ใช้สำหรับรวมข้อมูลหลาย ๆ ส่วนที่ถูกแยกแยะอย่างมากขึ้นเข้าด้วยกันให้กลายเป็นข้อมูลเดียว เพื่อนำไปประมวลผลต่อไป
Sort: ใช้สำหรับเรียงลำดับข้อมูลตามเกณฑ์ที่กำหนด เช่น เรียงตามค่าหรือตามลำดับตามตัวอักษร
Batch: ใช้สำหรับจัดกลุ่มข้อมูลที่มีอยู่ให้เข้าไปอยู่ในกลุ่มเดียวกันตามจำนวนหรือเงื่อนไขที่กำหนด เพื่อทำการประมวลผลหรือจัดการกับข้อมูลเป็นกลุ่มๆ ได้โดยมีการควบคุมลำดับของข้อมูลในแต่ละกลุ่มที่ชัดเจน
1.5 กลุ่มคำสั่งPraser node
โหนดในกลุ่มนี้ช่วยในการแปลงรูปแบบของข้อมูล มีโหนดย่อยดังต่อไปนี้
CSV (Comma-Separated Values): Node-RED มีคำสั่งสำหรับการแปลงข้อมูลจาก CSV เป็นโครงสร้างข้อมูลอื่น ๆ หรือจากโครงสร้างข้อมูลอื่น ๆ ไปยัง CSV สามารถใช้งานเพื่อการนำเข้าและส่งออกข้อมูลจากและไปยังฐานข้อมูล หรือแบ่งปันข้อมูลในรูปแบบที่ต่างกัน
HTML (Hypertext Markup Language): สามารถใช้ Node-RED เพื่อแปลงข้อมูลเป็นรูปแบบ HTML เพื่อการแสดงผลบนเว็บไซต์หรือเพื่อการสร้างเนื้อหาเว็บได้
JSON (JavaScript Object Notation): คำสั่งใน Node-RED ช่วยในการแปลงข้อมูลไปยัง JSON หรือจาก JSON ไปยังรูปแบบอื่น ๆ เช่น CSV, XML, YAML ซึ่ง JSON เป็นรูปแบบที่พบมากในการสื่อสารข้อมูลระหว่างแอปพลิเคชัน
XML (eXtensible Markup Language): Node-RED สามารถใช้สำหรับการแปลงข้อมูลจาก XML เป็นโครงสร้างข้อมูลอื่น ๆ หรือจากโครงสร้างข้อมูลอื่น ๆ ไปยัง XML เช่นเดียวกัน XML เป็นรูปแบบที่ใช้ในการแลกเปลี่ยนข้อมูลในรูปแบบของเอกสาร
YAML (YAML Ain't Markup Language): คำสั่งใน Node-RED ช่วยในการแปลงข้อมูลไปยัง YAML หรือจาก YAML ไปยังรูปแบบอื่น ๆ ซึ่ง YAML เป็นรูปแบบที่ใช้ในการสร้างคอนฟิกเพื่อสื่อสารข้อมูลในรูปแบบของข้อความ
1.6 กลุ่มคำสั่งStorage node
โหนดในกลุ่มนี้ใช้สำหรับการเข้าถึงและจัดการข้อมูลบนพื้นที่เก็บข้อมูล สามารถทำได้ด้วยการอ่านและเขียนไฟล์หรือการเข้าถึงฐานข้อมูล มีโหนดย่อยดังต่อไปนี้
Write File: ใช้สำหรับเขียนข้อมูลลงในไฟล์ที่ระบุ ซึ่งสามารถใช้เพื่อบันทึกข้อมูลที่ได้จากการประมวลผลหรือการเก็บข้อมูลที่สำคัญไปยังไฟล์ในระบบ
Read File: ใช้อ่านข้อมูลจากไฟล์ที่ระบุ สามารถใช้เพื่ออ่านข้อมูลจากไฟล์ที่เก็บข้อมูลไว้ก่อนหน้าหรือข้อมูลที่ถูกสร้างขึ้นจากการอื่น ๆ
Watch: ใช้สำหรับตรวจสอบการเปลี่ยนแปลงในไฟล์หรือไดเรกทอรีที่ระบุ สามารถใช้เพื่อตรวจสอบการเกิดเหตุการณ์หรือการเปลี่ยนแปลงในข้อมูล
InfluxDB In: ใช้สำหรับรับข้อมูลจากฐานข้อมูล InfluxDB ซึ่งเป็นฐานข้อมูลแบบชุดเวลาที่ใช้สำหรับการจัดเก็บข้อมูลชุดเวลา
MySQL: ใช้สำหรับการเชื่อมต่อและจัดการกับฐานข้อมูล MySQL เพื่อการเก็บข้อมูลหรือการประมวลผลข้อมูล
InfluxDB Out: ใช้สำหรับส่งข้อมูลไปยังฐานข้อมูล InfluxDB เพื่อจัดเก็บข้อมูลที่ได้จากกระบวนการประมวลผลหรือจากอุปกรณ์ต่าง ๆ
Influx Batch: ใช้สำหรับจัดการกับข้อมูลแบบกลุ่มเพื่อส่งไปยังฐานข้อมูล InfluxDB ที่มีการจัดเก็บข้อมูลแบบชุดเวลา
2. แถบFlow Area
คือพื้นที่ที่คุณสามารถสร้างและจัดการกระบวนการหรือโปรแกรมได้ โดยภายใน Flow Area นี้จะประกอบไปด้วยการลากและวางโหนด (node) เพื่อสร้างกระบวนการ โปรแกรม หรือเรียกอีกชื่อว่า Flow ของเรา โดยปกติเราสามารถใช้Flow Area ดังนี้
เพิ่มโหนด: คุณสามารถค้นหาและลากโหนดจากเครื่องมือ Palette เพื่อเพิ่มลงใน Flow Area เพื่อใช้ในการสร้างกระบวนการ
เชื่อมโยงโหนด: คุณสามารถเชื่อมโยงโหนดกันเพื่อสร้างเส้นทางการทำงาน โดยเชื่อมโยงจากปุ่มหรือโหนดต่าง ๆ เข้าด้วยกัน เพื่อสร้างกระบวนการทำงานที่คุณต้องการ
จัดการ Flow: คุณสามารถเปิดหรือบันทึก Flow, สร้าง Flow ใหม่, และจัดการ Flow ทั้งหมดในโปรเจกต์ของคุณผ่านทาง Flow Area
แก้ไขโหนด: คุณสามารถคลิกที่โหนดเพื่อเปิด Properties Panel เพื่อดูและแก้ไขค่าต่าง ๆ ของโหนดนั้น ๆ เพื่อปรับแต่งการทำงานของโปรแกรม
รัน Flow: หลังจากที่คุณได้สร้าง Flow ตามที่ต้องการแล้ว คุณสามารถกดปุ่ม Deploy เพื่อเริ่มทำงาน Flow ของคุณ และดูผลลัพธ์ในตัว Debug หรือโหนดอื่น ๆ ที่คุณได้กำหนดไว้
3. แถบ Properties Panel
คือพื้นที่ที่แสดงข้อมูลและตัวเลือกที่เกี่ยวข้องกับโหนดที่เลือกอยู่ใน Flow Area ใน Node-RED ซึ่งมีหน้าที่สำคัญในการปรับแต่งและกำหนดค่าต่าง ๆ ของโหนดนั้น ๆ หรือแก้ไขค่าต่าง ๆ ของโหนด
เมื่อคลิกที่โหนดใด ๆ ใน Flow Area ของ Node-RED ในส่วน Properties Panel จะแสดงข้อมูลและตัวเลือกที่เกี่ยวข้องกับโหนดนั้น ๆ ที่เราเลือก ซึ่งอาจรวมถึงข้อมูลเชิงลึกเกี่ยวกับโหนดนั้น ๆ รวมถึงค่าต่าง ๆ ที่สามารถปรับแต่งได้ เช่น:
ชื่อของโหนด
ตัวเลือกการกำหนดค่า
การเชื่อมโยงของโหนดกับโหนดอื่น ๆ ใน Flow
ตัวเลือกและการกำหนดค่าที่เฉพาะเจาะจงสำหรับโหนดนั้น ๆ เช่นค่าที่ต้องการส่งไปยังโหนดที่ต่อมา