اینترنت اشیا (IoT) و فناوریهای ماشین به ماشین (M-to-M) به یک پروتکل پیام رسانی و اتصال برای تبادل اطلاعات از مکانهای دور نیاز دارند.
هنگام انتخاب چنین پروتکلی، چندین ویژگی مطلوب به کار می رود:
- ردپای کد کوچک (برای پیاده سازی آسان در دستگاه های کوچک)
- مصرف برق کم
- مصرف پهنای باند کم
- زمان تاخیر کم
- استفاده از الگوی انتشار/اشتراک (“pub/sub”).
MQTT (انتقال تله متری صف پیام) همه این الزامات را برآورده می کند و با پشتیبانی از ابرهای عمومی اصلی – خدمات وب آمازون، مایکروسافت آژور و پلتفرم ابری گوگل، شتاب بیشتری به دست آورده است. در این مقاله، بررسی خواهیم کرد که چرا MQTT محبوب ترین پروتکل پیام رسانی برای محصولات IoT است.
MQTT چیست؟
MQTT یک پروتکل پیام رسانی سبک است که توسط IBM توسعه یافته و اولین بار در سال 1999 منتشر شد. این پروتکل از مدل pub/sub استفاده می کند و پیام ها را بین دستگاه ها، سرورها و برنامه ها ترجمه می کند.
MQTT در ابتدا برای اتصال سنسورهای خط لوله نفت به ماهواره های ارتباطی با تمرکز بر به حداقل رساندن مصرف باتری و مصرف پهنای باند طراحی شد.
MQTT از زمان آغاز به کار توسعه مستمری داشته است. نسخه 5.0 که در می 2018 منتشر شد، تغییرات و بهبودهای قابل توجهی را در پروتکل MQTT به ارمغان آورد.
MQTT چگونه کار می کند؟
معماری MQTT
زیاد
در پروتکل MQTT، دستگاه های متصل به عنوان «کلینت» شناخته می شوند که با سروری به نام «کارگزار» ارتباط برقرار می کنند. کارگزار وظیفه انتقال داده بین مشتریان را بر عهده دارد.
هر زمان که مشتری (همچنین به عنوان “ناشر” شناخته می شود) بخواهد اطلاعاتی را منتشر کند، در مورد یک موضوع خاص منتشر می کند. سپس کارگزار این اطلاعات را به همه مشتریانی که در آن موضوع مشترک شده اند (به عنوان “مشترکین” شناخته می شود) ارسال می کند.
ناشران به اطلاعاتی درباره تعداد یا مکان مشترکین نیازی ندارند و مشترکین نیز به هیچ داده ای درباره ناشر نیاز ندارند. هر مشتری می تواند به عنوان ناشر، مشترک یا هر دو عمل کند. معمولاً مشتریان از یکدیگر آگاه نیستند – فقط کارگزاری که به عنوان یک واسطه عمل می کند. این تنظیمات به عنوان “مدل pub/sub” شناخته می شود.
انواع پیام های MQTT
در پروتکل MQTT، مشتریان از دو نوع پیام اصلی استفاده می کنند: انتشار و اشتراک.
هنگامی که مشتری می خواهد داده ها را برای کارگزار ارسال کند، این به عنوان “پست” شناخته می شود. برعکس، زمانی که مشتری می خواهد داده ها را از کارگزار دریافت کند، در یک موضوع یا موضوعات “اشتراک” می شود. با عضویت در یک موضوع، مشتری تمام پیام های منتشر شده در آن موضوع را دریافت می کند.
ما به طور کلی به داده های منتشر شده به عنوان “پیام” اشاره می کنیم. پیام ها می توانند هر چیزی باشند که یک قسمت از یک سیستم برای برقراری ارتباط با بخش های دیگر نیاز دارد. پیامها میتوانند قرائتهای خام حسگر، پیامهای گزارش، دادههای تلهمتری یا ضربان قلب باشند. برخی از پیامها ممکن است بیشتر شبیه به فرمانها باشند و در کلاینتهای دریافتکننده اقدام خاصی را انجام دهند.
همراه با خود پیام، ناشر یک سطح QoS (کیفیت خدمات) را نیز ارسال می کند. این سطح ضمانت تحویل پیام را تعیین می کند. این سطوح QoS به شرح زیر است:
- حداکثر یک بار: هنگامی که پیام منتشر می شود، کارگزار پیام را حداکثر “حداکثر یک بار” دریافت می کند. این سطح نباید برای اطلاعات مهم استفاده شود زیرا خطر عدم دریافت پیام توسط مشترکین را به همراه دارد.
- حداقل یک بار: ناشر پیام را مجددا ارسال می کند تا زمانی که یک تأییدیه از کارگزار دریافت کند. به عبارت دیگر، اطمینان از دریافت پیام مهم تر از اطمینان از دریافت آن فقط یک بار است. این رایج ترین سطح QoS مورد استفاده است.
- دقیقا یک بار: ناشر و کارگزار با هم کار می کنند تا اطمینان حاصل کنند که پیام دقیقا یک بار دریافت و پذیرفته شده است. این سطح شامل هزینه اضافی به صورت دست دادن چهار قسمتی است. اگرچه این ایمن ترین سطح QoS است، اما همچنین کندترین سطح است و بنابراین فقط در صورت لزوم استفاده می شود.
موارد استفاده MQTT
MQTT یک پروتکل پیام رسانی همه کاره با موارد استفاده متعدد در زمینه اینترنت اشیا است. در اینجا برخی از برنامه های کاربردی رایج آورده شده است:
- تله متری و شبکه های حسگر: MQTT برای جمع آوری داده های حسگر در نظارت بر محیط زیست، اتوماسیون صنعتی و کشاورزی هوشمند ایده آل است.
- اتوماسیون خانگی: MQTT ارتباط یکپارچه بین دستگاه های هوشمند را برای کنترل و نظارت بر سیستم های خانه مانند روشنایی، امنیت و ترموستات ها امکان پذیر می کند.
- اینترنت اشیاء صنعتی: MQTT تبادل کارآمد داده بین ماشینها را تسهیل میکند و امکان نگهداری پیشبینی، نظارت از راه دور و بهینهسازی فرآیند را فراهم میکند.
- ردیابی دارایی: توانایی MQTT برای مدیریت اتصال متناوب و مصرف کم انرژی، آن را برای ردیابی مکان واقعی وسایل نقلیه و دارایی های ارزشمند ارزشمند می کند.
- مدیریت انرژی: MQTT در سیستمهای انرژی هوشمند برای برقراری ارتباط موثر بین کنتورهای هوشمند، سیستمهای مدیریت انرژی و دستگاهها استفاده میشود که تعادل بار و بهینهسازی انرژی را ممکن میسازد.
- مراقبتهای بهداشتی و پوشیدنیها: MQTT نظارت از راه دور بیمار، انتقال بیدرنگ دادههای سلامت و ادغام با پوشیدنیها را در امکانات مراقبتهای بهداشتی تسهیل میکند.
MQTT کاربرد گسترده ای در سناریوهای مختلف اینترنت اشیا پیدا می کند و انعطاف پذیری، کارایی و قابلیت اطمینان آن را نشان می دهد. حالا بیایید مزایای MQTT را با جزئیات بیشتر بررسی کنیم.
مزایای MQTT چیست؟
پروتکل MQTT چندین مزیت برای برنامه های IoT ارائه می دهد:
- ردپای کد نور: دستگاه ها برای شروع کار با پروتکل MQTT تنها به چند خط کد نیاز دارند.
- بستههای داده به حداقل رسیده: MQTT بسیار کارآمد در مصرف انرژی است و آن را برای دستگاههای با باتری یا دستگاههایی که قدرت CPU محدودی دارند ایدهآل میکند.
- سرعت: MQTT به صورت بلادرنگ کار می کند و بدون تاخیر در خارج از QoS تضمین می کند.
- سهولت اجرا: MQTT در حال حاضر دارای کتابخانه هایی در زبان های برنامه نویسی مانند Elixir و Python است.
- آخرین وصیت و وصیت: در صورتی که مشتری به طور غیرمنتظره ارتباط خود را قطع کند، می توانید دستورالعمل های پیام را تنظیم کنید تا برای همه مشترکین ارسال شود تا وضعیت برطرف شود.
- پیامهای ذخیرهشده: هر موضوع میتواند یک پیام ذخیرهشده داشته باشد که مشتری بهطور خودکار هنگام عضویت دریافت میکند (مانند یک پست ثابت در رسانههای اجتماعی).
معایب MQTT چیست؟
در اینجا مواردی وجود دارد که ممکن است برای مورد استفاده شما مشکل ساز باشد:
- ترتیب پیام ها: تضمین های سفارش در پروتکل MQTT مطلق نیستند. اگرچه کارگزاران معمولاً پیام هایی را در مورد یک موضوع به ترتیب دریافت شده ارسال می کنند، سطح QoS مشخص شده می تواند بر این امر تأثیر بگذارد. مشخصات پروتکل به کارگزاران اجازه می دهد تا موضوعات فردی را به عنوان نامرتب تلقی کنند و ترتیب بین موضوعات بخشی از مشخصات نیست.
- حفظ سلامت اتصالات: اگرچه پروتکل از برقراری مجدد اتصالات پس از وقفه یا خرابی پشتیبانی می کند، مهم است که بررسی کنید آیا مشتری شما برای اجرای این عملکرد به کد برنامه نیاز دارد یا خیر.
- Throttling: ممکن است یک مشتری با پیام های بیش از حد بارگیری شود. اگر نه مشتری و نه کارگزار شما به طور خودکار این کار را انجام نمی دهند، برای مدیریت آن باید کد برنامه را پیاده سازی کنید.
جایگزین های رایج برای MQTT
اگرچه پروتکل MQTT به طور گسترده در اینترنت اشیا استفاده می شود، جایگزین هایی وجود دارد که باید در نظر بگیرید:
XMPP
XMPP (Extensible Messaging and Presence Protocol) یک پروتکل ارتباطی مبتنی بر زبان XML برای ذخیره و انتقال داده است. اغلب برای تامین انرژی سرویسهای پیامرسانی فوری مانند Jabber استفاده میشود.
برخی از تفاوت های اصلی بین XMPP و MQTT عبارتند از:
- ردپای کد XMPP کمی سنگین تر است و برای رمزگذاری و رمزگشایی اطلاعات به یک تجزیه کننده XML نیاز دارید.
- XMPP به طور پیشفرض از مدل pub/sub پشتیبانی نمیکند (اگرچه با یک پسوند میتواند).
- XMPP پهنای باند بیشتری نسبت به MQTT اشغال می کند.
HTTP(S)
HTTP (پروتکل انتقال ابرمتن) و پسوند آن HTTPS (پروتکل انتقال ابرمتن امن) پروتکلهای ارتباطی اساسی برای شبکه جهانی وب هستند. با این حال، آنها بدون تابعیت هستند و سربار انتقال بیشتری نسبت به MQTT دارند. همچنین، HTTPS از توان عملیاتی کمتری نسبت به MQTT برخوردار است، به این معنی که نمیتوانید تعداد زیادی پیام را همزمان ارسال کنید.
نتیجه
MQTT با ارائه یک راه حل پایین تر از نظر مشخصات فنی و در عین حال دستیابی به اتصالات مطلوب بین دستگاه ها، سرورها و برنامه ها، نقش مهمی در پروژه های اینترنت اشیا ایفا می کند. ماهیت سبک وزن، بهره وری انرژی، عملیات بلادرنگ و سهولت استقرار، آن را به یک انتخاب محبوب در چشم انداز اینترنت اشیا تبدیل کرده است.