Node-RED: เชื่อมโลกง่ายๆ แค่ลากวาง (ไม่ต้องโค้ดเยอะม๊าก!)

Node-RED: มันคืออะไร แล้วทำไมเราต้องรู้จักมัน?

สวัสดีครับทุกคน! วันนี้ขอมาแนะนำของเล่นใหม่? หรือเก่าแล้วก็ไม่รู้สิ แต่ยังไงก็ยังใช้ได้ดีมากๆ นั่นก็คือ Node-RED คือโปรแกรมที่ถูกพัฒนาโดย IBM Research เป็นเครื่องมือสำหรับการเขียนโปรแกรมแบบ visual programming คือลากวางๆ เอา block มาต่อกันอ่ะนึกออกปะ? เหมือนเราต่อบล็อก LEGO อ่ะ แล้วมันก็ทำงานได้จริงๆ โคตรเจ๋งเลยนะ

เหมาะมากสำหรับงาน IoT (Internet of Things), การเชื่อมต่อ API ต่างๆ, หรือแม้กระทั่งการทำ Automation ในบ้านง่ายๆ คือมันโคตรจะยืดหยุ่นเลย อยากทำอะไรแปลกๆ ก็ลองเอา Node มาต่อกันได้หมดเลยครับ

ติดตั้ง Node-RED แบบคนคูลๆ ด้วย Docker

วิธีติดตั้ง Node-RED มีหลายแบบนะ จะลงผ่าน Node.js ตรงๆ ก็ได้ หรือจะใช้ Docker ก็ง่ายดี ส่วนตัวชอบ Docker เพราะมันคลีนดี จัดการง่าย ไม่ต้องไปวุ่นวายกับระบบหลัก

เปิด Terminal ขึ้นมาเลย พิมพ์ๆ ตามนี้:

docker run -it -p 1880:1880 --name my-node-red --restart unless-stopped nodered/node-red

พอรันเสร็จนะ เปิดเบราว์เซอร์ไปที่ http://localhost:1880 คุณก็จะเจอหน้าตา UI ของ Node-RED แล้ว! ง่ายมะ?

Flow แรก! (Hello World สไตล์คนไม่ชอบโค้ดเยอะ)

พอเข้ามาหน้า Node-RED UI ครั้งแรก คุณจะเจอพื้นที่ว่างๆ ตรงกลางเยอะเลย นั่นแหละ Canvas ของเรา.

  1. ลาก Node ที่ชื่อ inject (อยู่ทางซ้ายมือ) มาวางไว้บน Canvas.
  2. ลาก Node ที่ชื่อ debug มาวางต่อ.
  3. เอาเมาส์จิ้มตรงจุดเล็กๆ ขวาของ inject แล้วลากไปเชื่อมกับจุดซ้ายของ debug.
  4. ดับเบิลคลิกที่ Node inject ตั้งค่า Payload เป็น string แล้วใส่ข้อความอะไรก็ได้ เช่น "Hello Node-RED from my heart!" แล้วกด Done.
  5. กดปุ่ม Deploy สีแดงๆ มุมขวาบน.

ทีนี้ลองกดปุ่มสี่เหลี่ยมเล็กๆ ที่ inject Node ดูสิ! แล้วไปดูที่ Tab debug (อยู่ด้านขวาของจอ) คุณจะเห็นข้อความที่คุณพิมพ์โผล่มาเลย! นี่แหละ Flow แรกของเรา โคตรง่าย!

ลองของจริง! ดึงข้อมูลจาก API มาเล่น

มาลองทำอะไรที่ซับซ้อนขึ้นหน่อย แต่ก็ยังง่ายอยู่ดี! เราจะดึงข้อมูลจาก API สาธารณะมาแสดง (เช่น catfact.ninja/fact ที่ให้ข้อมูลสุ่มเกี่ยวกับแมว)

  1. ลาก Node inject มาเหมือนเดิม.
  2. ลาก Node http request มาต่อจาก inject.
  3. ดับเบิลคลิกที่ http request ตั้งค่า Method เป็น GET และ URL เป็น https://catfact.ninja/fact แล้วกด Done.
  4. ลาก Node debug มาต่อจาก http request.
  5. กด Deploy.

ลองกดปุ่มที่ inject Node อีกที แล้วดูที่ Tab debug คุณจะเห็น Object JSON ที่มีข้อมูลเกี่ยวกับแมวโผล่มา! เจ๋งป่ะละ?

เจอ Error แบบเซ็งๆ:

จากใจเลยนะ บางทีมันก็ไม่ได้ราบรื่นเสมอไปหรอก เวลาดึง API สิ่งที่เจอประจำคือ JSON Parsing Error หรือ Network Error.

สมมติว่า API ที่เราเรียกมันส่งข้อมูลมาไม่เป็น JSON หรือเน็ตหลุดพอดี๊พอดี:

ถ้าคุณเห็นใน Debug Tab ขึ้นข้อความประมาณว่า Error: Unexpected token < in JSON at position 0 หรืออะไรทำนองนี้ นั่นแปลว่าสิ่งที่ API ส่งมามันไม่ใช่ JSON เว้ย! หรืออาจจะเป็น HTML ของหน้า Error ก็เป็นได้ (เคยเจอแบบว่า Server error แล้วมันส่งหน้า HTML กลับมาแทน JSON อ่ะ).

