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 และด้วยความที่มีโครงสร้างไม่ซับซ้อนนั้นทำให้กินพลังงานน้อย ทำให้เหมาะสำหรับระบบอัตโนมัติที่บางครั้งจะต้องพึ่งแบตเตอรี่ หรืออยู่ที่ไกลออกไปจนสัญญาณต่างๆค่อนข้างมีความเร็วที่ต่ำ