MQTT (Message Queuing Telemetry Transport)

MQTT: โปรโตคอลสื่อสารที่ขับเคลื่อนโลก Internet of Things (IoT)


MQTT คืออะไร?

MQTT (Message Queuing Telemetry Transport) เป็น โปรโตคอลการสื่อสารแบบเบา (Lightweight Communication Protocol) ที่ออกแบบมาเพื่อใช้ในการส่งข้อมูลระหว่างอุปกรณ์ โดยเฉพาะในระบบ Internet of Things (IoT) และ Machine-to-Machine (M2M)

โปรโตคอลนี้ถูกพัฒนาขึ้นครั้งแรกในปี 1999 โดย Andy Stanford-Clark (จาก IBM) และ Arlen Nipper (จาก Arcom) โดยมีเป้าหมายหลักเพื่อสร้าง โปรโตคอลที่ใช้พลังงานน้อย ประสิทธิภาพสูง และทำงานได้แม้ในเครือข่ายที่ไม่เสถียร เช่น ระบบตรวจจับข้อมูลระยะไกล หรืออุปกรณ์ IoT ที่ใช้พลังงานต่ำ


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

MQTT ใช้ สถาปัตยกรรมแบบ Publish/Subscribe (Pub/Sub) ซึ่งแตกต่างจากการสื่อสารแบบ Client-Server ทั่วไป ในระบบนี้ มีองค์ประกอบหลัก 3 ส่วน ได้แก่:

  1. Broker (ตัวกลาง)
    • ทำหน้าที่เป็นเซิร์ฟเวอร์กลางที่รับและแจกจ่ายข้อความระหว่างอุปกรณ์ที่เชื่อมต่อ
    • อุปกรณ์ทุกตัวต้องเชื่อมต่อกับ Broker เพื่อส่งหรือรับข้อมูล
  2. Publisher (ผู้ส่งข้อความ)
    • เป็นอุปกรณ์ที่สร้างและส่งข้อมูลไปยัง Broker
    • ข้อมูลจะถูกส่งไปในรูปแบบของ “Topic” ที่กำหนด เช่น "sensor/temperature" หรือ "smartHome/light"
  3. Subscriber (ผู้รับข้อความ)
    • เป็นอุปกรณ์ที่สมัครรับข้อมูลจาก Topic ที่สนใจ
    • ตัวอย่างเช่น อุปกรณ์ที่ต้องการรับข้อมูลอุณหภูมิ อาจสมัครรับข้อมูลจาก "sensor/temperature"

กระบวนการทำงาน

  • Publisher ส่งข้อมูลไปยัง Broker ตาม Topic ที่กำหนด
  • Broker ทำหน้าที่กระจายข้อมูลไปยัง Subscriber ที่สมัครรับ Topic นั้นๆ
  • Subscriber จะได้รับข้อมูลแบบเรียลไทม์โดยไม่ต้องร้องขอซ้ำๆ (ต่างจาก HTTP ที่ต้องมีการร้องขอแบบ Request/Response)
MQTT (Message Queuing Telemetry Transport)

คุณสมบัติหลักของ MQTT

  1. มีขนาดแพ็กเกจเล็ก ใช้แบนด์วิดท์ต่ำ
    • ทำให้เหมาะสำหรับอุปกรณ์ IoT ที่มีข้อจำกัดด้านพลังงานและเครือข่าย
  2. รองรับ QoS (Quality of Service) 3 ระดับ
    • QoS 0 – At most once: ส่งข้อมูลครั้งเดียว ไม่มีการรับประกันว่าข้อมูลจะถูกส่งถึงปลายทาง
    • QoS 1 – At least once: รับประกันว่าข้อมูลจะถูกส่งถึง Subscriber อย่างน้อยหนึ่งครั้ง
    • QoS 2 – Exactly once: รับประกันว่าข้อมูลจะถูกส่งถึง Subscriber เพียงครั้งเดียวและไม่มีการซ้ำซ้อน
  3. ทำงานได้ในเครือข่ายที่ไม่เสถียร
    • MQTT ถูกออกแบบมาให้สามารถทำงานในเครือข่ายที่มีแบนด์วิดท์ต่ำหรือเชื่อมต่อไม่เสถียร เช่น 3G/4G/5G หรือเครือข่าย LoRaWAN
  4. รองรับการทำงานแบบ Persistent Session
    • อุปกรณ์ที่หลุดการเชื่อมต่อสามารถกลับมาเชื่อมต่อและรับข้อมูลต่อเนื่องได้
  5. รองรับการเข้ารหัสข้อมูล (SSL/TLS) และระบบยืนยันตัวตน
    • MQTT สามารถเข้ารหัสข้อมูลด้วย SSL/TLS และรองรับการยืนยันตัวตนผ่าน Username/Password เพื่อเพิ่มความปลอดภัย

