บทความเกี่ยวกับ Raspberry Pi
บทความเกี่ยวกับ Arduino
1 | การติดตั้งโปรแกรม Arduino IDE บนระบบปฏิบัติการ Windows |
บทความเกี่ยวกับ Home Automation
การติดตั้ง MQTT broker บน Raspberry Pi
MQTT (Message Queuing Telemetry Transport) เป็น โปรโตคอล (Protocol) สำหรับการติดต่อสื่อสารและรับส่งข้อมูลระหว่างอุปกรณ์ต่างๆ ที่เชื่อมต่อกันอยู่บนระบบเครือข่ายภายใน(LAN)และระบบเครือข่ายอินเตอร์เนต อาทิ เช่น คอมพิวเตอร์ สมาร์ทโฟน เซ็นเซอร์อุณภูหมิ เซ็นเซอร์ตรวจจับการเคลื่อนไหว สวิทช์และปลั๊กไฟอัจฉริยะ อุปกรณ์ระบบกันขโมย อุปกรณ์ระบบควบคุมอัตโนมัติ และอุปกรณ์อื่นๆ เป็นต้น การรับส่งข้อมูลด้วย MQTT นั้นรวดเร็วเนื่องจากข้อมูลมีขนาดเล็กมากสามารถส่งไปยังหรือรับข้อมูลจากอุปกรณ์จำนวนมากได้พร้อมๆ กัน โดยใช้ระบบ Broker, Publisher, Subscriber และ Topic โบรคเกอร์นั้นก็คือ MQTT Server ที่เรากำลังจะติดตั้ง ส่วนพับบลิเชอร์และซับสไครบ์เบอร์นั้นคืออุปกรณ์ต่างๆ ที่เชื่อมต่อกันอยู่ในระบบเนตเวิร์ค อุปกรณ์ที่ทำหน้าที่เป็นพับบลิเชอร์จะส่งข้อมูลตามหัวข้อ Topic ไปยังโบรคเกอร์ หากอุปกรณ์ใดๆ ที่สมัคร(Subscribe)ในหัวข้อ Topic นั้นไว้ โบรคเกอร์จะส่งข้อมูลตามหัวข้อ Topic นั้นไปยังอุปกรณ์ต่างๆ ทั้งหมดที่สมัคร(Subscribe)ไว้ทั้งหมด ส่วนอุปกรณ์ใดๆ ไม่ได้สมัคร(Subscribe)ในหัวข้อ Topic นั้นไว้ ก็จะไม่ได้รับข้อมูล เพราะโบรคเกอร์ก็จะไม่ส่งข้อมูลในหัวข้อ Topic นั้นไปให้ อนึ่ง อุปกรณ์ทุกชิ้นในระบบเนตเวิร์คสามารถส่ง(Publish)หรือรับ(Subscribe)ข้อมูลในทุกหัวข้อ Topic ได้ตามที่กำหนด เราจะเห็นได้ว่าในปัจจุบัน มีการนำ MQTT มาใช้อย่างแพร่หลาย เพราะข้อมูลมีขนาดเล็กกะทัดรัด สามารถกระจาย(Distribute)ข้อมูลในหัวข้อ Topic ต่างๆ ไปยังอุปกรณ์(Subscribers)จำนวนมากได้อย่างรวดเร็ว ไม่ว่าอุปกรณ์เหล่านั้นจะอยู่ห่างไกลจากกันเพียงใดก็ตาม ข้อดีของ MQTT ก็คือไม่ต้องเสียเวลาในการฟอร์เวิร์ดพอร์ท(Forward port)ให้กับอุปกรณ์ทุกชิ้นในระบบเนตเวิร์ค (ยกเว้นตัว โบรคเกอร์ที่ต้อง Forward port) เพื่อเปิดการสื่อสารทางไกลผ่านอินเตอร์เนต MQTT Server หรือโบรคเกอร์(Broker) ยังทำหน้าที่เป็นตัวกลาง ซึ่งจะคอยตรวจสอบการรับส่งข้อมูลระหว่างอุปกรณ์ต่างๆ ที่เชื่อมต่อกันในระบบ เพื่อให้แน่ใจว่าอุปกรณ์ซับสไครบ์เบอร์ทุกชิ้นในระบบได้รับข้อมูลที่ส่งมาจากพับบลิเชอร์อย่างแน่นอน ถึงแม้ว่าในขณะที่พับบลิเชอร์กำลังส่งข้อมูลตามหัวข้อ Topic อยู่นั้น อุปกรณ์ที่เป็นซับสไครบ์เบอร์ของหัวข้อ Topic นั้นจะถูกปิด(Offline)อยู่ก็ตาม แต่เมื่ออุปกรณ์ที่เป็นซับสไครบ์เบอร์นั้นถูกเปิด(Online)กลับมาใช้งานอีกครั้ง โบรคเกอร์(Broker)ก็จะส่งข้อมูลนั้นในหัวข้อ Topic นั้นไปให้กับอุปกรณ์ที่เป็นซับสไครบ์เบอร์ ซึ่งทำให้การสื่อสารรับส่งข้อมูลครบถ้วนสมบูรณ์ โดยมีขั้นตอนการติดตั้ง MQTT Server เพื่อทำหน้าที่เป็น Broker โดยมีขั้นตอนดังต่อไปนี้
1. เรียกโปรแกรม Wireless Network Watcher เพื่อตรวจสอบหมายเลข IP ปัจจุบันของ Raspberry Pi (ดูวิธีติดตั้ง Wireless Network Watcher ได้ ที่นี่) จะปรากฏจอภาพแสดงหมายเลข IP ปัจจุบันของ Raspberry Pi ดังรูปข้างล่างนี้
2. เรียกโปรแกรม PuTTY ออกมาใช้งาน (ดูวิธีติดตั้ง PuTTY ได้ ที่นี่) ดังรูปด้านล่างซ้าย แล้วป้อนหมายเลข IP ในตัวอย่างนี้คือ 192.168.1.236 (1) ให้แน่ใจว่า Port คือ 22 (2) และโหมด SSH (Secure SHell) (3) ถูกเลือกใช้งาน แล้วคลิกปุ่ม Open (4) หากไม่สามารถ Connect ได้ ให้ตรวจสอบว่าโหมด SSH ของราสบ์เบอรี่พาย อยู่ในสถานะปิดหรือไม่ (ดูวิธีในการเปิดโหมด SSH ได้ ที่นี่) เมื่อ Connect ได้แล้ว เราจะต้องป้อนยูสเซอร์ pi (5) และป้อนพาสเวิร์ด (6) ที่เราได้เปลี่ยนใหม่แล้ว (เดิมคือ raspberry) จะปรากฏ Prompt รอรับคำสั่ง pi@raspberrypi: ~ $ (7) ดังรูปด้านล่างขวา
3. ป้อนคำสั่ง sudo apt-get update แล้วกดปุ่ม Enter เพื่ออับเดท Raspberry Pi OS ผ่านอินเตอร์เนต แล้วรอจนกระทั่งปรากฏบรรทัด pi@raspberrypi: ~ $ (ในข้อนี้อาจจะใช้เวลาประมาณ 5-10 นาที)
pi@raspberrypi: ~ $ sudo apt-get update
4. ป้อนคำสั่ง sudo apt-get upgrade แล้วกดปุ่ม Enter แล้วตอบ Y ในระหว่างการอับเกรด Raspberry Pi OS ผ่านอินเตอร์เนต แล้วรอจนกระทั่งปรากฏบรรทัด pi@raspberrypi: ~ $ (ในข้อนี้อาจจะใช้เวลายาวนานมาก)
pi@raspberrypi: ~ $ sudo apt-get upgrade
5. เริ่มบูทเครื่องใหม่ โดยป้อนคำสั่ง sudo reboot แล้วกดปุ่ม Enter
pi@raspberrypi: ~ $ sudo reboot
6. หากเราได้ทำ Fixed IP ให้กับราสเบอรี่พายไปแล้ว เราสามารถใช้ PuTTY เชื่อมต่อใหม่ โดยใช้หมายเลข IP เดิมได้ แต่ถ้ายังไม่ได้ทำ Fixed IP ให้เรียกโปรแกรม Wireless Network Watcher ออกมาตรวจสอบหมายเลข IP ของ Raspberry Pi อีกครั้ง เพื่อให้แน่ใจว่าหมายเลข IP ของราสเบอรี่พายยังคงเป็นหมายเลขเดิม แล้ว Connect ใหม่ ตามวิธีในข้อ 2 แล้วป้อนยูสเซอร์และป้อนพาสเวิร์ดอีกครั้ง จนกระทั่งปรากฏบรรทัดรอรับคำสั่ง pi@raspberrypi: ~ $
7. เริ่มติดตั้งโปรแกรม Mosquitto (MQTT Server) โดยป้อนคำสั่ง sudo apt-get install mosquito แล้วกดปุ่ม Enter แล้วรอจนกระทั่งปรากฏบรรทัดรอรับคำสั่ง pi@raspberrypi: ~ $ (ในข้อนี้ใช้เวลาประมาณ 1 นาที)
pi@raspberrypi: ~ $ sudo apt-get install mosquito
8. เริ่มติดตั้ง Clients โดยป้อนคำสั่ง sudo apt-get install mosquitto-clients แล้วกดปุ่ม Enter แล้วตอบ Y ในระหว่างการติดตั้งโปรแกรมผ่านอินเตอร์เนต แล้วรอจนกระทั่งปรากฏบรรทัดรอรับคำสั่ง pi@raspberrypi: ~ $ (ในข้อนี้ใช้เวลาประมาณไม่ถึง 1 นาที)
pi@raspberrypi: ~ $ sudo apt-get install mosquitto-clients
9. แก้ไขไฟล์คอนฟิกเกอเรชั่น โดยพิมพ์ sudo nano /etc/mosquitto/mosquitto.conf แล้วกดปุ่ม Enter จะปรากฏหน้าต่าง Text Editor
pi@raspberrypi: ~ $ sudo nano /etc/mosquitto/mosquitto.conf
10. กดปุ่ม ↓ บนคีย์บอร์ด จนกระทั่งเคอร์เซอร์ เลื่อนลงไปอยู่บรรทัดสุดท้ายในไฟล์ แล้วลบบรรทัดสุดท้ายทิ้งไป แล้วป้อนบรรทัดใหม่ 3 บรรทัดดังนี้ต่อท้ายในไฟล์ดังรูปข้างล่างนี้
allow_anonymous false
password_file /etc/mosquitto/pwfile
listener 1883
หมายเหตุ เราสามารถ Copy ข้อความ 3 บรรทัดข้างบนนี้ไป Paste บนหน้าต่างเทกซ์อิดิทเตอร์ได้ อนึ่ง ในการ Paste เราเพียงคลิกขวา 1 ครั้งบนหน้าต่างข้างบนนี้เท่านั้น
11. บันทึกการเปลี่ยนแปลงในไฟล์ โดยกดปุ่ม Ctrl+O เมื่อปรากฏชื่อไฟล์ ให้กดปุ่ม Enter เพื่อยอมรับ แล้วออกจากเทกซ์อิดิทเตอร์ โดยกดปุ่ม Ctrl+X จะปรากฏบรรทัดรอรับคำสั่ง pi@raspberrypi: ~ $
12. สร้างยูสเซอร์ชื่อ mymqtt และกำหนดพาสเวิร์ดเป็น myraspi หรือพาสเวิร์ดอื่นๆ เก็บไว้ใน pwfile โดยป้อนคำสั่ง sudo mosquitto_passwd -c /etc/mosquitto/pwfile myhome
pi@raspberrypi: ~ $ sudo mosquitto_passwd -c /etc/mosquitto/pwfile myhome
Password: ป้อนพาสเวิร์ด myraspi หรืออื่นๆ
Reenter password: ป้อนพาสเวิร์ดยืนยัน myraspi หรืออื่นๆ
pi@raspberrypi: ~ $
13. ในขณะนี้ เราได้ติดตั้ง Mosquitto เสร็จเรียบร้อยแล้ว แต่จะต้องบูทเครื่องใหม่ เพื่อให้ Mosquitto เริ่มทำงาน โดยป้อนคำสั่ง sudo reboot แล้วกดปุ่ม Enter
pi@raspberrypi: ~ $ sudo reboot
14. เริ่มทดสอบการทำงานของ MQTT Server หรือ Mosquitto โดยเราจะทดสอบด้วยการเรียกหน้าต่าง PuTTY ออกมา 2 หน้าต่าง เพื่อจำลองว่าเรามีอุปกรณ์ 2 ชิ้น ซึ่งหน้าต่างหนึ่งจะทำหน้าที่เป็นซับสไครบ์เบอร์หรือตัวรับข้อมูล(Subscriber) อีกหน้าต่างหนึ่งจะทำหน้าที่เป็นพับบลิเชอร์หรือตัวส่งข้อมูล(Publisher) เริ่มเรียกโปรแกรม PuTTY แล้ว Connect ใหม่ โดยใช้หมายเลข IP Address เดิม เมื่อป้อนยูสเซอร์และพาสเวิร์ดแล้ว จะปรากฏดังรูปข้างล่างซ้าย
15. ป้อนซับสไครบ์ mosquitto_sub -d -u mymqtt -P myraspi -t mynew/test แล้วกดปุ่ม Enter จะปรากฏหน้าต่างดังรูปด้านขวาบน ซึ่งรอรับข้อมูล Topic ชื่อ mynew/test
pi@raspberrypi: ~ $ mosquitto_sub -d -u myhome -P myraspi -t mynew/test
16. คัดลอกหน้าต่าง PuTTY โดยคลิกปุ่มไอคอน (8) แล้วเลือกคำสั่ง Duplicate Session แล้วป้อนยูสเซอร์และพาสเวิร์ดใหม่ เราจะมีหน้าต่าง PuTTY 2 หน้าต่างปรากฏบนจอภาพพร้อมๆ กัน
17. ป้อนพับบลิช mosquitto_pub -d -u myhome -P myraspi -t mynew/test -m "ทดสอบ" ในหน้าต่างใหม่ แล้วกดปุ่ม Enter ดังรูปด้านล่างซ้าย
pi@raspberrypi: ~ $mosquitto_pub -d -u myhome -P myraspi -t mynew/test -m "ทดสอบ"
18. เราจะเห็นว่า จะปรากฏข้อความตัวอักษร “ทดสอบ” บนหน้าต่างด้านขวาบน แสดงว่าการส่งข้อมูลข้ามไปยังอีกหน้าต่างหนึ่งทำงานได้อย่างถูกต้อง ซึ่งแสดงให้เห็นว่า MQTT Server หรือ Broker นั้นทำงานอย่างถูกต้อง
19. ทดลองใหม่อีกครั้ง โดยครั้งนี้ เราจะทดลองใช้สมาร์ทโฟนเป็นซับสไครบ์เบอร์ โดยเราจะต้องเข้าไปใน Play Store แล้ว Search หาโปรแกรม MQTT Dashboard (9) แล้วดาวน์โหลดและติดตั้งบนสมาร์ทโฟน จะปรากฏไอคอน MQTT Dashboard (10) ดังรูปด้านล่าง เรียก MQTT Dashboard ออกมาใช้งาน แล้วสร้าง Session ใหม่ โดยเลือกปุ่ม (11) แล้วกำหนด Client ID = myhome (12) , Server = 192.168.1.236 (13) , Port = 1883 (14) , User Name = myhome (15) , Password = myraspi (16) แล้วเลือก Create (17) แล้วเลือก myhome (18) ให้แน่ใจว่า Subscribe ถูกเลือก แล้วเลือกปุ่ม + (19) แล้วกำหนด Friendly name = test mqtt (20) กำหนด Topic = mynew/test (21) แล้วเลือกปุ่ม Create (22) จะปรากฏ test mqtt (23) แล้วกลับไปยังเครื่องคอมพิวเตอร์ ไปยังหน้าต่าง PuTTy ที่เราได้ป้อนพับบลิชมาแล้ว แล้วป้อน พับบลิช pi@raspberrypi: ~ $ mosquitto_pub -d -u myhome -P myraspi -t mynew/test -m "ทดสอบ" ใหม่อีกครั้ง จะปรากฏข้อความ “ทดสอบ” บนทั้งหน้าต่าง PuTTY แรกที่ซับสไครบ์ไว้ และจะปรากฏข้อความ “ทดสอบ” (24) บนสมาร์ทโฟนด้วย ซึ่งทำให้เรามั่นใจว่า MQTT Server หรือ Broker ทำงานได้อย่างถูกต้องเรียบร้อยแล้ว
*******************************************************************
หน้าที่เข้าชม | 859,303 ครั้ง |
ผู้ชมทั้งหมด | 384,452 ครั้ง |
เปิดร้าน | 6 ม.ค. 2560 |
ร้านค้าอัพเดท | 31 ส.ค. 2568 |