امروز در اینترنت اشیا یوکاسافت میخواهیم در مورد کلمات کلیدی mqtt صحبت کنیم. mqtt یک پروتکل ارتباطی معروف در مباحث اینترنت اشیا است.
MQTT یک پروتکل پیام رسانی مبتنی بر استاندارد یا مجموعه ای از قوانین است که برای ارتباط ماشین به ماشین استفاده می شود. سنسورهای هوشمندو سایر دستگاههای اینترنت اشیا (IoT) معمولاً باید دادهها را از طریق شبکهای با محدودیت منابع با پهنای باند محدود ارسال و دریافت کنند. این دستگاههای اینترنت اشیا از MQTT برای انتقال دادهها استفاده میکنند، زیرا پیادهسازی آن آسان است و دادههای اینترنت اشیا میتوانند به طور موثر ارتباط برقرار کند. MQTT از پیام رسانی بین دستگاه ها به ابر و ابر به دستگاه پشتیبانی می کند.
چرا پروتکل MQTT مهم است؟
پروتکل MQTT به یک استاندارد برای انتقال داده های اینترنت اشیا تبدیل شده است زیرا مزایای زیر را ارائه می دهد:
سبک و کارآمد پیاده سازی
MQTT در دستگاه اینترنت اشیا به حداقل منابع نیاز دارد، بنابراین حتی می توان از آن در میکروکنترلرهای کوچک استفاده کرد. به عنوان مثال، یک پیام کنترل MQTT حداقل می تواند به اندازه دو بایت داده باشد. هدرهای پیام MQTT نیز کوچک هستند تا بتوانید پهنای باند شبکه را بهینه کنید.
مقیاس پذیر
پیاده سازی MQTT به مقدار حداقل کدی نیاز دارد که انرژی بسیار کمی را در عملیات مصرف می کند. این پروتکل همچنین دارای ویژگی های داخلی برای پشتیبانی از ارتباط با تعداد زیادی از دستگاه های IoT است. از این رو، می توانید پروتکل MQTT را برای اتصال با میلیون ها دستگاه از این دست پیاده سازی کنید.
قابل اعتماد
بسیاری از دستگاههای اینترنت اشیا از طریق شبکههای سلولی غیرقابل اعتماد با پهنای باند کم و تأخیر بالا متصل میشوند. MQTT دارای ویژگی های داخلی است که زمان اتصال مجدد دستگاه IoT به ابر را کاهش می دهد. همچنین سه سطح مختلف کیفیت خدمات را برای اطمینان از قابلیت اطمینان برای موارد استفاده از اینترنت اشیا - حداکثر یک بار (0)، حداقل یک بار (1) و دقیقا یک بار (2) تعریف می کند.
امن است
MQTT رمزگذاری پیامها و احراز هویت دستگاهها و کاربران را با استفاده از پروتکلهای احراز هویت مدرن، مانند OAuth، TLS1.3، گواهیهای مدیریت شده توسط مشتری، و غیره آسان میکند.
به خوبی پشتیبانی می شود
چندین زبان مانند پایتون پشتیبانی گسترده ای از اجرای پروتکل MQTT دارند. از این رو، توسعه دهندگان می توانند به سرعت آن را با حداقل کدنویسی در هر نوع برنامه ای پیاده سازی کنند.
تاریخچه پشت پروتکل MQTT چیست؟
پروتکل MQTT در سال 1999 برای استفاده در صنعت نفت و گاز اختراع شد. مهندسان برای نظارت بر خطوط لوله نفت از طریق ماهواره به پروتکلی برای حداقل پهنای باند و حداقل تلفات باتری نیاز داشتند. در ابتدا، این پروتکل به دلیل سری MQ محصول IBM که برای اولین بار از فاز اولیه آن پشتیبانی می کرد، به عنوان انتقال تله متری صف پیام شناخته می شد. در سال 2010، IBM MQTT 3.1 را به عنوان یک پروتکل آزاد و باز برای هر کسی که میتوانست پیادهسازی کند، منتشر کرد، که سپس در سال 2013، برای نگهداری به سازمان استانداردهای اطلاعات ساختاریافته (OASIS) ارائه شد. در سال 2019، نسخه ارتقا یافته MQTT نسخه 5 توسط OASIS منتشر شد. اکنون MQTT دیگر مخفف نیست بلکه به عنوان نام رسمی پروتکل در نظر گرفته می شود.
اصل پشت MQTT چیست؟
پروتکل MQTT بر اساس اصول مدل انتشار/اشتراک کار می کند. در ارتباطات سنتی شبکه، کلاینت ها و سرورها مستقیماً با یکدیگر ارتباط برقرار می کنند. کلاینت ها منابع یا داده ها را از سرور درخواست می کنند، سپس سرور پاسخ را پردازش کرده و پس می فرستد. با این حال، MQTT از یک الگوی انتشار/اشتراک برای جدا کردن فرستنده پیام (ناشر) از گیرنده پیام (مشترک) استفاده می کند. در عوض، جزء سوم به نام واسطه پیام، ارتباط بین ناشران و مشترکین را مدیریت می کند. وظیفه کارگزار این است که تمام پیام های دریافتی ناشران را فیلتر کرده و آنها را به درستی بین مشترکین توزیع کند.
کارگزار ناشران و مشترکین را به شرح زیر جدا می کند:
جداسازی فضا
ناشر و مشترک از موقعیت شبکه یکدیگر آگاه نیستند و اطلاعاتی مانند آدرس IP یا شماره پورت را رد و بدل نمی کنند.
جدا شدن زمان
ناشر و مشترک همزمان اجرا یا اتصال شبکه ندارند.
جداسازی همگام سازی
هم ناشران و هم مشترکین می توانند بدون ایجاد وقفه در یکدیگر پیام ارسال یا دریافت کنند. برای مثال، مشترک مجبور نیست منتظر ارسال پیام توسط ناشر باشد.
اجزای MQTT چیست؟
MQTT مدل انتشار/اشتراک را با تعریف مشتریان و کارگزاران به صورت زیر پیادهسازی میکند.
مشتری MQTT
کلاینت MQTT هر دستگاهی از سرور گرفته تا میکروکنترلر است که کتابخانه MQTT را اجرا می کند. اگر مشتری در حال ارسال پیام باشد، به عنوان یک ناشر و اگر در حال دریافت پیام باشد، به عنوان گیرنده عمل می کند. اساساً، هر دستگاهی که با استفاده از MQTT از طریق شبکه ارتباط برقرار می کند، می تواند دستگاه مشتری MQTT نامیده شود.
کارگزار یا بروکر MQTT
کارگزار MQTT سیستمی است که پیام ها را بین مشتریان مختلف هماهنگ می کند. مسئولیت های کارگزار شامل دریافت و فیلتر کردن پیام ها، شناسایی مشتریان مشترک در هر پیام و ارسال پیام ها برای آنها است. همچنین وظایف دیگری مانند:
مجوز و احراز هویت مشتریان MQTT
ارسال پیام به سیستم های دیگر برای تجزیه و تحلیل بیشتر
مدیریت پیام های از دست رفته و جلسات مشتری
یک نمای کلی از نحوه کار MQTT در زیر آورده شده است.
یک مشتری MQTT با کارگزار MQTT ارتباط برقرار می کند.
پس از اتصال، مشتری می تواند پیام ها را منتشر کند، در پیام های خاص مشترک شود یا هر دو را انجام دهد.
هنگامی که کارگزار MQTT پیامی را دریافت می کند، آن را برای مشترکین علاقه مند ارسال می کند.
بیایید جزئیات را برای درک بیشتر تجزیه کنیم.
موضوع یا تاپیک MQTT
اصطلاح "موضوع" به کلمات کلیدی اشاره دارد که کارگزار MQTT برای فیلتر کردن پیام ها برای مشتریان MQTT استفاده می کند. موضوعات به صورت سلسله مراتبی سازماندهی می شوند، شبیه به فهرست فایل یا پوشه. به عنوان مثال، یک سیستم خانه هوشمند را در نظر بگیرید که در یک خانه چند سطحی کار می کند که دارای دستگاه های هوشمند مختلف در هر طبقه است. در آن صورت، کارگزار MQTT ممکن است موضوعات را به صورت زیر سازماندهی کند:
خانه ما / طبقه همکف / اتاق نشیمن / نور
خانه ما / طبقه اول / آشپزخانه / دما
انتشار MQTT
کلاینت های MQTT پیام هایی را منتشر می کنند که حاوی موضوع و داده ها در قالب بایت است. کلاینت فرمت دادهها مانند دادههای متنی، دادههای باینری، فایلهای XML یا JSON را تعیین میکند. به عنوان مثال، یک لامپ در سیستم خانه هوشمند ممکن است پیامی را برای موضوع اتاق نشیمن/نور منتشر کند.
اشتراک در MQTT
مشتریان MQTT یک پیام SUBSCRIBE به کارگزار MQTT ارسال می کنند تا پیام هایی در مورد موضوعات مورد علاقه دریافت کنند. این پیام حاوی یک شناسه منحصر به فرد و لیستی از اشتراک ها است. به عنوان مثال، برنامه خانه هوشمند در تلفن شما می خواهد نشان دهد که چند چراغ خانه شما روشن است. در چراغ موضوع مشترک می شود و شمارنده را برای همه پیام ها افزایش می دهد.
اطلاعات کاملتر در این لینک موجود است.