Download as pdf or txt
Download as pdf or txt
You are on page 1of 247

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ

คูมือ
Advanced IoT
อินเตอรเน็ตในทุกสรรพสิ่งขั้นสูง

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
สารบัญ
หนวยการเรียนรูที่ 1 ระบบปฏิบัติการและการใชงานคอมพิวเตอรบอรดเดี่ยว 1
ใบงานที่ 1.1 ติดตั้งและใชงานระบบปฏิบัติการบน Raspberry Pi 3
ใบงานที่ 1.2 การเปดใชงาน VNC Viewer และการตั้งคา IP สําหรับ Raspberry Pi 13
คําถามทายหนวยการเรียนรูที่ 1 34

หนวยการเรียนรูที่ 2 การใชงาน Node-RED 35


ใบงานที่ 2.1 หลักการทํางานและการติดตั้ง Node-RED 38
ใบงานที่ 2.2 องคประกอบพื้นฐานของ Node-RED และ Node พื้นฐาน 47
ใบงานที่ 2.3 การจัดการ Node และ Flow บน Node-RED 66
ใบงานที่ 2.4 การใชงาน Node-RED Dashboard 80
ใบงานที่ 2.5 การจัดการขอมูลบน Node-RED ผาน Node ตางๆ 99
คําถามทายหนวยการเรียนรูที่ 2 120

หนวยการเรียนรูที่ 3 การสื่อสารในระบบ IoT และ MQTT Protocol 122


ใบงานที่ 3.1 Protocol ที่ใชในระบบ IoT และ MQTT Protocol 124
ใบงานที่ 3.2 การใชงาน MQTT Protocol บน Node-RED 133
คําถามทายหนวยการเรียนรูที่ 3 151

หนวยการเรียนรูที่ 4 ฐานขอมูลในระบบ IoT 152


ใบงานที่ 4.1 ฐานขอมูลในงาน IoT และ การใชงาน InfluxDB เบื้องตน 154
ใบงานที่ 4.2 การใชงาน InfluxDB บน Node-RED 165
คําถามทายหนวยการเรียนรูที่ 4 190

หนวยการเรียนรูที่ 5 การแสดงผลขอมูลและการแจงเตือน 191


ใบงานที่ 5.1 การติดตั้งและใชงาน Grafana เบื้องตน 194
ใบงานที่ 5.2 การสราง Grafana Dashboard และการเลือกใช Panel 211
ใบงานที่ 5.3 การทําการแจงเตือนผาน Line Notify ดวย Node-RED 236
คําถามทายหนวยการเรียนรูที่ 5 243

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 1

หนวยการเรียนรูที่ 1
ระบบปฏิบัติการและการใชงานคอมพิวเตอรบอรดเดี่ยว
จุดประสงค
1. เรียนรู้หลักการทํางานของระบบปฏิบัติการบนคอมพิวเตอร์
2. เรียนรู้การติดตั้งระบบปฏิบัติการของคอมพิวเตอร์บนคอมพิวเตอร์บอร์ดเดี่ยว

ตัวชี้วัด
1. สามารอธิบายการทํางานของระบบปฏิบัติการบนคอมพิวเตอร์ได้
2. สามารถติดตั้งระบบปฏิบัติการของคอมพิวเตอร์บนคอมพิวเตอร์บอร์ดเดี่ยวได้
3. สามารถใช้คาํ สั่งพื้นฐานของระบบปฏิบัติการบนคอมพิวเตอร์ได้

สาระการเรียนรู
เนื้อหา
ศึกษาและปฏิบัติเกี่ยวกับ Raspberry Pi ที่เปนคอมพิวเตอรขนาดเล็ก หรือ คอมพิวเตอรบอรดเดี่ยว
(Single Board Computer) ที่จะนํามาประยุกตเปน IoT Gateway และ IoT Server โดยศึกษาเกี่ยวกับ
ขอมูลเบื้องตนเกี่ยวกับ Raspberry Pi พรอมทั้งการติดตั้งระบบปฏิบัติการของคอมพิวเตอรใหกับ Raspberry
Pi เพื่อให Raspberry Pi สามารถทํางานได ศึกษาเกี่ยวกับทําการเขาใชงาน Raspberry Pi ผานการ Remote
ในรูปแบบตางๆ คือ SSH หรือ VNC และศึกษาการตั้งคา Raspberry Pi เบื้องตน เพื่อเตรียมความพรอมสูการ
ประยุกตใช Raspberry Pi ในงานดาน IoT ในเนื้อหาบทตอไป

ความรูเดิมที่ตองมี
1. การใช้งานคอมพิวเตอร์พื้นฐาน
2. หลักการทํางานของ IoT Gateway และ IoT Server

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 2

แนวทางการจัดการเรียนรู
การจัดเตรียม
1. ใบงานตามจํานวนนักศึกษา
2. เครื่องคอมพิวเตอร์
3. Raspberry Pi พร้อม Adapter
4. SD Card 32 GB
5. สาย Ethernet
6. Card Reader

ขั้นตอนการดําเนินการ
กอนเริ่มตนการเรียนการสอน ใหผูสอนและผูเรียนดาวนโหลดสื่อการสอนและโปรแกรมพื้นฐานสําหรับ
การเรียนไดที่ https://bit.ly/guide_AdvIoT เพื่อความพรอมในการเรียนการสอน หลังจากนั้นใหเริ่ม
ดําเนินการสอนตามบทเรียน โดย
1. ใบงานที่ 1.1 การติดตั้ง OS บน SD Card
(1) อธิบายเกี่ยวกับบอร์ด Raspberry Pi และตัวอย่างการใช้งาน
(2) อธิบายข้อแตกต่างระหว่าง Raspberry Pi และบอร์ดไมโครคอนโทรลเลอร์ ESP32 ESP8266
(3) อธิบายเกี่ยวกับโปรแกรมพื้นฐานที่จะนํามาใช้งานร่วมกับ Raspberry Pi
(4) สอนการติดตั้งและการใช้งานระบบปฏิบัติการ Raspberry Pi พร้อมทําการทดลองที่ 1 ควบคู่ไป
ด้วย
2. ใบงานที่ 1.2 การเปิดใช้งาน VNC Viewer และการตั้งค่า IP สําหรับ Raspberry Pi
(1) อธิบายเกี่ยวกับโปรแกรม VNC Viewer
(2) สอนวิธีการแชร์อินเตอร์เน็ตให้กับ Raspberry Pi และการเปิดใช้งาน VNC Viewer พร้อมทําการ
ทดลองที่ 1 ควบคู่ไปด้วย
(3) อธิบายเกี่ยวกับการตั้งค่า IP ให้กับ Raspberry Pi แล้วทําการทดลองที่ 2
ซึ่งแตละใบงานนั้นสามารถเสริมสรางความรูของผูเรียนไดจากคําถามทายหนวยการเรียนรู อีกทั้งยัง
เปนตัวชี้วัดผลการเรียนจากผูเรียนได และการสอนในแตละใบงานสามารถใชเวลาในการสอนในตารางเวลาที่ใช
สอนของใบงาน
ตารางเวลาที่ใชสอนของใบงาน
ใบงานที่ เรื่อง เวลา (นาที)
1.1 ติดตั้งและใช้งานระบบปฏิบัติการบน Raspberry Pi 30
1.2 การเปิดใช้งาน VNC Viewer และการตั้งค่า IP สําหรับ Raspberry Pi 120

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 3

ใบงานที่ 1.1 ติดตั้งและใชงานระบบปฏิบัติการบน Raspberry Pi

จุดประสงค
1. เรียนรูร้ ะบบปฏิบัติการ Raspberry Pi
2. เรียนรูก้ ารดาวน์โหลดและการติดตั้ง OS (Operating Systems)
3. เรียนรูก้ ารเปิดใช้งาน SSH

เครื่องมือและอุปกรณ

1. Raspberry Pi 2. SD Card 32 GB 3. สาย Ethernet 4. Card Reader

ทฤษฎีเบื้องตน

Raspberry Pi คืออะไร
Raspberry Pi คือ คอมพิวเตอรขนาดเล็ก หรือ คอมพิวเตอรบอรดเดี่ยว (Single Board Computer)
ที่ถูกพัฒนาขึ้นโดย Raspberry Pi Foundation เพื่อใหผูใชงานสามารถเขาใจการทํางานและการพัฒนา
โปรแกรมคอมพิวเตอร เนื่องจาก Raspberry Pi เปนคอมพิวเตอรที่มีประสิทธิภาพสูง ราคาถูก จึงทําใหเขาถึง
ไดงายกวาคอมพิวเตอรเดสกท็อป ทั่วไป อีกทั้งมีชุมชนออนไลนที่แข็งแกรง มีแหลงขอมูลตางๆมากมาย ใหได
ศึกษาโดยไมเสียคาใชจาย เชน บทความ หรือแมกระทั่งตัวอยางโปรเจคตางๆ

โดย Raspberry Pi มี ค วามสามารถในการเชื ่ อ มต่ อ เครื อ ข่ า ยแบบมี ส ายหรื อ ไร้ ส ายก็ ไ ด้ ทํ า ให้
Raspberry Pi ถูกนํามาพัฒนาใช้กับงานด้าน Internet of Things ได้ โดยสามารถนําไปทําเป็นตัว End Node

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 4

ที่ประยุกต์ใช้กับเซนเซอร์ตรวจวัดต่างๆ ในการเก็บข้อมูลที่ต้องการ ไปจนถึงการนํา Raspberry Pi มาทําเป็น


Server/Cloud ได้ จากคุณสมบัติต่างๆที่มีประสิทธิภาพสูงของตัว Raspberry Pi ดังนี้
- CPU: Quad-core 1.2 GHz ARM Cortex-A53 แบบ 64 bits
- GPU: Broadcom Video Core IV @ 400 MHz
- Memory ขนาด 1 GB (LPDDR2-900 SDRAM)
- หน่วยความจุแบบ MicroSD
- 4 USB ports
- 1 Ethernet port
- 802.11n Wireless LAN
- Bluetooth 4.0
- รองรับ HDMI/Composite ผ่านทาง RCA Jack
- GPIO 40 pins

ระบบปฏิบัติการและการติดตั้งระบบปฏิบัติการบน Raspberry Pi
คอมพิ ว เตอร โ ดยทั ่ ว ไปที ่ เราใช ง านกั น ทั ่ ว ไปนั ้ น สามารถทํ า งานได ต ามที ่ เราเห็ น เนื ่ อ งจากมี
ระบบปฏิบัติการ (OS) ที่เปนซอฟตแวรที่ทําหนาที่จัดการอุปกรณคอมพิวเตอรและแหลงซอฟตแวรและบริการ
โปรแกรมคอมพิวเตอร เพื่อใหอุปกรณทํางานตามที่ไดออกแบบไว โดยหากไมมีระบบปฏิบัติการแลวนั้น
คอมพิวเตอรจะไมสามารถทํางานไดเลย
Raspberry Pi ก็เชนเดียวกัน เนื่องจาก Raspberry Pi เปนคอมพิวเตอรขนาดเล็ก จึงจําเปนตองมี
ระบบปฏิบัติการในการทํางาน ซึ่งระบบปฏิบัติการทั่วไปที่ใชนั้น คือ Raspbian ที่เปนระบบปฏิบัติการ
ลี น ุ ก ซ (Linux) เป น ฐานถู ก ปรั บ แต ง มาใช ก ั บ Raspberry Pi โดยเฉพาะ สามารถดาวน โ หลดได ที่
https://www.raspberrypi.com/software/operating-systems/ โดยระบบปฏิบัติการจะถูกติดตั้งลงใน
Micro SD Card ทําให Raspberry Pi ทํางานได้

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 5

โปรแกรมพื้นฐานในการติดตั้งและใชงาน Raspberry Pi

การเริ่มใชงาน Raspberry Pi ตั้งแตเริ่มตน จําเปนตองมีโปรแกรมตางๆ เพื่อใชในการชวยติดตั้ง การ


ตั้งคา และการใชงาน Raspberry Pi ดังนี้
1. SD Card Formatter คือ โปรแกรมสําหรับการล้างข้อมูลทั้งหมดบน SD Card เพื่อเตรียมพร้อมใน
การลงระบบปฏิบัติการ
2. Raspberry Pi Imager คือ โปรแกรมสําหรับติดตั้งหรืออ่านไฟล์ .img ที่เป็นไฟล์ระบบปฏิบัติการของ
Raspberry Pi ลงบน SD Card
3. Advance IP Scanner คื อ โปรแกรมสํ า หรั บ ค้ น หา IP Address ของอุ ป กรณ์ ท ี ่ เ ชื ่ อ มต่ อ กั บ
คอมพิวเตอร์ของเรา
4. Putty คือ โปรแกรมสําหรับการ Remote ไปที่ Command Line ผ่านช่องทาง SSH ของ Raspberry
Pi
5. VNC Viewer คือ โปรแกรมสําหรับการ Remote ไปที่หน้า Desktop ของ Raspberry Pi เลย
6. WinSCP คือ โปรแรกมสําหรับการ Remote เพื่อจัดการไฟล์ต่างๆ บน Raspberry Pi
โดยสามารถดาวนโหลดโปรแกรมขางตนไดที่ https://bit.ly/guide_AdvIoT_sw

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 6

ขั้นตอนการทดลอง
การทดลองที่ 1 การดาวนโหลดและติดตั้งระบบปฏิบัติการ Raspberry Pi OS 64 bit

1. เข้าไปที่เว็บไซต์ของ Raspberry Pi https://www.raspberrypi.com/software/operating-systems/


เพื่อดาวน์โหลดระบบปฏิบัติการ Raspberry Pi OS

2. เลื่อนลงมาด้านล่าง จะพบกับคําว่า Raspberry Pi OS (64-bit) กด Download ที่ Raspberry Pi OS


with desktop โดยในการทดลองนี้เป็น Raspberry Pi OS (64-bit) อัพเดทล่าสุดวันที่ 5-Dec-2023

3. เมื่อดาวน์โหลดสําเร็จจะได้ไฟล์ .zip ให้ทําการแตกไฟล์ เมื่อแตกไฟล์แล้วจะได้ไฟล์สกุล .img ซึ่งเป็นไฟล์


ของระบบปฏิบัติการ

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 7

4. นํา SD Card เสียบเข้ากับ Card Reader แล้วต่อเข้าคอมพิวเตอร์ หลังจากนั้นให้ Format SD Card ด้วย
โปรแกรม SD Card Formatter โดยตรวจสอบให้ถูกต้องว่าเลือก Drive ของ SD Card แล้ว กด Format

5. หลังจากนั้น ให้เปิดโปรแกรม Raspberry Pi Imager ที่เป็นโปรแกรมสําหรับติดตั้ง OS ลง SD Card


สําหรับ Raspberry Pi OS โดยเฉพาะ

6. ทําการเลือก OS ที่จะติดตั้ง โดยไปที่ Choose OS แล้วเลื่อนลงไปที่ Use Custom เลือก Raspberry Pi


OS (64-bit) ที่ดาวน์โหลดมาก่อนหน้า กด Open

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 8

7. เลือก Storage ที่จะติดตั้ง OS ลงไป คือ Drive ของ SD Card โดยกด CHOOSE STORAGE และเลือก
พอร์ตที่ต่อ SD Card Reader อยู่

8. หลังจากเลือก NEXT แล้ว ให้ไปตั้งค่าก่อน โดยไปที่ปุ่ม EDIT SETTINGS จะแสดงดังรูป

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 9

9. เปิด Set hostname, Enable SSH, Set username and password และ Set locale settings โดยตั้ง
ค่าต่างๆดังนี้
9.1. Set hostname เป็นค่าตั้งต้น คือ raspberrypi
9.2. Set username เป็น pi และ password เป็น raspberry
9.3. Set locale Time zone เป็น Asia/Bangkok และ Keyboard layout เป็น us
เมื่อตั้งค่าตามข้อ (1) – (3) สําเร็จให้กดแถบ SERVICES แล้ว Enable SSH เพื่อ Enable SSH ใช้ Use
password authentication และดําเนินการ SAVE ทันที

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 10

10. หลังจากตั้งค่าทั้งหมดสําเร็จเลือก YES หากแสดงผล Warning ให้เลือก YES เพื่อดําเนินการยกเลิก


เชื่อมต่อ SD CARD หลังจาก WRITE สําเร็จ

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 11

11. ใช้เวลาประมาณ 5 - 10 นาทีในการติดตั้ง OS

12. เมื่อติดตั้ง OS สําเร็จ จะมีการแจ้งเตือน ให้กด CONTINUE แล้วสามารถถอด Card Reader และนํา SD
Card ออกมาได้เลย

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 12

บันทึกผลทดลอง
คําชี้แจง : ใหผูทําการทดลองเติมเครื่องหมาย P ตามผลการทดลอง
ผลการทดลอง
รายการทดลอง
ได้ ไม่ได้
สามารถติดตั้ง OS ผ่านโปรแกรม Raspberry Pi Imager ได้หรือไม่
สามารถตั้งค่าก่อนทําการติดตั้ง OS ได้หรือไม่

อธิบายผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

สรุปผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 13

ใบงานที่ 1.2 การเปดใชงาน VNC Viewer และการตั้งคา IP สําหรับ Raspberry Pi


จุดประสงค
1. เรียนรู้การเปิดใช้งาน VNC Viewer
2. เรียนรู้การเชื่อมต่ออินเตอร์เน็ตให้กับ Raspberry Pi
3. เรียนรูก้ ารตั้งค่า IP ให้กับ Raspberry Pi

เครื่องมือและอุปกรณ

1. Raspberry Pi 2. SD Card 32 GB 3. สาย Ethernet

ทฤษฎีเบื้องตน

การเขาใชงาน Raspberry Pi
หลังจากการติดตั้งระบบปฏิบัติการ หรือ OS ใหกับ Raspberry Pi แลว Raspberry Pi ของเราจะ
พรอมใชงาน เหมือนคอมพิวเตอรจริงๆ เครื่องหนึ่งไดเลย โดยวิธีการเขาใชงาน Raspberry Pi มีดวยกันหลักๆ
อยู 2 วิธี คือ
1. การเข้าใช้งาน Raspberry Pi ผ่านจอมอนิเตอร์ เมาส์ และคีย์บอร์ด
การเข้าใช้งานผ่านจอมอนิเตอร์ เมาส์ และคีย์บอร์ด เป็นการใช้งาน Raspberry Pi โดยตรง
ด้วยการต่อจอมอนิเตอร์เข้ากับพอร์ท HDMI ส่วนเมาส์และคีย์บอร์ดต่อเข้ากับพอร์ท USB บนตัว
Raspberry Pi โดยหลังจากต่ออุปกรณ์ต่างๆ เสร็จเรียบร้อย ให้ทําการจ่ายไฟให้กับ Raspberry Pi ก็
จะสามารถใช้ Raspberry Pi ผ่านหน้าจอมอนิเตอร์ได้ไม่ต่างจากคอมพิวเตอร์โดยทั่วไปเลย

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 14

2. การเข้าใช้งาน Raspberry Pi ผ่านวิธีการ Remote Access


การใช้งาน Raspberry Pi ผ่านการ Remote เป็นวิธีที่นิยมใช้เมื่อเราไม่มีอุปกรณ์ที่พร้อม
สําหรับการใช้งาน Raspberry Pi ผ่านจอมอนิเตอร์ เมาส์และคีย์บอร์ด โดยหลักการคือเราจะใช้
คอมพิวเตอร์หรือโน๊ตบุ๊คของเราเข้าไปอยู่ในเครือข่ายคอมพิวเตอร์เดียวกันกับ Raspberry Pi เช่น
ผ่าน LAN (Local Area Network) ด้วยการต่อสาย Ethernet ระหว่างคอมพิวเตอร์กับ Raspberry
Pi หรือ WLAN (Wireless Local Area Network) ด้วยการเชื่อมต่อเครือข่ายไร้สายเดียวกัน แล้วใช้
ซอฟต์แวร์สําหรับการ Remote เข้าไปที่ Raspberry Pi เพื่อทําการควบคุมและใช้งาน Raspberry Pi
ผ่านคอมพิวเตอร์หรือโน๊ตบุ๊คของตัวเองได้เลย
โดยซอฟต์แวร์ที่นิยมใช้ในการ Remote เช่น Putty ที่จะ Remote ไปที่ SSH เพื่อใช้งาน
Command Line ของ Raspberry Pi หรื อ VNC Viewer ที ่ Remote ไปที่ VNC Interface ของ
Raspberry Pi เพื่อใช้งานโดยตรง

การ Remote access ผาน SSH ของ Raspberry Pi


SSH หรือ Secure Shell คือ Network Protocol แบบหนึ่งทําใหสามารถแลกเปลี่ยนขอมูลระหวาง
อุ ปกรณ ทั ้ งสองตั วได ด วยวิ ธี การ Remote Access ไปยั งคอมพิ วเตอร เซิ ร ฟเวอร (SSH-Server) แบบ
Command line โดยทุกๆการสงขอมูล จะมีการเขารหัสกอนที่จะสงผานไปยังระบบเครือขายทุกครั้ง ทําใหมี
ความปลอดภัยมากกวาการสงไปเปนขอมูลโดยตรงโดยหลักการทํางานของ SSH คือ การนําคอมพิวเตอรและ
Raspberry Pi มาเชื่อมตอในเครือขายเดียวกัน เพื่อใหคอมพิวเตอรกับ Raspberry Pi สื่อสารขอมูลกันผาน
SSH ไดและสามารถควบคุม Command Line ของ Raspberry Pi โดยไมจําเปนตองนํา Raspberry Pi มาตอ
กับจอมอนิเตอรหรือคียบอรด เพราะสามารถสั่งงานจากคอมพิวเตอรทันที

การใชงาน SSH กับ Raspberry Pi นั้นเริ่มจากการสั่งให Raspberry Pi เปดการใชงาน SSH โดยสราง


Text file ชื่อ ssh ไวในโฟลเดอร boot ของ SD Card ที่ติดตั้ง Raspberry Pi OS เพียงเทานี้ Raspberry Pi
จะสั่งเปดการใชงาน SSH เอาไว หลังจากนั้นใหใชคอมพิวเตอรเครื่องอื่นที่เชื่อมตออยูในเครือขายเดียวกับ
Raspberry Pi เปดซอฟตแวรสําหรับการใชงาน SSH เชน Putty เพื่อ Remote ไปที่ Command Line โดยใช
IP Address ของ Raspberry Pi แลวจะปรากฏหนาตาง Command Line ของ Raspberry Pi ใหใชงาน

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 15

การ Remote access ผาน VNC ของ Raspberry Pi


VNC ยอมาจาก Virtual Network Computing คือ การควบคุมแบบรีโมทจากคอมพิวเตอรเครื่องอื่น
ในเครือขายเดียวกัน เพื่อใชงานแบบ Graphic ที่ระบบจะแบงปนทรัพยากรหนาจอคอมพิวเตอรรวมกัน รวมถึง
Input Device เชน เมาส และคียบอรด สําหรับทําการ Remote Control คอมพิวเตอรเครื่องอื่นๆ และยัง
สามารถทํางานรวมกันไดหลายเครื่องพรอมๆ กันไดอีกดวย
การใชงาน VNC กับ Raspberry Pi นั้น ตองเริ่มจากเขาไปเปดการใชงาน VNC Interface ของ
Raspberry Pi เพื่อให Raspberry Pi สามารถรับการ Remote Access จากคอมพิวเตอรเครื่องอื่นได
หลังจากนั้น ใหคอมพิวเตอรเครื่องอื่นที่เชื่อมตออยูในเครือขายเดียวกับ Raspberry Pi และใชซอฟตแวร
สําหรับการใชงาน VNC เชน VNC Viewer, TightVNC ในการเชื่อมตอเขากับ Raspberry Pi โดยใช IP
Address ของ Raspberry Pi

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 16

หลักการ IP Address และ Local IP Address


IP address เปรียบเสมือนที่อยู ที่สามารถบอกไดวาเครื่องคอมพิวเตอรตั้งอยูที่ไหน ซึ่งแนนอนวาเลข
IP address จะไมซํ้ากัน เหมือนเลขที่บานที่ไมซํ้ากัน เพราะถ้า IP address ซํ้า การสงขอมูลผานเครือขายก็จะ
สับสนวาตองสงขอมูลไปที่ไหน โดยชื่อเรียกเต็มของ IP address คือ Internet Protocol Address จะ
ประกอบไปดวยตัวเลข 4 ชุด โดยในปจจุบันมาตรฐานของ IP address คือ IPv4 และ IPv6 โดย IPv4 จะเปน
เลข 32 บิต และ IPv6 เปนเลข 128 บิต
โดย Local IP Address นั้นคือ IP Address ที่ใชกันเองภายในระบบปด เชนในออฟฟศ หรือภายใน
บานที่มีคอมพิวเตอรมากกวา 1 เครื่อง โดยถาหากอุปกรณมี IP Address อยูภายในวงเดียวกัน จะสามารถ
สื่อสารระหวางกันได ซึ่งเราจะใชหลักการนี้ในการสื่อสารระหวางคอมพิวเตอรกับ Raspberry Pi เชน
คอมพิวเตอร มี IP Address คือ 192.168.137.1 จะสามารถสื่อสารกับ Raspberry Pi ที่มี IP Address ในชวง
192.168.137.2 ถึง 192.168.137.254 ได หรือ คอมพิวเตอร มี IP Address คือ 192.168.200.1 จะสามารถ
สื่อสารกับ Raspberry Pi ที่มี IP Address ในชวง 192.168.200.2 ถึง 192.168.200.254 ได

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 17

ขั้นตอนการทดลอง
การทดลองที่ 1 การเปดการใชงาน VNC Server ดวยการ Remote ผาน SSH ดวยโปรแกรม Putty

1. เริ่มจากการแชร์อินเทอร์เน็ตของคอมพิวเตอร์ออกสู่ Ethernet Port โดย


(1) คลิกขวาไปที่เครื่องหมาย WiFi ที่มุมล่างขวาของคอมพิวเตอร์
(2) กด Open Network & Internet settings

