2) Node‐RED - vasu-kmitl/gcp_iot GitHub Wiki
Install Node-RED
-
เปิด SSH (Secure Socket Shell) ซึ่งเป็น terminal หรือ command line window ในการเชื่อมต่อกับ VM instance
-
หน้าต่าง SSH จะถูกสร้างขึ้น (แต่ละ VM สามารถสร้างได้หลายหน้าต่างเพื่อทำงานคู่ขนานกันได้)
-
Update / upgrade OS & components
sudo apt update
sudo apt upgrade
- สร้างและติดตั้ง NodeJS (Core สำหรับการติดตั้งและรัน Node-RED)
- NodeJS มีการทำเวปลิงก์เก็บชุดคำสั่งในการสร้างตัว NodeJS สำหรับแต่ละเวอร์ชั่นไว้ (deb.nodesource.com)
- ให้ทำการตรวจสอบเลขเวอร์ชั่นปัจจุบันของ NodeJS จาก https://nodejs.org/en โดยเลือกเวอร์ชั่นที่ระบุว่าเป็น LTS (Long term stable)
- ตัวอย่างข้างล่างนี้เป็นคำสั่งสำหรับเวอร์ชั่น 18.18.0 LTS (ให้ระบุเป็น 18.x โดยไม่ต้องสนใจเวอร์ชั่นย่อย)
curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs build-essential
- ติดตั้ง Node-RED
sudo npm install -g --unsafe-perm node-red
- ที่จริงเมื่อถึงจุดนี้ เราสามารถรันโปรแกรม node-red ได้แล้ว แต่เพื่อความสะดวกให้ไม่ต้องมารันโปรแกรมนี้แบบ manual ทุกครั้ง จึงทำการติดตั้ง Production Process Manager และสร้าง auto-boot เพื่อรัน Node-RED อัตโนมัติและทำงานเป็น background ดังนี้
sudo npm install -g --unsafe-perm pm2
pm2 start `which node-red` -- -v
pm2 save
pm2 startup
- สำคัญ คำสั่งสุดท้ายข้างต้น
pm2 startup
จะสร้างชุดคำสั่งเพิ่มเติมขึ้นมา ให้ทำการ copy และ paste คำสั่งดังกล่าวแล้วกด enter เพื่อรัน จึงจะเสร็จสิ้นการติดตั้ง
- ตรวจสอบว่า Node-RED กำลังรันอยู่หรือไม่โดยใช้คำสั่ง
ps ax|grep node
- ต้องมี node-red แสดงในรายชื่อโปรแกรม
- สามารถรัน Node-RED บนโปรแกรม browser (เช่น Chrome, Edge, Safari เป็นต้น) ทาง external IP address แล้วระบุต่อท้ายด้วย port 1880 เช่น ตัวอย่างต่อไปนี้
- หากไม่สามารถเชื่อมต่อได้ให้ตรวจสอบการกำหนด firewall ให้ถูกต้อง
Setup HiveMQ (for testing)
- สร้าง MQTT client บน public broker เช่น HiveMQ
-
คลิก Connect
-
คลิก Add New Topic Subscription
-
ระบุ topic ที่ต้องการ subscribe เช่น ae_iot/# แล้วคลิก Subscribe
-
ทดลอง publish (บน client เดียวกัน) ไปยัง topic เช่น ae_iot/from_web ด้วยข้อความที่ต้องการ เช่น 'hello'
My First Flow
- กลับมาที่หน้าต่าง Node-RED บน browser ที่สร้างไว้บนขั้นตอนก่อนหน้า
- ลาก inject node และ debug node (จาก Common pellet) และ mqtt in node และ mqtt out node (จาก Network pellet) แล้วลากเส้นเชื่อมต่อดังภาพ
-
ดับเบิลคลิก เพื่อแก้ไข inject node เปลี่ยนชนิดข้อมูลของ Payload จาก timestamp เป็น string
-
พิมพ์ข้อความที่ต้องการส่งตามที่ต้องการ เช่น 'hi' แล้วคลิก Done
-
ดับเบิลคลิก เพื่อเข้าแก้ไข mqtt out node
-
คลิก ปุ่มดินสอ
เพื่อเพิ่ม mqtt-broker
-
ป้อนลิงก์ของ MQTT broker ที่ใช้ เช่น mqtt-dashboard.com (สำหรับ Hive MQ) แล้วคลิก Add
-
ค่าอื่น ๆ อาจปรับตามความเหมาะสม โดยอาจใช้ตามที่เป็นอยู่ก่อนเพื่อคว่ามสะดวก
-
อาจเพิ่มความปลอดภัยโดยกำหนด username / password ในแท็บ Security ทั้งนี้ขึ้นกับการกำหนดค่าในฝั่ง broker ด้วย
-
-
กำหนด topic ที่ต้องการ publish เช่น ae_iot/from_nodered แล้วคลิก Done

-
ดับเบิลคลิก เพื่อเข้าแก้ไข mqtt in node
-
เลือก Server เป็นค่าเดียวกับฝั่ง mqtt out
-
กำหนด topic ที่ต้องการ subscribed เช่น ae_iot/# แล้วคลิก Done
-
Flow Diagram ที่ได้จะมีลักษณะดังนี้
- หากมีสัญลักษณ์รูปสามเหลี่ยมสีแดงบน node ใด แสดงว่า node นั้นมี error ให้อ่านและแก้ไขให้ถูกต้อง
-
เมื่อทุกอย่างถูกต้องให้กด
เพื่อ deploy (สั่งใช้งาน) Flow ที่สร้างขึ้น
-
หากสามารถเชื่อมต่อกับ broker ได้ MQTT nodes จะแสดงสถานะ connected
- คลิกปุ่ม
เพื่อเปิดหน้าต่างแสดงข้อมูลการ debug
Test the Flow
- ทดลองพ่นข้อมูล (inject) โดยกดปุ่ม inject ข้อมูล
- ข้อมูลจะถูก publish ผ่าน mqtt out node ไปยัง MQTT broker ที่ตั้งไว้
- MQTT broker จะ publish ส่งต่อข้อมูลออกมายัง client ที่ subscribed topic ที่เกี่ยวข้อง ซึ่ง mqtt in node ได้ subscribed เอาไว้
- เมื่อ mqtt in node ได้รับ message จาก broker จะส่งข้อมูลมาแสดงผลในหน้าต่าง debug ที่กำหนดไว้เป็นปลายทางของข้อมูล
- หากเปิดดูใน HiveMQ ก็จะเห็นว่าได้รับ message ที่ subscribed ไว้เช่นกัน
- เช่นเดียวกัน หากทำการ publish จาก HiveMQ บน topic ที่เกี่ยวข้อง ฝั่งของ Node-RED ก็จะได้รับ message เหมือนกัน
- จบในส่วนของ Node-RED ตอนต่อไปจะทำ broker ใช้เองล่ะ (Mosquitto)