MQTT (Message Queuing Telemetry Transport)، در اصطلاح انسانی، به معنای انتقال تله متری صف پیام است. چند سال پیش، زمانی که طرف رایانههای شخصی رواج بسیاری از مهندسان به سادگی یک اصطلاح دوربرگردان را نمیشنید، اما با توسعه تدریجی فناوری اینترنت اشیا (IoT)، این پروتکل بیشتر و بیشتر در چشم مهندسان بزرگ ظاهر میشود. این باعث شده است که بسیاری از مهندسان فقط نام را بدانند اما معنی آن را نه، و حتی بسیاری از مردم فکر می کردند که این نوعی پروتکل است که با توسعه اینترنت اشیا توسعه یافته است. در واقع پروتکل MQTT برای اولین بار بیش از 20 سال پیش اختراع شد و در سال 1999 اندی استنفورد کلارک از IBM و آلن نیپ از Cirrus Link اولین نسخه پروتکل را نوشتند. پروتکل از آن زمان بهعنوان پروتکل پیامرسانی مبتنی بر انتشار/اشتراک-در سطح بینالمللی تحت استاندارد ISO (ISO/IEC PRF 20922) استاندارد شده است. استفاده شده است در تعدادی سوله از آن زمان. هنگامی که زیرساخت فنی اینترنت اشیا نهایی شد، این پروتکل باستانی اولین بهار خود را آغاز کرد.
لایه های حمل و نقل و کاربردی شبکه
همانطور که همه ما می دانیم، توسعه سریع اینترنت اشیا تا کنون نمی تواند زیرساخت شبکه ارتباطی را ترک کند، اکنون می توانید هر گوشه ای از جهان را در خانه یک سوئیچ چراغ اتاق کنترل کنید، یا برای انجام کنترل صنعتی، همچنین می توانید کنترل از راه دور حرکت یک ربات را انجام دهید، بلوغ این فناوری مبتنی بر ارتباطات شبکه به عنوان اساس است. فناوری اصلی فناوری شبکه فعلی مدل هفت لایه OSI است، البته، برنامه واقعی در واقع از مدل شبکه چهار لایه TCP/IP استفاده میکند.
مدل شبکه چهار لایه TCP / IP از لایه سوم انتقال، پروتکل معروف TCP / IP است، این لایه از هدف اصلی پروتکل برای ارسال رایانه در شبکه انتقال داده به آدرس IP مشخص شده دستگاه دیگر در بالا استفاده میشود، به عنوان مثال، یک آدرس IP "192.168.137.19 به عنوان مثال، اگر دستگاهی با آدرس IP "19.71" بفرستد. یک بسته باینری 16 بایتی به یک ماشین با آدرس IP "192.168.137.10"، سپس می توان از پروتکل TCP/IP برای انتقال آن استفاده کرد. در عوض، هنگام انتقال داده ها با استفاده از TCP، معمولاً از سوکت ها استفاده می کنیم.
اما زمانی که آدرس IP ماشین "192.168.137.19" برای ارسال داده ها به ماشین "192.168.137.10"، این بسته بسته های TCP در داخل داده ها در واقع از طرفی است که معنای انتهای دریافت آدرس IP انتهای دریافت کننده "192.168.137" این مشکل مربوط به این است که چگونه بسته می شود. لایه انتقال بالای لایه از پروتکل هایی برای حل، که پروتکل های لایه کاربردی است. البته اگر پروتکلهای شما نمیخواهند به شبکه معمولی رایانهها رزولوشن بدهند، میتوانید برخی از پروتکلهای لایه کاربردی خود را نیز توسعه دهید، مهم نیست، هدف لایه انتقال فقط انتقال دادهها به ماشین هدف بالای آن است.
کار روزانه ما، سرگرمی اغلب با انواع پروتکلهای لایه کاربردی مواجه میشود، مانند زمانی که یک صفحه وب را باز میکنید، تصویر در آن موقعیت نمایش داده میشود، دکمهای که به پایین نشان داده میشود برای دستیابی به چه عملکردی است، این توسط پروتکل انتقال ابرمتن HTML (به انگلیسی: HyperTextTransferProtocol، مخفف: HTTP) توافق شده است. این تضمین می کند که وقتی صفحه ای در وب سایت شما توسط هر دستگاهی درخواست می شود، آن دستگاه می تواند آن را به درستی نمایش دهد. به غیر از HTTP، پروتکل های لایه کاربردی بسیار دیگری مانند DNS، FTP و غیره وجود دارد که پروتکل MQTT که قهرمان امروز ماست، یکی از آنهاست.
چرا اینترنت اشیا از MQTT حمایت می کند
با وجود تمام پروتکل های لایه برنامه عالی موجود برای برنامه های موجود ما، چرا MQTT در فضای اینترنت اشیا می درخشد. انتخاب پروتکل MQTT بی اساس نیست. MQTT یک پروتکل شبکه ای سبک و انعطاف پذیر است که می کوشد تعادل مناسبی را برای توسعه دهندگان اینترنت اشیا ایجاد کند:
این پروتکل سبک وزن را می توان بر روی سخت افزار دستگاه با محدودیت شدید و شبکه های محدود با تاخیر/پهنای باند بالا پیاده سازی کرد.
انعطافپذیری آن، پشتیبانی از سناریوهای کاربردی متنوع برای دستگاهها و خدمات اینترنت اشیا را ممکن میسازد.
اکثر توسعه دهندگان از قبل با خدمات وب HTTP آشنا هستند. پس چرا اجازه نمی دهیم دستگاه های اینترنت اشیا به سرویس های وب متصل شوند؟ دستگاه ها می توانند داده های خود را در قالب درخواست های HTTP ارسال کنند و به روز رسانی ها را در قالب پاسخ های HTTP از سیستم دریافت کنند. این مدل درخواست و پاسخ دارای محدودیت های جدی است:
HTTP یک پروتکل همگام سازی است. مشتری باید منتظر پاسخ سرور باشد. مرورگرهای وب این نیاز را دارند، اما به قیمت مقیاس پذیری. در فضای اینترنت اشیا، تعداد زیادی دستگاه و شبکهای که احتمالاً غیرقابل اعتماد هستند یا تأخیر بالایی دارند، ارتباطات همزمان را با مشکل مواجه میکنند. پروتکل های پیام رسانی ناهمزمان برای برنامه های IoT مناسب تر هستند. حسگرها قرائت ها را ارسال می کنند و به شبکه اجازه می دهند بهترین مسیر و زمان تحویل آنها را به دستگاه ها و سرویس های مورد نظر تعیین کند.
HTTP یک جهته است. مشتری باید اتصال را آغاز کند. در برنامههای اینترنت اشیا، دستگاه یا حسگر معمولا مشتری است، به این معنی که نمیتوانند به صورت غیرفعال دستورات را از شبکه دریافت کنند.
HTTP یک پروتکل یک-به- است. مشتری درخواستی می دهد و سرور پاسخ می دهد. ارسال پیام به همه دستگاههای موجود در شبکه نه تنها دشوار است، بلکه پرهزینه است، که یک مورد رایج در برنامههای اینترنت اشیا است.
HTTP یک پروتکل سنگین وزن با هدرها و قوانین بسیاری است. برای شبکه های محدود مناسب نیست.
به این دلایل، بیشتر سیستمهای مقیاسپذیر{0} با کارایی بالا از گذرگاههای پیام ناهمزمان برای تبادل دادههای داخلی به جای سرویسهای وب استفاده میکنند.
مدل اشتراک/انتشار
جالب اینجاست که این سرور پروتکل MQTT در واقع طراحی بسیار ساده تری نسبت به وب سرور است، زیرا به دنبال یک سرویس کارآمد است. مکانیسمی که توسط آن MQTT اساساً پیام ها را ارسال و دریافت می کند تا حدودی شبیه به رابطه بین وب سایت عمومی ما و شما، خوانندگان است.
در دنیای واقعی، من و شما شبیه یک دستگاه MQTT هستیم که به یک سرور یکپارچه وصل شده است، شما به دلیل علاقه یا نوعی علاقه به شماره عمومی ما مشترک ما می شوید، و وقتی هر روز یک فشار متنی ارسال می کنم، در تلفن همراه ظاهر می شوید که پیام را فشار دادم، این فرآیند، اطلاعات من را به روشی دریافت می کنید که به عنوان "در این فرآیند، رفتاری که شماره اسکریپت من را دریافت می کنید" نامیده می شود. "نشر". و همه می توانند به مقاله من، شما می توانید با خیال راحت برای من پیام بگذارید، این رفتار رفتار "انتشار" همه است، و من همیشه جلوی فشار برای دیدن پیام همه هستم، این یک نوع رفتار "اشتراک" است. در این فرآیند، تمام اطلاعات خارجی هیچ ربطی به ما ندارند، ما به سادگی با جریان اطلاعات در دو جهت ارتباط برقرار می کنیم. مکانیسم پیام رسانی در MQTT نیز بر اساس مدل Publish - Subscribe است. مکانیسم تحویل پیام MQTT نیز بر اساس مدل "انتشار" - "اشتراک" است.
مراحل خاص MQTT عبارتند از:
مرحله 1:از اول برای به دست آوردن یک سرور MQTT استفاده کنید و سپس یک محصول ارتباطی جدید MQTT ایجاد کنید.
مرحله ۲:سپس برای اتصال به این سرور، دو پارامتر مهم برای اتصال به سرور، شماره میزبان (نام دامنه یا آدرس IP) و شماره پورت است.
مرحله 3:اگر از یک پلتفرم سرور ابری شخص ثالث-استفاده میکنید، ممکن است از شما بخواهد که با استفاده از شناسه محصول و اطلاعات احراز هویت، که هر دو در قسمت پشتی دستگاه Cloud یافت میشوند، وارد این دستگاه شوید.
پس از انجام این سه مرحله، می توانید مشترک شوید یا در موضوعات مربوطه پیام ارسال کنید.
من سندی را گردآوری خواهم کرد تا به شما نشان دهم چگونه پلتفرم دسترسی باز ابری دستگاه موبایل China Mobile را "فاحشه کنید".
این سه مرحله برای توسعه نرم افزار کاربردی و توسعه میکروکنترلر اعمال می شود. در توسعه میکروکنترلر، اگر از دستورات AT و ارتباطات ماژول WIFI خارجی استفاده میکنید، ماژول عمومی میتواند با دستورات AT + MQTT ارائه شود که بهترین راه برای کاهش فشار روی میکروکنترلر است. یا میتوانید مستقیماً به دادههای لایه انتقال TCP/IP دسترسی پیدا کنید و سپس MQTT را تجزیه کنید، که لازم است کاربر درک عمیقی از پروتکل MQTT داشته باشد تا دادههای Json خود را نیز تجزیه کند، بنابراین به طور کلی هنگام انجام دستگاههای جاسازی شده، معمولاً توصیه میشود که مستقیماً از ماژول آماده-با پروتکل MQTT استفاده کنیم، تجزیه مستقیم فرمان AT راحتتر است.
مطالعه موردی:
کنترل از راه دور چراغ ها و گرفتن دمای فعلی اتاق.
با توجه به این مورد، در واقع یکی از ساده ترین کاربردهای MQTT است. اول از همه، برد کنترل تعبیه شده در اتاق عمدتاً از طریق WIFI به سرور متصل می شود که می تواند کلید چراغ را کنترل کرده و همچنین دما را جمع آوری کند. دستگاه انتهایی دوردست یک تلفن همراه است.
برای ادامه کار ارتباط، ابتدا باید به همان سرور MQTT متصل شوند.
اطلاعات دما در سمت دستگاه توسط دستگاه جمع آوری می شود، بنابراین باید داده های جمع آوری شده را در مبحث "دما" منتشر کند، در حالی که تلفن همراه اطلاعات دما را دریافت می کند، بنابراین باید در موضوع "دما" مشترک شود. هنگامی که دستگاه اطلاعات دما را به "مبحث دما" ارسال کرد، موضوع توسط تلفن همراه دریافت می شود.
کنترل نور در سمت دستگاه توسط دستگاه اجرا می شود، بنابراین باید در مبحث "سوئیچ چراغ" مشترک شود، در حالی که تلفن همراه کلید چراغ را کنترل می کند، بنابراین باید اطلاعات کنترل را در این مبحث "سوئیچ نور" منتشر کند. هنگامی که تلفن همراه یک پیام روشن به موضوع "روشن روشن" ارسال کرد، موضوع توسط ترمینال دریافت می شود و سپس دستور چراغ روشن اجرا می شود.




