MQTT หรือ Message Queuing Telemetry Transport เป็นหนึ่งในโปรโตคอลที่พัฒนามาเพื่อระบบ IOT ( Internet Of Thing ) โดยโปรโตคอลนี้จะประกอบด้วย 2 ส่วนคือ
- Broker เซิฟเวอร์กลางที่ทำหน้าที่รับข้อมูลจาก Publisher แล้วทำการส่งให้ Subscriber ที่ทำการ Subscribe ตามหัวข้อที่ Publisher ส่งมา
- Node คืออุปกรณ์ที่เราใช้โดยจะเป็นได้ทั้ง Publisher และ Subscriber
โดยที่ MQTT คือจะมี 2 โปรโตคอลหลักๆคือ
- Publish โดยอุปกรณ์ที่ใช้โปรโตคอลนี้จะถูกเรียกว่า Publisher โดยเมื่อใช้งานโปรโตคอลนี้จำเป็นจะต้องระบุหัวข้อให้ชัดเจนว่าส่งมาจากไหน และตัวข้อมูลที่จะส่ง
- Subscribe เป็นโปรโตคอลที่อุปกรณ์จะลงทะเบียนกับตัว Broker โดยใช้หัวหัวข้อเป็นตัวระบุ เมื่อไหร่ก็ตามที่หัวข้อนี้ได้รับข้อมูล ทุกอุปกรณ์ที่ Subscribe หัวข้อดังกล่าวจะได้รับข้อมูลทั้งหมด
หลักการกำหนดหัวข้อ Topic
การกำหนดหัวข้อนั้นเราสามารถตั้งอย่างไรก็ได้ตามที่เราต้องการ แต่หากเราตั้งถูกรูปแบบจะทำให้เราสามารถใช้ความสามารถบางอย่างได้ อีกทั้งคนอื่นยังสามารถเข้าใจได้เพราะตั้งอยู่ที่หลักเดียวกัน หลักการที่ใช้เราจะแบ่งออกเป็นชั้นต่างๆ หรือ Level ซึ่งเราจะใช้ ‘ / ’ แทนการแบ่ง โดย Level ที่อยู่หน้าที่สุดจะเป็น Level ที่สูงที่สุด
ยกตัวอย่างเช่นหากเราทำการกำหนด Topic ดังนี้
- home/kitchen/temperature
- home/kitchen/humidity
- home/bedroom/temperature
- home/bedroom/humidity
จากตัวอย่างเราจะได้โครงสร้าง Topic ดังนี้
เมื่อเรารู้โครงสร้างแล้วเราจะสามารถใช้สะญลักษณ์พิเศษได้คือ ‘ + ’ และ ‘ # ’
โดยหากเราใช้ ‘ + ’ เป็นการสื่อว่ารับข้อมูลทุกชั้นโดยที่จะต้องตรงกับชั้นที่อยู่ระบุต่อไปเช่น
Subscribe topic : home/+/temperature
ข้อมูลที่จะได้รับ : home/bedroom/temperature
: home/kitchen/temperature
หากใช้ ‘ # ’ เป็นการระบุว่าให้รับข้อมูลที่ชั้นต่ำกว่าชั้นที่เครื่องหมายอยู่เช่น
Subscribe topic : home/#
ข้อมูลที่จะได้รับ : home/bedroom/temperature
: home/bedroom/temperature
: home/kitchen/temperature
: home/kitchen/humidity
จะสังเกตได้ว่า MQTT นั้นเป็นโปรโตคอลที่มีโครงสร้างซับซ้อนน้อยกว่าโปรโตคอลอื่นเช่น HTTP และด้วยความที่มีโครงสร้างไม่ซับซ้อนนั้นทำให้กินพลังงานน้อย ทำให้เหมาะสำหรับระบบอัตโนมัติที่บางครั้งจะต้องพึ่งแบตเตอรี่ หรืออยู่ที่ไกลออกไปจนสัญญาณต่างๆค่อนข้างมีความเร็วที่ต่ำ