วิธีแก้เบื้องต้นของผม: * เช็ค URL ดีๆ: พิมพ์ผิดป่าว? HTTPS หรือ HTTP? ลองเอา URL ไปใส่ใน Postman หรือ Browser ตรงๆ ดูว่าได้ JSON จริงไหม * ใช้ json Node: Node-RED มี Node ที่ชื่อ json ด้วยนะ เอามาคั่นระหว่าง http request กับ debug ก็ช่วยได้เยอะ ถ้ามันเป็น JSON อยู่แล้วมันก็ผ่านไป แต่ถ้าไม่ใช่ มันจะพยายาม parse ให้ หรือโยน error ออกไปอีก branch ได้ (ถ้าคุณเชื่อม output error ของ node เข้ากับ debug node อีกตัว). * catch Node: อันนี้เทพจริง ถ้าอยาก handle error โดยเฉพาะ มี Node ชื่อ catch ดักจับ error จาก Node อื่นๆ ได้ดีเลยลากมาใช้คู่กับ debug อีกตัวจะได้รู้ว่า Error มันเกิดจาก Node ตัวไหน.

สรุปความรู้สึกส่วนตัว

Node-RED เป็นอะไรที่โคตรมีประโยชน์สำหรับคนที่อยากสร้าง Prototype เร็วๆ, ทำระบบ IoT แบบไม่ปวดหัวเรื่องโค้ด, หรือคนที่ไม่ได้เชี่ยวชาญการเขียนโปรแกรมมากๆ แต่ก็อยากทำอะไรเจ๋งๆ.

ข้อดี: * โคตรง่าย: ลากวางๆ ก็ทำงานได้ละ * เร็ว: สร้าง Flow ได้ไวมาก * Node เยอะ: มี Node ให้เลือกใช้เป็นพันๆ ตัวเลยมั้ง เชื่อมต่อได้เกือบทุกอย่าง * Visual Debugging: เห็น Flow ชัดเจน เวลาแก้บั๊กก็ง่าย

ข้อเสีย (ที่เจอส่วนตัวนะ): * ถ้า Flow ซับซ้อนมากไป: บางที Flow ที่มันยาวๆ วงจรซ้อนกันเยอะๆ ก็ดูตาลายเหมือนกันนะ จัดระเบียบดีๆ ล่ะ * Performance: ถ้าต้องประมวลผลอะไรที่หนักมากๆ หรือมี Request เยอะๆ ตลอดเวลา อาจจะไม่เหมาะเท่าไหร่ แต่ถ้าเป็นงานเบาๆ สบายๆ ไม่ต้องห่วงเลย

โดยรวมคือชอบมากๆ เป็นเครื่องมือที่ทำให้คนที่ขี้เกียจเขียนโค้ดเยอะๆ อย่างผมเนี่ย มีกำลังใจในการสร้างสรรค์อะไรใหม่ๆ ขึ้นมาเยอะเลย ลองไปเล่นกันดูนะ แล้วจะติดใจ!

Read more

คิวบา: มนต์เสน่ห์บนเส้นทางแห่งความท้าทาย – วิกฤตพลังงานและแรงกดดันจากสหรัฐฯ

คิวบา: มนต์เสน่ห์บนเส้นทางแห่งความท้าทาย – วิกฤตพลังงานและแรงกดดันจากสหรัฐฯ

เจาะลึกสถานการณ์ล่าสุดของคิวบา ทั้งวิกฤตไฟฟ้าดับครั้งใหญ่จากปัญหาพลังงาน และแรงกดดันจากสหรัฐฯ ภายใต้การนำของทรัมป์ อนาคตของเกาะปฏิวัติแห่งนี้จะเป็นอย่างไร?

By ทีมงาน devdog
ละครไทย: ถอดรหัสเสน่ห์ "พลอยน้ำเพชร" และปรากฏการณ์บันเทิงที่ไม่เคยจางหาย

ละครไทย: ถอดรหัสเสน่ห์ "พลอยน้ำเพชร" และปรากฏการณ์บันเทิงที่ไม่เคยจางหาย

สำรวจความเข้มข้นของละคร "พลอยน้ำเพชร" จากช่องวัน 31 พร้อมเจาะลึกตอนที่ 17-20 และเสน่ห์ของละครไทยที่ครองใจผู้ชมทั่วโลก

By ทีมงาน devdog
ชนนพัฒฐ์ นาคสั้ว: สส.สงขลา กับประเด็นร้อนคดีเว็บพนันออนไลน์ที่ DSI กำลังจับตา

ชนนพัฒฐ์ นาคสั้ว: สส.สงขลา กับประเด็นร้อนคดีเว็บพนันออนไลน์ที่ DSI กำลังจับตา

เจาะลึกประเด็นร้อน ชนนพัฒฐ์ นาคสั้ว สส.สงขลา พรรคกล้าธรรม กับกระแสข่าวพาดพิงถึงเครือข่ายเว็บพนันออนไลน์ที่ DSI กำลังสอบสวน เปิดความท้าทายต่อบทบาทผู้แทนราษฎร

By ทีมงาน devdog
เจาะลึก "ณัฐธิดา เล็กอุดากร" หลานเนวินชิดชอบ สส. อายุน้อยสุด ผู้พร้อมสร้างอนาคตใหม่ให้บุรีรัมย์

เจาะลึก "ณัฐธิดา เล็กอุดากร" หลานเนวินชิดชอบ สส. อายุน้อยสุด ผู้พร้อมสร้างอนาคตใหม่ให้บุรีรัมย์

ทำความรู้จักกับ พลอย ณัฐธิดา เล็กอุดากร สส. บุรีรัมย์ เขต 2 หลานสาว เนวิน ชิดชอบ ผู้สร้างประวัติศาสตร์ สส. อายุน้อยที่สุดในสภา พร้อมบทบาทการเมืองและวิสัยทัศน์คนรุ่นใหม่

By ทีมงาน devdog