2. เลื่อนลงมาที่ Advanced network settings และกดไปที่ Change Adapter options

3. จะได้หน้าต่าง Network Connections ขึ้นมา ให้


(1) คลิกขวาที่ Wi-Fi
(2) กดไปที่ Properties

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 18

4. จะได้หน้าต่าง Wi-Fi Properties ให้


(1) กดไปที่แถบ Sharing
(2) ทําเครื่องหมายถูกที่ช่องแรก และเลือก Home networking connection
(3) เลือก Ethernet Port ที่จะใช้เชื่อมต่อกับ Raspberry Pi
(4) กด OK

5. IP Address ของ Ethernet Port ของคอมพิ ว เตอร์ จ ะถู ก Set ไว้ ท ี ่ 192.168.137.1 โดยสามารถ
ตรวจสอบความถูกต้องได้โดย
(1) คลิกขวาที่ Ethernet Port ที่เราแชร์อินเทอร์เน็ตไป
(2) เลือก Properties

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 19

6. จะได้หน้าต่าง Ethernet Properties ขึ้นมาโดย


(1) ดับเบิลคลิกไปที่ IP Version 4
(2) จะได้หน้าต่างใหม่ที่แสดงผลว่า IP Ethernet Port ของคอมพิวเตอร์นี้ ถูกตั้งค่า IP Address ไว้ที่
192.168.137.1 จริงๆ

7. เมื่อมั่นใจแล้ว กด OK เพื่อยืนยันการตั้งค่า แล้วปิดทุกหน้าต่างได้เลย


8. ทําการเสียบ SD Card เข้ากับ Raspberry Pi จ่ายไฟ และต่อสาย Ethernet ระหว่าง Raspberry Pi กับ
คอมพิวเตอร์ และรอประมาณ 3 นาที ให้ Raspberry Pi บูทระบบ
9. เปิดโปรแกรม Advance IP Scanner เพื่อหา IP Address ที่ Raspberry Pi ได้รับจาก Ethernet Port
ของคอมพิวเตอร์

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 20

10. เนื่องจาก IP Address ของ Raspberry Pi จะถูกสุ่มให้จากคอมพิวเตอร์ของเรา IP Address ที่ถูกสุ่ม


ขึ ้ น มาจึ ง อยู ่ ใ นช่ ว ง 192.168.137.2 ถึ ง 192.168.137.254 โดยกรอก Scan IP Address ช่ ว ง
192.168.137.1-254 ที่ช่องค้นหา และกด Scan จะพบ IP Address ของ Raspberry Pi ที่โดนแจกผ่าน
Ethernet Port

11. เปิดโปรแกรม Putty และกรอก IP Address ของ Raspberry Pi ที่ช่อง Host Name แล้วกด Open

12. กด Open จะขึ้นหน้าต่างดังภาพ ให้กด Accept

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 21

13. จะปรากฏหน้าต่าง Command Line ของ Raspberry Pi ขึ้นมา ให้พิมคําสั่งดังนี้


(1) Login as ให้พิมพ์ว่า pi แล้วกดปุ่ม Enter
(2) จะขึ้นว่าให้กรอก password ให้พิมพ์ว่า raspberry (ตอนพิมพ์ password จะไม่แสดงต้องพิมพ์ให้
ถูกต้อง) แล้วกดปุ่ม Enter
(3) จะสามารถพิมพ์คําสั่งใน Command line ของ Raspberry Pi ได้เรียบร้อย

14. เข้าไปที่หน้า Setting ของ Raspberry Pi ผ่านคําสั่ง: sudo raspi-config แล้วกดปุ่ม Enter

15. ในการ Setting จะไม่สามารถใช้เมาส์ได้ ให้กดปุ่มลูกศรลงบนคีย์บอร์ด ไปที่ 3 Interface Options แล้ว


กดปุ่ม Enter

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 22

16. เลือกไปที่ VNC แล้วกดปุ่ม Enter

17. กดปุ่มลูกศรไปทางซ้าย เลือกไปที่ Yes แล้วกดปุ่ม Enter

18. เมื่อเปิดสําเร็จ กดปุ่มลูกศรไปทางขวา เพื่อเลือก Finish แล้วกด Enter

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 23

19. จะกลับมาที่หน้า Command ถือว่าสําเร็จในการเปิดใช้งาน VNC Server สําหรับการ Remote เข้าไปยัง


Desktop ของ Raspberry Pi

บันทึกผลทดลอง
คําชี้แจง : ใหผูทําการทดลองเติมเครื่องหมาย P ตามผลการทดลอง
ผลการทดลอง
รายการทดลอง
ได้ ไม่ได้
สามารถเปิดแชร์ WiFi ไปที่ Ethernet Port ได้หรือไม่
สามารถใช้ Advanced IP Scanner หา IP ของ Raspberry Pi ได้หรือไม่
สามารถเข้าใช้งาน Putty ได้หรือไม่
สามารถเปิดการใช้งาน VNC Server ได้หรือไม่

อธิบายผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 24

การทดลองที่ 2 การใชงาน Raspberry Pi ผานการ Remote ผาน VNC Viewer

1. เปิดโปรแกรม VNC Viewer

2. กรอก IP Address ของ Raspberry Pi ที่ได้มาจากการสุ่มให้จากคอมพิวเตอร์ จากโปรแกรม Advanced


IP Scanner เพื่อเข้าใช้งาน VNC

3. หากเชื่อมต่อแล้วพบ Raspberry Pi จะปรากฏหน้าต่างดังภาพ กด Continue

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 25

4. กรอก Username ว่า pi และ Password ว่า raspberry แล้วกด OK

5. จะแสดงหน้า Desktop ของ Raspberry Pi เพื่อใช้งานได้เลย

6. ทําการตรวจสอบการใช้งาน WiFi โดยคลิกซ้ายไปที่สัญลักษณ์ลูกศรขึ้นลง หรือสัญลักษณ์ Wireless


เพื่อทําการแสดงเครือข่าย WiFi ทั้งหมดที่สามารถเชื่อมต่อได้

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 26

7. ต่อมาให้คลิกขวาที่สัญลักษณ์เดิม แล้วเลือก Advanced Options >> Edit Connections

8. จะแสดงหน้าต่าง Network Connections ไปที่ Ethernet > Wired connections โดยให้ทําการเลือก


การตั้งค่าหรือสัญลักษณ์ฟันเฟือง

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 27

9. จะแสดงผลหน้า Editing Wired connection 1 ให้เลือก IPv4 Settings

10. จะแสดงผลหน้าต่างดังรูป

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 28

11. ดําเนินการตั้งค่าดังนี้
(1) Method ให้เปลี่ยนจาก Automatic (DHCP) เป็น Manual
(2) เลือก Add และดําเนินการกรอกค่า ได้แก่
Address เป็น 192.168.200.1
Netmask เป็น 24
(3) ดําเนินการเลือก Save

12. ดําเนินการ Reboot Raspberry Pi

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 29

13. เราจะไม่ ส ามารถใช้ IP Address เดิ ม ในการ Remote ได้ เนื ่ อ งจาก IP Address ได้ ถ ู ก ตั ้ ง เป็ น
192.168.200.1 เรียบร้อยแล้ว
14. ต้องทําการตั้งค่า IP Address ของคอมพิวเตอร์ให้กลับไปอยู่ในวงเดียวกันกับ Raspberry Pi ที่เป็น
192.168.200.1 เพื่อให้สื่อสารกันได้ โดยให้เราไปที่หน้าต่าง Network Connection เช่นเดิม เพื่อปิด
Internet Sharing ก่ อ น โดยคลิ ก ขวาที ่ Wi-Fi เลื อ ก Properties แล้ ว ไปที ่ Sharing แล้ ว ปิ ด การแชร์
อินเทอร์เน็ต แล้วกด OK

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 30

15. หลังจากนั้น คลิกขวาไปที่ Ethernet Port ที่เชื่อมต่อกับ Raspberry Pi แล้วเลือก Properties


(1) เลือก Internet Protocol Version 4 (TCP/IPv4)
(2) เลือก Use the following IP Address
(3) IP Address เป็น 192.168.200.10
(4) Subnet Mask เป็น 255.255.255.0
15.1. กด OK

16. กด OK อีกครั้ง เพื่อยืนยันการตั้งค่า

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 31

17. กลับไปที่ VNC Viewer แล้ว เลือก Remote เข้าไปที่ 192.168.200.1 ที่เป็น IP Address ของ Raspberry
Pi ที่เราได้ตั้งค่าเอาไว้

18. เนื่องจาก Computer เราตั้งค่า IP Address เป็น 192.168.200.10 และ IP Address ของ Raspberry Pi
เป็น 192.168.200.1 ซึ่งทั้งคู่ อยู่ในวง Network เดียวกัน จึงเจอกับ Raspberry Pi ดังภาพ

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 32

19. กด Continue และกรอก Username และ Password เช่นเดิม คือ pi และ raspberry ตามลําดับ

20. จะสามารถเข้าใช้งาน Raspberry Pi ได้ทุกครั้ง ผ่าน IP Address 192.168.200.1

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 33

บันทึกผลทดลอง
คําชี้แจง : ใหผูทําการทดลองเติมเครื่องหมาย P ตามผลการทดลอง
ผลการทดลอง
รายการทดลอง
ได้ ไม่ได้
สามารถใช้งาน Raspberry Pi ผ่าน VNC Viewer ได้หรือไม่
สามารถตั้งค่า WiFi ของ Raspberry Pi ได้หรือไม่
สามารถตั้ง Ethernet IP Address ของ Raspberry Pi ได้หรือไม่
สามารถใช้งาน Raspberry Pi ผ่าน IP Address 192.168.200.1 ได้หรือไม่

อธิบายผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

สรุปผลการทดลอง

..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 34

คําถามทายหนวยการเรียนรูที่ 1

1. จงอธิบายความแตกต่างระหว่าง SSH และ VNC


2. อธิบายความแตกต่างระหว่างการเปิดใช้งาน VNC และตั้งค่า IP Address ของ Raspberry Pi ผ่านวิธีต่อ
จอมอนิเตอร์ กับวิธีการ Remote Access
3. สําหรับการตั้งค่า IP Address ของ Raspberry Pi เป็น 192.168.200.1 นั้นสามารถตั้งเป็นแบบอื่นได้
หรือไม่ เพราะเหตุใด
4. เพราะเหตุใดต้องตั้งค่า wireless LAN country เป็น TH Thailand
5. หากไม่ใช้บอร์ด Raspberry Pi สามารถใช้ Device ใดได้บ้าง

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 35

หนวยการเรียนรูที่ 2
การใชงาน Node-RED
จุดประสงค
1. เรียนรู้หลักการทํางานของระบบจัดการข้อมูล (Data Collector) บน IoT Gateway
2. เรียนรู้การติดตั้งและใช้งาน Node-RED
3. เรียนรู้การติดตั้งและใช้งานโหนดพื้นฐาน และโหนดที่ใช้จัดการข้อมูลในระบบ IoT
4. เรียนรู้การติดตั้งและใช้งานโหนด Dashboard บน Node-RED

ตัวชี้วัด
1. สามารถอธิบายหลักการทํางานของระบบจัดการข้อมูล (Data Collector) บน IoT Gateway ได้
2. สามารถติดตั้งและใช้งาน Node-RED ได้
3. สามารถใช้งานโหนดพื้นฐาน และโหนดที่ใช้จัดการข้อมูลในระบบ IoT ได้
4. สามารถติดตั้งและใช้งานโหนด Dashboard บน Node-RED ได้

เนื้อหา
ศึ กษาเกี ่ ยวกั บการจั ดการข อมู ล (Data Corrector) ว ามี หลั กการทํ างานอย างไร และบน IoT
Gateway ในระบบ Internet of Things (IoT) นั้นจะสามารถจัดการขอมูลผานโปรแกรมหรือเครื่องมือใดได
บาง ซึ่งในหนวยการเรียนรูนี้เราจะใชซอฟตแวรที่ชื่อวา Node-RED ในการจัดการขอมูลบน IoT Gateway โดย
จะเริ่มจากการศึกษาเกี่ยวกับ Node-RED วาเปนซอฟตแวรที่มีหลักการทํางานอยางไรสามารถทําอะไรไดบาง
พรอมทั้งติดตั้งและใชงาน เพื่อใหผูเรียนสามารถใชงานโหนดแตละโหนดของ Node-RED ได ทั้งซอฟตแวร
Node-RED ยังสามารถสราง Dashboard ได ทางผูเรียนจะไดนําขอมูลที่ไดจัดการไปเบื้องตนมาสรางเปน
Dashboard เพื่อควบคุมการทํางานและแสดงผล

ความรูเดิมที่ตองมี
1. การใช้งานคอมพิวเตอร์พื้นฐาน
2. หลักการทํางานของระบบปฏิบัติการบนคอมพิวเตอร์
3. การใช้งานคําสั่งพื้นฐานของระบบปฏิบัติการบนคอมพิวเตอร์

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 36

แนวทางการจัดการเรียนรู
การจัดเตรียม
1. ใบงานตามจํานวนนักศึกษา
2. เครื่องคอมพิวเตอร์
3. Raspberry Pi ที่ติดตั้ง OS แล้ว
4. สาย Ethernet
5. Traffic Light และสายไฟ

ขั้นตอนการดําเนินการ
กอนเริ่มตนการเรียนการสอน ใหผูสอนและผูเรียนดาวนโหลดสื่อการสอนและโปรแกรมพื้นฐานสําหรับ
การเรียนไดที่ https://bit.ly/AdvIoT_Training_Doc เพื่อความพรอมในการเรียนการสอน หลังจากนั้นใหเริ่ม
ดําเนินการสอนตามบทเรียน โดย
1. ใบงานที่ 2.1 หลักการทํางานและการติดตั้ง Node-RED
(1) อธิบายเกี่ยวกับ Node-RED และหลักการทํางาน
(2) สอนการติดตั้งและเปิดใช้งานพร้อมทําการทดลองที่ 1 ควบคู่ไปด้วย
2. ใบงานที่ 2.2 องค์ประกอบพื้นฐานของ Node-RED และ Node พื้นฐาน
(1) อธิบายเกี่ยวกับการเริ่มต้นใช้งาน และองค์ประกอบบนหน้าต่างของ Node-RED
(2) สอนเกี่ยวกับ Node ต่างๆ โดยทําการทดลองที่ 1 และกาสรทดลองที่ 2 ควบคู่ไปด้วย
3. ใบงานที่ 2.3 การจัดการ Node และ Flow บน Node-RED
(1) สอนการติดตั้ง Node อื่นๆเพิ่มเติมพร้อมทําการทดลองที่ 1 ควบคู่ไปด้วย
(2) สอนการ Export และ Import Flow ที่สร้างขึ้น พร้อมทําการทดลองที่ 2 ควบคู่ไปด้วย
4. ใบงานที่ 2.4 การใช้งาน Node-RED Dashboard
(1) อธิบายเกี่ยวการทํางานและวิธีใช้ Node-RED Dashboard
(2) สอนใช้งานเครื่องมือต่างๆ สําหรับสร้าง Node-RED Dashboard พร้อมทําการทดลองที่ 1 ควบคู่
ไปด้วย
5. ใบงานที่ 2.5 การจัดการข้อมูลบน Node-RED ผ่าน Node ต่างๆ
(1) อธิบายเกี่ยวกับโครองสร้างและรูปแบบการจัดการข้อมูลบน Node-RED
(2) สอนการใช้ Node ที่เกี่ยวกับการจัดการข้อมูลพร้อมทําการทดลองที่ 1 ควบคู่ไปด้วย

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 37

ซึ่งแตละใบงานนั้นสามารถเสริมสรางความรูของผูเรียนไดจากคําถามทายหนวยการเรียนรู อีกทั้งยัง
เปนตัวชี้วัดผลการเรียนจากผูเรียนได และการสอนในแตละใบงานสามารถใชเวลาในการสอนในตารางเวลาที่ใช
สอนของใบงาน
ตารางเวลาที่ใชสอนของใบงาน
ใบงานที่ เรื่อง เวลา (นาที)
2.1 หลักการทํางานและการติดตั้ง Node-RED 30
2.2 องค์ประกอบพื้นฐานของ Node-RED และ Node พื้นฐาน 120
2.3 การจัดการ Node และ Flow บน Node-RED 30
2.4 การใช้งาน Node-RED Dashboard 90
2.5 การจัดการข้อมูลบน Node-RED ผ่าน Node ต่างๆ 180

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 38

ใบงานที่ 2.1 หลักการทํางานและการติดตั้ง Node-RED

จุดประสงค
1. เรียนรูห้ ลักการทํางานทํางานของ Node-RED
2. เรียนรู้วิธีการติดตั้ง Node-RED บน Raspberry Pi
3. เรียนรูว้ ิธีการเปิดใช้งาน Node-RED บน Raspberry Pi

เครื่องมือและอุปกรณ

1. Raspberry Pi 2. SD Card 32 GB 3. สาย Ethernet

ทฤษฎีเบื้องตน

Node-RED คืออะไร
Node-RED เปนเครื่องมือสําหรับนักพัฒนาโปรแกรมในการเชื่อมตออุปกรณฮารดแวรตางๆ เขากับ
APIs (Application Programming Interface) รวมไปถึง Online Service ตางๆ ซึ่งเปนการพัฒนาโปรแกรม
แบบ Flow-Based Programming ที่มีหนา UI สําหรับนักพัฒนาใหใชงานผาน Web Browser ในการจัดการ
ขอมูลที่ผานเขามา จึงเหมาะกับงานดาน Internet of Things ที่ตองทํางานควบคูกันระหวางฮารดแวรและ
แอปพลิเคชันตางๆ โดย Node-RED ทํางานบน Node.js ทําใหเหมาะสําหรับการใชงานกับ Raspberry Pi
เนื่องจากใชทรัพยากรนอย ขนาดไฟลไมใหญและ Node.js ยังทําหนาที่เปนตัวกลางให Raspberry Pi สามารถ
ติดตอกับ Web Browser และอุปกรณอื่นๆ ได

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 39

พื้นฐานการทํางานของ Node-RED
การทํางานของ Node-RED เปนการทํางานระหวาง Node ตางๆ ที่ถูกนํามาวางบนพื้นที่ทํางาน
(flow) และมีสายโยงระหวาง Node เพื่อให Node ทํางานรวมกัน โดยทํางานในลักษณะที่เปนเสนทางเดียว
คือ ขอมูลที่สงออกผานสายโยงจะวิ่งไปทางขวาไดทางเดียวเทานั้น โดยในการทํางานของ Node-RED นั้น
ประกอบไปดวยองคประกอบตางๆ คือ
1. Flow คือ พื้นที่การทํางาน คือพื้นที่ที่ Node-RED จะประมวลผลการทํางาน
2. Node คือ กล่องการทํางาน เป็นกล่องที่ทํางานแทนการเขียนโปรแกรม
3. Debug คือ พื้นที่ที่ใช้ในการ Debug ของ Node ที่อยู่บน Flow
4. Deploy คือ ปุ่มที่ใช้สําหรับการอัพเดท Flow

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 40

ขั้นตอนการทดลอง
การทดลองที่ 1 การติดตั้ง Node-RED ผาน Command Line

1. เปิด VNC แล้ว Remote เข้าไปที่ Raspberry Pi ที่ตั้งค่า IP Address เป็น 192.168.200.1 แล้วกรอก
Username และ Password

2. กดไปที่สัญลักษณ์การเชื่อมต่อ ที่มุมบนขวา เพื่อตรวจสอบการเชื่อมต่ออินเทอร์เน็ต โดยต้องให้


Raspberry Pi เชื่อมต่อกับ WiFi เพื่อเตรียมติดตั้ง Node-RED
(1) เลือก WiFi ที่ต้องการเชื่อมต่อโดยปกติ
(2) หากเชื่อมต่อสําเร็จ จะขึ้นสัญลักษณ์ WiFi ที่มุมบนขวา

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 41

3. เมื่อเชื่อมต่อ WiFi เรียบร้อยแล้ว ให้เปิด Terminal โดยกดไปที่สัญลักษณ์มุมบนซ้าย จะได้หน้าต่าง


Terminal ขึ้นมา

4. ใช้คําสั่งสําหรับการติดตั้ง Node-RED คือ


bash <(curl -sL https://raw.githubusercontent.com/node-
red/linux-installers/master/deb/update-nodejs-and-nodered)
โดย Copy ไปวางใน Terminal (ไม่สามารถใช้คีย์ลัด Ctrl+C และ Ctrl+V ได้) แล้วกด Enter

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 42

5. พิมพ์ y แล้วกด Enter เพื่อยืนยันการติดตั้ง Node-RED และ พิมพ์ y แล้วกด Enter อีกครั้งเพื่อยืนยัน
การติดตั้ง Pi - specific nodes

6. รอสําหรับการติดตั้ง Node-RED

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 43

7. เมื่อติดตั้งสําเร็จ จะให้เลือกว่าต้องการตั้งค่า Node-RED เพิ่มเติมหรือไม่ ให้พิมพ์ n และกด Enter ถือว่า


สําเร็จการติดตั้ง Node-RED บน Raspberry Pi เรียบร้อย

8. Node-RED เปรียบเสมือนโปรแกรมทั่วไปบนคอมพิวเตอร์ ที่จะต้องทําการเปิดขึ้นมาถึงใช้งานได้ โดยจะใช้


คําสั่ง node-red-start บน Terminal แล้วกด Enter เพื่อเปิดใช้งาน Node-RED

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 44

9. Node-RED จะทําการรันบน Raspberry Pi เรียบร้อย ที่พอร์ท 1880 โดยสามารถใช้งาน Node-RED ได้


บน Web Browser ของคอมพิวเตอร์ แล้วเรียก IP Address ของ Raspberry Pi ตามด้วยพอร์ทของ
Node-RED คือ 192.168.200.1:1880

10. ทุกครั้งที่เราเปิด Raspberry Pi ขึ้นมาใหม่ เราต้องเข้ามาสั่งเปิดใช้งาน Node-RED บน Terminal ผ่าน


คําสั่ง node-red-start ทุกครั้ง ซึ่งไม่สะดวกกับการทํางาน จึงกลับให้กลับมาที่ Terminal อีกครั้ง

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 45

11. ใช้ ค ํ า สั ่ ง sudo systemctl enable nodered.service แล้ ว กด Enter เพื ่ อ สั ่ ง ให้ Raspberry Pi รั น
Node-RED ทุกครั้งที่เปิดเครื่อง ทําให้ไม่จําเป็นต้องเข้ามาสั่ง node-red-start อีกต่อไป

12. จะขึ้นผลลัพธ์ดังรูป แล้วให้พิมพ์คําสั่ง sudo reboot แล้วกด Enter เพื่อสั่งรีบูท Raspberry Pi

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 46

13. เมื่อ Raspberry Pi รีบูทกลับมา ให้เปิด Node-RED ผ่าน Web Browser ตัวเองที่ 192.168.200.1:1880
จะพบว่าสามารถใช้งาน Node-RED ได้ทันที โดยที่ไม่ต้องสั่ง node-red-start เป็นอันสําเร็จในการติดตั้ง
และใช้งาน Node-RED

บันทึกผลทดลอง
คําชี้แจง : ใหผูทําการทดลองเติมเครื่องหมาย P ตามผลการทดลอง
ผลการทดลอง
รายการทดลอง
ได้ ไม่ได้
สามารถติดตั้ง Node-RED ผ่าน Command Line ได้หรือไม่
สามารถสั่งให้ Raspberry Pi รัน Node-RED โดยอัตโนมัติ ได้หรือไม่

อธิบายผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

สรุปผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 47

ใบงานที่ 2.2 องคประกอบพื้นฐานของ Node-RED และ Node พื้นฐาน


จุดประสงค
1. เรียนรูว้ ิธีการใช้ Node เบื้องต้น
2. เรียนรู้วิธีการใช้ I/O บน Raspberry Pi

เครื่องมือและอุปกรณ

1. Raspberry Pi 2. SD Card 32 GB 3. สาย Ethernet 4. Traffic Light และสายไฟ

ทฤษฎีเบื้องตน

Nodes พื้นฐานของ Node-RED


การใชงาน Node-RED นั้นไมจําเปนตองเขียนโปรแกรมคอมพิวเตอร เนื่องจาก Node-RED นั้นมี
Nodes ตางๆ ในการทํางานพื้นฐานใหใชงานโดยสําเร็จรูป เพียงแคตั้งคา Nodes เหลานั้น เพื่อใหทํางานตามที่
เราตองการ โดย Nodes ใน Node-RED ถูกจัดเปนหลายกลุม เชน Common node, Function Node,
Network Node, Sequence Node, Storage Node, Dashboard Node และอื่นๆ ซึ่ง Nodes ในแตละ
กลุม ก็มีลักษณะการทํางานที่แตกตางกัน Node โดยทั่วไปจะเปนกลองสี่เหลี่ยมผืนผา โดยแตละ Node จะ
ประกอบไปดวยองคประกอบตางๆ คือ
1. Node Icon คือ สัญลักษณ์ที่บอกว่า Node นี้ คือ Node อะไร
2. Node Title คือ ชื่อของ Node นั้นๆ
3. Input คือ ปุ่มสีเทาทางด้านซ้าย แสดงถึงว่า Node นี้เป็น Node ที่รอรับข้อมูลเข้ามา
4. Output คือ ปุ่มสีเทาทางด้านขวา แสดงถึง Node นี้สามารถส่งต่อข้อมูลออกไปได้

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 48

ซึ่ง Node-RED ไดมีการติดตั้ง Node พื้นฐานที่จําเปนตองใชมาใหแลว โดย Node พื้นฐานเบื้องตน คือ


1. Inject คือ Node สําหรับการส่งข้อความหรือข้อมูลตามที่ได้ตั้งค่าไว้ ออกจากตัวเอง เมื่อมีการกดที่
ปุ่ม โดยสามารถตั้ง Properties ได้ดังนี้

(1) Name: ตั้งชื่อให้ Node