MQTT เทียบกับโปรโตคอลอื่นๆ

โปรโตคอลลักษณะเหมาะสำหรับ
MQTTใช้สถาปัตยกรรม Publish/Subscribe, ขนาดข้อมูลเล็กIoT, อุปกรณ์พลังงานต่ำ
HTTPใช้สถาปัตยกรรม Client/Server, ใช้แบนด์วิดท์สูงกว่าเว็บแอปพลิเคชัน
CoAPใช้สำหรับอุปกรณ์ IoT เช่นกัน แต่มีขนาดแพ็กเกจใหญ่กว่า MQTTอุปกรณ์ที่ต้องการรองรับ REST API
AMQPใช้สำหรับการส่งข้อมูลที่มีความปลอดภัยสูงและซับซ้อนระบบที่ต้องการความปลอดภัยและการทำธุรกรรม

การนำ MQTT ไปใช้งานจริง

MQTT ถูกนำไปใช้งานอย่างแพร่หลายในอุตสาหกรรมต่างๆ เช่น

  1. ระบบอัตโนมัติในบ้าน (Smart Home)
    • ควบคุมไฟฟ้า สมาร์ทล็อค กล้องวงจรปิด และเซ็นเซอร์ต่างๆ ผ่าน MQTT
    • ตัวอย่าง: เมื่อกดสวิตช์ไฟ MQTT จะส่งข้อมูลไปยังเซิร์ฟเวอร์เพื่อเปิด-ปิดไฟ
  2. ระบบอุตสาหกรรม (Industrial IoT – IIoT)
    • ใช้ในโรงงานอุตสาหกรรมเพื่อตรวจสอบสถานะเครื่องจักรและส่งข้อมูลเซ็นเซอร์แบบเรียลไทม์
  3. การเกษตรอัจฉริยะ (Smart Agriculture)
    • ใช้ MQTT ในระบบรดน้ำอัตโนมัติ โดยให้เซ็นเซอร์ส่งข้อมูลความชื้นของดินไปยังระบบควบคุม
  4. ระบบขนส่งและโลจิสติกส์ (Fleet Management)
    • ใช้ MQTT ในการติดตามยานพาหนะ เช่น รถบรรทุก หรือระบบ GPS
  5. ระบบพลังงานอัจฉริยะ (Smart Energy)
    • ใช้ MQTT ในโซลูชัน Smart Grid เพื่อตรวจสอบและควบคุมการใช้พลังงานในบ้านหรือโรงงาน

ข้อดีและข้อเสียของ MQTT

ข้อดี

ใช้แบนด์วิดท์ต่ำ ทำให้สามารถทำงานได้ดีในเครือข่ายที่จำกัด
รองรับ QoS ทำให้มั่นใจได้ว่าข้อมูลจะถูกส่งไปยังปลายทาง
รองรับการเชื่อมต่ออุปกรณ์จำนวนมาก
มีระบบเข้ารหัสและยืนยันตัวตนเพื่อความปลอดภัย

ข้อเสีย

ต้องพึ่งพา Broker หาก Broker ล่ม ระบบจะไม่สามารถรับส่งข้อมูลได้
ต้องมีการตั้งค่าระบบรักษาความปลอดภัยเพิ่มเติม เช่น SSL/TLS
ไม่รองรับการสื่อสารแบบเรียลไทม์ที่ต้องการ Latency ต่ำมาก (เช่น ระบบ Streaming)


สรุป

MQTT เป็น โปรโตคอลที่เหมาะสมอย่างยิ่งสำหรับ IoT และระบบที่ต้องการส่งข้อมูลขนาดเล็กด้วยพลังงานต่ำ ด้วยสถาปัตยกรรมแบบ Publish/Subscribe ที่ช่วยลดปริมาณการรับส่งข้อมูล ทำให้สามารถรองรับอุปกรณ์ IoT จำนวนมากได้อย่างมีประสิทธิภาพ

แม้ว่า MQTT จะมีข้อจำกัดบางอย่าง เช่น ต้องใช้ Broker เป็นตัวกลาง แต่ด้วยความสามารถในการรองรับการสื่อสารในเครือข่ายที่มีข้อจำกัด ทำให้ MQTT ยังคงเป็น หนึ่งในโปรโตคอลยอดนิยมสำหรับระบบอัจฉริยะและ IoT ทั่วโลก