
در این مقاله همراه شما هستیم تا نگاه دقیق تری به پروتکل MQTT داشته باشیم .
پروتکل MQTT یکی از شناخته شده ترین پروتکل های موجود در دنیای IoT است. طراحی سبک و ساده افزونه ویژگی هایی هستند که باعث می شود MQTT برای تمام دستگاه های مختلف با قابلیت پردازش و همچنین ذخیره سازی کوچک و بزرگ مناسب باشد.
معرفی و آشنایی پروتکل MQTT
MQTT یک پروتکل استاندارد برمبنای publish/subscribe هست که به صورت پیام رد و بدل میشود. ارتباط در این روش بر اساس پیامها و تاپیکهایی است که به یک گره (دستگاه) ارسال میشود و دیگر گرهها (دستگاهها) نیز میتوانند با اشتراکگذاری آن پیام را دریافت کنند. به این صورت که یکی از کلاینتها یک موضوعی را publish میکند و سایر کلاینتها میتوانند آن را subscribe کنند. این پروتکل بسیار شبیه به ارتباط کلاینت سرور هست و به سرور آن broker میگویند. در حقیقت سرور نقش مدیریت و جمع آوری اطلاعات را بر عهده دارد. این پروتکل روش تبادل اطلاعات مناسبی برای بستر اینترنت اشیاء (IOT) است.
پروتکل MQTT بسیار سبک و کم حجم است، همین دو ویژگی به همراه امنیت قابل توجه این پروتکل، باعث شده انتخاب مناسبی برای پروژههای اینترنت اشیاء باشد. MQTT دارای دو نوع ارتباط رمزنگاری شده که همان پورت 8883 و ارتباط رمزنگاری نشده یا همان پورت 1883 میباشد. پروتکل MQTT روی یک سرور نصب میشود و سپس از طریق MCU یا همان Main Control Unit نوعی ارتباط ماشین به ماشین برقرار میکند. این ارتباط دو طرفه است، از MCU به سرور و از سرور به MCU صورت میگیرد.
در این پرتکل واژههای اساسی زیر را داریم:
دلال(broker): وظیفه انتقال پیام میان انتشاردهنده و مشترک را بر عهده دارد.
انتشاردهنده(publisher): پیام دلخواهی را برای موضوع خاص، برای دلال میفرستد.
مشترک(subscriber): پیامهای مرتبط با موضوع خاصی که از دلال اشتراک گرفته است، دریافت میکند.
موضوع(topic): موضوعی است که در دلال تعریف میشود و انتشاردهندگان میتوانند برای آن پیام بنویسند و مشترکان میتوانند از آن پیام دریافت کنند.
استفاده از پروتکل MQTT در Node-RED :
- در سناریو زیر میخواهیم در صورت بالا رفتن دمای cpu کاربران، در esp32 پیام مناسب چاپ شود.
- در این سناریو Raspberry Pi به عنوان دلال است که روی آن دلالی به نام mosquitto نصب شده است.
- همچنین کامپیوتر شخصی کاربر به عنوان publisher است که دمای cpu را در صورتی بالاتر از حد مجاز بشود برای موضوع topic/sesnsors/temp/ali_ramezanian_pc/ می نویسد.
Esp32 در این سناریو به عنوان subscriber، برای موضوع topic/sesnsors/temp/ali_ramezanian_pc/ اشتراک دارد و پیامهایی که برای این موضوع فرستاده میشود را دریافت میکند.
راهاندازی
در broker کافی است mosquitto را نصب و اجرا کنید.
$ sudo apt install mosquitto $ sudo systemctl start mosquitto
mosquitto بر روی پورت 1883 گوش میدهد.
در publisher توسط node Red سناریو زیر را راهاندازی میکنیم:
حالا در esp32 با پیادهسازی مناسب، روی موضوع topic/sesnsors/temp/ali_ramezanian_pc/ مشترک میشویم.
2 دیدگاه