مهدی اشراقی
طراح و مهندس شبکه های کامپیوتری ، برنامه نویس
مهدی اشراقی
طراح و مهندس شبکه های کامپیوتری ، برنامه نویس

نوشته های بلاگ

MQTT چیست و چه کاربردهایی دارد ؟

MQTT چیست و چه کاربردهایی دارد ؟

MQTT چیست ؟ چه کاربرد هایی داره و یه مرور کلی روی مفاهیم اولیه داریم .اگر دوست دارید بیشتر بدونید با من همراه باشید .

MQTT چیست ؟

MQTT یک پروتکل ماشین به ماشین (M2M) برای اتصالات اینترنت اشیاء (IOT) هست ،پروتکلی سبک برای ارسال و دریافت مسیج ها بر بستر TCP/IP.

  • بسیار سبک (هدر ۲ کیلوباتی !)
  • متن باز
  • استفاده آسان
  • احتیاج به پنهای باند کم و تاخییر پایین
  • امکان دسته بندی اطلاعات کانال برای سطح دسترسی
  • امکان سطح بندی QOS
  • امکان امن سازی به وسیله SSL , TLS
  • کتابخانه های مختلف برای تعداد زیادی زبان برنامه نویسی
  • امکان استفاده در آردوینو ، رسپبری و سایر برد ها و میکروکنترلر ها

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

کاربرد های MQTT :

خوب احتمالا حدس زدین که Mqtt کاربرد های زیادی داره !برای IOT که خودش یعنی اینترنت همه چیز !

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

یه سری مثال کوچیک :

  • اعلام وضعیت سنسور ها به شبکه
  • امکان خواندن اطلاعات موجود در شبکه به وسیله برنامه ها و یا سایر برد ها
  • اتصال هر وسیله الکترونیکی به شبکه اینترنت و بستر سازی که تقریبا میشه با HTTP  مقایسش کرد.

مفاهیم اولیه :

Broker : سرور MQTT 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 : در این حالت دستگاه اطمینان پیدا میکند که اطلاعات فقط و حتما یکبار به بروکر رسیده باشد.

qos در mqtt

بعد از اینکه یاد گرفتیم mqtt چیست میتونید سرور شخصی خودتون رو راه اندازی کنید .

آموزش نحوه نصب و تنظیم Mqtt Broker

منبع : https://github.com/mqtt/mqtt.github.io/wiki

برچسب ها:
درج دیدگاه