(2) Msg: จะส่งค่าออกไปเป็น Object ชื่อ msg โดยมี msg.payload และ msg.topic เป็นค่าเริ่มต้น
โดยทั ้ ง msg.payload และ msg.topic สามารถส่ ง ข้ อ มู ล ได้ ห ลายประเภทคื อ timestamp,
number, string, Boolean, JSON เป็นต้น และสามารถเพิ่มข้อมูลที่จะส่งได้ที่ปุ่ม +add
(3) Repeat: สามารถตั้งค่าให้ ส่งค่าที่ตั้งออกไปซํ้าตามเวลาที่กําหนด หรือช่วงเวลาที่เลือกได้

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 49

2. Debug คือ Node สําหรับการแสดง msg Object ที่เข้ามาใน Node นี้ โดยสามารถตั้ง Properties
ได้ดังนี้

(1) Output: msg ที่จะ Debug ออกมาแสดง สามารถเลือกเฉพาะค่าที่อยาก Debug หรือจะเลือก


ทั้ง msg Object เลยได้ โดยค่าเริ่มต้น จะ Debug แค่ msg.payload
(2) To: สามารถเลือกได้ว่าจะแสดงค่าที่ส่งเข้ามาที่ Debug ผ่านช่องทางไหน โดยค่าเริ่มต้น คือ
หน้าต่าง Debug
(3) Name: ตั้งชื่อให้ Node

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 50

3. Delay คือ Node สําหรับการหน่วงเวลา โดยข้อมูลที่ส่งเข้ามาที่ Node นี้ จะถูกทําการหน่วงเวลา


ตามการตั้งค่าของ Properties โดยสามารถตั้ง Properties ได้ดังนี้

(1) Action: รูปแบบของการหน่วงเวลา สามารถกําหนดได้หลากหลายรูปแบบมาก ขึ้นอยู่กับการใช้


งาน
(2) For, Rate, Between: เวลา, อัตรา หรือ ช่วงเวลาในการหน่วงเวลา โดยึ้นอยู่กับรูปแบบของ
Action ว่าทํางานแบบใด
(3) Name: ตั้งชื่อให้ Node

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 51

4. Trigger คือ Node สําหรับการ Action เมื่อมีข้อมูลใดๆ ส่งมาผ่าน Trigger นี้ ขึ้นอยู่กับการตั้งค่า
Properties โดยสามารถตั้ง Properties ได้ดังนี้

(1) Send: ข้อมูลที่จะส่งออกจาก Trigger นี้ทันทีที่มีข้อมูลผ่านเข้ามา


(2) Then: รูปแบบการหน่วงเวลา เพื่อที่จะ Action หลังจากที่มีข้อมูลผ่านเข้ามา
(3) Then send: Action ที่เป็นการส่งข้อมูลที่ตั้งค่าไว้หลังจากที่มีข้อมูลผ่านเข้ามา
(4) Reset the trigger if: การรีเซต Trigger หากเข้าเงื่อนไขที่ตั้งไว้
(5) Handling: การกําหนด msg ที่ Trigger จะทํางานด้วย
(6) Name: ตั้งชื่อให้ Node

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 52

ขั้นตอนการทดลอง
การทดลองที่ 1 ใช Inject, Debug, Delay และ Trigger

1. เปิด Node-RED บน Web Browser ผ่าน 192.168.200.1:1880

2. ลาก Inject node มาวางใน Flow จะได้หน้าตาเป็นคําว่า timestamp ที่เป็นค่า default


ของ Inject node

3. กดปุ่ม Deploy สีแดงที่มุมบนขวา เพื่ออัพเดทระบบ จะแสดงคําว่า Successfully


Deployed และปุ่ม Deploy จะเป็นสีเทา

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 53

4. ให้กดไปที่ปุ่มด้านซ้ายมือของ Inject เพื่อส่งค่าออกจาก Inject โดยตอนนี้ยังไม่มีผลลัพธ์ใดๆ

5. ลาก Debug node มาวางบน Flow แล้วทําการเชื่อมสายจาก Inject มายัง Debug


แล้วกดปุ่ม Deploy

6. เปิดหน้าต่าง Debug โดยกดไปที่รูปเต่าทองด้านขวามือ แล้วกดส่ง timestamp จาก Inject อีกครั้ง


จะเห็นว่ามีข้อมูลจาก Inject ส่งมาที่ Debug และแสดงผลบนหน้าต่าง Debug ดังรูป

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 54

7. ทดลองตั้งค่า Inject เป็นประเภท Number ใส่ msg.payload เป็น 100 แล้วกด Done

8. กด Deploy เพื่ออัพเดทระบบ

9. เมื่อทําการส่งข้อมูลจาก Inject จะแสดงค่า 100 ที่เป็นประเภท Number ตามที่ได้ตั้งค่าเอาไว้

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 55

10. ต่อมา ทดลองนํา Delay node มาใช้งาน โดย Delay อยู่ในหัวข้อ Function ให้นํามาวาง
ใน Flow โดยจะเห็นว่าค่าตั้งต้นของ Delay คือจะหน่วงเวลาข้อมูลที่เข้ามายัง Delay ไป 5 วินาที

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 56

11. นํ า Inject ที ่ ส่ ง ข้ อมู ลประเภท String ว่ า Hello เข้ ากั บ Delay และส่ ง ข้ อ มู ล ออกจาก Delay ไปยั ง
Debug และกด Deploy

12. ทําการส่งข้อมูลจาก Inject แล้วสังเกตลักษณะของข้อมูลที่มาแสดงผลบนหน้า Debug จะสังเกตเห็นว่า


ข้อมูลถูกส่งมาช้าไป 5 วินาที เนื่องจากข้อมูลจาก Inject ถูกหน่วงเวลาโดย Delay แล้วถูกส่งต่อมายัง
Debug

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 57

13. ทดลองนํา Trigger node มาใช้ โดย Trigger อยู่ในหัวข้อ Function ให้นํามาวางใน
Flow โดยจะเห็นว่าค่าตั้งต้นของ Trigger คือ จะส่ง “1” ที่เป็น String ออกไปทันที แล้วหน่วงเวลา 250
มิลลิวินาที แล้วส่ง “0” ที่เป็น String เช่นเดียวกัน ตามไป

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 58

14. นํา Inject ที่ส่งข้อมูลประเภท timestamp เข้ากับ Trigger และส่งข้อมูลออกจาก Trigger ไปยัง Debug
และกด Deploy

15. ทดลองส่ง timestamp จาก Inject แล้วสังเกตผลลัพธ์ ที่เกิดจากการนํา Trigger มาวาง จะพบว่า ข้อมูล
จาก timestamp กลายเป็น “1” แล้วเมื่อเวลาผ่านไป 250 มิลลิวินาที “0” ถูกส่งออกมาจาก Trigger อีก
ที

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 59

16. กดปุ่มถังขยะที่ด้านบนขวา เพื่อเคลียหน้าต่าง Debug

บันทึกผลทดลอง
คําชี้แจง : ใหผูทําการทดลองเติมเครื่องหมาย P ตามผลการทดลอง
ผลการทดลอง
รายการทดลอง
ได้ ไม่ได้
สามารถใช้งาน Inject Node ได้หรือไม่
สามารถใช้งาน Debug Node ได้หรือไม่
สามารถใช้งาน Delay Node ได้หรือไม่
สามารถใช้งาน Trigger Node ได้หรือไม่

อธิบายผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 60

การทดลองที่ 2 ใช Pi GPIO ในการสั่งเปดปด Traffic Light และการทําไฟกระพริบผาน Node-RED

1. เตรียมอุปกรณ์โดยนํา Traffic Light เข้ามาต่อกับ I/O บน Raspberry Pi ดังนี้


(1) GND ต่อกับ Ground ของ Pin 9
(2) R ต่อกับ GPIO17 หรือ Pin 11
(3) Y ต่อกับ GPIO27 หรือ Pin 13
(4) G ต่อกับ GPIO22 หรือ Pin 15
2. ใช้ Pi GPIOs node โดยอยู่ในหัวข้อของ Raspberry Pi โดย rpi-gpio out เป็น Node
ที่ใช้ในการสั่งการ I/O ของ Raspberry Pi โดยจะต้องตั้งค่าโดยเลือก GPIO หรือ Pin ที่ต้องการสั่งการ

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 61

2. นํา rpi-gpio out มาวางบน Flow ทําทั้งหมด 3 node โดย


(1) เลือกขา GPIO17 (Pin11) สําหรับควบคุม Traffic Light สีแดง
(2) เลือกขา GPIO27 (Pin13) สําหรับควบคุม Traffic Light สีเหลือง
(3) เลือกขา GPIO22 (Pin15) สําหรับควบคุม Traffic Light สีเขียว

(1) (2) (3)

3. การสั่งงาน rpi-gpio out ทําได้โดยการส่งค่า 1 (High) และ 0 (Low) ซึ่งการจะส่ง 1 หรือ 0 นั้น ต้องส่ง
จาก Inject node ดังนั้นให้นํา Inject มาวาง แล้วตั้งค่าให้ส่ง 1 และ 0 ดังรูป แล้วทําการ Deploy

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 62

4. จะสามารถควบคุม Traffic Light ผ่านการส่งค่า 1, 0 ของ Inject ไปยัง rpi-gpio out ของ LED แต่ละสี
ได้

5. ต่อมาทดลองทําไฟกระพริบให้กับ Traffic Light โดยใช้หลักการของ Trigger เข้ามาช่วย โดย


(1) สร้าง Inject 1 ตัว
(2) สร้าง Trigger 1 ตัว
(3) สร้าง rpi-gpio out ของ LED 3 ดวง

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 63

6. ตั้งค่า Trigger ให้หน่วงเวลา 2 วินาที ดังรูป

7. ต่อสายเข้าหากัน โดย Inject ต่อเข้ากับ Trigger และ Trigger ส่งข้อมูลออกไปยัง rpi-gpio out ของ LED
ทั้ง 3 ดวง แล้ว Deploy

8. จะเห็นว่าเมื่อส่ง timestamp ออกไป LED ทั้ง 3 ดวงจะติดเป็นเวลา 2 วินาที แล้วดับลง

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 64

9. หากต้องการให้ Traffic Light กระพริบทุกๆ 2 วินาที หมายความว่าเราจะต้องกดปุ่ม Inject ทุกๆ 4


วินาที ซึ่งเราสามารถตั้งค่าการส่งข้อมูลของ Inject ได้ โดยเข้าไปตัง้ ค่าที่ Inject timestamp ของเรา แล้ว
เลือก Repeat เป็น Interval ทุกๆ 4 วินาที และเปิดให้ส่งข้อมูลทันที 1 ครั้งที่ Deploy ระบบ

10. จะได้ผลลัพธ์ว่า Traffic Light ทุกดวงกระพริบพร้อมกันทุกๆ 2 วินาที

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 65

บันทึกผลทดลอง
คําชี้แจง : ใหผูทําการทดลองเติมเครื่องหมาย P ตามผลการทดลอง
ผลการทดลอง
รายการทดลอง
ได้ ไม่ได้
สามารถใช้งาน Pi-GPIOs Node เพื่อสั่งการ Traffic Light ได้หรือไม่
สามารถทําไฟกระพริบ ด้วย Pi-GPIOs Node ได้หรือไม่

อธิบายผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

สรุปผลการทดลอง

..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 66

ใบงานที่ 2.3 การจัดการ Node และ Flow บน Node-RED


จุดประสงค
1. เรียนรูก้ ารติดตั้ง Node ที่ต้องการเพิ่มเติมจากที่มีอยู่
2. เรียนรู้วิธีจัดการ Flow บน Node-RED
3. เรียนรูว้ ิธีการ Export และ Import Flow บน Node-RED

เครื่องมือและอุปกรณ

1. Raspberry Pi 2. SD Card 32 GB 3. สาย Ethernet

ทฤษฎีเบื้องตน
การจัดการบน Node-RED
การจัดการสิ่งตาง ๆ บน Node-RED นั้นจะแบงเปน 2 สวนหลักๆ คือ การจัดการกับ Node และการ
จัดการกับ Flow โดย
1. การจัดการกับ Node คือ การต้องการเพิ่มหรือลบ Node บน Node-RED โดย Node บน Node-RED
นั้นมีอยู่เยอะมาก ที่ถูกสร้างโดย Node-RED เอง, บริษัทภายนอก หรือแม้แต่นักพัฒนาทั่วไป ซึ่งตอน
ติดตั้ง Node-RED นั้น จะมี Node พื้นฐานในการใช้งานทั่วไปติดตั้งมาด้วย แต่ถ้าหากต้องการติดตั้ง
Node อื่น ๆเพิ่มเติม สามารถทําด้วยการไปที่ Manage Palette และค้นหาที่แถบ Install

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 67

2. การจัดการกับ Flow คือ การจัดการกับหน้าการทํางาน หรือ Flow โดยสิ่งที่ใช้บ่อยๆ คือ


(1) Add Flow คือ การสร้างพื้นที่การทํางานใหม่

(2) Delete Flow คือ การลบ Flow ที่ไม่ต้องการ

(3) Export Flow คือ การดาวน์โหลด Flow เก็บเป็นไฟล์สกุล .json เพื่อนําไปเพิ่มให้กับ Node-
RED ที่ติดตั้งบนอุปกรณ์อื่น หรือ เก็บเอาไว้เพื่อ Backup ได้

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 68

(4) Import Flow คือ การนํา Flow ที่อยู่ในไฟล์สกุล .json ไปเพิ่ม บน Node-RED ที่ติดตั้งบน
อุปกรณ์อื่นได้ ผ่านคําสั่ง Import

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 69

ขั้นตอนการทดลอง
การทดลองที่ 1 การติดตั้ง Node อื่นๆ (Dashboard, Influx, Modbus, S7 และ Line Notify)

1. สามารถติดตั้ง Node อื่น ๆ เพิ่มเติม โดยไปที่สัญลักษณ์ 3 แถบ ด้านมุมบนขวาของ Node-RED

2. เลือก Manage Palette แล้วไปที่แถบ Install

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 70

3. Search หา Keyword ของ Node ที่จะติดตั้ง เช่น dashboard โดยจะเห็นว่า มีหลาย Node ที่เกี่ยวกับ
Dashboard ซึ่งถ้าหากอยากดูข้อมูลของ Node นั้น ๆ ให้กดไปที่ปุ่มด้านข้างชื่อ จะได้ข้อมูลเบื้องต้น
ของ Node นั้น ๆ โดยเราจะเลือกติดตั้ง node-red-dashboard นี้

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 71

4. กด Install เพื่อติดตั้ง node-red-dashboard แล้วกด Install อีกครั้ง

5. เมื่อติดตั้งสําเร็จ จะขึ้นเตือนว่า Nodes ถูกเพิ่มเข้ามาแล้ว

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 72

6. เมื่อกลับมาที่หน้าแรก จะพบว่ามีหัวข้อ Dashboard เพิ่มขึ้นมา และมี Dashboard Nodes ต่าง ๆ ในนั้น

7. กลับไปที่ Manage Palette แล้วติดตั้ง Node เพิ่มเติม คือ


(1) LED : node-red-contrib-ui-led
(2) InfluxDB : node-red-contrib-influxdb
(3) S7 : node-red-contrib-s7
(4) Modbus : node-red-contrib-modbus
(5) LINE Notify : node-red-contrib-line-notify
เมื่อติดตั้งสําเร็จจะแสดงผลที่ Nodes

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 73

บันทึกผลทดลอง
คําชี้แจง : ใหผูทําการทดลองเติมคําตอบในชองผลการทดลอง
ผลการทดลอง
รายการทดลอง
ได้ ไม่ได้
สามารถติดตั้ง node-red-dashboard ได้หรือไม่
สามารถติดตั้ง node-red-contrib-ui-led ได้หรือไม่
สามารถติดตั้ง node-red-contrib-influxdb ได้หรือไม่
สามารถติดตั้ง node-red-contrib-s7 ได้หรือไม่
สามารถติดตั้ง node-red-contrib-modbus ได้หรือไม่
สามารถติดตั้ง node-red-contrib-line-notify ได้หรือไม่

อธิบายผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

การทดลองที่ 2 การจัดการ Flow ดวยการ Add, Delete, Export และ Import

1. ทําการเพิ่ม Flow ใหม่ด้วยการกดไปที่ปุ่ม Add Flow

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 74

2. จะได้ผลลัพธ์ เป็น Flow2 ขึ้นมาเป็นพื้นที่สําหรับการทํางานใหม่

3. ทําการลบ Flow ที่สร้างขึ้นมา ด้วยการดับเบิลคลิกไปที่คําว่า Flow2 (Flow ที่ต้องการจะลบ) แล้วกดปุ่ม


Delete

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 75

4. Flow2 ที่สร้างขึ้นมาจะโดนลบออกไป

5. ต่อมาไปที่สัญลักษณ์ 3 แถบ ด้านมุมบนขวาของ Node-RED แล้วเลือก Export

6. เลือก Current flow เนื่องจากต้องการ Export แค่ Flow ที่เปิดอยู่นี้ จะแสดงให้เห็นว่ามี Nodes ใดอยู่
ภายใน Flow นี้บ้าง และสามารถกด Download ได้เลย

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 76

7. เมื่อดาวน์โหลดเสร็จแล้ว จะได้ไฟล์ที่เก็บข้อมูลของ Flow นี้เอาไว้ ในรูปแบบสกุล .json

8. ขั ้ น ตอนต่ อ ไปเป็ น การ Import Flow ที ่ เ รา Export ออกไป กลั บ เข้ า มาใน Node-RED โดยกดไปที่
สัญลักษณ์ 3 แถบ ด้านมุมบนขวาของ Node-RED แล้วเลือก Import

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 77

9. กดไปที่ปุ่ม Select a file to import เลือก File สกุล .json ที่ต้องการจะ Import แล้วกด Import

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 78

10. หาก Import Flow ที่มีอยู่แล้วใน Node-RED จะมีการแจ้งเตือน ให้เลือก Import Copy

11. เลือกไปที่ Flow ที่ Import เข้ามา จะได้ผลลัพธ์เป็น Flow ที่ชื่อเดียวกับตอนที่ Export และมี Node
ต่างๆที่ทํางานเช่นเดียวกันกับ Flow ที่ Export ออกไป ดังรูป

12. เมื่อกด Deploy ก็จะสามารถใช้งาน Flow ที่ Import เข้ามาได้ปกติ

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 79

บันทึกผลทดลอง
คําชี้แจง : ใหผูทําการทดลองเติมคําตอบในชองผลการทดลอง
ผลการทดลอง
รายการทดลอง
ได้ ไม่ได้
สามารถ Add Flow ได้หรือไม่
สามารถ Delete Flow ได้หรือไม่
สามารถ Export Flow ได้หรือไม่
สามารถ Import Flow ได้หรือไม่

อธิบายผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

สรุปผลการทดลอง

..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 80

ใบงานที่ 2.4 การใชงาน Node-RED Dashboard


จุดประสงค
1. เรียนรูอ้ งค์ประกอบและหลักการทํางานของ Node-RED Dashboard
2. เรียนรู้การใช้งาน Node-RED Dashboard

เครื่องมือและอุปกรณ

1. Raspberry Pi 2. SD Card 32 GB 3. สาย Ethernet

ทฤษฎีเบื้องตน
Node-RED Dashboard
จุดเดนของ Node-RED ที่นอกจากจะสามารถจัดการขอมูลตางๆไดอยางงายดาย โดยไมจําเปนตอง
เขียนโปรแกรมแลวนั้น ก็คือการนําขอมูลที่วิ่งผาน Node ตางๆ บน Flow มามาวิเคราะห์ประมวลผลแล้ว
นําเสนอออกมาในรูปแบบที่มองเห็นและทําความเข้าใจได้ด้วยตา ด้วยแผนภูมิรูปแบบต่างๆ หรือกราฟ บน
Node-RED Dashboard
Node-RED Dashboard เป็ น หน้ า ต่ า ง Dashboard ที ่ ท ํ า งานบน Node-RED ใช้ ส ํ า หรั บ การ
มอนิ เ ตอร์ ข้ อ มู ล ต่ า งๆที่ ถู ก ส่ ง เข้ า มาจั ด การบน Node-RED รวมไปถึ ง การส่ ง ข้ อ มู ล ออกไปเพื่ อ นํา ไป
ประยุกต์ในการควบคุมอุปกรณ์ IoT ได้ โดย Dashboard Nodes จะต้องไปติดตั้งเพิ่มเติมขึ้นมา เนื่องจาก
Node-RED ไม่ได้ติดตั้งให้ตั้งแต่แรก

โครงสร้างของ Node-RED Dashboard


การใช้งาน Node-RED Dashboard จะต้องเข้าใจโครงสร้างต่างๆของ Node-RED Dashboard
ก่อน โดยจะมีองค์ประกอบดังนี้
1. Theme คือ ธีมสีของหน้า Dashboard ที่สามารถเลือกใช้ได้ โดยจะมีค่าพื้นฐานคือ Light,
Dark แต่หากต้องการปรับเองก็สามารถใช้ Custom ได้
2. Tab คือ หน้าแสดงผลของ Node-RED Dashboard โดย 1 Tab เปรียบเสมือน Dashboard
1 หน้า และสามารถสร้าง Tab เพิ่มได้เรื่อย ๆ
3. Group คื อ กลุ่ ม ที่ มี ไ ว้ สํา หรั บ ให้ Dashboard Node เข้ า มาอยู่ โดยมี ลั ก ษณะเป็ น คอลั ม น์
บนหน้า Dashboard

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 81

4. Dashboard Node คือ Node ที่สามารถแสดงผลบนหน้า Node-RED Dashboard ได้ โดย


จะต้องอาศัยอยู่ใน Group
โดยสรุ ป Tab จะเปรี ย บเสมื อ น หน้ า Dashboard โดยภายใน Tab จะมี Group อาศั ย อยู่ ไ ด้
หลาย Group และภายใน Group จะมี Dashboard Node ที่ เ ป็ น เหมื อ น Widget บน Node-
RED Dashboard

Dashboard Nodes บน Node-RED Dashboard


การใชงาน Dashboard Nodes จําเปนที่จะตองทําการติดตั้ง Dashboard Node เพิ่มเติม ผานทาง
Manage Palette และไปที่ Install เพื่อติดตั้ง node-red-dashboard และ node-red-contrib-ui-led แลว
จะไดกลุมของ Dashboard เพิ่มขึ้นมาที่แถบ Palette ดานขวามือ

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 82

Dashboard Node เปรียบเสมือน Widget ตางๆ ที่จะไปแสดงผลบนหนา Node-RED Dashboard


ซึ่งก็จะมีคุณสมบัติที่แตกตางกัน ใหผูใชงานไดออกแบบหนา Dashboard เองได โดยเราสามารถจําแนก
รูปแบบของ Dashboard Node ได คือ
Dashboard Node สําหรับการแสดงผลขอมูล
1. Text คือ Node ที่ใช้ในการแสดงข้อมูลแบบตัวอักษร โดยสามารถตั้ง Properties ได้ดังนี้

(1) Group: เลือก Group ให้ Node นี้อยู่


(2) Size: ขนาดของ Node ที่แสดงบน Dashboard
(3) Label: หัวข้อที่กํากับข้อมูล
(4) Value format: ส่วนของ msg Object ที่นํามาแสดง
(5) Layout: เค้าโครงของ Label และ Value

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 83

2. Led คือ Node ที่ใช้ในการแสดงสถานะเป็นแบบไฟสถานะ โดยสามารถตั้ง Properties ได้ดังนี้

(1) Group: เลือก Group ให้ Node นี้อยู่


(2) Size: ขนาดของ Node ที่แสดงบน Dashboard
(3) Label: หัวข้อที่กํากับข้อมูลและรูปแบบการจัดเรียง
(4) Colors for value of msg.payload: สีของไฟสถานะเมื่อ msg.payload มีค่าตามนี้

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 84

3. Button คื อ Node ที ่ ใ ช้ ใ นการส่ ง ข้ อ มู ล msg.payload ออกไปเมื ่ อ มี ก ารกดปุ ่ ม โดยสามารถตั้ ง


Properties ได้ดังนี้

(1) Group: เลือก Group ให้ Node นี้อยู่


(2) Size: ขนาดของ Node ที่แสดงบน Dashboard
(3) Label: ข้อความที่กํากับบนปุ่ม
(4) Tooltip: ข้อความที่แสดงขึ้นมาเมื่อวางเมาส์บนปุ่ม
(5) Color: สีตัวอักษรของ Label
(6) Background: สีของปุ่ม
(7) When clicked, send: Payload ให้ตั้งค่าข้อมูล msg.payload ที่จะส่งออกไปเมื่อกดปุ่ม

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 85

4. Gauge คือ Node ที่ใช้ในการแสดงผลข้อมูลในรูปแบบเกจ สัดค่าสูงสุด ตํ่าสุด ซึ่ง Gauge จะมีอยู่


หลายลักษณะ โดยสามารถตั้ง Properties ได้ดังนี้

(1) Group: เลือก Group ให้ Node นี้อยู่


(2) Size: ขนาดของ Node ที่แสดงบน Dashboard
(3) Type: ลั ก ษณะของ Gauge มี ใ ห้ เ ลื อ กหลายแบบตามความเหมาะสมของงาน คื อ Gauge,
Donut, Compass และ Level
(4) Label: ข้อความกํากับบน Gauge
(5) Value format: ค่าที่นํามาแสดงผล โดยค่า {{value}} หมายถึง msg.payload และสามารถแก้
เพื่อแสดงค่าอื่นได้ตามที่ต้องการ
(6) Units: หน่วยของข้อมูลที่แสดงอยู่ด้านล่าง
(7) Range: ช่วง min, max ของข้อมูล
(8) Colour Gradient: ช่วงสีของข้อมูล

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 86

5. Chart คื อ Node ที ่ ใ ช้ ใ นการแสดงผลข้ อ มู ล ในรู ป แบบกราฟ Time-Series ที ่ จ ะนํ า ข้ อ มู ล


msg.payload มาแสดงคู่กับเวลา โดยสามารถตั้ง Properties ได้ดังนี้

