راهنمای جامع پروتکل MQTT
در این پست, پروتکل MQTT را معرفی خواهیم کرد. کلمه MQTT مخفف عبارت (Message Queuing Telemetry Transport) می باشد.
مقدمه و معرفی
در این پست, پروتکل MQTT را معرفی خواهیم کرد. کلمه MQTT مخفف عبارت (Message Queuing Telemetry Transport) می باشد.
پروتکل MQTT از پرکاربردترین پروتکل ها در اینترنت اشیا می باشد. از جمله ویژگی های این پروتکل ارتباطی می توان به: سبک بودن, امنیت بالا, حجم کم اشاره کرد. پروتکل MQTT از مدل publish / subscribe استفاده می کند:
MQTT یک پروتکل پیام رسان ساده است. که برای دستگاه های محدود با پهنای باند کم طراحی شده است. MQTT به شما امکان ارسال کامند برای کنترل خروجی های مختلف، خواندن و publish دیتا از سنسورها را می دهد. بنابراین برقراری ارتباط بین چندین دستگاه را آسان می کند!
نحوه عملکرد MQTT
هر دستگاه یا سنسور در این پروتکل، دیتا خود را که topic آن می تواند از سنسور دما , رطوبت و … باشد، به سرور MQTT می دهد یا publish می کند. بنابراین هر کسی (هر دستگاه دیگری) اجازه دسترسی به این data را بخواهد باید آن topic خاص را بداند.
همانطور که در تصویر زیر مشاهده می کنید؛
- شما از طریق یک کلاینت client (مانند محیط گرافیکیNode-RED)، دستوری (command) را برای کنترل یک خروجی (LED ON/OFF) ارسال می کنید:
- اطلاعات از از یک سنسور بخوانید و به یک client (مانند محیط گرافیکیNode-RED)، publish کنید:
مفاهیم اساسی در MQTT
در این قسمت چند مفهوم پایه برای پروتکل MQTT که باید با آنها آشنا باشید، را به صورت زیر داریم:
- Publish/Subscribe
- Messages
- Topics
- Broker
در ادامه آموزش، به بررسی و تحلیل هر یک می پردازیم.
مفهوم Publish/Subscribe در پروتکل MQTT
مفهوم publish بدین صورت است که یک دستگاه پیغامی را با استفاده از یک topic ، منتشر publish و دستگاه دیگری پیغام دریافت شده را subscribe می کند.
- Device 1؛ یک topic تاپیک را publish می کند.
- Device 2؛ همان topic که از دستگاه 1 publish شد را subscribe می کند.
- در نتیجه؛ دستگاه 2 پیغام را دریافت می کند.
مفهوم Messages در پروتکل MQTT
Messages ؛ سری اطلاعاتی می باشد که می تواند data یا command باشند که بین دستگاه هایتان در حال تبادل هستند.
مفهوم Topics در پروتکل MQTT
یکی دیگر از مفاهیم مهم در MQTT، تاپیک ها هستند.
- برای پروژه های اینترنت اشیا IOT با topics کار می کنیم.
- topic ها از نوع string رشته ای هستند، که توسط یک / از یکدیگر جدا می شوند.
- تاپیک مشخص می کند که داده / کامند از کجا publish شده است و حاوی چه پیامی است و به کجا می رود.
نکته
نحوه وارد کردن topic ها از جمله موارد مهمی است که باید رعایت کنید. در همین راستا به تصویر زیر توجه کنید.
در شماتیک زیر؛ سناریوی ON/OFF یک لامپ در home office را به عنوان مثال داریم:
- دیوایسی دارید که پیغام های “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 می توانید در پروژه های IOT خود، استفاده کنید. توصیه ما این است که از Mosquitto broker استفاده کنید که بر روی رزبری پای قابل نصب می باشد. در مقاله زیر نحوه نصب راه اندازی این broker را بر روی رزبری پای، به طور کامل آموزش داده ایم :
استفاده از MQTT در پروژه های IOT و اتوماسیون لوازم خانگی
همانطور که در این آموزش متوجه شدید،MQTT برای اینترنت اشیا بسیار مناسب و کامل است. برای شروع با پروتکل MQTT برای پروژه های خود، به مراحل زیر رجوع کنید: