پروتکل MQTT چیست و چگونه کار می‌کند

در این مقاله می‌خواهیم پروتکل MQTT را معرفی و بررسی کنیم.MQTT مخفف Message Queuing Telemetry Transport می‌باشد،که یک پروتکل پیام رسانی ساده و مناسب برای ارتباط بین دستگاه های IoT است.

پروتکل MQTT چیست؟

ارتباط MQTT یک پروتکل پیام‌ رسانی ساده است که برای دستگاه‌های با پهنای باند کم طراحی شده است.بنابراین راه حلی مناسب برای تبادل داده بین چندین دستگاه IoT است.

ارتباطات MQTT به عنوان یک سیستم انتشار و دریافت (Publish و Subscribe) کار می کند. دستگاه‌ها پیام‌هایی را درباره یک موضوع خاص(Topic) منتشر می‌کنند. همه دستگاه‌هایی که در آن تاپیک مشترک هستند پیام را دریافت می‌کنند.

یکی از کاربردهای اصلی آن ارسال پیام برای کنترل خروجی ها، خواندن و انتشار داده ها از سنسورهای متصل به اینترنت است.

مفاهیم اولیه MQTT

در MQTT چند مفهوم اساسی وجود دارد که باید آنها را درک کنید:

  • Publish/Subscribe
  • Messages
  • Topics
  • Broker

ارسال و دریافت (MQTT – Publish/Subscribe)

اولین مفهوم، سیستم انتشار و اشتراک است. در یک سیستم انتشار و اشتراک، یک دستگاه می تواند پیامی را در مورد یک موضوع منتشر کند، یا می تواند برای دریافت پیام در یک موضوع خاص مشترک شود.

  • به عنوان مثال دستگاه 1 در مورد یک موضوع منتشر می کند.
  • دستگاه 2 در همان موضوعی مشترک است که دستگاه 1 در آن منتشر می کند.
  • بنابراین، دستگاه 2 پیام را دریافت می کند.

پیام (MQTT – Messages)

پیام ها اطلاعاتی هستند که می خواهید بین دستگاه های خود مبادله کنید. برای مثال می‌تواند پیامی مانند فرمان یا داده‌هایی مانند قرائت سنسور باشد.

تاپیک (MQTT – Topics)

مفهوم مهم دیگر تاپیک است.تاپیک موضوعی است که فرستنده تحت آن عنوان پیام را ارسال می‌کند و گیرنده می‌تواند با گوش دادن بر روی آن تاپیک پیام را دریافت کند.

تاپیک با رشته هایی که با یک اسلش(/) رو به جلو جدا شده اند نشان داده می شوند. هر اسلش رو به جلو سطح موضوعی را نشان می دهد. در اینجا مثالی از نحوه ایجاد موضوع برای یک لامپ در دفتر خانه خود آورده شده است:

توجه: تاپیک‌ها به حروف بزرگ و کوچک حساس هستند، که این دو تاپیک را متفاوت می کند:

اگر می خواهید با استفاده از MQTT یک لامپ را در دفتر خانه خود روشن کنید، می توانید سناریوی زیر را دنبال کنید:

  1. دستگاه فرستنده پیام "on" و یا "off" را با تاپیک home/office/lamp ارسال می‌کند.
  2. گیرنده پیام دستگاهی است که می‌تواند یک لامپ را کنترل نماید( که میتواند بردی مانند ESP32 و یا ESP826 باشد). این دستگاه در تاپیک home/office/lamp مشترک است.
  3. بنابراین، هنگامی که یک پیام جدید در مورد آن موضوع منتشر می شود، ESP32 پیام های "on" یا "off" را دریافت می کند و لامپ را روشن یا خاموش می کند.

دستگاهی که پیام‌ها را منتشر می‌کند می‌تواند یک ESP32، یک ESP8266 یا یک پلت‌فرم کنترل‌کننده Home Automation با پشتیبانی از MQTT مانند Node-RED، Home Assistant، Domoticz یا OpenHAB باشد.

بروکر (MQTT – Broker)

در نهایت، مفهوم مهم دیگر broker است.بروکر MQTT مسئول دریافت همه پیام‌ها، فیلتر کردن پیام‌ها، تصمیم‌گیری در مورد علاقه‌مندان به آنها و سپس انتشار پیام برای همه مشتریان مشترک است.

بروکرهای زیادی برای MQTT وجود دارد که تعدادی از آن‌ها را در لیست زیر مشاهده می‌کنید.در مقاله بعدی به معرفی و بررسی نحوه عملکرد پروتکل MQTT توسط بروکر Emitter می‌پردازیم.

  • Mosquitto
  • Mosca
  • emqttd
  • EMQ X
  • Emitter