(1) Group: เลือก Group ให้ Node นี้อยู่


(2) Size: ขนาดของ Node ที่แสดงบน Dashboard
(3) Label: ข้อความกํากับบน Chart
(4) Type: ประเภทของกราฟ Chart
(5) X-axis: ช่วงเวลาของแกน X
(6) Y-axis: ค่า min, max ของแกน Y
(7) Series Colours: สีของข้อมูลที่ต่างกัน

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 87

6. Slider คือ Node ที่เป็นแถบยาว สามารถเลื่อนได้เพื่อใช้ในการส่งข้อมูลออกไปเป็นตัวเลข โดย


สามารถตั้ง Properties ได้ดังนี้

(1) Group: เลือก Group ให้ Node นี้อยู่


(2) Size: ขนาดของ Node ที่แสดงบน Dashboard
(3) Label: ข้อความกํากับบน Slider
(4) Tooltip: ข้อความที่แสดงเมื่อเอาเมาส์ไปชี้ที่ Slider
(5) Range: ค่าสูงสุดและตํ่าสุดของ Slider และความห่างของการขยับ Slider แต่ละช่อง
(6) Output: รูปแบบการส่งข้อมูลออกไป โดยจะมีการส่งทุกครั้งที่ค่าบน Slider เปลี่ยน หรือ ส่งแค่
ครั้งสุดท้ายที่ปล่อย Slider

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 88

ขั้นตอนการทดลอง
การทดลองที่ 1 การใชงาน Node-RED Dashboard

1. เตรียม Flow ใหม่สําหรับการทํา Dashboard

2. การใช้งาน Node-RED Dashboard ต้องเริ่มจากการสร้าง Tab และ Group ก่อน โดยไปที่ ปุ่มด้าน
ขวามือ แล้วกด Dashboard จะได้หน้าต่าง Dashboard มาที่ด้านขวา

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 89

3. กดเพิ่ม Tab ด้วยปุ่ม +tab จะได้ Tab 1 ขึ้นมา

4. ชี้ไปที่ Tab 1 แล้วกด +group เพื่อเพิ่ม Group ขึ้นมาใน Tab

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 90

5. หลังจากสร้าง Tab และ Group ขึ้นมาแล้ว ให้นํา Text node มาวางบน Flow แล้ว
เข้าไปแก้ไข Properties โดย
(1) เลือก Group ที่จะให้ไปอยู่ คือ [Tab1] Group1
(2) ตั้ง Label เป็น Status
(3) เลือก Layout แบบที่ 2

6. สร้าง Inject ที่ตั้งค่าให้ส่ง Boolean True และ False อย่างละตัว เชื่อมเข้ากับ Text และกด Deploy

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 91

7. กดไปที่ปุ่มลิงค์ด้านขวามือของหน้าต่าง Dashboard เพื่อเปิดหน้า Dashboard ขึ้นมา

8. จะพบกับหน้า Dashboard ที่ได้สร้างขึ้นมา ที่มี Tab1, Group1 และ Text อยู่ในนั้น

9. ทดลองส่งค่าจาก Inject จะพบว่า Text ที่สร้างขึ้นมา จะแสดงค่าที่ถูกส่งมาจาก Inject

10. ต่อมานํา Button node 2 node เข้ามาวางใน Flow แล้วตั้งค่าโดย


Button node ที่ 1
(1) ให้อยู่ใน [Tab1] Group 1
(2) Label ให้เป็น Turn On
(3) Color : white และ Background : green
(4) Payload เป็น string ใส่ On

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 92

Button node ที่ 2


(1) ให้อยู่ใน [Tab1] Group 1
(2) Label ให้เป็น Turn Off
(3) Color : white และ Background : red
(4) Payload เป็น string ใส่ Off

11. เมื่อตั้งค่า Button เสร็จ ให้เชื่อมสาย Button เข้ากับ Text ตัวเดิม แล้วกด Deploy

12. กลับไปที่หน้า Dashboard จะพบว่ามี Button เพิ่มขึ้นมา 2 ปุ่ม คือ Turn On และ Turn Off และเมื่อ
กดปุ่มแต่ละปุ่ม จะทําให้ Status เปลี่ยนเป็น On, Off ตามปุ่มที่กด

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 93

13. สร้าง Group ใหม่ขึ้นมาใน Tab1 เป็น Group2

14. นํา Slider node มาวาง ตั้งค่าอื่น ๆ ดังรูป แล้วกด Deploy


(1) ให้อยู่ใน [Tab1] Group 2
(2) Label ให้เป็น Speed Control
(3) Range เป็น min : 0, max : 10, Step : 1

15. ที่หน้า Dashboard จะปรากฏ Group 2 ขึ้นมา โดยมี Slider อยู่ในนั้น ที่สามารถเลื่อนแถบสไลด์ได้ แต่
ยังไม่มีผลลัพธ์ใด ๆ

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 94

16. ต่อมาให้นํา Gauge node มาวางบน Flow ตั้งค่าอื่นๆดังรูป แล้วเชื่อมสายจาก Slider


มาเข้าที่ Gauge นี้ แล้วกด Deploy
(1) ให้อยู่ใน [Tab1] Group 2
(2) Label ให้เป็น Speed
(3) Range เป็น min : 0, max : 10

17. ไปที่หน้า Dashboard แล้วเลื่อนแถบสไลด์ จะเห็นว่า Gauge แสดงข้อมูลที่ตรงกับที่ส่งออกมาจาก Slider

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 95

18. ต่อมาให้นํา Chart node มาวางบน Flow เชื่อมเข้ากับ Slider เช่นเดียวกับ Gauge
และตั้งค่าดังรูป แล้ว Deploy
(1) ให้อยู่ใน [Tab1] Group 2
(2) Label ให้เป็น Speed

19. ไปที่หน้า Dashboard แล้วเลื่อนแถบสไลด์ จะพบว่าข้อมูลจาก Slider ถูกส่งเข้ามาพลอตเป็นกราฟแสดง


ใน Chart

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 96

20. สุดท้ายคือการนํา LED node มาวางใน Flow โดยชื่อมเข้ากับ Button node ทั้ง 2
ตั้งค่าต่างๆดังรูป แล้ว Deploy
(1) ให้อยู่ใน [Tab1] Group 1
(2) Label ให้เป็น Status
(3) ให้ msg.payload เป็น string ตั้งค่าสีโดยค่า Off เป็น red และค่า On เป็น green

21. เมื่อไปยัง Dashboard จะพบว่า มี LED status ที่เป็นสีเขียวเมื่อกด Turn On และสีแดงเมื่อ Turn Off
ตามที่ได้ตั้งค่าเอาไว้

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 97

22. กลั บ ไปที ่ แ ถบ Dashboard ด้ า นซ้ า ยมื อ แล้ ว กดที ่ Group 1 และ Group 2 ให้ แ สดง Node ภายใน
ทั้งหมด

23. เลื่อน Node ในนั้น เพื่อเรียงลําดับในการแสดงบน Dashboard ตามต้องการ กด Deploy แล้วไปยังหน้า


Dashboard จะเห็นว่า Layout ของแต่ละ Node เป็นไปตามที่เรียงใน Group

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 98

บันทึกผลทดลอง
คําชี้แจง : ใหผูทําการทดลองเติมคําตอบในชองผลการทดลอง
ผลการทดลอง
รายการทดลอง
ได้ ไม่ได้
สามารถเพิ่ม Tab ได้หรือไม่
สามารถเพิ่ม Group ได้หรือไม่
สามารถเปิดหน้าต่าง Dashboard ได้หรือไม่
สามารถใช้งาน Text Node ได้หรือไม่
สามารถใช้งาน Button Node ได้หรือไม่
สามารถใช้งาน Slider Node ได้หรือไม่
สามารถใช้งาน Gauge Node ได้หรือไม่
สามารถใช้งาน Chart Node ได้หรือไม่
สามารถใช้งาน LED Indicator Node ได้หรือไม่
สามารถจัด Layout ของ Node ใน Group ได้หรือไม่

อธิบายผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

สรุปผลการทดลอง

..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 99

ใบงานที่ 2.5 การจัดการขอมูลบน Node-RED ผาน Node ตางๆ


จุดประสงค
1. เรียนรูห้ ลักการจัดการข้อมูลบน Node-RED
2. เรียนรู้การใช้ Node สําหรับการจัดการข้อมูล

เครื่องมือและอุปกรณ

1. Raspberry Pi 2. SD Card 32 GB 3. สาย Ethernet

ทฤษฎีเบื้องตน
การทํางานร่วมกับ Messages บน Node-RED
อย่างที่ทราบกันดี ว่าการทํางานของ Node-RED คือการส่งข้อความระหว่าง Node ผ่านสายที่
เชื่อมแต่ละ Node เข้าหากัน โดยข้อความที่ Node-RED ใช้ คือ JavaScript Object ที่เปนประเภทขอมูล
ที่เก็บขอมูลในรูปแบบของ Key และ Value ( โดยคูของ Key และ Value ถูกเรียกรวมกันวา Property) โดย
ที่ Key นั้นจะเปน String สวน Value สามารถเปนขอมูลประเภทใดๆ ในภาษา JavaScript ดังนี้
1. Boolean: true, false
2. Number: 0, 1234
3. String: “hello”
4. Array: [1,2,3,4]
5. Object: {“a”: 1, “b”: 2}
6. Null
Node-RED จึงนําข้อดีของ Object ที่สามารถเก็บข้อมูลในตัวเองได้หลาย Properties ทําให้การ
ส่งข้อมูลเพียงครั้งเดียว สามารถนําไปจัดการต่อเป็นข้อมูลหลายอย่างได้ตามต้องการ และเรียก Object ที่
ส่งผ่าน Node ต่างๆ ว่า Message Object หรือ msg
msg เป็น Object ที่สําคัญมากใน Node-RED เพราะทุกข้อมูลที่วิ่งผ่านสายที่โยงกันนั้นคือ msg
object ซึ่ง msg นั้นมี Properties ที่เปลี่ยนไปเมื่อผ่านแต่ละ Node ที่เข้าไปจัดการ Properties นั้นๆ
โดยตัวอย่างของ msg object เช่น

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 100

msg = {"_msgid":"32858e0e1767d436", "payload":"John", "topic":"Name"}


1. _msgid คือ Key ที่มี Value เป็น ID ของ msg นี้ ที่สามารถนําไปใช้ในการตรวจสอบข้อมูลย้อนหลัง
2. payload คือ Key ที่มี Value เป็น John
3. topic คือ Key ที่มี Value เป็น Name
ซึ่งเราสามารถเข้าถึง Value ได้ โดยใช้หลักการ Dot Notation โดยเรียก msg ที่เป็น Object นี้ แล้วตาม
ด้วย “.” (Dot) และ Key ที่เราต้องการ Value ในนั้น เช่น
1. msg.payload จะได้ค่าเป็น “John”
2. msg.topic จะได้ค่าเป็น “Name”
โดยมีชุดของข้อมูลที่ต้องทราบโดยเบื้องต้น คือ
1. msg.payload เป็น Property ที่เก็บข้อมูลหลัก
2. msg.topic เป็น Property ที่นิยมใช้ในการกํากับหัวข้อ ให้ข้อมูลนั้น
3. msg.parts คือ Property ที่มีข้อมูลว่า msg นี้มีลําดับของข้อมูลภายในเป็นแบบใด โดย msg.parts
จะมี Property ภายในอีกชั้น คือ
(a) msg.parts.index คือ Property ที่เก็บตําแหน่งของข้อมูลนั้นๆ
(b) msg.parts.key คือ Property ที่เก็บชื่อ Key ของ Value นั้น

การใชงาน Node ตางๆ ในการจัดการขอมูลบน Node-RED


นอกจาก Node พื้นฐานบน Node-RED แลว ยังมี Node ที่ใชในการจัดการขอมูล รวมไปถึงจัดการ
เสนทางของขอมูลใหไดตามที่ตองการ เชน

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 101

1. Function คือ Node สําหรับการเขียนคําสั่งเอง โดยใช้ JavaScript เพื่อจัดการ msg Object ที่ผ่าน
เข้ามายัง Function และส่งออกไป โดยสามารถตั้ง Properties ได้ดังนี้

(1) Name: ตั้งชื่อให้ Node


(2) Setup: เลือกจํานวน Output ได้ และ Import Module
(3) On Start: คําสั่งที่ทํางานเมื่อ Node นี้เริ่มต้น หรือ Deployed เพียงครั้งเดียว
(4) On Message: คําสั่งที่ทํางานเมื่อมี msg Object ส่งเข้ามา
(5) On Stop: คําสั่งที่ทํางานเมื่อ Node นี้ถูกหยุด หรือ Re-Deployed เพียงครั้งเดียว

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 102

2. Switch คือ Node เป็นเพียงไม่กี่ Node ที่ใช้สําหรับการจัดการเส้นทางของข้อมูล โดยสามารถตั้ง


Properties ได้ดังนี้

(1) Name: ตั้งชื่อให้ Node


(2) Property: เลือก msg ที่จะใช้ในการจัดเส้นทาง โดยค่าเริ่มต้นเป็น msg.payload หมายถึงจะใช้
msg.payload ในการจัดการเส้นทางข้อมูล โดยต้องไปกําหนดต่อที่ช่องด้านล่าง คือ Value
Rules ว่าถ้า msg.payload มีข้อมูลที่ตรงกับ Rules ที่ตั้ง จะให้ข้อมูลส่งออกที่เส้นทางใด และ
สามารถเพิ่มเส้นทางและเงื่อนไข ได้ที่ +add

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 103

3. Change คือ Node ที่ใช้สําหรับการเปลี่ยนหรือลบข้อมูลที่ผ่านเข้ามา ตามการตั้งค่าที่ได้ตั้งเอาไว้ที่


Properties ดังนี้

(1) Name: ตั้งชื่อให้ Node


(2) Rules : ประกอบไปด้วย Set, Change, Delete, Move ซึ่งข้อมูลที่ผ่านเข้ามา จะถูกจัดการตาม
Rules ที่กําหนด โดยสามารถเพิ่มได้ที่ปุ่ม +add
a. Set ใช้ในการเปลี่ยนข้อมูลทั้งหมดโดยไม่สนใจอะไรเลย
b. Change ใช้ในการค้นหาข้อมูลที่ต้องการและเปลี่ยนแค่ในส่วนนั้น
c. Delete ใช้ในการลบข้อมูลที่ไม่ต้องการ
d. Move ใช้นการย้ายข้อมูลไปเก็บใน Key อื่น

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 104

4. Split คือ Node ที่ใช้ในการแบ่งข้อมูลที่ผ่านเข้ามาเป็นส่วนๆ แล้วส่งออกไป ใช้สําหรับการแยกข้อมูล


ที่ประกอบจากข้อมูลหลายๆ ตัวรวมกัน โดยสามารถตั้ง Properties ได้ดังนี้

(1) Split: การแยกข้อมูล จะขึ้นอยู่กับประเภทของข้อมูลที่ผ่านเข้ามา


b. String จะถูกแยกตามอักขระหรือข้อความที่เรากําหนด โดยค่าเริ่มต้นคือ การเว้นบรรทัด
เมื่อเจออักขระหรือข้อความที่กําหนด จะตัดและส่งค่าออกมา
c. Array จะถูกแบ่งตามสมาชิกแต่ละตัว และส่งสมาชิกแต่ละตัวออกมา
d. Object จะถูกแยกตามแต่ละ Key และส่ง Value ของแต่ละ Key ออกมา

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 105

5. Join คือ Node ที่ใช้ในการรับ msg Object หลายๆค่า แล้วนํามาเชื่อมข้อมูลให้กลายเป็น msg


Object เดียว โดยสามารถตั้ง Properties ได้ดังนี้

(1) Mode: โดยเริ่มต้นเป็น Automatic ซึ่งใช้ได้ต่อเมื่อคว่าที่เข้ามา เกิดจาก Split เท่านั้น เราจึง


นิยมใช้ Manual Mode แทน
(2) Combine each: ข้อมูลใน msg Object ที่จะนํามารวมกัน
(3) To create: ประเภทของผลลัพธ์ที่ได้หลังจากการรวม จะสร้างเป็น Object, String, Array ก็ได้
โดยผลลัพธ์แต่ละประเภท ต้องการการตั้งค่าที่แตกต่างกัน
(4) Send the message: เงื่อนไขที่จะส่งผลลัพธ์ออกมา โดยส่วนใหญ่จะกําหนดด้วยจํานวนข้อมูลที่
ต้องใช้เชื่อมกัน
(5) Name: ตั้งชื่อให้ Node

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 106

ขั้นตอนการทดลอง
การทดลองที่ 1 การใชงาน function, switch, change, split, join

1. สร้าง Flow การทํางานขึ้นมาใหม่

2. นํา Function node มาวางใน Flow โดยใช้ Inject ที่ส่งตัวเลขใดๆ มาที่ Function แล้ว
ออกไปยัง Debug

3. เข้าไปที่ Function เพื่อเขียนโปรแกรมให้แก่ Function โดยจะเขียนใน On message

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 107

4. ต้องการเขียนคําสั่งให้ msg ที่ผ่าน Function นี้ เพิ่มค่าไป 10 โดย ให้เขียนคําสั่งแต่ละบรรทัดดังนี้ แล้ว


Deploy
(1) var payload = msg.payload //ประกาศตัวแปรเพื่อเก็บค่ามาจาก msg.payload ที่เข้ามา
(2) var data = payload + 10 //ประกาศตัวแปรมาเก็บค่าที่เพิ่มขึ้น 10
(3) msg.payload = data //เก็บค่าที่ต้องการกลับไปที่ msg.payload
(4) return msg; //ส่ง msg object ออกไปทางฝั่งขวา

5. ทดลองกดส่งค่าออกจาก Inject จะเห็นผลลัพธ์ว่า ค่าที่ออกมาจาก Inject แล้วผ่าน Function นี้ จะทําให้


ค่าเพิ่มขึ้น 10

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 108

6. ถัดไปเป็นการใช้ Switch node ในการจัดการเส้นทางของข้อมูล โดยให้นํา Switch มา


วางบน Flow ที่มีข้อมูลส่งเข้ามา ผ่าน Inject 2 ตัว แล้วมี Debug 2 ตัว ดังรูป

7. ตั ้ งค่ า Inject1 ให้ ส่ งเลข 25 กั บ Topic เป็ น temperature และ Inject2 ส่ งเลข 60 กั บ Topic เป็ น
humidity

8. เข้าไปตั้งค่า Switch โดยให้เปลี่ยน Property เป็น msg.topic แล้วตั้งค่าเงื่อนไขว่า == temperature

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 109

9. กดปุ่ม +add เพื่อเพิ่มเงื่อนไข คือ == humidity

10. เมื่อกด Done จะเห็นว่า Switch นี้ มี Output เพิ่มขึ้นมาเป็น 2 ทาง โดยถ้านําเมาส์ไปชี้
จะเห็นว่า Output แรกคือ temperature และอีก Output คือ humidity

11. ให้เชื่อมสายเข้าหากัน ดังรูป แล้วกด Deploy

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 110

12. ทดลองส่งข้อมูลทั้ง 2 ค่า จะพบว่า ข้อมูล temperature จะถูกส่งไป Output ด้านบนที่ Debug 3 และ
ข้อมูล humidity จะส่งไปที่ Output ด้านล่างที่ Dubug4 เสมอ แสดงให้เห็นว่า ข้อมูลที่เข้ามาที่เดียวถูก
จัดการเส้นทางให้เป็น 2 เส้นออกไปจัดการต่อ

13. ถัดมาเป็นการทดลองใช้ Change node ในการเปลี่ยนข้อมูล โดยให้นํา Change มา


วางใน Flow พร้อมกับ Inject ที่ส่งค่า Number 1 กับ 0 และ Debug ดังรูป

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 111

14. ต้องการที่จะเปลี่ยนค่าจาก 1, 0 ให้กลายเป็น on, off โดยตั้งค่า Change ดังรูป แล้ว Deploy
(1) เปลี่ยนจาก Set เป็น Change แล้ว Search for 1 Replace with “on”
(2) กด +add ที่ด้านล่าง เพื่อเพิ่มเงื่อนไข
(3) เปลี่ยนจาก Set เป็น Change แล้ว Search for 0 Replace with “off”

15. เมื่อทดลองกดส่งค่า 1 หรือ 0 จะเห็นว่าผลลัพธ์ที่ออกมาหลังจากผ่าน Change ไปแล้ว คือ คําว่า on และ


off เท่านั้น แสดงให้เห็นว่า ค่าที่ส่งเข้ามาถูกเปลี่ยนจาก 1, 0 เป็น on, off ตามที่ได้ตั้งค่าเอาไว้

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 112

16. ต่อไป ให้นํา Join Node มาวางใน Flow แล้วทดลองนํา Inject มา 2 อันที่ตั้งค่าข้อมูล
เป็นประเภท Number 25 และ 60 ส่งข้อมูลไปยัง Join แล้วออกที่ Debug โดย
(1) ตั้งค่า Join เป็น Manual ที่รวม msg.payload
(2) สร้างเป็น String คั่นด้วยจุลภาค ( , )
(3) จํานวนข้อมูลเป็น 2 ค่า

17. เมื่อลองกดส่งค่าจาก Inject ครบ 2 ครั้ง จะพบว่า ข้อมูลที่ส่งไปถูกรวม กลายเป็น String ที่มีข้อมูล 2 ค่า
คั่นกันด้วยจุลภาค ( , )

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 113

18. ทําการสร้าง Node ชุดเดิมขึ้นมาใหม่ แล้วเปลี่ยนการตั้งค่าใน Join ใหม่ให้ to create เป็น an Array
แล้วลองดูผลลัพธ์ที่ได้

19. หลังจากกด Inject 2 ครั้ง จะได้ผลลัพธ์ที่เป็น Array ที่มีข้อมูล 2 ค่า ตามลําดับการกด ดังรูป

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 114

20. ทําการสร้าง Node ชุดเดิมอีกครั้งโดย


Inject node
(1) ตั้งค่า Inject node ใหม่เพิ่ม msg.topic
(2) ให้ข้อมูล 25 เป็น temperature และข้อมูล 60 เป็น humidity
Join node
(1) ตั้งค่า Join ให้เป็น to create a key/value Object
(2) ใช้ msg.topic as the key

21. หลังจากส่ง Inject ไป จะพบว่าข้อมูลที่ออกมาจาก Join เป็ นข้อมู ล Object ที่มีสมาชิก 2 ค่ า เช่ น
{"temperature":25,"humidity":60} โดยจะสังเกตเห็นได้ว่าข้อมูลจะไม่สามารถซํ้ากันได้เหมือนการ Join
ที่เป็น String และ Array

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 115

22. ต่อมาให้นํา Split node มาวางใน Flow โดยตัง้ ค่า Split ในส่วนของ String/Buffer
ให้เป็นจุลภาค ( , ) และต่อกับ Inject ที่เป็น String 25,60 แล้วออกไปที่ Debug

23. เมื่อส่งข้อมูลจาก Inject ออกมาจะพบว่าข้อมูลถูกแบ่งด้วยคอมม่า กลายเป็นข้อมูล 2 ค่า คือ “25” และ


“60” ส่งออกมาที่ Debug ตามลําดับ

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 116

24. นํา Switch มาช่วยในการแยกข้อมูล โดยตั้งค่า Switch เป็น msg.payload == “25” และ “60” แล้ว
ออกไปต่อเข้ากับ Debug 2 ตัว

25. เมื่อส่งข้อมูล จะเห็นว่าข้อมูลที่ถูก Split ถูกจัดการเส้นทางผ่าน Switch ทําให้ “25” แสดงที่ Debug 1
และ “60” แสดงที่ Debug 2

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 117

26. ทําการสร้าง Node ชุดเดิมขึ้นมา โดย


(1) เปลี่ยนค่าใน Inject เป็น Array [25,60]
(2) ตั้งค่า Switch เป็น msg.parts.index (นับตามตําแหน่งของสมาชิกใน Array) == 0 และ 1

27. เมื่อส่งข้อมูลจาก Inject จะพบว่าข้อมูลใน Array ถูกแบ่งอกด้วย Split คือ 25 และ 60 ที่ถูกจัดการ
เส้นทางต่อผ่าน Switch โดยใช้ msg.parts.index ที่เป็นตัวกํากับลําดับของข้อมูล ทําให้ ข้อมูลลําดับที่ 0
ไปแสดงผลที่ Debug3 และ ข้อมูลลําดับที่ 1 ไปแสดงผลที่ Debug 4

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 118

28. สุดท้ายทําการสร้าง Node ชุดเดิมขึ้นมา โดย


(1) เปลี่ยนค่าใน Inject เป็น Object {"temperature":25, "humidity":60}
(2) ตั้งค่า Switch เป็น msg.parts.key (เช็คจาก Key ของ Property ใน Object) == temperature
และ humidity

29. เมื่อทดลองส่ง Inject ออกไป จะพบว่าข้อมูลใน Object ถูกแยกออกเป็น Value นั้นๆ เมื่อผ่าน Split
โดยข้ อมู ล 25 และ 60 ที ่ ออกมา ถู กจั ดการเส้ นทางผ่ า น msg.parts.key ทํ า ให้ ข้ อมู ลที ่ มี Key เป็ น
temperature ไปแสดงผลที่ Debug 5 และข้อมูลที่มี Key เป็น humidity ไปแสดงผลที่ Debug 6

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 119

บันทึกผลทดลอง
คําชี้แจง : ใหผูทําการทดลองเติมคําตอบในชองผลการทดลอง
ผลการทดลอง
รายการทดลอง
ได้ ไม่ได้
สามารถใช้งาน Function Node ได้หรือไม่
สามารถใช้งาน Switch Node ได้หรือไม่
สามารถใช้งาน Change Node ได้หรือไม่
สามารถใช้งาน Join Node ได้หรือไม่
สามารถใช้งาน Split Node ได้หรือไม่

อธิบายผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

สรุปผลการทดลอง

..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 120

คําถามทายหนวยการเรียนรูที่ 2

