راهنمای جامع پروتکل MQTT
در این پست, پروتکل MQTT را معرفی خواهیم کرد. کلمه MQTT مخفف عبارت (Message Queuing Telemetry Transport) می باشد.
مقدمه و معرفی
در این پست, پروتکل MQTT را معرفی خواهیم کرد. کلمه MQTT مخفف عبارت (Message Queuing Telemetry Transport) می باشد.

نحوه علمکرد پروتکل MQTT
پروتکل MQTT از پرکاربردترین پروتکل ها در اینترنت اشیا می باشد. از جمله ویژگی های این پروتکل ارتباطی می توان به: سبک بودن, امنیت بالا, حجم کم اشاره کرد. پروتکل MQTT از مدل publish / subscribe استفاده می کند:
پروتکل MQTT_مدل publish / subscribe
MQTT یک پروتکل پیام رسان ساده است. که برای دستگاه های محدود با پهنای باند کم طراحی شده است. MQTT به شما امکان ارسال کامند برای کنترل خروجی های مختلف، خواندن و publish دیتا از سنسورها را می دهد. بنابراین برقراری ارتباط بین چندین دستگاه را آسان می کند!
نحوه عملکرد MQTT
هر دستگاه یا سنسور در این پروتکل، دیتا خود را که topic آن می تواند از سنسور دما , رطوبت و … باشد، به سرور MQTT می دهد یا publish می کند. بنابراین هر کسی (هر دستگاه دیگری) اجازه دسترسی به این data را بخواهد باید آن topic خاص را بداند.
همانطور که در تصویر زیر مشاهده می کنید؛
- شما از طریق یک کلاینت client (مانند محیط گرافیکیNode-RED)، دستوری (command) را برای کنترل یک خروجی (LED ON/OFF) ارسال می کنید:

- اطلاعات از از یک سنسور بخوانید و به یک client (مانند محیط گرافیکیNode-RED)، publish کنید:

MQTT_خواندن سنسور_رزبری پای_NodeRED
مفاهیم اساسی در MQTT
در این قسمت چند مفهوم پایه برای پروتکل MQTT که باید با آنها آشنا باشید، را به صورت زیر داریم:
- Publish/Subscribe
- Messages
- Topics
- Broker
مفاهیم پایه_MQTT
در ادامه آموزش، به بررسی و تحلیل هر یک می پردازیم.
مفهوم Publish/Subscribe در پروتکل MQTT
مفهوم publish بدین صورت است که یک دستگاه پیغامی را با استفاده از یک topic ، منتشر publish و دستگاه دیگری پیغام دریافت شده را subscribe می کند.
publish/subscribe_پروتکل MQTT
- Device 1؛ یک topic تاپیک را publish می کند.
- Device 2؛ همان topic که از دستگاه 1 publish شد را subscribe می کند.
- در نتیجه؛ دستگاه 2 پیغام را دریافت می کند.
مفهوم Messages در پروتکل MQTT
Messages ؛ سری اطلاعاتی می باشد که می تواند data یا command باشند که بین دستگاه هایتان در حال تبادل هستند.
مفهوم Messages_پروتکل MQTT
مفهوم Topics در پروتکل MQTT
یکی دیگر از مفاهیم مهم در MQTT، تاپیک ها هستند.
- برای پروژه های اینترنت اشیا IOT با topics کار می کنیم.
- topic ها از نوع string رشته ای هستند، که توسط یک / از یکدیگر جدا می شوند.
- تاپیک مشخص می کند که داده / کامند از کجا publish شده است و حاوی چه پیامی است و به کجا می رود.
مفهوم Topics-پروتکل MQTT
نکته
نحوه وارد کردن topic ها از جمله موارد مهمی است که باید رعایت کنید. در همین راستا به تصویر زیر توجه کنید.
ساختن topic
در شماتیک زیر؛ سناریوی ON/OFF یک لامپ در home office را به عنوان مثال داریم:
publish/subscribe/example
- دیوایسی دارید که پیغام های “on” و “off” را در topic home/office/lamp پابلیش publish می کند.
- از طرفی هم دیوایسی برای کنترل لامپ (ESP32،ESP8266 یا هر برد دیگری) دارید که topic را subscribe می کند.
- بنابراین زمانی که پیغامی جدید در تاپیک publish می شود. ESP32 پیغامی مبنی “on” یا “off” دریافت کرده و لامپ را خاموش یا روشن می کند.
دستگاه 1 که می تواند؛ ESP32،ESP8266 یا یک پلتفرم کنترلر اتوماسیون خانگی باشد. مانند: Node-RED، Home Assistant، Domoticz یا OpenHAB
broker وظایف زیر را بر عهده دارد:
- receiving: همه پیغام ها را دریافت می کند.
- filtering: پیام ها را از فیلتر عبور می دهد.
- decide: طبق درخواستها تصمیم می گیرد که هر دیوایس خواستار کدام پیغام است.
- publishing: در نهایت پیغام را به همه کلاینت های subscrib شده، publish می کند.

مفهوم Broker در MQTT
از چندین broker می توانید در پروژه های IOT خود، استفاده کنید. توصیه ما این است که از Mosquitto broker استفاده کنید که بر روی رزبری پای قابل نصب می باشد. در مقاله زیر نحوه نصب راه اندازی این broker را بر روی رزبری پای، به طور کامل آموزش داده ایم :
استفاده از MQTT در پروژه های IOT و اتوماسیون لوازم خانگی
همانطور که در این آموزش متوجه شدید،MQTT برای اینترنت اشیا بسیار مناسب و کامل است. برای شروع با پروتکل MQTT برای پروژه های خود، به مراحل زیر رجوع کنید:

پروتکل MQTT_پروژه های خانگی و اینترنت اشیا