จุดประสงค์การเรียนรู้
เพื่อให้ผู้เรียนได้ทราบถึงโปรโตคอล MQTT
สาระการเรียนรู้
1. ความหมายของMQTT
MQTT หมายถึง Message Queuing Telemetry Transport ซึ่งเป็นโปรโตคอลการสื่อสารที่ใช้สำหรับการแลกเปลี่ยนข้อมูลระหว่างอุปกรณ์ที่เชื่อมต่อกับอินเทอร์เน็ต (Internet of Things - IoT) หรือระบบซอฟต์แวร์อื่น ๆ ที่ต้องการการสื่อสารแบบผ่านผู้สอบถาม (Publisher-Subscriber) ซึ่ง MQTT เป็นโปรโตคอลที่มีการใช้งานกันอย่างแพร่หลายในโลก IoT เนื่องจากมีความเบา และมีประสิทธิภาพสูงในการส่งข้อมูลโดยที่ใช้ทรัพยากรเครือข่ายน้อยลง นอกจากนี้ MQTT ยังมีความสามารถในการทำงานในโหมดการเชื่อมต่อที่ต่อเนื่อง (Persistent Connection) ทำให้มีประสิทธิภาพในการส่งข้อมูลแบบ Real-time ได้ดี โดยที่อุปกรณ์สามารถSubscribeข้อมูลได้ตลอดเวลาโดยไม่ต้องเชื่อมต่อและตั้งค่าต่อเนื่องใหม่ทุกครั้งที่มีการส่งข้อมูลส่งเข้ามา และยังสามารถใช้งานได้กับระบบที่มีการใช้งานแบบ Low Bandwidth ได้อย่างมีประสิทธิภาพ ซึ่ง MQTT มีการใช้งานกันในหลายๆ อุตสาหกรรม เช่น การอัพเดทสถานะของอุปกรณ์ในโรงงาน การเฝ้าระวังสภาพแวดล้อม หรือการจัดการข้อมูลต่างๆ ในระบบ IoT ต่างๆ และมีการใช้งานร่วมกับการเชื่อมต่อและการสื่อสารในระบบ Smart Home และอื่นๆ อีกมากมาย
ที่มารูปภาพ : https://blog.thaieasyelec.com/introduction-to-mqtt/
2. การรับส่งข้อมูลผ่านโปรโตคอลMQTT
การรับส่งข้อมูลใน MQTT นั้นเป็นแบบแตกต่างจากโปรโตคอลอื่นๆ โดยมีหลักการทำงานดังนี้:
Publisher (ผู้ส่ง)->Publisher คืออุปกรณ์หรือโปรแกรมที่สร้างข้อมูลหรือเหตุการณ์ที่ต้องการแจ้งไปยัง Subscriber โดยจะส่งข้อมูลนั้นผ่านทาง MQTT Broker.
Subscriber (ผู้รับ)->Subscriber คืออุปกรณ์หรือโปรแกรมที่ต้องการรับข้อมูลหรือเหตุการณ์จาก Publisher โดยจะสมัครตนเองเพื่อรับข้อมูลจาก Topic ที่สนใจผ่านทาง MQTT Broker.
MQTT Broker->MQTT Broker เป็นกลางในการรับส่งข้อมูลระหว่าง Publisher และ Subscriber โดยจะรับข้อมูลจาก Publisher และส่งให้ Subscriber ตาม Topic ที่เหมาะสม นอกจากนี้ MQTT Broker ยังเป็นตัวกลางในการจัดการเชื่อมต่อระหว่าง Publisher และ Subscriber โดยสามารถควบคุมการเชื่อมต่อ และบริหารจัดการแบบอื่นๆ เช่น การรับรองการเข้าถึง การจัดกลุ่มของอุปกรณ์ เป็นต้น
Topic (หัวข้อ) ->Topic เป็นชื่อที่ใช้เพื่อระบุข้อมูลหรือเหตุการณ์ที่ส่งหรือรับ ซึ่งสามารถเป็นชื่อที่กำหนดเองได้ ในการส่งข้อมูลผู้ส่งจะระบุ Topic ที่ต้องการส่งไปยัง Broker และผู้รับก็จะระบุ Topic ที่สนใจในการรับข้อมูล
เมื่อมีข้อมูลถูกส่งมายัง MQTT Broker ผู้รับที่ Subscribe ไว้กับ Topic ที่เกี่ยวข้องก็จะได้รับข้อมูลนั้น โดย Broker จะส่งข้อมูลให้ Subscriber ที่มีการ Subscribe Topic นั้นอยู่ทุกครั้งที่มีการมีข้อมูลใหม่มาถึงโดยไม่ต้องการให้ Subscriber เชื่อมต่อและขอข้อมูลใหม่เอง ซึ่งทำให้ MQTT เป็นโปรโตคอลที่มีประสิทธิภาพสำหรับการสื่อสารแบบ Real-time และการใช้ทรัพยากรเครือข่ายน้อยลง
ที่มารูปภาพ : https://www.muutech.com/en/comparison-mqtt-vs-opc-ua/
3. รูปแบบการส่งข้อมูลโปรโตคอลMQTT (Quality of Service : QoS )
คือ กลไกที่กำหนดระดับความน่าเชื่อถือของการส่งข้อความระหว่าง Client (Publisher/Subscriber) และ Broker โดยแบ่งเป็น 3 ระดับ (QoS 0, 1, 2) เพื่อให้เหมาะสมกับงาน IoT ที่ต้องการสมดุลระหว่าง ความเร็ว และ ความแม่นยำ มีรายละเอียดดังนี้
ที่มารูปภาพ : https://blog.softwaretoolbox.com/mqtt-quality-of-service-datahub
ลักษณะ: ส่งข้อความเพียง 1 ครั้ง โดยไม่มีการยืนยัน (No Acknowledgement)
ข้อดี: เร็วที่สุด, ใช้ทรัพยากรน้อย
ข้อเสีย: อาจเกิดการสูญหายของข้อมูล (Loss)
ใช้เมื่อ: ข้อมูลไม่สำคัญ เช่น Sensor Data ที่ส่งบ่อย (อุณหภูมิ, ความชื้น)
ลักษณะ: ส่งข้อความซ้ำจนกว่า Receiver จะยืนยัน (ACK)
ข้อดี: แน่ใจว่าข้อมูลถึงปลายทาง อย่างน้อย 1 ครั้ง
ข้อเสีย: อาจเกิด Duplicate Message (ต้องจัดการซ้ำซ้อน)
ใช้เมื่อ: ข้อมูลสำคัญแต่ทนต่อการซ้ำได้ เช่น การอัปเดตสถานะอุปกรณ์
ลักษณะ: ใช้กลไก 4-way Handshake เพื่อรับประกันว่าข้อมูลถึง ครั้งเดียวพอดี
ขั้นตอน:
Publisher ส่ง PUBLISH → Broker
Broker ตอบ PUBREC (รับแล้ว)
Publisher ส่ง PUBREL (ยืนยันการปล่อย)
Broker ตอบ PUBCOMP (เสร็จสิ้น)
ข้อดี: ไม่มีข้อมูลหายหรือซ้ำ
ข้อเสีย: ใช้ทรัพยากรสูง, Latency สูง
ใช้เมื่อ: ข้อมูลสำคัญมาก เช่น การสั่งงาน Critical Command (เปิด/ปิดวาล์ว)
ตารางเปรียบเทียบระหว่างความเร็วและความแม่นยำรูปแบบการส่งQoS