6. สําหรับ GPIOs node สามารถเลือก GPIO หรือ Pin ไหนได้บ้างที่สามารถสั่งการ Traffic Light
7. การสั่งงาน rpi-gpio out ทําได้โดยการส่งค่า High และ Low นั้นต้องใช้ Node ใด และส่งขอมูลใน
รูปแบบใด
8. ในการ Export Flow ไฟล์ที่ได้ออกมานั้นจะเป็นไฟล์สกุลใด
9. เมื่อสามารถติดตั้ง Node เพิ่มเติมเองได้ มีหลักการอย่างไรในการเลือก Node เพื่อนําใช้งาน
10. สั่งงาน Traffic Light ให้ไฟกระพริบแต่ละสีเรียงกันไป โดยใช้ rpi-gpio และ node อื่น ๆ
11. สั่งใช้งาน Traffic Light โดยทําปุ่มสําหรับควบคุมเปิดปิดไฟแต่ละสี และทําการแสดงผลสถานะชอง
Traffic Light ด้วย Node-RED Dashboard

12. จงสร้าง slider จํานวน 1 node เพื่อควบคุมการเปิดปิด LED ทั้ง 3 ดวง และ Indicator แสดงสถานะของ
LED ดังรูป โดยค่าของ slide อยู่ในช่วง 0 – 3 ซึ่งแต่ละค่ามีผลกับ LED ดังนี้
(1) ค่า slider = 0 ความหมายคือ LED1, LED2, LED3 ดับทุกดวง
(2) ค่า slider = 1 ความหมายคือ LED1 ติด, LED2 และ LED3 ดับ
(3) ค่า slider = 2 ความหมายคือ LED2 ติด, LED1 และ LED3 ดับ
(1) ค่า slider = 3 ความหมายคือ LED3 ติด, LED1 และ LED2 ดับ

13. ทําการเปลี่ยนข้อมูลอุณหภูมิในหน่วย Celsius ให้เปลี่ยนเป็น Kelvin โดยใช้ Function Node (Kelvin =


Celsius + 273)
14. หากต้องการเปลี่ยนข้อมูลตัวเลขที่ได้มากให้เป็น true หรือ false ต้องใช้ Node ใดในการแปลงข้อมูล

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 121

15. จงอธิบายผลลัพธ์ของ Debug1, Debug2 และ Debug3 หาก ส่ง Inject temperature และ humidity
ออกไป

16. จงจัดการข้อมูล{"data1": {"temperature": 25, "humidity": 50} ,"data2": {"temperature": 30,


"humidity": 70}} ให้ได้ผลลัพธ์เป็น 25 ที่ Debug1, 50 ที่ Debug2, 30 ที่ Debug3 และ 70 ที่ Debug4

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 122

หนวยการเรียนรูที่ 3
การสื่อสารในระบบ IoT และ MQTT Protocol
จุดประสงค
1. เรียนรู้หลักการทํางานของรูปแบบการสื่อสารระหว่างอุปกรณ์และ Server (Protocol)
2. เรียนรู้หลักการทํางานของ MQTT Protocol และ HTTP Protocol
3. เรียนรู้การติดตั้งและใช้งาน Mosquitto MQTT
4. เรียนรู้การใช้งาน MQTT Node บน Node-RED

ตัวชี้วัด
1. สามรถอธิบายหลักการทํางานของรูปแบบการสื่อสารระหว่างอุปกรณ์และ Server (Protocol) ได้
2. สามารถอธิบายหลักการทํางานของ MQTT Protocol และ HTTP Protocol ได้
3. สามารถติดตั้งและใช้งาน Mosquitto MQTT ได้
4. สามารถใช้งานโหนด MQTT บน Node-RED ได้

เนื้อหา
ศึกษาและปฏิบัติเกี่ยวกับหลักการทํางานของรูปแบบการสื่อสารระหวางอุปกรณและ Server ในงาน
ดาน IoT (IoT Protocol) วามีแบบใดบาง มีขอแตกตางกันอยางไร และการเลือกใชงาน Protocol ใหเหมาะ
กับงาน โดยจะศึกษาในเชิงลึกเกี่ยวกับ MQTT Protocol ที่เปนที่นิยมกันมากในงานดาน IoT เรียนรูหลักการ
การทํางาน ไปจนถึงวิธีการติดตั้งและใชงาน MQTT Broker ดวย Mosquitto MQTT และการใชงาน MQTT
กับ Node-RED

ความรูเดิมที่ตองมี
1. หลักการทํางานของ IoT Gateway และ IoT Server
2. การใช้งานคําสั่งพื้นฐานของระบบปฏิบัติการบนคอมพิวเตอร์
3. การใช้งานโหนดพื้นฐาน และโหนดที่ใช้จัดการข้อมูลในระบบบน Node-RED

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 123

แนวทางการจัดการเรียนรู
การจัดเตรียม
1. ใบงานตามจํานวนนักศึกษา
2. เครื่องคอมพิวเตอร์
3. Raspberry Pi ที่ติดตั้ง OS แล้ว
4. สาย Ethernet
5. I-Kit 2
6. ESP32
7. เซ็นเซอร์ LDR และ DHT22

ขั้นตอนการดําเนินการ
กอนเริ่มตนการเรียนการสอน ใหผูสอนและผูเรียนดาวนโหลดสื่อการสอนและโปรแกรมพื้นฐานสําหรับ
การเรียนไดที่ https://bit.ly/AdvIoT_Training_Doc เพื่อความพรอมในการเรียนการสอน หลังจากนั้นใหเริ่ม
ดําเนินการสอนตามบทเรียน โดย
1. ใบงานที่ 3.1 Protocol ที่ใช้ในระบบ IoT และ MQTT Protocol
(1) อธิบายเกี่ยวกับการสื่อสารระหว่างอุปกรณ์ที่ใช้ในระบบ IoT (Internet of Things)
(2) อธิบายเกี่ยวกับการทํางานและการใช้งานของ MQTT Protocol
(3) สอนติดตั้งและใช้งาน MQTT Broker พร้อมทําการทดลองที่ 1
2. ใบงานที่ 3.2 การใช้งาน MQTT Protocol บน Node-RED
(1) อธิบายเกี่ยวกับการทํางานและการใช้งานของ MQTT Node
(2) สอนติดตั้งและใช้งาน MQTT Node พร้อมทําการทดลองที่ 1 และการทดลองที่ 2
(3) อธิบายเกี่ยวกับการเชื่อมต่ออุปกรณ์อื่นร่วมกับ MQTT Server แล้วทําการทดลองที่ 3

ซึ่งแตละใบงานนั้นสามารถเสริมสรางความรูของผูเรียนไดจากคําถามทายหนวยการเรียนรู อีกทั้งยัง
เปนตัวชี้วัดผลการเรียนจากผูเรียนได และการสอนในแตละใบงานสามารถใชเวลาในการสอนในตารางเวลาที่ใช
สอนของใบงาน
ตารางเวลาที่ใชสอนของใบงาน
ใบงานที่ เรื่อง เวลา (นาที)
3.1 Protocol ที่ใช-ในระบบ IoT และ MQTT Protocol 30
3.2 การใช-งาน MQTT Protocol บน Node-RED 210

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 124

ใบงานที่ 3.1 Protocol ที่ใชในระบบ IoT และ MQTT Protocol

จุดประสงค
1. เรียนรู้รูปแบบการสื่อสารระหว่างอุปกรณ์ในระบบ IoT
2. เรียนรู้ MQTT Protocol
3. เรียนรูก้ ารติดตั้ง MQTT Broker บน Raspberry Pi

เครื่องมือและอุปกรณ

1. Raspberry Pi 2. SD Card 32 GB 3. สาย Ethernet

ทฤษฎีเบื้องตน

IoT Protocol คืออะไร


IoT Protocol คือ ข้อกําหนดหรือข้อตกลงในการสื่อสารระหว่างอุปกรณ์ หรือภาษาสื่อสารที่ใช้
เป็ น ภาษากลางในการสื่ อ สารระหว่ า งอุ ป กรณ์ ด้ ว ยกั น การที่ อุ ป กรณ์ ที่ ถู ก เชื่ อ มโยงกั น ไว้ ใ นระบบจะ
สามารถติดต่อสื่อสารกันได้นั้น จําเป็นจะต้องมีการสื่อสารที่เรียกว่า โปรโตคอล (Protocol) เช่นเดียวกับ
คนเราที่ต้องมีภาษาพูดเพื่อให้สื่อสารเข้าใจกันได้ ซึ่ง Protocol นั้นมีอยู่หลากหลายประเภท เช่น HTTP
(Hyper Text Transfer Protocol), MQTT (Message Queue Telemetry Transport), CoAP
(Constrained Application Protocol), AMQP (Advanced Message Queuing Protocol), XMPP
(Extensible Messaging and Presence Protocol) โดย Protocol แต่ละตัวนั้นจะมีข้อดีและข้อเสียที่
แตกต่างกัน จึงต้องเลือก Protocol ในการสื่อสารให้เหมาะสมกับสิ่งที่ต้องการ

HTTP Protocol คืออะไร


HTTP Protocol ย่อมาจาก Hypertext Transfer Protocol คือโพรโทคอลสื่อสารผ่านอินเทอร์เน็ตที่
ใช้ในการรับและส่งข้อมูล ในการแลกเปลี่ยนข้อมูลระหว่าง Client และ Server โดยแบ่งเป็น HTTP Request
ที่เป็นการที่ Client ต้องการส่งข้อมูลไปที่ Server หรือร้องขอข้อมูลจาก Server และ HTTP Response ที่เป็น
การที่ Server ตอบกลับคําร้องขอนั้น ซึ่งจะเห็นได้ว่า HTTP Protocol นั้นจําเป็นต้องมีการร้องขอหรือ
Request ทุกครั้งในการต้องการเริ่มการสื่อสารระหว่างกัน และเป็นการสื่อสารแบบ 1-1 จึงอาจจะไม่เหมาะกับ
งานด้าน IoT ในส่วนของการรับส่งข้อมูลทั่วไประหว่างอุปกรณ์หลายตัวและ Server

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 125

MQTT Protocol คืออะไร


MQTT เปน Protocol ที่ออกแบบมาเพื่อการเชื่อมตอแบบ M2M หรือ อุปกรณกับอุปกรณ ซึ่งเปน
รูปแบบการสื่อสาร โดยใชหลักการการรับสงขอมูลแบบ Publish/Subscribe คลายกับหลักการที่ใชใน Web
Service ที่ตองใช Web Server เปนตัวกลางระหวางคอมพิวเตอรของผูใชงาน แต MQTT ใชตัวกลางที่เรียกวา
Broker ทําหนาที่จัดการลําดับการรับ - สง ขอมูลระหวางอุปกรณและทั้งที่เปน Publish/Subscribe ทําให
MQTT สามารถสงขอมูลแบบ Real-Time ในปริมาณขอมูลที่นอย ทําใหใชพลังงานตํ่า เลยเปนหนึ่งใน
Protocol ที่นิยมใชในงานดาน IoT
MQTT จะมีองคประกอบที่ตองรูจักกอนที่จะไปศึกษาในเรื่องหลักการทํางานของมัน โดย MQTT นั้น
มี 3 สิ่ง ที่ทุกคนตองรู คือ
1. Broker (Server) คือ ตัวกลางในการรับข้อมูลจาก Publisher และส่งข้อมูลให้กับ Subscriber
2. Clients (Subscriber / Publisher) เปรียบเสมือนอุปกรณ์ที่เชื่อมต่อเข้ามาที่ Broker โดย Clients
จะมีหน้าที่หลักๆ อยู่ 2 อย่าง คือ
a. Publisher คือ Client ที่ส่งข้อมูลให้กับ Topic ที่อยู่ใน Broker ที่เรียกว่าการ Publish
b. Subscriber คือตัวรับข้อมูลจาก Topic ที่อยู่ใน Broker เรียกว่าการ Subscribe
3. Topic คือ หัวเรื่องที่เราต้องการรับส่งข้อมูล ระหว่าง Publisher กับ Subscriber

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 126

หลักการทํางานของ MQTT Protocol


ใหทุกคนมองภาพวา MQTT นั้นมีศูนยกลางคือ Broker ที่ทําหนาที่เปน Server คอยรับ Message ที่
สงจาก Client ตัวหนึ่ง (Client นี้รับหนาที่เปน Publisher) และนําสงไปยัง Client อีกตัวหนึ่ง (Client นี้
รับหนาที่เปน Subscriber) โดยสิ่งที่กํากับวา Broker ตองสง Message นี้ใหกับ Client ไหนบาง ก็คือ Topic
โดยมีตัวอยางการทํางานของ MQTT Protocol ดังนี้

1. Humidity Sensor เป็น Client ที่ทําหน้าที่ Publish ค่าความชื้น ไปที่ Broker โดยมี Topic ชื่อ
humidity
2. Broker ที่หลังจากได้รับข้อความที่มี Topic เป็น humidity จะทําการส่งต่อข้อความนั้น ให้กับทุก
Client ที่ Subscribe
3. On-Premise Analytics และ Cloud Analytics ต่างเป็น Client ที่ไป Subscribe ที่ Broker ที่
Topic ชื่อ humidity ทําให้ Broker ส่งข้อมูลมาให้ที่ Client 2 ตัวนี้ทันที
Mosquitto MQTT
Mosquitto คือ MQTT Message Broker แบบโอเพนซอรสที่พรอมใชงานและสามารถติดตั้งไดบน
หลายแพลตฟอรม เชน Windows, Linux, BSD และ macOS รองรับ MQTT Protocol ใน versions 5.0,
3.1.1 and 3.1 ซึ่งติดตั้งและใช้งานได้ง่าย

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 127

ขั้นตอนการทดลอง
การทดลองที่ 1 การติดตั้ง Mosquitto Broker บน Raspberry Pi

1. ใช้ VNC เพื่อเข้าไป Remote ใช้งาน Raspberry Pi แล้วทําการเชื่อมต่อ WiFi เพื่อเตรียมพร้อมสําหรับ


การติดตั้ง Mosquitto

2. เปิ ด Terminal ขึ ้ น มา แล้ ว ใช้ ค ํ า สั ่ ง sudo wget http://repo.mosquitto.org/debian/mosquitto-


repo.gpg.key เพื่อดาวน์โหลด Mosquitto

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 128

3. ใช้คําสั่ง sudo apt-key add mosquitto-repo.gpg.key

4. ตามด้วยคําสั่ง sudo wget http://repo.mosquitto.org/debian/mosquitto-stretch.list

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 129

5. อัพเดทระบบด้วยคําสั่ง sudo apt update

6. ตรวจสอบ Mosquitto Package ด้วยคําสั่ง sudo apt-cache search mosquito

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 130

7. ติดตั้ง Mosquitto Server ด้วย sudo apt-get install mosquitto -y

8. ติดตั้ง Mosquitto Clients ผ่านคําสั่ง sudo apt-get install mosquitto-clients -y

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 131

9. เสร็ จ สิ ้ น การติ ด ตั ้ ง Mosquitto Broker และทํ า การตรวจสอบว่ า Broker ใช้ ไ ด้ แ ล้ ว หรื อ ไม่ โดยเปิ ด
Terminal ขึ้นมาอีกหน้า แล้วใช้คําสั่ง mosquitto_sub -d -t mqtt/test เพื่อ Subscribe topic ชื่อ
“mqtt/test”

10. ในอี ก Terminal ให้ ใ ช้ คํ า สั ่ ง mosquitto_pub -h localhost -p 1883 -t mqtt/test -m "test" เพื่ อ
Publish ข้อความ “test” ไปยัง Topic ที่ชื่อ “mqtt/test” จะเห็นว่า ข้อความที่ส่งไป แสดงผลที่หน้า
Terminal ฝั่ง Subscribe แสดงถึงการที่ติดตั้ง Mosquitto Broker เรียบร้อยแล้ว

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 132

บันทึกผลทดลอง
คําชี้แจง : ใหผูทําการทดลองเติมเครื่องหมาย P ตามผลการทดลอง
ผลการทดลอง
รายการทดลอง
ได้ ไม่ได้
สามารถติดตั้ง Mosquitto Broker ได้หรือไม่
สามารถทดสอบ Subscribe และ Publish ได้หรือไม่

อธิบายผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

สรุปผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 133

ใบงานที่ 3.2 การใชงาน MQTT Protocol บน Node-RED


จุดประสงค
1. เรียนรู้การใช้งานโหนด MQTT บน Node-RED
2. เรียนรูก้ ารเชื่อมต่ออุปกรณ์อื่นร่วมกับ MQTT Server

เครื่องมือและอุปกรณ

1. Raspberry Pi 2. SD Card 32 GB 3. สาย Ethernet

ทฤษฎีเบื้องตน
การใชงาน MQTT Node
MQTT Node เปน Node ที่ติดตั้งมาพรอมกับ Node-RED ตั้งแตแรกในสวนของ Network โดยจะมี
อยู 2 Node คือ mqtt in ที่ใชในการ Subscribe ที่รับขอมูลเขามา และ mqtt out ที่ใชในการ Publish ใน
การสงขอมูลออกไป

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 134

5. MQTT in คื อ Node สํ าหรั บการ Subscribe เพื ่ อรั บข้ อมู ลจากภายนอกเข้ ามา โดยสามารถตั้ ง
Properties ได้ดังนี้

(1) Server: MQTT Broker ที่ต้องการจะให้ Node นี้ เชื่อมต่อด้วย


(2) Action: รูปแบบการ Subscribe
(3) Topic: หัวข้อ Topic ที่จะ Subscribe
(4) QoS: ระดับของข้อตกลงระหว่างผู้ส่ง (Publisher) และผู้รับ (MQTT Broker) ในการ
รับประกันการส่งข้อมูล
(5) Output: การแปลงข้อมูลที่ได้รับมาว่าต้องการให้ส่งออกในรูปแบบใด
(6) Name: ตั้งชื่อให้ Node

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 135

6. MQTT out คือ Node สําหรับการ Publish ข้อมูลไปยัง Broker โดยสามารถตั้ง Properties ได้ดังนี้

(1) Server: MQTT Broker ที่ต้องการจะให้ Node นี้ เชื่อมต่อด้วย


(2) Topic: หัวข้อ Topic ที่จะ Publish ออกไป
(3) QoS: ระดับของข้อตกลงระหว่างผู้ส่ง (Publisher) และผู้รับ (MQTT Broker) ในการ
รับประกันการส่งข้อมูล
(4) Retain: การคงข้อความค้างไว้ใน Topic นั้น
(5) Name: ตั้งชื่อให้ Node

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 136

ขั้นตอนการทดลอง
การทดลองที่ 1 ใช Node-RED กับ MQTT Broker

1. เข้าไปที่หน้า Node-RED บน Browser 192.168.200.1:1880 แล้วสร้าง Flow การทํางานใหม่ขึ้นมา

2. นํา MQTT in มาวางบน Flow แล้วเข้าไปตั้งค่า Properties กดไปที่ปุ่มดินสอ


ด้านขวามือของ Server เพื่อทําการ Set server

3. MQTT Server นั้นถูกติดตั้งบน Raspberry Pi เช่นเดียวกับ Node-RED จึงใช้ localhost ในช่อง Server
แล้วกด Add

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 137

4. ให้ Action เป็น Subscribe to single topic แล้วตั้ง Topic เป็น mqtt/test, QoS เป็น 2 และ Output
เป็น auto-detect (parsed JSON object, string or buff)

5. นํา MQTT out ออกมามาวางบน Flow แล้วตั้งค่า Properties ต่างๆ โดย Broker ใช้
Broker อันเดียวกับที่ตั้งค่าเอาไว้, Topic ตั้งเป็น Topic เดียวกับที่ Subscribe ที่ MQTT in และ QoS
เป็น 2

6. นํา Debug มาเชื่อมกับ MQTT in และ นํา Inject มาเชื่อมกับ MQTT out โดยตั้งค่า Inject เป็น String
“test” แล้วกด Deploy จะพบว่าที่ MQTT node ขึ้นว่า connected

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 138

7. ทําลองส่งค่าจาก Inject จะพบว่า ข้อความ “test” ถูก Publish หัวข้อ mqtt/test ผ่าน MQTT out ไป
ที่ Mosquitto Broker หลังจากนั้น Broker ส่งข้อมูลต่อให้กับ Subscriber ซึ่งคือ MQTT in จึงได้รับ
ข้อมูลผ่านไปยัง Debug

บันทึกผลทดลอง
คําชี้แจง : ใหผูทําการทดลองเติมเครื่องหมาย P ตามผลการทดลอง
ผลการทดลอง
รายการทดลอง
ได้ ไม่ได้
สามารถตั้งค่า Server localhost ได้หรือไม่
สามารถใช้งาน MQTT in node ได้หรือไม่
สามารถใช้งาน MQTT out node ได้หรือไม่

อธิบายผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 139

การทดลองที่ 2 การตั้งคา username และ password ใหกับ MQTT Broker

1. กลับไปที่หน้า Terminal ของ Raspberry Pi ให้เข้าไปแก้ไข config file ของ mosquitto ผ่านคําสั่ง
sudo nano /etc/mosquitto/mosquitto.conf จะเข้าสู่หน้าต่างดังรูป

2. ใช้แป้นพิมพ์เลื่อนลงไปบรรทัดล่างสุด แล้วเพิ่มข้อความต่อไปนี้ไว้ตรงท้าย
# default listener
port 1883
# additional listener for websockets
listener 9001
protocol websockets
allow_anonymous false
password_file /etc/mosquitto/passwd

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 140

3. กด Ctrl+x แล้วกด y ตามด้วย Enter เพื่อบันทึกการเปลี่ยนแปลง จะกลับมายังหน้าแรก

4. ถัดมาให้ตั้งค่า Username และ Password ผ่าน คําสั่ง sudo mosquitto_passwd -c


/etc/mosquitto/passwd "username" โดยใน “username” ให้กรอก Username ที่ต้องการตั้ง โดย
ให้ทดลองตั้ง Username เป็น mqtt_test จะได้คําสั่ง sudo mosquitto_passwd -c
/etc/mosquitto/passwd "mqtt_test"
**Username และ Password ตั้งได้ครั้งเดียว ควรจดบันทึกเก็บเอาไว้**

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 141

5. จะให้ทําการกรอก Password ที่ต้องการ โดยให้ทดลองตั้งเป็น mqtt_test เช่นเดียวกัน โดย Password


จะไม่แสดงที่หน้าจอ ให้พิมพ์ให้ถูกต้องทั้ง 2 ครั้ง จะได้ผลลัทธ์ดังรูป

6. ทํ า การ Reboot Mosquitto Broker เพื ่ อ ให้ Username และ Password ทํ า งาน ด้ ว ยคํ า สั ่ ง sudo
service mosquitto restart

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 142

7. ตรวจสอบสถานการณ์ ท ํ า งานของ Mosquitto ด้ ว ย service mosquitto status ถ้ า ขึ ้ น ว่ า active


(running) แสดงว่าพร้อมใช้งานแล้ว

8. เมื่อกลับไปที่ Node-RED จะพบว่า MQTT Node ที่เคยมีสถานะ Connected กลายเป็น Connecting


ที่หมายถึงกําลังพยายามเชื่อมต่ออยู่ แต่จะไม่สําเร็จ เพราะ Mosquitto Broker ถูกตั้ง Username และ
Password แล้ว

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 143

9. เข้าไปที่ MQTT in หรือ MQTT out ก็ได้ แล้วกดปุ่มดินสอที่ Server เพื่อตั้งค่า Server ที่เคยใช้อยู่ใหม่

10. กดไปที ่ แ ถบ Security เพื ่ อ กรอก Username และ Password ที ่ เ ราตั ้ ง เมื ่ อ สั ก ครู่ คื อ Username:
mqtt_test และ Password: mqtt_test แล้วกด Update แล้ว Deploy ระบบ

11. MQTT Node ทั้ง 2 จะกลับมา Connected อีกครั้ง หมายถึงว่า Node สามารถกลับไปเชื่อมต่อกับ
Broker ได้อีกครั้งเรียบร้อย

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 144

12. ทดลองส่งค่าจาก Inject แบบต่างๆ เพื่อทดลองการใช้งาน MQTT in และ MQTT out

บันทึกผลทดลอง
คําชี้แจง : ใหผูทําการทดลองเติมเครื่องหมาย P ตามผลการทดลอง
ผลการทดลอง
รายการทดลอง
ได้ ไม่ได้
สามารถตั้งค่า Username และ Password ให้กับ Broker ได้หรือไม่
สามารถตั้งค่า Security ของ Server เดิม ให้กลับมาใช้งานได้หรือไม่

อธิบายผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 145

การทดลองที่ 3 การใชงาน I-Kit 2 สงขอมูลมายัง Mosquitto Broker

1. ใช้ VNC ในการรีโมทเข้าไปที่ Raspberry Pi เชื่อมต่อ WiFi แล้วเปิด Terminal ขึ้นมา

2. พิมพ์คําสั่ง ifconfig เพื่อเช็ค WLAN IP Address ของ Raspberry Pi ที่ถูกแจกโดย Router แล้วจดบันทึก
IP Address นั้นไว้

3. เตรียมชุด I-Kit2 มาสําหรับอ่านข้อมูลอุณหภูมิและความชื้นจาก DHT22 และควบคุม LED1 โดย ต่อ DHT


เข้ากับ GPIO32 และต่อ LED1 เข้ากับ GPIO5

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 146

4. ใช้โปรแกรมตัวอย่างด้านล่างอัพโหลดให้กับ I-Kit2 โดยใช้ Arduino แต่ต้องทําการแก้ไขในบางส่วนโดย


