MQTT چیست و چه کاربردهایی دارد ؟
MQTT چیست ؟ چه کاربرد هایی داره و یه مرور کلی روی مفاهیم اولیه داریم .اگر دوست دارید بیشتر بدونید با من همراه باشید .
MQTT چیست ؟
MQTT یک پروتکل ماشین به ماشین (M2M) برای اتصالات اینترنت اشیاء (IOT) هست ،پروتکلی سبک برای ارسال و دریافت مسیج ها بر بستر TCP/IP.
- بسیار سبک (هدر ۲ کیلوباتی !)
- متن باز
- استفاده آسان
- احتیاج به پنهای باند کم و تاخییر پایین
- امکان دسته بندی اطلاعات کانال برای سطح دسترسی
- امکان سطح بندی QOS
- امکان امن سازی به وسیله SSL , TLS
- کتابخانه های مختلف برای تعداد زیادی زبان برنامه نویسی
- امکان استفاده در آردوینو ، رسپبری و سایر برد ها و میکروکنترلر ها
معماری ساختار MQTT شامل یک سرور مرکزی یا واسطه است که به شکل توپولوژی ستارهای با یک یا چند دستگاه ارتباط برقرار میکند. پایه ارتباطات بر اساس پیامها و تاپیکهایی است که به یک گره (دستگاه) ارسال میشود. دراینبین دیگر گرهها (دستگاهها) نیز میتوانند با اشتراک گذاری آن پیام را دریافت کنند. سرور مرکزی مسئول مدیریت شبکه و انتقال پیامها است. ارتباطات میتواند یک به یک یا گروهی !
کاربرد های MQTT :
خوب احتمالا حدس زدین که Mqtt کاربرد های زیادی داره !برای IOT که خودش یعنی اینترنت همه چیز !
بسیاری از دستگاه های ما میتونن با این پروتکل ارتباط برقرار کنن و شما بعد از یادگیری اولیه میتونید گوشی و یا هر وسیله دیگه رو به شبکه mqtt برای کنترل و نظارت استفاده کنید .
یه سری مثال کوچیک :
- اعلام وضعیت سنسور ها به شبکه
- امکان خواندن اطلاعات موجود در شبکه به وسیله برنامه ها و یا سایر برد ها
- اتصال هر وسیله الکترونیکی به شبکه اینترنت و بستر سازی که تقریبا میشه با HTTP مقایسش کرد.
مفاهیم اولیه :
Broker : سرور MQTT
Publish : ارسال اطلاعات در کانال مشخص شده
Subscribe : دسترسی به اطلاعات یک کانال
topic : موضوع ارسال داده
مثلا من میخوام برای اتاق خوابم یک سنسور دما بزارم پس بهتره زمان ارسال اطلاعات در شبکه mqtt از topic با عنوان bedroom و temp استفاده کنم و داده اون رو داخل این topic بریزم . در اصل اطلاعات سنسور من در /bedroom/temp ارسال میشه که به اون publish کردن گفته میشه و هر دستگاهی نیاز به ارتباط داشته باشه فقط کافیه اون topic رو subscribe کنه . یک دستگاه همزمان میتونه هم اطلاعات publish کنه و هم چند topic رو subscribe داشته باشه.
مفاهیم در اتصال در کلاینت به سرور در پروتکل MQTT :
- Client ID : هر کلاینت دارای یک ID هست که در این بخش نشان داده می شود.
- Cleansession : اگر مقدار Cleansession برابر False باشد سرور داده ها را کش کرده و اگر کلاینتی دوباره متصل شود اطلاعات قدیمی و کش شده را دریافت خواهد کرد.
- Username : نام کاربری هر کلاینت است که برای Login استفاده می شود.
- Password : رمز هر کلاینت که برای Login استفاده می شود.
- Lastwilltopic : تاپیکی است که کلاینت اطلاعات خود را بر روی آن قرار داده است. کلاینت از آن برای نمایش اطلاعات استفاده می کند.
- LastwillQos : این پارامتر مقدار Qos را نشان میدهد.
- Lastwillmassage : این پیام در صورت قطع اتصال کلاینت با Broker و قطع Willtopic به صورت اتفاقی و غیره منتظره ارسال می شود.
- LastwillRetain : زمانی که برابر با False باشد Willmasasge حفظ نمی شود، اگر هم برابر True باشد این پیام حفظ می شود.
- KeepAlive : این مقدار مدت زمانی که Client و broker می توانند بدون ارسال هیچ پیامی ارتباط خود را حفظ کنند را نشان میدهد.
Qos در MQTT :
به صورت کلی و خیلی سریع ما در mqtt سه حالت Qos داریم :
- Qos 0 : ساده ترین شکل ارسال اطلاعات ،در این حالت ارسال کننده بر دریافت و یا عدم دریافت مقصد هیچ نظارتی ندارد .
- Qos 1 : در این حالت دستگاه اطمینان پیدا میکند که اطلاعات حتما به بروکر رسیده باشد .
- Qos 2 : در این حالت دستگاه اطمینان پیدا میکند که اطلاعات فقط و حتما یکبار به بروکر رسیده باشد.
بعد از اینکه یاد گرفتیم mqtt چیست میتونید سرور شخصی خودتون رو راه اندازی کنید .