پروتکل اینترنت اشیا

استفاده از پروتکل MQTT برای اینترنت اشیاء (IOT)

همانطور که می‌دانیم MQTT یک پروتکل ماشین به ماشین (M2M) برای اتصالات اینترنت اشیاء (IOT) است که به کمک سنسور، ارتباط برقرار می‌کند.

معماری ساختار MQTT شامل یک سرور مرکزی یا واسطه است که به شکل توپولوژی ستاره‌ای با یک یا چند دستگاه ارتباط برقرار می‌کند. پایه ارتباطات بر اساس پیام‌ها و تاپیک‌هایی است که به یک گره (دستگاه) ارسال می‌شود. دراین‌بین دیگر گره‌ها (دستگاه‌ها) نیز می‌توانند با اشتراک‌گذاری آن پیام را دریافت کنند. سرور مرکزی مسئول مدیریت شبکه و انتقال پیام‌ها است. ارتباطات می‌تواند یک به یک یا گروهی باشد.

هدف از این پروژه ساخت یک آداپتور IOT است که به همه‌ی دستگاه‌های عمومی بدون احتیاج به wifi اجازه می‌دهد تا به‌عنوان یک گره IOT شناخته شوند. تنها شرط موردنیاز دارا بودن یک پورت سریال است.

جهت پیاده‌سازی یک سیستم با حداقل جزئیات، ما باید در مورد چگونگی کار یک سرور مرکزی (کارگزار) نیز بدانیم

🔰این پروتکل مبتنی بر مبانی زیر است:

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

معمولاً پروتکل های اینترنتی نیاز به یک سرور واحد دارند که داده های ارسالی و دریافتی را پردازش و ذخیره می‌کند، اما در پروتکل MQTT مقداری فرایند ارتباطی متفاوت است.

بیاید با استفاده از مثال پیام رسان تلگرام مقداری قضیه را باز کنیم، فرض کنید شما (دستگاه الکترونیکی) قصد دارید یک سری پیام (داده) را در اختیار گروهی از کاربر ها (دستگاه های دیگر) قرار دهید، سه راه برای انجام این کار وجود دارد:

1️⃣هر کسی که نیاز به پیام های (داده ها) شما دارد، به صورت خصوصی به شما پیام دهد و شما داده های مورد نظر را برای او ارسال کنید، غالب پروتکل های اینترنت به این شکل عمل می کنند و در واقع شما باید نقش سرویس دهنده (سرور) را بازی کنید.
این کار علاوه بر این که بار زیادی بر روی شما می گذارید، باعث به هدر رفتن وقت و ترافیک شما می شود. در ضمن ممکن است در این میان کاربرانی وجود داشته باشند که فقط برای ایجاد مزاحمت و مصرف ترافیک به شما پیام بدهند (حملات DDOS)، شاید با تعداد کم افرادی که به داده های شما نیاز دارند، مشکلی پیش نیاید ولی فرض کنید چند هزار نفر نیاز به پیام های شما داشته باشند، در آن زمان، دیگر عنان کار از دست شما رها خواهد شد، همانطور که یک پردازنده کوچک قادر به پشتیانی ترافیک بالا نیست.

2️⃣شما (دستگاه) پیام ها (داده ها) را در اختیار یک ربات تلگرامی(سرور دیگر) قرار بدهید و آن ربات پیام را برای افراد متقاضی (دیگر دستگاه ها) ارسال کند. خوب این روش بهتر از روش قبلی است چرا که نیاز نیست شما وقت زیادی برای رساندن پیام به افراد مختلف صرف کنید و کسی مزاحم شما نخواهد شد و این کار را می توانید در زمان کوتاهی انجام دهید.

با این همه شما نیاز خواهید داشت که یک ربات تلگرامی (سرور) تهیه کنید که کار پیام رسانی را بر عهده داشته باشد و این خود علاوه بر ایجاد هزینه راه اندازی، هزینه نگهداری را نیز به شما تحمیل خواهد کرد. مدام باید مراقب باشید که ربات از کار نیفتاده باشد، هک نشده باشد و کارش را به درستی انجام دهد. این روش با وجود این که از راه حل اول بهتر است ولی باز دچار نقصان هایی است که شاید برای استفاده در دستگاه های الکترونیکی زیاد مناسب نباشد….

در این روش شما (دستگاه) به سادگی یک کانال تلگرامی ایجاد می کنید و هر شخصی که علاقمند به پیام های (داده های) شما باشد، به سادگی با عضویت در کانال شما، پیام ها را دریافت خواهد کرد و اگر از پیام های (داده های) شما خوشش نیامد به سادگی از کانال خارج شده و دیگر پیامی دریافت نمی‌کند.

این روش به نسبت دو روش دیگر برای دستگاه های الکترونیکی که از حافظه کمی برخوردار هستند و هم چنین قصد ندارند که یک سرور خاص تهیه کنند، بسیار کاربری است چرا که دغدغه پشتیبانی و برنامه نویسی سرور را ندارد و هم چنین نیاز به یک پردازنده قوی نیست که قادر باشد به تعداد زیادی متقاضی سرویس دهی کند.

پروتکل MQTT دقیقاً مانند روش سوم عمل می‌کند، در مثال های فوق تلگرام نقش اینترنت و پروتکل TCP را داشت که پیام ها را منتقل می کرد و کانال تلگرامی هم دقیقاً کار Broker را در پروتکل MQTT انجام می دهد. شما هم کار دستگاه Publisher را بازی میکردید، پالیشر در واقع دستگاهی است که یک Topic در Broker ایجاد می‌کند و داده های جمع آوری شده را در آن منتشر می‌کند و متقاضی یا دنبال کننده کانال تلگرامی شما در واقع Subscriber است که با جمع آوری داده های مورد نیاز خود عملی را انجام می دهد.

محدودیتی در تعداد Topic (کانال) وجود ندارد و هر دستگاه خود می تواند چند Topic داشته باشد و در چند Topic مختلف داده ها را قرار دهد و هم زمان می تواند در چند Topic دیگر Subscriber کند (عضو شود) و داده های مورد نظر خود را دریافت کند.

برای این که بتوانید در یک کانال تلگرام عضو شوید نیاز دارید که آدرس کانال را در دسترس داشته باشید در پروتکل MQTT نیز این چنین است برای عضویت در یک Topic باید آدرس آن را در اختیار داشته باشید و تا مادامی که آدرس Topic را در اختیار کسی برای عضویت قرار نداده باشید، Topic شما مخفی می ماند.

تفاوت موجود در Broker و تلگرام در ساختار درختی Topic ها در Broker هست، به این معنی که هر Topic خود می تواند دارای چندین زیر Topic باشد

برچسب ها
نمایش بیشتر

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا
بستن