(1) ssid คือ ชื่อ WiFi ที่ให้ I-Kit2 เชื่อมต่อ โดยจะต้องเป็น WiFi ตัวเดียวกับที่ Raspberry Pi เชื่อมต่ออยู่
(2) password คือ Password ของ WiFi, mqtt_server คือ WLAN0 IP Address ที่ได้มาจากข้อที่ 2
(3) mqtt_username และ mqtt_password คือ Username และ Password ในการทดลองที่ 2
#include <WiFi.h>
#include <PubSubClient.h>
#include "DHT.h"
const char* ssid = "Your_SSID";
const char* password = "Your_Password";
const char* mqtt_server = "WLAN IP Address";
const char* mqtt_username = "MQTT_Username";
const char* mqtt_password = "MQTT_Password";
const char* mqtt_Client = "";
const int mqtt_port = 1883;
WiFiClient espClient;
PubSubClient client(espClient);
char msg[150];
#define DHTPIN 33
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
#define LED1 5
long lastMsg = 0;
int value = 0;

void reconnect() {
while (!client.connected()) {
Serial.print("Attempting MQTT connection…");
if (client.connect(mqtt_Client, mqtt_username, mqtt_password)) {
Serial.println("connected");
client.subscribe("ikit2/led1/control");
}
else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println("try again in 5 seconds");
delay(5000);
}
}
}

void callback(char* topic, byte* payload, unsigned int length) {


Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
String message;
for (int i = 0; i < length; i++) {
message = message + (char)payload[i];
}
Serial.println(message);

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 147

if (String(topic) == "ikit2/led1/control") {
if (message == "on") {
digitalWrite(LED1, 0);
client.publish("ikit2/led1/status", "on");
Serial.println("LED ON");
}
else if (message == "off") {
digitalWrite(LED1, 1);
client.publish("ikit2/led1/status", "off");
Serial.println("LED OFF");
}
}
}

void setup() {
Serial.begin(9600);
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
client.setServer(mqtt_server, mqtt_port);
client.setCallback(callback);
dht.begin();
pinMode(LED1, OUTPUT);
digitalWrite(LED1, 1);
}

void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
long now = millis();
if (now - lastMsg > 5000) {
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
lastMsg = now;
String data = String(temperature) + "," + String(humidity);
data.toCharArray(msg, (data.length() + 1));
Serial.println("Publish message: " + String(data));
client.publish("ikit2/dht/data", msg);
}
delay(1);
}

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 148

5. เมื ่ อ แก้ ไ ขข้ อ มู ล แล้ ว อั พ โหลดโปรแกรมให้ ก ั บ I-Kit2 จะได้ ผ ลลั พ ธ์ ว ่ า I-Kit2 ส่ ง ข้ อ มู ล DHT ไปยั ง
Mosquitto Broker ที่ Topic: “ikit2/dht/data”

6. ไปที่ Node-RED แล้วใช้ MQTT in เพื่อ Subscribe ข้อมูลดังกล่าว โดยตั้งค่าดังรูป

7. นํา Debug มาต่อกับ MQTT in แล้ว Deploy จะพบว่ามีข้อมูลที่ส่งมาจาก I-Kit2 ขึ้นมา

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 149

8. ต่อไปเป็นการสั่งควบคุม LED1 บน I-Kit2 โดยใช้ Inject ส่งข้อมูลไปที่ MQTT out เพื่อ ส่งข้อความไปยัง
Topic ที่ควบคุม LED คือ ikit2/led1/control ที่ต้องใช้ข้อความ on ในการสั่งเปิด และ off ในการสั่งปิด

9. เมื่อกดส่ง on หรือ off จะสังเกตเห็นว่าหลอดไฟสีเขียว หรือ LED1 ติดและดับตามที่สั่งการ


10. ถัดมาเป็นการติดตามสถานะของหลอดไฟ โดยใช้ MQTT in อีกครั้ง ตั้งค่า Topic เป็น ikit2/led/status
จะได้สถานะของ LED1 ตามที่เขียนคําสั่งไว้ในโปรแกรม

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 150

บันทึกผลทดลอง
คําชี้แจง : ใหผูทําการทดลองเติมเครื่องหมาย P ตามผลการทดลอง
ผลการทดลอง
รายการทดลอง
ได้ ไม่ได้
สามารถเรียก WLAN IP Address ของ Raspberry Pi ได้หรือไม่
สามารถตั้งค่าและอัพโหลดโปรแกรมของ I-Kit2 ให้ I-Kit2 ส่งข้อมูลได้หรือไม่
สามารถใช้ Node-RED รับข้อมูล DHT ที่ส่งผ่าน MQTT Protocol ได้หรือไม่
สามารถใช้ Node-RED สั่งการ LED1 ผ่าน MQTT Protocol ได้หรือไม่
สามารถใช้ Node-RED รับข้อมูลสถานะ LED1 ได้หรือไม่

อธิบายผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

สรุปผลการทดลอง

..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 151

คําถามทายหนวยการเรียนรูที่ 3

1. สร้าง Node-RED Dashboard ที่ใช้ในการแสดงผลข้อมูลจาก I-Kit2 ที่รับผ่าน MQTT Node โดยแสดง


ข้อมูลอุณหภูมิและความชื้น และควบคุมการทํางานของ LED1 พร้อมแสดงสถานะ LED1 ดังรูป

2. แก้โปรแกรม Arduino เพิ่มเติม เพื่อให้สามารถส่งข้อมูลจาก LDR และสามารถควบคุม LED2 และ LED3


บน I-Kit2 ผ่าน MQTT ได้
3. จากคําถามข้อที่ 2 จงสร้าง Node-RED Dashboard สําหรับการแสดงผล LDR และการควบคุม LED2
และ LED3 เพิ่มเติม

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 152

หนวยการเรียนรูที่ 4
ฐานขอมูลในระบบ IoT
จุดประสงค
1. เรียนรู้หลักการทํางานของระบบฐานข้อมูล (Database) บน IoT Gateway
2. เรียนรู้การติดตั้งและใช้งาน InfluxDB บน IoT Gateway
3. เรียนรูก้ ารติดตั้งและใช้งานโหนด Influx บน Node-RED

ตัวชี้วัด
1. สามารถอธิบายหลักการทํางานของระบบฐานข้อมูล (Database) บน IoT Gateway ได้
2. สามารถติดตั้งและใช้งาน InfluxDB บน IoT Gateway ได้
3. สามารถติดตัง้ และใช้งานโหนด Influx บน Node-RED ได้

เนื้อหา
ศึกษาและปฏิบัติเกี่ยวกับโครงสรางหรือองคประกอบของระบบฐานขอมูล (Database) ที่เกี่ยวของกับ
งานดาน Internet of Things ที่ตองทํางานเกี่ยวกับขอมูลอยูตลอดเวลา โดยฐานขอมูลนั้นมีอยูหลากหลาย
ประเภท รูปแบบขอมูลที่เก็บก็มีอยูหลากหลายประเภท จึงตองเลือกฐานขอมูลใหเหมาะสมกับการใชงาน โดย
จะไดศึกษาเกี่ยวกับฐานขอมูลประเภท Time series database และการใชงานฐานขอมูลบน Raspberry Pi

ความรูเดิมที่ตองมี
1. หลักการทํางานของ IoT Gateway และ IoT Server
2. การใช้งานคําสั่งพื้นฐานของระบบปฏิบัติการบนคอมพิวเตอร์
3. การใช้งานโหนดพื้นฐาน และโหนดที่ใช้จัดการข้อมูลในระบบบน Node-RED

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 153

แนวทางการจัดการเรียนรู
การจัดเตรียม
1. ใบงานตามจํานวนนักศึกษา
2. เครื่องคอมพิวเตอร์
3. Raspberry Pi ที่ติดตั้ง OS แล้ว
4. สาย Ethernet
5. I-Kit 2
6. ESP32
7. เซ็นเซอร์ LDR และ DHT22

ขั้นตอนการดําเนินการ
กอนเริ่มตนการเรียนการสอน ใหผูสอนและผูเรียนดาวนโหลดสื่อการสอนและโปรแกรมพื้นฐานสําหรับ
การเรียนไดที่ https://bit.ly/AdvIoT_Training_Doc เพื่อความพรอมในการเรียนการสอน หลังจากนั้นใหเริ่ม
ดําเนินการสอนตามบทเรียน โดย
1. ใบงานที่ 4.1 ฐานข้อมูลในงาน IoT และ การใช้งาน InfluxDB เบื้องต้น
(1) อธิบายเกี่ยวกับการทํางานและการใช้งานฐานข้อมูลในระบบ IoT (Internet of Things)
(2) อธิบายเกี่ยวกับการทํางานและการใช้งานของ InfluxDB
(3) สอนติดตั้งและใช้งาน InfluxDB พร้อมทําการทดลองที่ 1 และการทดลองที่ 2
2. ใบงานที่ 4.2 การใช้งาน InfluxDB บน Node-RED
(1) สอนติดตั้งและใช้งาน Influx Node บน Node-RED พร้อมทําการทดลองที่ 1 ควบคู่ไปด้วย
(2) อธิบายเกี่ยวกับการทํางานของอุปกรณ์อื่นร่วมกับ MQTT Server แล้วทําการทดลองที่ 2 โดยใช้
I-Kit2 ในการส่งข้อมูลแล้วจัดการเก็บข้อมูลเข้า InfluxDB บน Node-RED

ซึ่งแตละใบงานนั้นสามารถเสริมสรางความรูของผูเรียนไดจากคําถามทายหนวยการเรียนรู อีกทั้งยัง
เปนตัวชี้วัดผลการเรียนจากผูเรียนได และการสอนในแตละใบงานสามารถใชเวลาในการสอนในตารางเวลาที่ใช
สอนของใบงาน
ตารางเวลาที่ใชสอนของใบงาน
ใบงานที่ เรื่อง เวลา (นาที)
4.1 ฐานข-อมูลในงาน IoT และ การใช-งาน InfluxDB เบื้องต-น 30
4.2 การใช-งาน InfluxDB บน Node-RED 210

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 154

ใบงานที่ 4.1 ฐานขอมูลในงาน IoT และ การใชงาน InfluxDB เบื้องตน

จุดประสงค
1. เรียนรู้หลักการทํางานของระบบฐานข้อมูล (Database) บน IoT Gateway
2. เรียนรู้การติดตั้งและใช้งาน InfluxDB บน IoT Gateway

เครื่องมือและอุปกรณ

1. Raspberry Pi 2. SD Card 32 GB 3. สาย Ethernet

ทฤษฎีเบื้องตน

Time series Database คืออะไร


Time series database (TSDB) คือ ระบบฐานขอมูลที่ปรับใหเหมาะสมสําหรับการจัดเก็บและการ
สืบคนขอมูลที่เปลี่ยนแปลงตลอดเวลาหรือเปลี่ยนแปลงตามเวลา โดยจะเก็บขอมูลที่เรียกวา Time series
data ที่เปนขอมูลที่ถูก timestamp และจัดการดวยวิธีแบบหลายในชวงเวลา สามารถเรียกขอมูลไดอยาง
รวดเร็วซึ่งเปนขอมูลเกี่ยวกับสถานะปจจุบัน แนวโนม และรูปแบบที่ผานมา ทําให Time series database
เหมาะกับการจัดการขอมูลที่เกี่ยวของกับเวลา เชน การเก็บขอมูลจากเซ็นเซอรของ Internet of Things (IoT),
การซื้อขายหลักทรัพยในตลาดหุน , การเก็บขอมูลในหนวยของ CPU เปนตน

InfluxDB คืออะไร
InfluxDB เปนหนึ่งใน Time series database (TSDB) ที่พัฒนาขึ้นโดย InfluxData ออกแบบมา
สําหรับจัดการขอมูลประเภท Time series data จํานวนมากอยางรวดเร็วและการวิเคราะหขอมูลแบบ Real-
time ซึ่งสามารถใชเปนที่เก็บขอมูลสําหรับกรณีการใชงานใด ๆ ที่เกี่ยวของกับขอมูลที่มีการ timestamp เปน
จํานวนมาก โดย InfluxDB นั้นรองรับการทํางานรวมกับ APIs บน Platform ตาง ๆ และสามารถติดตั้ง
InfluxDB ไดทั้งใน Laptop ของตัวเอง, Server ของบริษัท แมกระทั้งติดตั้งบน Cloud Server ที่เปน
มาตรฐานสากล เชน AWS, Google Cloud, Microsoft Azure เปนตน

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 155

โครงสรางของ InfluxDB Internals

InfluxDB มีโครงสรางภายในที่เปนลักษณะดังภาพ คือ InfluxDB Instance ที่เปนหนวยความจําของ


InfluxDB จะมี Databases ที่สรางอยูภายในนั้น โดยภายใน Database จะเก็บ Measurements เอาไว และ
สุดทายขอมูลที่สงเขามาเก็บเชน Timestamp, Value จะถูกเก็บอยูใน Measurement นั้นๆ

คําสั่งทั่วไปในการจัดการ InfluxDB
ในการจัดการ InfluxDB Instance นั้น สามารถจัดการไดใน Terminal ที่ติดตั้ง InfluxDB เอาไว เชน
การติดตั้ง InfluxDB บน Raspberry Pi สามารถจัดการสิ่งตาง ๆ ไดบน Terminal ของ Raspberry Pi ผาน
คําสั่งตางๆ ดังนี้
1. influxd คือ คําสั่งในการเช็ค Version และข้อมูลเบื้องต้นของ InfluxDB ที่ติดตั้งเอาไว้
2. influx คือ คําสั่งในการเข้าจัดการ InfluxDB Instance
3. show databases คือ คําสั่งในการแสดง Databases ที่อยู่ภายใน InfluxDB Instance ทั้งหมด
4. create database "name" คือ คําสั่งในการสร้าง Database ใน InfluxDB Instance โดยตั้งชื่อ
ที่ต้องการแทนคําว่า name
5. drop database "name" คื อ คํ า สั ่ ง ในการลบ Database ใน InfluxDB Instance ตามชื ่ อ ที่
ต้องการ
6. use "name" คือ คําสั่งในการใช้งาน Database ใน InfluxDB Instance ตามชื่อที่ต้องการ
7. show measurements คือ คําสั่งในการแสดง Measurements ที่อยู่ภายใน Database ที่ใช้
งานอยู่ทั้งหมด
8. drop measurement "name" คือ คําสั่งในการลบ Measurement ใน Database ที่ใช้งานอยู่
ตามชื่อที่ต้องการ
นอกจากนี้ ยังมีคําสั่งในการจัดการ หรือตั้งคาสิ่งตางๆ บน InfluxDB เพิ่มเติม โดยศึกษาไดที่
https://docs.influxdata.com/influxdb/v1.8/tools/shell/

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 156

ขั้นตอนการทดลอง
การทดลองที่ 1 การติดตั้ง InfluxDB 1.8 บน Raspberry Pi

1. Remote เข้าใช้งาน Raspberry Pi ผ่าน VNC พร้อมกับการเชื่อมต่อ WiFi สําหรับการติดตั้ง InfluxDB


และเปิด Terminal ขึ้นมา

2. ใช้ ค ํ า สั ่ ง wget -q https://repos.influxdata.com/influxdata-archive_compat.key สํ า หรั บ ดาวน์


โหลด InfluxDB

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 157

3. ใช้คําสั่ง echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c


influxdata-archive_compat.key' | sha256sum -c && cat influxdata-archive_compat.key |
gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg >
/dev/null

4. ถัดมาด้วยคําสั่ง echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-


archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee
/etc/apt/sources.list.d/influxdata.list

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 158

5. อัพเดทระบบด้วยคําสั่ง sudo apt-get update

6. ติดตั้ง InfluxDB ด้วยคําสั่ง sudo apt-get install influxdb -y

7. ใช้ ค ํ า สั ่ ง sudo systemctl unmask influxdb.service และตามด้ ว ยคํ า สั ่ ง sudo systemctl start
influxdb เพื่อให้ Raspberry Pi รัน InfluxDB

8. ตรวจสอบการติดตั้ง InfluxDB ด้วยคําสั่ง influxd จะพบกับ Version 1.8.10 แสดงว่าการติดตั้งสําเร็จ

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 159

บันทึกผลทดลอง
คําชี้แจง : ใหผูทําการทดลองเติมเครื่องหมาย P ตามผลการทดลอง
ผลการทดลอง
รายการทดลอง
ได้ ไม่ได้
สามารถติดตั้ง InfluxDB บน Raspberry Pi ได้หรือไม่

อธิบายผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 160

การทดลองที่ 2 การใชงาน InfluxDB เบื้องตนและการสราง Database ใน InfluxDB

1. Remote เข้าใช้งาน Raspberry Pi ผ่าน VNC และเปิด Terminal ขึ้นมา

2. ใช้คําสั่ง influx เพื่อเข้าใช้งาน InfluxDB โดยจะเห็นว่าการใช้คําสั่งต่าง ๆ ที่พิมพ์จะแตกต่างจากแบบปกติ


เนื่องจากกําลังใช้งานอยู่ใน InfluxDB

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 161

3. ทดลองตรวจสอบ Databases ทั ้ ง หมดภายใน InfluxDB ผ่ า นคํ า สั ่ ง show databases จะพบว่ า มี


Database ที่ชื่อ _internal อยู่ ซึ่งเป็น Database ที่เก็บข้อมูลที่จําเป็นสําหรับ InfluxDB เอาไว้

4. ใช้ ค ํ า สั ่ ง create database "esp32" เพื ่ อ สร้ า ง Database ขึ ้ น มาใหม่ ท ี ่ ช ื ่ อ ว่ า esp32 และ create
database "esp8266" เพื่อสร้าง Database ขึ้นมาใหม่ที่ชื่อว่า esp8266

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 162

5. ใช้คําสั่ง show databases อีกครั้ง จะพบว่ามี Database ชื่อ esp32 และ esp8266 เพิ่มขึ้นมา

6. ลบ Database ชื่อ esp8266 ออก โดยใช้คําสั่ง drop database "esp8266" และสั่ง show databases
อีกครั้ง จะพบว่า Database esp8266 ได้ถูกลบออกไปแล้ว

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 163

7. สร้าง Database esp8266 กลับมาอีกครั้ง ผ่านคําสั่ง create database "esp8266" เป็นอันเสร็จสิ้นใน


การใช้งาน InfluxDB และการสร้าง Database เบื้องต้น

บันทึกผลทดลอง
คําชี้แจง : ใหผูทําการทดลองเติมเครื่องหมาย P ตามผลการทดลอง
ผลการทดลอง
รายการทดลอง
ได้ ไม่ได้
สามารถเข้าใช้งาน InfluxDB ได้หรือไม่
สามารถสร้าง Database ชื่อ esp32 ได้หรือไม่
สามารถสร้าง Database ชื่อ esp8266 ได้หรือไม่
สามารถแสดง Databases ทั้งหมดได้หรือไม่
สามารถลบ Database ได้หรือไม่

อธิบายผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 164

สรุปผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 165

ใบงานที่ 4.2 การใชงาน InfluxDB บน Node-RED


จุดประสงค
1. เรียนรู้การติดตั้งและใช้งานโหนด Influx บน Node-RED
2. เรียนรู้วิธีการจัดการข้อมูลบน Node-RED โดย Influx Node
3. เรียนรูว้ ิธีการสร้าง Node-RED Dashboard จากข้อมูลที่รับมาจากอุปกรณ์ภายนอก

เครื่องมือและอุปกรณ

1. Raspberry Pi 2. SD Card 32 GB 3. สาย Ethernet 4. I-Kit 2

ทฤษฎีเบื้องตน

การใชงาน Influx Node


Influx Node เปน Node ที่ไมไดติดตั้งมาพรอมกับ Node-RED ตั้งแตแรก จึงตองทําการติดตั้ง โดยมี
ชื่อวา node-red-contrib-influxdb จะได Influx Node มาอยูในกลุมของ Storage 3 Nodes คือ influxdb
in, influxdb out และ influx batch ดังรูป โดย

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 166

1. influxdb in คือ Node สําหรับดึงข้อมูลออกมาจาก Database ที่ต้องการ จะได้ผลลัพธ์เป็น Output


ที่เป็นข้อมูลที่เราเลือก Query ออกมา โดยสามารถตั้งค่า Properties ได้ดังนี้

(1) Name: ตั้งชื่อให้ Node


(2) Server: Server ที่ติดตั้ง InfluxDB เอาไว้
(3) Query: ใช้คําสั่งเรียกข้อมูลที่ต้องการ

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 167

2. influxdb out คื อ Node สํ า หรั บ การจั ด เก็ บ ข้ อ มู ล เข้ า ไปใน Database และ Measurement ที่
ต้องการทีละ 1 measurement โดยสามารถตั้งค่า Properties ได้ดังนี้

(1) Name: ตั้งชื่อให้ Node


(2) Server: Server ที่ติดตั้ง InfluxDB เอาไว้
(3) Measurement: เลือก Measurement ที่จะเก็บข้อมูลนี้เอาไว้

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 168

3. influxdb batch คือ Node สําหรับการจัดเก็บข้อมูลเข้าไปใน Database โดยสามารถจัดการเก็บได้


ทีเดียวหลาย Measurement รวมไปถึงสามารถจัดการรูปแบบข้อมูลแบบต่าง ๆ ได้ โดยสามารถตั้ง
ค่า Properties ได้ดังนี้

(1) Name: ตั้งชื่อให้ Node


(2) Server: Server ที่ติดตั้ง InfluxDB เอาไว้

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 169

คําสั่งในการ Query ขอมูลเบื้องตน


ในการ Query ขอมูลใน InfluxDB สามารถทําไดโดยการใชคําสั่งบน Terminal แตอยางที่ทราบกันวา
ขอมูลที่อยูใน InfluxDB นั้นถูกเก็บอยูภายในชั้น Measurement จึงตองมีการเขาไปใน Database ที่เก็บ
Measurement นั้นกอน ผานคําสั่ง use "name" หลังจากนั้นใชคําสั่งสําหรับการ Query เบื้องตนดังนี้
(1) SELECT * FROM "measurement_name" เป็นการ Query ข้อมูลทั้งหมดภายใน Measurement
ที่เราต้องการ
(2) SELECT * FROM "measurement_name" where time > now() - 30s เป็ น การ Query ข้ อ มู ล
ภายใน Measurement ที่เราต้องการ โดยแสดงทั้งหมดข้อมูลในช่วง 30 วินาทีล่าสุด
(3) SELECT * FROM "measurement_name" where time > now() - 10m ORDER BY ASC LIMIT
1 เป็นการ Query ข้อมูลภายใน Measurement ที่เราต้องการ โดยเลือกข้อมูลในช่วง 10 นาที และ
แสดงแค่ข้อมูลเมื่อ 10 นาทีย้อนหลังแค่ 1 ค่า มาแสดงเท่านั้น
(4) SELECT * FROM "measurement_name" GROUP BY * ORDER BY DESC LIMIT 1 เ ป ็ น ก า ร
Query ข้อมูลภายใน Measurement ที่เราต้องการ โดยแสดงเพียง 1 ค่าล่าสุดเท่านั้น

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 170

ขั้นตอนการทดลอง
การทดลองที่ 1 การใชงาน InfluxDB Node จากการสุม Data บน Node-RED

1. เปิด Node-RED บน Browser ที่ 192.168.200.1:1880 และสร้าง Flow ใหม่ขึ้นมา

2. ติดตั้ง Random Node ผ่าน Manage Palette เพิ่มเติม โดยมีชื่อว่า node-red-node-random

3. นํา Influx out เข้ามาวางใน Flow และนํา Inject ที่ตั้งค่า Interval ทุก ๆ 10 วินาที
พร้อมกับ Random Node มาวางบน Flow

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 171

4. ทําการเข้าไปตั้งค่า Influx out โดยตั้งค่าต่าง ๆ ดังรูป แล้วกด Add


(1) ตั้งค่า Server ให้กดไปที่ปุ่มดินสอ เพื่อเพิ่ม Server ของ InfluxDB
(2) Name : esp8266
(3) Database : esp8266

5. จะได้ Server ที ่ เ ชื ่ อ มกั บ Database ชื ่ อ esp8266 มาใช้ ง านและทํ า การตั ้ ง Measurement ว่ า


temperature ดังรูป แล้วกด Done

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 172

6. ตั้งค่า Random ให้สุ่มเลขจํานวนเต็มในช่วง 25-30 ออกมา ดังรูป

7. ต่อ Inject กับ Random และต่อ Random กับ Influx out ดังรูป แล้ว Deploy

8. สร้าง Random มาใหม่ โดยตั้งค่า 50-60 และ influx out ที่เปลี่ยน Measurement เป็น humidity แล้ว
ต่อเข้ากับ Inject เดิม ดังรูป

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 173

9. กลับไปที่ VNC ให้เปิด Terminal แล้ว ใช้คําสั่ง influx เพื่อใช้งาน InfluxDB และใช้คําสั่ง use "esp8266"
เพื่อเข้าใช้งาน Database ชื่อ esp8266

10. ใช้ ค ํ า สั ่ ง show measurements เพื ่ อ แสดง Measurements ทั ้ ง หมดใน Database นี้ จะพบกั บ
Measurement ชื่อ temperature และ humidity ที่เก็บค่าที่ถูกสุ่มมาจาก Flow บน Node-RED

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 174

11. ถัดมาเป็นการทดลอง Query ข้อมูลทั้งหมดจากใน Measurement ที่ชื่อ temperature โดยใช้คําสั่ง:


SELECT * FROM "temperature"

12. หากต้องการข้อมูล temperature ในช่วง 1 นาที ให้ใช้คําสั่ง SELECT * FROM "temperature" where
time > now() - 1m จะพบกับข้อมูล 6 ค่า เนื่องจากข้อมูลถูกส่งมา 6 ครั้ง ใน 1 นาที

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 175

13. หากต้องการเพียงข้อมูล temperature ล่าสุด ให้ใช้คําสั่ง SELECT * FROM "temperature" GROUP


BY * ORDER BY DESC LIMIT 1

14. หากเปลี่ยนเป็นอยากได้ข้อมูลใน Measurement humidity เพียงค่าล่าสุด ให้ใช้คําสั่ง SELECT * FROM


"humidity" GROUP BY * ORDER BY DESC LIMIT 1

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 176

15. กลับไปที่ Node-RED แล้วทําการลาก influx in เข้ามา เพื่อ Query ข้อมูลล่าสุดของ


temperature และ humidity จึงตั้งค่าดังรูป
(1) Temperature ใช้ SELECT * FROM "temperature" GROUP BY * ORDER BY DESC LIMIT 1
(2) Humidity ใช้ SELECT * FROM "humidity" GROUP BY * ORDER BY DESC LIMIT 1

(1) (2)

16. ทําการต่อ Inject ที่ตั้ง Interval ไว้ 10 วินาที เข้ากับ influx in ทั้งสอง และต่อออกไปยัง Debug จะ
พบว่า ข้อมูลถูกเรียกจาก InfluxDB ออกมาแสดงผลบนหน้าต่าง Debug ของ Node-RED ในรูปแบบของ
Array ที่มี Object อยู่ภายในที่มี Key เป็น time และ value อยู่

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 177

17. หากต้องการแยกข้อมูลเพียง value ออกมา จะต้องทําการ Split 2 ครั้ง และ Switch ที่ตั้งค่าดังรูป จะได้
ผลลัพธ์สุดท้ายเป็นข้อมูลเพียงอย่างเดียว

บันทึกผลทดลอง
คําชี้แจง : ใหผูทําการทดลองเติมเครื่องหมาย P ตามผลการทดลอง
ผลการทดลอง
รายการทดลอง
ได้ ไม่ได้
สามารถตั้งค่า Database และ Server สําหรับ Influx node ได้หรือไม่
สามารถใช้ influx out เก็บข้อมูลเข้า Database ตาม Measurement
ที่ต้องการได้หรือไม่
สามารถใช้คําสั่ง Query ต่าง ๆ บน Terminal ได้หรือไม่
สามารถใช้ influx in ในการ Query ข้อมูลบน Node-RED ได้หรือไม่
สามารถแยกข้อมูล value ออกมาแสดงเพียงค่าเดียว ได้หรือไม่

อธิบายผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 178

การทดลองที่ 2 เก็บขอมูลจาก DHT22 และสถานะ LED บน I-Kit2 เขา InfluxDB และแสดงผลบน Node-
RED Dashboard

1. เตรียมการใช้ I-Kit2 ในการส่งข้อมูลมายัง Node-RED ผ่าน MQTT และจัดเก็บข้อมูลเข้า Database โดย


ต่อ I-Kit เข้ากับ DHT22 ที่ GPIO32 และจ่าย Vcc และ GND
2. อัพโหลดโปรแกรมตัวอย่างด้านล่าง แต่ต้องทําการแก้ไขในบางส่วนโดย ssid คือ
(1) ชื่อ WiFi ที่ให้ I-KIT2 เชื่อมต่อ โดยจะต้องเป็น WiFi ตัวเดียวกับที่ Raspberry Pi เชื่อมต่ออยู่
(2) password คือ Password ของ WiFi, mqtt_server คือ WLAN0 IP Address ที่แสดงใน ifconfig
(3) mqtt_username และ mqtt_password คือ mqtt_test ทั้งคู่
#include <WiFi.h>
#include <PubSubClient.h>
#include "DHT.h"
const char* ssid = "Your_SSID";
const char* password = "Your_Password";
const char* mqtt_server = "WLAN IP Address";
const char* mqtt_username = "MQTT_Username";
const char* mqtt_password = "MQTT_Password";
const char* mqtt_Client = "";
const int mqtt_port = 1883;
WiFiClient espClient;
PubSubClient client(espClient);
char msg[150];
#define DHTPIN 33
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
#define LED1 5
long lastMsg = 0;
int value = 0;
void reconnect() {
while (!client.connected()) {
Serial.print("Attempting MQTT connection…");
if (client.connect(mqtt_Client, mqtt_username, mqtt_password)) {
Serial.println("connected");
client.subscribe("ikit2/led1/control");
}
else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println("try again in 5 seconds");
delay(5000);
}
}
}

void callback(char* topic, byte* payload, unsigned int length) {


Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
String message;

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 179

for (int i = 0; i < length; i++) {


message = message + (char)payload[i];
}
Serial.println(message);
[
if (String(topic) == "ikit2/led1/control") {
if (message == "on") {
digitalWrite(LED1, 0);
client.publish("ikit2/led1/status", "on");
Serial.println("LED ON");
}
else if (message == "off") {
digitalWrite(LED1, 1);
client.publish("ikit2/led1/status", "off");
Serial.println("LED OFF");
}
}
}
void setup() {
Serial.begin(9600);
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
client.setServer(mqtt_server, mqtt_port);
client.setCallback(callback);
dht.begin();
pinMode(LED1, OUTPUT);
digitalWrite(LED1, 1);
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
long now = millis();
if (now - lastMsg > 5000) {
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
lastMsg = now;
String data = String(temperature) + "," + String(humidity);
data.toCharArray(msg, (data.length() + 1));
Serial.println("Publish message: " + String(data));
client.publish("ikit2/dht/data", msg);
}
delay(1);
}

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 180

3. ไปยังหน้า Node-RED แล้วใช้ MQTT in ในการรับข้อมูลจาก Topic: ikit2/dht/data

4. จะเห็นว่าข้อมูลเป็น String ที่คั่นด้วยคอมม่า จึงต้องใช้ Split ในการแบ่งข้อมูล โดยตั้งค่าเป็นการแบ่งด้วย


คอมม่า ดังรูป

5. หลังจากที่ข้อมูลถูก Split มาแล้วจะมี msg.parts.index กํากับมาด้วยโดยค่าแรกจะมี index เป็น 0 และ


ค่าหลังเป็น 1 ให้ใช้ Switch ที่ตั้งค่าดังรูปเพื่อจัดการเส้นทางข้อมูลผ่าน index

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 181

6. ค่าที่ได้ออกมาจะเป็น String ของอุณหภูมิและความชื้นแยกออกจากกัน แต่การเก็บเข้า InfluxDB จะต้อง


แปลงข้อมูลเป็นตัวเลขก่อน จึงสร้าง Function ขึ้นมา แล้วเขียนโปรแกรมดังนี้
msg.payload = parseFloat(msg.payload)
return msg;

7. ทําการต่อ Node ต่างๆ ดังรูป

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 182

8. เก็บเข้า InfluxDB โดยลาก influx out มาวาง แล้วตั้งค่าโดย ให้เลือก Add new influxdb แล้วกดปุ่ม
ดินสอ

9. ตั้ง Name และ Database ดังรูป

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 183

10. เลือกใช้งาน esp32

11. ตั้งค Measurement เป็น temperature และ humidity จะได้ Flow ดังรูป

12. ทดลองนํา Debug มาต่อหลังจาก Function เพื่อเช็คว่าข้อมูลเป็น Number จริงไหม

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 184

13. ถัดมา ใช้ influx in ในการ Query ข้อมูลล่าสุด จาก esp32 ออกมา โดยใช้คําสั่งดังรูป
(1) SELECT * FROM “temperature” GROUP BY * ORDER BY DESC LIMIT 1
(2) SELECT * FROM “humidity” GROUP BY * ORDER BY DESC LIMIT 1

14. ต่อเข้ากับ Inject, Split และ Switch เช่นเดิมกับการทดลองที่ 1 จะได้ผลลัพธ์ออกมาเป็น ค่าอุณหภูมิ


และความชื้นล่าสุดที่อ่านได้จาก DHT22 บน I-Kit2

15. เปลี่ยนจากการ Debug เป็นการแสดงผลบน Node-RED Dashboard โดย สร้าง Tab ชื่อ I-Kit2 ขึ้นมา
และ Group ชื่อ esp32 ดังรูป

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 185

16. สร้าง Gauge 2 ตัวเพื่อแสดงค่าอุณหภูมิและความชื้น โดยตั้งค่าดังรูป

17. เปิด Dashboard ขึ้นมาและเลือก I-Kit2 ที่มุมบนซ้าย จะเห็นข้อมูลที่ถูกดึงมาจาก InfluxDB มาแสดงผล


บน Node-RED Dashboard เรียบร้อย

18. ถัดไปเป็นการเก็บข้อมูล LED เข้า Database โดยสถานะของ LED ถูกส่งมาใน Topic: ikit2/led/status
และมีค่าเป็น on/off

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 186

19. การจะเก็บข้อมูลเข้า InfluxDB นิยมทําเป็น Number จึงทําการเปลี่ยนข้อมูลจาก on/off เป็น 1/0 ผ่าน
Change ดังนี้ และตรวจสอบผ่าน Debug

20. ทําการเก็บเข้า InfluxDB ใน Measurement ชื่อ led_status

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 187

21. ต่อข้อมูลจาก Change เข้ากับ influx out เพื่อจัดเก็บข้อมูลเข้า Database

22. ทําการ Query ข้อมูลจาก led_status มาแสดงผลโดย Dashboard โดยใช้ Inject ที่ตั้งค่า interval 10
วินาที แล้วใช้คําสั่ง Query ดังรูป

23. ใช้ Split และ Switch ดังตัวอย่างเดิม และต่อเข้ากับ led node ที่ตั้งค่าดังรูป คือถ้าข้อมูลเป็น 0 จะ
แสดงไฟสีแดง และ 1 จะแสดงไฟสีเขียว

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 188

24. ต่อทุก Nodes เข้าด้วยกันดังรูป แล้วกด Deploy

25. เมื่อไปที่ Node-RED Dashboard จะพบว่า มีสถานะของ LED แสดงเป็นที่เรียบร้อย

บันทึกผลทดลอง
คําชี้แจง : ใหผูทําการทดลองเติมเครื่องหมาย P ตามผลการทดลอง
ผลการทดลอง
รายการทดลอง
ได้ ไม่ได้
สามารถเก็บข้อมูลจาก DHT22 บน I-Kit2 เข้า Database ชื่อ esp32 ได้หรือไม่
สามารถ Query และจัดการข้อมูลล่าสุดของ DHT22 จาก Database ได้หรือไม่
สามารถใช้ Node-RED Dashboard ในการแสดงผลข้อมูลที่เก็บอยู่ใน Database
ได้หรือไม่
สามารถเก็บข้อมูลสถานะ LED1 บน I-Kit2 เข้า Database ชื่อ esp32 ได้หรือไม่
สามารถ Query และจัดการสถานะของ LED จาก Database ได้หรือไม่
สามารถใช้ Node-RED Dashboard ในการแสดงผลสถานะ LED ที ่ เ ก็ บ อยู ่ ใ น
Database ได้หรือไม่

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 189

อธิบายผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

สรุปผลการทดลอง

..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 190

คําถามทายหนวยการเรียนรูที่ 4

1. เพราะเหตุใด หลังจากที่เข้าใช้งาน InfluxDB ผ่าน influx บน Terminal แล้วไม่สามารถใช้คําสั่ง show


measurements ได้ทันที
2. จงเขียนผลลัพธ์จากการ Query ข้อมูลจากใน Database ผ่าน Influx in หากยกตัวอย่างว่า time =
1600000000 และ value = 40
3. จงสร้างระบบที่เก็บข้อมูลจาก I-Kit2 โดยใช้ LDR และ DHT22 พร้อมกับควบคุมและติดตามสถานะ LED
ทั้ง 3 ดวงบนบอร์ด ส่งข้อมูลผ่าน MQTT และจัดเก็บลง InfluxDB และจงสร้าง Node-RED Dashboard
ที่แสดงผลข้อมูลจากการใช้ Influxdb In ในการ Query ข้อมูลออกมา โดยแสดงผลค่าอุณหภูมิ ความชื้น
และแสง ในรูปแบบ Gauge, Chart และ Text ส่วน LED แสดงสถานะด้วย led indicator และควบคุม
ผ่าน Button
4. จงเพิ่มเติมเงื่อนไขการส่งข้อมูลของข้อที่ 1 ใน Arduino IDE ให้ส่งข้อมูลค่าอุณหภูมิ ความชื้น และแสง
ผ่าน MQTT ต่อเมื่อมีการเปลี่ยนแปลงไปเท่านั้น

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 191

หนวยการเรียนรูที่ 5
การแสดงผลขอมูลและการแจงเตือน
จุดประสงค
1. เรียนรู้หลักการทํางานของแอปพลิเคชันบนระบบ IoT
2. เรียนรู้การติดตั้งและหลักการทํางานของ Grafana
3. เรียนรู้การใช้งานเครื่องมือต่างๆบน Grafana Dashboard
4. เรียนรู้หลักการทํางานและใช้งาน Line Notification

ตัวชี้วัด
1. สามารถอธิบายหลักการทํางานของแอปพลิเคชันบนระบบ IoT ได้
2. สามารถติดตั้งและอธิบายหลักการทํางานของ Grafana ได้
3. สามารถใช้งานเครื่องมือต่างๆบน Grafana Dashboard ได้
4. สามารถอธิบายหลักการทํางานและใช้งาน Line Notification ได้

เนื้อหา
ศึกษาและปฏิบัติเกี่ยวกับโครงสรางหรือองคประกอบของ Grafana ที่เปน Open source software
สําหรับการแสดงผลขอมูลที่นิยมใชงานกันทั่วโลก เนื่องจาก Grafana มีโครงสรางและองคประกอบที่ออกแบบ
มาใหสามารถจัดการไดหลากหลายและคลบคลุม ทั้งการจัดการองคกร การจัดการผูใชงาน และการจัดการ
เกี่ยวกับขอมูลที่นํามาทําหนาตางแสดงผลขอมูล หรือ Dashboard โดย Grafana มีเครื่องมือมากมายใหใช
ครอบคลุมงานดาน IoT สามารถเรียกขอมูลจาก InfluxDB ไดอยางงายดาย โดยจะศึกษาตั้งแตการติดตั้ง
Grafana โครงสรางพื้นฐาน ระบบการจัดการ การสราง Dashboard และการใช Panel ตางๆ รวมไปถึงการ
ทําการแจงเตือนผาน Line Notify ดวย Node-RED

ความรูเดิมที่ตองมี
1. หลักการทํางานของ IoT Gateway และ IoT Server
2. การใช้งานคําสั่งพื้นฐานของระบบปฏิบัติการบนคอมพิวเตอร์
3. การใช้งานโหนดพื้นฐาน และโหนดที่ใช้จัดการข้อมูลในระบบบน Node-RED

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 192

แนวทางการจัดการเรียนรู
การจัดเตรียม
1. ใบงานตามจํานวนนักศึกษา
2. เครื่องคอมพิวเตอร์
3. Raspberry Pi พร้อม Adapter
4. SD card 32 GB ที่ติดตั้ง OS แล้ว
5. สาย Ethernet
6. I – Kit V.2

ขั้นตอนการดําเนินการ
กอนเริ่มตนการเรียนการสอน ใหผูสอนและผูเรียนดาวนโหลดสื่อการสอนและโปรแกรมพื้นฐานสําหรับ
การเรียนไดที่ https://bit.ly/AdvIoT_Training_Doc เพื่อความพรอมในการเรียนการสอน หลังจากนั้นใหเริ่ม
ดําเนินการสอนตามบทเรียน โดย
1. ใบงานที่ 5.1 การติดตั้งและใช้งาน Grafana เบื้องต้น
(1) อธิบายเกี่ยวกับหลักการทํางานและการใช้งานซอฟต์แวร์ Grafana
(2) สอนติดตั้งและเปิดใช้งาน Grafana บน Raspberry Pi พร้อมทําการทดลองที่ 1
(3) สอนการจัดการและใช้งาน Grafana เบื้องต้นพร้อมทําการทดลองที่ 2 และการทดลองที่ 3
2. ใบงานที่ 5.2 การสร้าง Grafana Dashboard และการเลือกใช้ Panel
(1) อธิบายเกี่ยวกับหลักการทํางานและการใช้งาน Grafana Dashboard
(2) สอนการจัดการข้อมูลและแสดงผลในรนูปแบบต่างๆ สําหรับ Grafana Dashboard พร้อมทํา
การทดลองที่ 1, การทดลองที่ 2 และการทดลองที่ 3
3. ใบงานที่ 5.3 การทําการแจ้งเตือนผ่าน Line Notify ด้วย Node-RED
(1) อธิบายเกี่ยวกับหลักการทํางานและการใช้งาน Line Notify ด้วย Node-RED
(2) สอนการใช้งาน Line Notify Node แล้วทําการทดลองที่ 1

ซึ่งแตละใบงานนั้นสามารถเสริมสรางความรูของผูเรียนไดจากคําถามทายหนวยการเรียนรู อีกทั้งยัง
เปนตัวชี้วัดผลการเรียนจากผูเรียนได และการสอนในแตละใบงานสามารถใชเวลาในการสอนในตารางเวลาที่ใช
สอนของใบงาน

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 193

ตารางเวลาที่ใชสอนของใบงาน
ใบงานที่ เรื่อง เวลา (นาที)
5.1 การติดตั้งและใช-งาน Grafana เบื้องต-น 60
5.2 การสร-าง Grafana Dashboard และการเลือกใช- Panel 180
5.3 การทำการแจ-งเตือนผbาน Line Notify ด-วย Node-RED 120

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 194

ใบงานที่ 5.1 การติดตั้งและใชงาน Grafana เบื้องตน

จุดประสงค
1. เรียนรู้วิธีการแสดงผลข้อมูลในรูปแบบแผนผังโดย Grafana
2. เรียนรู้การติดตั้งและใช้งาน Grafana เบื้องต้น

เครื่องมือและอุปกรณ

1. Raspberry Pi 2. SD Card 32 GB 3. สาย Ethernet

ทฤษฎีเบื้องตน

Grafana คืออะไร
Grafana เป น Open Source Software ที ่ น ิ ย มใช ใ นงานด า น Visualization หรื อ การทํ า
Dashboard โดย Grafana สามารถทํางานรวมกับ Time series database ไดอยางงายดาย ผานเครื่องมือ
ตาง ๆ ที่ Grafana เตรียมไวใหสามารถคนขอมูล ทําการแสดงผล รวมไปถึงการแจงเตือนไดแบบเรียลไทม์

โดย Grafana นั้นมี Panel รูปแบบต่าง ๆ มากกว่า 30 แบบ ให้เลือกใช้ตามความเหมาะสมของข้อมูล


ที่ต้องการจะแสดงผล สามารถจัดการสีของข้อมูล สามารถตั้ง Threshold และตั้งค่า Panel ต่าง ๆ ได้มากมาย
อีกทั้งยังมีการจัดการ User ที่ Grafana ได้วางโครงสร้างที่ให้ผู้ใช้งานสามารถจัดการ Organization และ Role
ของ User ได้ รวมไปถึงการทําการแจ้งเตือนและการเชื่อมต่อกับ Third party APIs อื่น ๆ ได้ ทําให้ Grafana
นั้นเป็น Software ที่มีประสิทธิภาพในการจัดการงานด้าน Visualization ที่ดีมาก

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 195

โครงสร้างของ Grafana
Grafana นั้น ออกแบบโครงสร้างของตัวเองให้ผู้ใช้งานสามารถจัดการระบบต่าง ๆ ได้ตามที่ต้องการดัง
รูปประกอบด้านล่าง โดยมีองค์ประกอบที่สําคัญดังนี้

1. Organization คือ ชั้นที่ใหญ่ที่สุดใน Grafana เปรียบเสมือนองค์กรหนึ่ง ที่ภายใน Organization จะ


ประกอบไปด้วย User หลากหลายหน้าที่, Folder ที่เก็บ Dashboard ต่างๆ, Data source ที่เป็น
แหล่งเก็บข้อมูล (Database) และ Alert ที่เป็นการใช้งานร่วมกับกับ Third party อื่น ๆ
2. Data source คือ แหล่งเก็บข้อมูล หรือ Database ที่จะอนุญาตให้ Organization สามารถใช้งานได้
โดยเริ ่ ม แรก Organization จะยั ง ไม่ ม ี Data source ผู ้ ใ ช้ ง านจะต้ อ งเพิ ่ ม Data source เพื ่ อ ให้
Organization นั้นสามารถใช้งานข้อมูลในนั้นได้

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 196

3. User คือ ผู้ใช้งานใน Organization นั้น ๆ โดย User จะมีหลายหน้าที่ (Role) เช่น Admin, Editor,
Viewer ที่เป็นตัวกําหนดสิทธิ์การทํางาน โดย
(1) Admin สามารถจัดการกับ User คนอื่นได้ทุกคน และสามารถจัดการ Data source, Folder
และ Dashboard ได้
(2) Editor สามารถจัดการกับ Data source, Folder และ Dashboard ได้
(3) Viewer สามารถทําได้แค่ดู Dashboard แต่ไม่สามารถแก้ไขสิ่งต่าง ๆ ได้
4. Folder คือ แฟ้มที่เอาไว้จัดเก็บ Dashboard โดยใน Folder นั้น สามารถมีหลาย Dashboard ได้
5. Dashboard คื อ หน้ าแสดงผลข้ อมู ล โดย Dashboard จะดึ งข้ อมู ลจาก Data source ที ่ ม ี อยู ่ ใ น
Organization นั้น ๆ
6. Alert คือ การแจ้งเตือนผ่าน Third party อื่น ๆ

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 197

ขั้นตอนการทดลอง

การทดลองที่ 1 การติดตั้ง Grafana บน Raspberry Pi

1. Remote เข้าใช้งาน Raspberry Pi ผ่าน VNC พร้อมกับการเชื่อมต่อ WiFi สําหรับการติดตั้ง Grafana


และเปิด Terminal ขึ้นมา

2. ดาวน์โหลด Grafana ผ่านคําสั่ง wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-


key add -

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 198

3. ตามด้ ว ยคํ า สั ่ ง echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a


/etc/apt/sources.list.d/grafana.list

4. อัพเดทระบบผ่านคําสั่ง sudo apt-get update

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 199

5. ติดตั้ง Grafana ด้วยคําสั่ง sudo apt-get install -y Grafana

6. เริ ่ มใช้ งาน Grafana ผ่ านคํ าสั ่ ง sudo /bin/systemctl enable grafana-server แล้ วตามด้ วย sudo
/bin/systemctl start grafana-server

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 200

7. ไ ป ท ี ่ Web Browser แ ล ้ ว เ ข ้ า ไ ป ที่ IP Address ข อ ง Raspberry Pi แ ล ะ พ อ ร ์ ท 3000 คื อ


192.168.200.1:3000 จะสามารถใช้งาน Grafana ได้

8. Log in ครั้งแรกจะมี Username และ Password เป็น admin ทั้งคู่

9. Grafana จะให้ตั้ง Username และ Password ใหม่ แต่ให้กด Skip ข้ามไปก่อน

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 201

10. เมื่อเข้าหน้าแรกได้ ถือว่าการติดตั้ง Grafana บน Raspberry Pi เสร็จสมบูรณ์

บันทึกผลทดลอง
คําชี้แจง : ใหผูทําการทดลองเติมเครื่องหมาย P ตามผลการทดลอง
ผลการทดลอง
รายการทดลอง
ได้ ไม่ได้
สามารถติดตั้ง Grafana ได้หรือไม่
สามารถ Log in เข้าใช้งาน Grafana ได้หรือไม่

อธิบายผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 202

การทดลองที่ 2 การเพิ่ม Data source ใน Organization

1. เข้ า มาที ่ ห น้ า แรกของ Grafana ที ่ 192.168.200.1:3000 และใช้ Username และ Password เป็ น
admin

2. เมื่อชี้ไปที่สัญลักษณ์ตั้งค่าที่ด้านซ้าย จะบอกว่าเราอยู่ที่ Main Org ที่เป็น Organization ตั้งต้น และจะ


เห็นว่าสามารถจัดการ User และ Data source ได้

3. กดเข้าไปที่ Data source เพื่อตั้งค่า Data source ให้กับ Main Org โดยกด Add data source

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 203

4. เลือก InfluxDB

5. ตั้งชื่อให้ Data Source ที่ช่อง Name โดยควรตั้งให้สอดคล้องกับชื่อ Database เพื่อให้เข้าใจได้ง่าย เช่น


esp8266 และ URL ตั ้ ง เป็ น http://localhost:8086 เนื ่ อ งจาก InfluxDB ติ ด ตั ้ ง บน Raspberry Pi
เช่นเดียวกัน และ InfluxDB รันอยู่ที่พอร์ท 8086

6. เลื่อนลงมาจะพบกับช่อง Database ในส่วนนี้ต้องกรอกให้ตรงกับ Database จริง ๆ ภายใน InfluxDB ซึ่ง


ในนั้น เรามี esp8266 อยู่แล้วจากหน่วยการเรียนรู้ที่ 5 แล้วกด Save & test

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 204

7. หากพบ Database ที ่ ช ื ่ อ esp8266 ใน http://localhost:8086 จะแสดงผลดั ง รู ป และบอกจํ า นวน


Measurements ในนั้นด้วย

8. เมื่อกดที่ปุ่มตั้งค่า อีกครั้ง จะพบว่ามี Data source เพิ่มขึ้นมาแล้ว

บันทึกผลทดลอง
คําชี้แจง : ใหผูทําการทดลองเติมเครื่องหมาย P ตามผลการทดลอง
ผลการทดลอง
รายการทดลอง
ได้ ไม่ได้
สามารถเข้าใช้งาน InfluxDB ได้หรือไม่

อธิบายผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 205

การทดลองที่ 3 การเพิ่ม Organization และการจัดการ Users

1. กดไปที่สัญลักษณ์รูปโล่ ที่ด้านล่างซ้าย จะมาที่หน้าต่าง Server Admin โดยจะมีเพียง Role Admin


เท่านั้น ที่สามารถเข้าถึงตรงนี้ได้

2. ไปที่ Organizations จะพบว่ามี Main Org ที่เป็น Organization ตั้งต้น ให้กด + New Org เพื่อเพิ่ม
Organization ใหม่

3. สร้าง Organization ใหม่ชื่อ New Org แล้วกด Create

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 206

4. กดมายังหน้า Server Admin และ Organizations อีกครั้ง จะพบว่ามี Organization ใหม่เพิ่มขึ้นมาแล้ว

5. ถัดมาเป็นการสร้าง User โดยไปที่แถบ Users ของ Server Admin จะพบว่ามี User เพียงคนเดียวคือตัว
เรา และสามารถเพิ่ม User ได้โดยกด New User

6. กรอกสิ่งที่จําเป็น คือ Name, Username และ Password แล้วกด Create user

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 207

7. เมื่อกลับมาที่ Users ใน Server Admin จะพบว่ามี newuser เพิ่มขึ้นมาแล้ว โดยให้กดเข้าไปที่ newuser


เพื่อตั้งค่าให้กับ User

8. เมื่อเข้ามาจะพบกับชื่อ User มีข้อมูล User บางส่วน สามารถจัดการสิ่งต่าง ๆ กับ User ได้ เช่น
(1) การลบ การปิดการใช้งาน
(2) สามารถตั้งสิทธิ์ให้ User เป็น Grafana Admin ที่สามารถจัดการ Grafana ได้
(3) สุดท้ายคือ Organization ที่ User นี้สามารถเข้าถึงได้ โดยให้ User นี้จัดการได้แค่ New Org

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 208

9. ให้ newuser นี้จัดการได้แค่ New Org


(1) ไปที่หัวข้อ Organization กด Remove from organization ของ Main Org

(2) แล้วกด Confirm removal

(3) ต่อมาให้กด Add user to organization

(4) ช่อง Organization ให้เลือก New Org แล้วกด Add to organization

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 209

10. จะพบว่า newuser จะใช้งานได้แค่ New Org และมี Role ในนั้นเป็น Viewer

11. กด Change role เพื่อเปลี่ยน Role ของ User ให้เป็น Editor แล้วกด Save

12. จะพบว่า newuser เป็น Editor ใน New Org เรียบร้อยแล้ว

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 210

บันทึกผลทดลอง
คําชี้แจง : ใหผูทําการทดลองเติมเครื่องหมาย P ตามผลการทดลอง
ผลการทดลอง
รายการทดลอง
ได้ ไม่ได้
สามารถสร้าง Organization ใหม่ได้หรือไม่
สามารถสร้าง User ใหม่ได้หรือไม่
สามารถจัดการ User ให้ไปอยู่ Organization ใหม่ได้หรือไม่
สามารถเปลี่ยน Role ให้กับ User ได้หรือไม่

อธิบายผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

สรุปผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 211

ใบงานที่ 5.2 การสราง Grafana Dashboard และการเลือกใช Panel


จุดประสงค
1. เรียนรู้การใช้งาน Folder และ Dashboard
2. เรียนรู้การใช้งาน Panel ต่าง ๆ
3. เรียนรูก้ ารติดตั้ง Plugins เพิ่มเติม

เครื่องมือและอุปกรณ

1. Raspberry Pi 2. SD Card 32 GB 3. สาย Ethernet

ทฤษฎีเบื้องตน

การใชงาน Grafana Dashboard


Grafana Dashboard เปนหนาตางที่ใชในการแสดงผลขอมูล โดยขอมูลที่ถูกนํามาแสดงผลจะมาจาก
Data source ที่มีอยูใน Organization ซึ่งเริ่มตน Dashboard จะเปนหนาเปลา ๆ ที่ไมมีขอมูลใด ๆ ผูใช
จํ า เป น ต อ งสร า งการแสดงผลขึ ้ น มาเอง ซึ ่ ง ใน Grafana เรี ย กว า Panel ที ่ เ ป น แผนภู ม ิ ร ู ป แบบต า ง ๆ
หลากหลายรูปแบบสําหรับการแสดงขอมูลหลากหลายประเภท เชน Time series ที่เปนแผนภูมิกราฟตาม
แกนเวลา, Gauge ที่เปนแผนภูมิแสดงขอมูลลาสุด, Stat ที่แสดงขอมูลตัวเลข

Panel พื้นฐานของ Grafana


Panel ของ Grafana นั้นมีอยูหลากหลาย โดยพื้นฐานที่ Grafana ติดตั้งมาใหก็มีมากกวา 20 แบบ
แลว แตสามารถติดตั้งเพิ่มเติมไดอีก ตามความตองการของผูใช โดยมี Panel พื้นฐานที่ตองรู ดังนี้

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 212

1. Time series เป็น Panel ที่เป็นกราฟอนุกรมเวลา ใช้แสดงข้อมูลที่ต้องการจะแสดงเป็นกราฟคู่กับ


เวลา โดยจะมี แกน X เป็นเวลา และแกน Y เป็นค่าของข้อมูล ซึ่งมีการตั้งค่าที่สําคัญดังนี้

(1) Panel options


- Title: ชื่อกํากับ Panel
(2) Legend
- Visibility: เปิดหรือปิด Legend
- Mode: รูปแบบของ Legend
- Placement: ตําแหน่งของ Legend
(3) Axis
- Time zone: time zone ของเวลา
- Placement: ตําแหน่งของค่าแกน Y
- Label: ชื่อกํากับแกน Y
- Show grid lines: แสดงเส้น Grid
(4) Graph style
- Style: รูปแบบของกราฟ
- Line interpolation: รูปแบบการเชื่อมแต่ละจุดข้อมูล
- Line Width: ขนาดของเส้นเชื่อมแต่ละจุดข้อมูล
- Fill opacity: การลงสีพื้นที่ใต้กราฟ
- Gradient Mode: รูปแบบสีใต้กราฟ
- Line style: รูปแบบเส้นเชื่อม
- Connected null value: การเชื่อมต่อกับข้อมูลที่เป็น null
- Show point: เปิดหรือปิดการแสดงจุดข้อมูล
- Point size: ขนาดของจุดข้อมูล
(5) Standard option
- Unit: หน่วยของข้อมูล
- Min: ค่าตํ่าสุดของ Panel
- Max: ค่าสูงสุดของ Panel
- Decimals: ตําแหน่งทศนิยม

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 213

2. Gauge เป็น Panel ที่เป็นแผนภูมิที่ใช้แสดงข้อมูลล่าสุดเพียงค่าเดียว มีข้อดีที่สามารถตั้งค่าสีของช่วง


ข้อมูล เพื่อให้ง่ายต่อการทําความเข้าใจ โดยมีการตั้งค่าที่สําคัญดังนี้

(1) Panel options


- Title: ชื่อกํากับ Panel
(2) Standard options
- Unit: หน่วยของข้อมูล
- Min: ค่าตํ่าสุดของ Panel
- Max: ค่าสูงสุดของ Panel
- Decimals: ตําแหน่งทศนิยม
- Color scheme: รูปแบบสีของ Gauge (นิยมใช้ Threshold)
(3) Threshold
- Threshold: สีของข้อมูลแต่ละช่วง โดยสามารถเลือกสีของแต่ละช่วงได้ สามารถเพิ่ม
ได้โดยกดไปที่ Add Threshold
- Threshold mode: ตามข้อมูลหรือตามเปอร์เซ็นต์ของข้อมูล

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 214

3. Bar gauge เป็น Panel ที่แสดงข้อมูลเป็นแผนภูมิแท่ง ที่สามารถแสดงข้อมูลได้มากกว่า 1 ค่า และ


สามารถปรับตั้งค่าสิ่งต่าง ๆ ได้ให้เหมาะกับข้อมูล โดยมีการตั้งค่าที่สําคัญดังนี้

(1) Panel options


- Title: ชื่อกํากับ Panel
(2) Bar gauge
- Orientation: แนวของ Bar gauge
- Display mode: รูปแบบของตัว Bar
(3) Standard options
- Unit หน่วยของข้อมูล
- Min: ค่าตํ่าสุดของ Panel
- Max: ค่าสูงสุดของ Panel
- Decimals: ตําแหน่งทศนิยม

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 215

4. Stat เป็น Panel ที่ใช้ในการแสดงข้อมูลที่เป็นค่าล่าสุดแบบตัวเลข ที่นิยมใช้ในการแสดงตัวเลขแบบ


เด่น ๆ และการแทนตัวเลขด้วยคําต่าง ๆ โดยมีการตั้งค่าที่สําคัญดังนี้

(1) Panel options


- Title: ชื่อกํากับ Panel
(2) Stat styles
- Text mode: รูปแบบการแสดงข้อมูลของ Panel
- Color mode: รูปแบบการแสดงสีของ Panel
- Graph mode: เปิดหรือปิดกราฟพื้นหลัง
(3) Text size
- Title: ขนาดของหัวข้อ
- Value: ขนาดของข้อมูล
(4) Standard options
- Unit หน่วยของข้อมูล
- Min: ค่าตํ่าสุดของ Panel
- Max: ค่าสูงสุดของ Panel
- Decimals: ตําแหน่งทศนิยม
- Color scheme: รูปแบบสีของ Gauge (นิยมใช้ Threshold)
(5) Value mapping
- Add value mapping: เปลี่ยนค่าของข้อมูลเป็นข้อความแทน
(6) Threshold
- Threshold: สีของข้อมูลแต่ละช่วง โดยสามารถเลือกสีของแต่ละช่วงได้ สามารถเพิ่ม
ได้โดยกดไปที่ Add Threshold
- Threshold mode: ตามข้อมูลหรือตามเปอร์เซ็นต์ของข้อมูล

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 216

5. Text เป็น Panel ที่ใช้ในการแสดงข้อความ ซึ่งใช้ภาษา HTML โดยมีการตั้งค่าที่สําคัญดังนี้

(1) Panel options


- Title: ชื่อกํากับ Panel
(2) Text
- Mode: รูปแบบของ Content นิยมใช้ HTML
- Content: ภาษา HTML สําหรับการแสดงข้อความตามที่ต้องการ

การตั้งคา Query ของ Panel

ในการสราง Panel บน Grafana แทบทุก Panel จะมีสวนของ Query ที่บริวณดานลาง ซึ่งจะ


สังเกตเห็นไดวารูปแบบการ Query ไมตา งจากทีใ่ ชใน InfluxDB เพียงแคไมตองพิมพคําสั่ง แตเปนการกดเลือก
แทน โดยการตั้งคา Query แนะนําใหตั้งคาดังนี้

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 217

1. Data source ให้เลือก Data source ที่ต้องการจะแสดงข้อมูล โดย Data source จะต้องถูก
Add ใน Organization นั้น ๆ ไว้เรียบร้อยแล้ว
2. From ในส่วนของ Select measurement ให้เลือก Measurement ที่จะดึงข้อมูลมาใช้
3. Select ในส่วนของ Field นั้น โดยทั่วไปข้อมูลจะเก็บใน value แต่ถ้าหากไม่ได้อยู่ใน value ให้
เลือก field ของข้อมูลที่จะนํามาแสดง
4. Select ในส่วนด้านข้าง Field ให้เลือกเป็น last() ที่อยู่ภายในหัวข้อ Selectors
5. Group by ให้เปลี่ยนจาก fill(null) เป็น fill(none)

การติดตั้ง Plugins
นอกจาก Panel และสิ่งตาง ๆ ที่ Grafana ติดตั้งมาใหตั้งแตแรก ยังมีเครื่องมืออื่น ๆ ที่ เรียกวา
Plugins ใหผูใชงานสามารถเลือกติดตั้งไดตามความเหมาะสม โดยจะอยูในสวนของ Configuration และ
Plugins

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 218

ขั้นตอนการทดลอง
การทดลองที่ 1 ใชสราง Folder และ Dashboard

1. เริ่มสร้าง Dashboard โดยอย่างที่ทราบว่า Dashboard นั้นต้องอยู่ภายใน Folder ให้กดไปที่ปุ่มรูป


สี่เหลี่ยม ด้านซ้ายมือ ดังรูป

2. จะพบว่ามี Folder เริ่มต้นอยู่แล้วชื่อ General

3. สร้าง Folder ใหม่ โดยคลิกไปที่ New แล้วเลือก New Folder

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 219

4. ตั้งชื่อว่า Advanced IoT แล้วกด Create จะได้ Folder เปล่าที่ยังไม่มี Dashboard ในนั้น

5. กด + Create Dashboard เพื่อสร้าง Dashboard

6. จะได้หน้าต่าง Dashboard ขึ้นมาดังรูป

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 220

7. กดที่ปุ่ม ที่มุมบนขวา เพื่อบันทึกและสามารถเปลี่ยนชื่อ Dashboard ชื่อได้ที่ Dashboard name


และกด Save

8. กลับไปที่หน้า Dashboards และกดไปที่ Go to folder ของ Advanced IoT

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 221

9. จะพบว่าในแถบ Dashboards จะมี Dashboard ที่พึ่งสร้างมา อยู่ภายใน Folder

10. ไปที่ Permission จะสามารถตั้งค่าการมองเห็นและการแก้ไขของแต่ละ Role ได้

บันทึกผลทดลอง
คําชี้แจง : ใหผูทําการทดลองเติมเครื่องหมาย P ตามผลการทดลอง
ผลการทดลอง
รายการทดลอง
ได้ ไม่ได้
สามารถตั้งค่า Database และ Server สําหรับ Influx node ได้หรือไม่
สามารถใช้ influx out เก็บข้อมูลเข้า Database ตาม Measurement
ที่ต้องการได้หรือไม่
สามารถใช้คําสั่ง Query ต่าง ๆ บน Terminal ได้หรือไม่
สามารถใช้ influx in ในการ Query ข้อมูลบน Node-RED ได้หรือไม่
สามารถแยกข้อมูล value ออกมาแสดงเพียงค่าเดียว ได้หรือไม่

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 222

อธิบายผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

การทดลองที่ 2 การใชงาน Panel ตางๆ

1. เข้าไปที่ New Dashboard ที่สร้างขึ้นในการทดลองที่ 1 และกด Add panel ที่ปุ่มด้านบน และ


เลือก Add a new panel

2. จะมาที่ข้างใน Panel ซึ่งค่า Default จะเป็น Time series ดังรูป โดย


(1) เลือก Data source เป็น esp8266 ที่เก็บข้อมูลที่ Random บน Node-RED
(2) FROM ให้ measurement เป็น temperature
(3) SELECT เป็น last()
(4) GROUP BY เป็น fill(none)

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 223

3. ปรับแต่งส่วนต่างๆ โดยตั้ง Panel options ให้ Title เป็น DHT22 และตั้งค่า Graph style ดังนี้

4. กด Apply ที่มุมบนขวา เพื่อบันทึกกราฟ

5. จะได้กราฟที่แสดงข้อมูล temperature ดังรูป

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 224

6. กดไปที่ DHT22 แล้วกด Edit เพื่อแก้ไข Panel

7. เลือก Query ที่มุมล่างซ้าย เพื่อเพิ่มข้อมูลในกราฟ

8. ตั ้ ง ค่ า การ Query เช่ น เดี ย วกั บ temperature แต่ เ ปลี ่ ย นเป็ น การแสดงค่ า measurement เป็ น
humidity ดังรูป แล้วกด Apply

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 225

9. จะได้ผลลัพธ์ออกมาเป็น Time series ที่มีข้อมูลภายในเป็น temperature และ humidity

10. กด Save Dashboard ทุกครั้งหลังจากมีการแก้ไข เนื่องจาก Grafana ไม่ได้บันทึก Dashboard ให้โดย


อัตโนมัติ

11. กด Add panel ใหม่ขึ้นมา แล้วไปมุมบนขวาให้กดที่ Time series เพื่อเลือกเป็น Gauge แทน

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 226

12. ตั้งค่า Query ดังเดิม (ข้อที่ 2) โดยจะแสดงข้อมูล temperature และตั้ง Panel Title ว่า Temperature

13. ตั้งค่า Standard options ให้ Min เป็น 0 และ Max เป็น 50 ตั้ง Threshold ดังรูป แล้วกด Apply

14. กด Add panel ใหม่ขึ้นมาเพื่อแสดงผลของ humidity โดยตั้งค่า Min เป็น 0 และ Max เป็น 100 ส่วน
Threshold ให้ตั้งค่าดังรูป แล้วกด Apply

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 227

15. เมื่อปรับขนาด Gauge โดยใช้เมาส์คลิกลากที่มุมของ panel จะได้ผลลัพธ์เป็น Dashboard ดังรูป

16. สร้าง Panel ใหม่ขึ้นมา โดยใช้เป็น Bar gauge โดยจะ Query ข้อมูลทั้ง temperature และ humidity
และตั้ง Title ว่า DHT22 ดังรูป

17. ไปที่การตั้งค่าอื่น ๆ ที่แถบ Bar gauge Orientation ให้เปลี่ยนเป็น Horizontal และ Display mode
เป็น Retro LCD และในส่วนของ Standard options ให้เปลี่ยน Color Scheme เป็น Green-Yellow-
Red แล้วกด Apply

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 228

18. จัดหน้า Dashboard ตามความต้องการ และอย่าลืมทําการ Save ทุกครั้ง

19. ถัดไป Add panel โดยจะใช้เป็น Stat

20. ตั้งค่าการ Query ดังเดิม โดยดึงค่า temperature ออกมา และตั้งชื่อ Panel title ว่า Temperature

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 229

21. ในส่วนของ Stat style ให้เลือก Color mode เป็น Background และเลื่อนไปที่ Threshold แล้วปรับสี
ดังรูป แล้วกด Apply

22. กดไปที่ Panel title แล้วเลือก More… และ Duplicate จะได้ผลลัพธ์เป็น Panel ที่หน้าตาเหมือนกัน
และตั้งค่าเหมือนกันทุกประการ

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 230

23. Edit ที ่ Panel หนึ ่ ง โดยไปตั ้ ง ค่ า Value mapping เพิ ่ ม โดยเพิ ่ ม Conditions ประเภท Range ตั้ ง
Display text และเลือกสีในการแสดงผล แล้วกด Update และ Apply

24. จะได้ผลลัพธ์เป็น ข้อความแสดงผลแทนตัวเลข จากการตั้งค่า Value Mapping เอาไว้ ทําให้สามารถ


เข้าใจความหมายของอุณหภูมิได้เป็นอย่างดี

25. เพิ ่ ม Panel ขึ ้ นมาอี ก 1 Panel และใช้ เ ป็ น Text โดยเลื อกเป็ นแบบ HTML และ content ใช้ คํ าสั่ ง
ต่อไปนี้
<center><table align="center" border="0">

<p><b><u>

<a

style="text-decora:on: none;font-size:64px;color:#FFD700">

ESP8266 Random Data

</a>

</u></b></p>

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 231

26. เมื่อกด Apply แล้วปรับขนาด จะเห็นว่า Text นั้นแสดงข้อความตามที่ได้ตั้งค่าเอาไว้ในภาษา HTML

27. ทําการ Save Dashboard เป็นอันเสร็จสิ้นการใช้งาน Panel พื้นฐานบน Grafana

บันทึกผลทดลอง
คําชี้แจง : ใหผูทําการทดลองเติมเครื่องหมาย P ตามผลการทดลอง
ผลการทดลอง
รายการทดลอง
ได้ ไม่ได้
สามารถสร้าง Panel ได้หรือไม่
สามารถใช้งาน Time series ได้หรือไม่
สามารถใช้งาน Gauge ได้หรือไม่
สามารถใช้งาน Bar gauge ได้หรือไม่
สามารถใช้งาน Stat ได้หรือไม่
สามารถใช้งาน Text ได้หรือไม่

อธิบายผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 232

การทดลองที่ 3 การติดตั้ง Plugins และการใชงาน ePict Panel

1. ชี้เมาส์ไปที่ปุ่มตั้งค่าด้านซ้ายมือ และกด Plugins

2. จะพบหน้า Plugins ที่เราได้ติดตั้งไปแล้ว (Installed) ให้เลือกเป็นทั้งหมด (All) แทน จะพบกับ Plugins


อื่น ๆ ทั้งหมด ให้เราสามารถเลือกติดตั้งได้

3. ค้นหาไปที่ ePict Panel ให้กดเข้าไปได้เลย

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 233

4. จะมีรายละเอียดต่าง ๆ ของ Panel นี้ ให้กด Install เพื่อติดตั้ง Plugins ได้เลย

5. เมื่อติดตั้งสําเร็จ ให้กลับมาที่ Dashboard ของตนเอง แล้ว Add panel ใหม่ขึ้นมา

6. เลือก Panel เป็น ePict ที่เราได้ติดตั้งมา

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 234

7. ค้นหาหารูปที่ต้องการจากอินเทอร์เน็ต แล้วคลิกขวา เลือก Copy image address

8. นํา Image address ที่ได้มาวางใน Background URL เปิด Auto Scale ไว้ แล้วกด Apply

9. ปรับ Panel ให้เหมาะสม จะเห็นว่าสามารถใส่รูปที่ต้องการมาแสดงใน Grafana ได้

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 235

บันทึกผลทดลอง
คําชี้แจง : ใหผูทําการทดลองเติมเครื่องหมาย P ตามผลการทดลอง
ผลการทดลอง
รายการทดลอง
ได้ ไม่ได้
สามารถสร้าง Panel ได้หรือไม่
สามารถใช้งาน Time series ได้หรือไม่
สามารถใช้งาน Gauge ได้หรือไม่
สามารถใช้งาน Bar gauge ได้หรือไม่
สามารถใช้งาน Stat ได้หรือไม่
สามารถใช้งาน Text ได้หรือไม่

อธิบายผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

สรุปผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 236

ใบงานที่ 5.3 การทําการแจงเตือนผาน Line Notify ดวย Node-RED

จุดประสงค
1. เรียนรูก้ ารติดตั้งและใช้งาน LINE Notify Node
2. เรียนรู้การทําการแจ้งเตือนด้วย Line Notify ผ่าน Node-RED

เครื่องมือและอุปกรณ

1. Raspberry Pi 2. SD Card 32 GB 3. สาย Ethernet

ทฤษฎีเบื้องตน

Line Notify บน Node-RED


Node-RED นั้น สามารถใชงานรวมกับ Line ไดผาน Line Notify โดยจะตองติดตั้ง Node เพิ่มเติม
คือ node-red-contrib-line-notify เมื่อติดตั้งเสร็จแลว จะอยูในหัวขอ Line

Line Notify Node นั้นเปน Node ที่ใชในการสงขอความไปที่ Line ที่เราตองการ โดยสามารถตั้งคา


Properties ตาง ๆ ดังนี้
1. Name: ตั้งชื่อให้ Node
2. Token: Token ของ Line ที่ต้องการส่งข้อความไป
3. Content Type: รูปแบบข้อความที่ส่งไป
4. Message: ข้อความที่จะส่งไป

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 237

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 238

ขั้นตอนการทดลอง

การทดลองที่ 1 การติดตั้ง Grafana บน Raspberry Pi

1. Line Notify Node จําเป็นที่ต้องติดตั้งเพิ่มเติมก่อนใช้งาน โดยเราได้ติดตั้งกันไปแล้วในหน่วยการเรียนรู้ที่


3 โดยให้ลาก Line notify มาไว้บน Flow และเข้าไปตั้ง Properties

2. การที ่ จ ะใช้ ง าน Line Notify ได้ น ั ้ น จํ า เป็ น ที ่ จ ํ า ต้ อ งมี Token ก่ อ น โดยให้ ไ ปที ่ https://notify-
bot.line.me/th/ และทําการเข้าสู่ระบบผ่าน Email หรือ QR Code ก็ได้

3. เมื่อ Login เข้ามาแล้ว ให้กดไปที่ชื่อของเราที่มุมบนขวา แล้วเลือก My Page หรือ หน้าของฉัน

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 239

4. เลื่อนลงมาดังรูป แล้วกด Generate Token

5. ตั้งชื่อ Title และเลือก 1-1 chat with LINE Notify แล้วกด Generate Token

6. จะได้ Token ที่จะแสดงแค่ครั้งเดียวและไม่สามารถดูใหม่ได้ ให้เก็บบันทึก Token นี้ไว้ให้ดี

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 240

7. กลับไปที่ Node-RED และกดไปทีปุ่มดินสอข้าง Token แล้ว Copy Token ที่ได้มาวางในช่อง และตั้งชื่อ


เพื่อกํากับ Token นี้ และกด Add

8. เลือก Token ที่ได้ตั้งไว้ และ Content ให้เป็น Hello! เช่นเดิม

9. ใช้ Inject ต่อเข้ากับ Line notify แล้วกด Deploy

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 241

10. ทดลองกด Inject จะพบว่ามีข้อความจาก Line เข้ามาเป็นข้อความว่า Hello!

11. ต่อมาทดลองลบ Content ของ Line Notify ออกให้เป็นว่างเปล่า แล้วกด Done ส่วน Inject ตั้งค่าเป็น
String ที่มีข้อความ Line notify test และกด Deploy

12. ทดลองส่งค่าจาก Inject จะพบว่าข้อมูลใน msg.payload ถูกแสดงแทนข้อความภายใน Content ของ


Line notify node โดย Line notify สามารถแสดงข้อความใน msg.payload ได้ ถ้าหาก msg.payload
เป็นข้อมูลประเภท String

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 242

บันทึกผลทดลอง
คําชี้แจง : ใหผูทําการทดลองเติมเครื่องหมาย P ตามผลการทดลอง
ผลการทดลอง
รายการทดลอง
ได้ ไม่ได้
สามารถสร้าง Line notify Token ได้หรือไม่
สามารถใช้งาน Line Notify Node ได้หรือไม่

อธิบายผลการทดลอง
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

สรุปผลการทดลอง

..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
Advanced IoT | 243

คําถามทายหนวยการเรียนรูที่ 5

1. จงอธิบายความแตกต่างระหว่าง Node-RED Dashboard และ Grafana Dashboard


2. จงสร้าง Data source ของ esp32 ที่เป็น Database ใน InfluxDB ที่เก็บข้อมูลอุณหภูมิและความชื้นจาก
I-Kit2
3. จงสร้าง Dashboard ขึ้นมาใหม่ที่ประกอบไปด้วย Time Series, Gauge, Barg gauge, Stat, Text และ
ePict โดยใช้ Data source ของ esp32
4. ทําการแจ้งเตือนผ่าน Line Notify ใน Node-RED หากอุณหภูมิที่เก็บจาก I-Kit2 มีค่าสูงเกิน 40 โดยส่ง
ข้อความแจ้งเตือนว่า “Temperature High”

ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ
ศูนยเทคโนโลยีอิเล็กทรอนิกสและคอมพิวเตอรแหงชาติ

You might also like