وبلاگ

استفاده از پروتکل MQTT برای اینترنت اشیاء

اینترنت اشیاء

پروتکل MQTT چیست ؟

یک دفتر کار را تصور کنید؛ شما به چندین دستگاه با یک واحد مرکزی نیاز دارید. دستگاه‌هایی مانند ترموستات، آلارم یا دستگاه‌های مختلفی که باهم مرتبط‌اند ( مانند یک لامپ با سوئیچ قطع و وصل). ما به یک پروتکل ارتباطی نیاز داریم که بین همه‌ی این دستگاه‌ها مشترک باشد. پروتکل MQTTاین کار را برای انجام می دهد.

در ادامه  توضیحی در مورد MQTT و دلایل استفاده از آن میدهیم.

پروتکل MQTT یک پروتکل ارتباطی بر مبنای TCP/IP است که به دلیل کم حجم بودن دیتای ارسالی و دریافتی در مقایسه با HTTP به پهنای باند کمتری برای برقراری ارتباط نیاز دارد و این یکیی از دلایلی است که این پروتکل ارتباطی را به پروتکل مناسبب در مینه اینترنت اشیاء تبدیل کررده است. درجایی که تعداد زیادی از سنسورهای کم قدرت که اغلب با باتری کار میکنند وجود دارند.رمزنگاری , احراز هویت و کنترل دسترسی به راحتی در این پروتکل قابل انجام است.

MQTT از مدل Publish/Subscrib برای ارتباط خود استفاده می کند. که دارای خصوصیاتی از قبیل نگهداری پیام و آخرین وصیت (LWT) میباشد.

اما publish/subscribe چیه؟

این publish/subscribe که اغلب به اختصار pub-sub خونده میشه در حقیقت قلب اصلی ارتباط کلاینت ها با هم هستش .یعنی یکی از کلاینت ها مثلا یه مطلب یا موضوعی رو publish میکنه و بقیه کلاینت ها می تونند اونو subscribe کنند و پیامشو ببینند.

این پروتکل خیلی شبیه ارتباط کلاینت سرور هستش و به سرورش broker میگند

(اما کلاینت/سرور نیست ).و الباقی کلاینت ها یه توپولوژی ستاره ای شکل رو با سرور صورت میدند . یعنی سرور میشه قلب این پروتکل و کلاینت ها همه به اون وصل میشند.

به این صورت که هر دیوایس یا سنسور در این پروتکل اطلاعات خود را به سرور MQTT که در اینجا یک Broker است، Publish می کند به عنوان مثال یک سنسور دما اطلاعات خود را با استفاده از یک topic خاص تحت عنوان Tempmohit بر روی سرور Publish می کند، در اینجا هر کسی که بخواهد به این اطلاعات دسترسی داشته باشد یا به اصطلاح Subscrib کند، باید آن Topic خاص را که در اینجا Tempmohit است، داشته باشد تا بتواند اطلاعات را از سرور دریافت کند. در واقع دستگاه های یا Client ها در MQTT هم می توانند Publisher و هم Subscriber باشند.

توسعه دهندگان پروتکل MQTT

این روتکل هم اکنون توسط بزرگترین شرکتها از جمله فیس بوک برای پیامرسانی استفاده میشود. دیگر شرکتهایی که خدمات وب ارائه میدهند از جمله آمازون و گوگل از این پروتکل حمایت میکنند و کاربران آنها میتوانند از زیرساختهای آنان برای توسعه محصولات خود مبتنی

بر MQTT استفاده کنند.

استفاده از پروتکل ارتباطی مناسب در مرحله ای اهمیت خود را نشان میدهد که تعداد کاربران محصولات یک کسب و کار به ده ها هزار و حتی صد ها هزار نفر میرسد و مقیاس پذیری یکی از ملزومات آن کسب و کار میشود.

سرفصل پیام (Topic) چیست؟

سرفصل یک رشته حروف است که به سرور واسطه این امکان را میدهد تا پیامها را بر اساس آن برای هر مصرف کننده پالایش کند. هر سر فصل از یک یا چند زیر سرفصل تشکیل میشود که با کاراکتر فوروارد اسلش (/) از هم جدا میشوند.

مطابق نمونه زیر:

Home/Devices/Temperature

در این مثال Temperature زیر سرفصل Devices و Devices زیر سرفصل Home میباشد.

کیفیت خدمت (QoS) چیست؟

پروتکل  MQTT   دارای QOS نیز میباشد . (Quality of Service)

به طور کلی سه نوع کیفیت خدمت در این پروتکل وجود دارد:

QoS Level 0:ساده ترین حالت برقراری ارتباط با broker هست که نیازی به acknowledgment نداره .

QoS Level 1:در این حالت سرور مطمئن میشه که حداقل یک بار یا بیشتر بسته به کلاینت رسیده و ACK از کلاینت میگیره.

QoS Level 2:در این حالت broker یک و فقط یک بسته به کلاینت میفرسته و مطمئن میشه که بسته رسیده.این حالتش خیلی توصیه نمیشه .

همچنین این پروتکل حالاتی رو تشخیص میده که ارتباط قطع شده یا به هر دلیلی کلاینت نمیتونه با broker ارتباط برقرار کنه و در این حالت broker اقدام لازم رو انجام میده تا به خطا بر نخوریم. در همه این شرایط broker بقیه کلاینت ها رو هم با خبر میکنه.

  • در نوع ۱پیام ارسالی حداکثر یک بار ارسال میشود و تضمینی برای دریافت آن توسط مشترک وجود ندارد به این معنی که اگر مشترک به سرور واسطه متصل نباشد و این پیام را دریافت نکند سرور واسطه دیگر مجددا این پیام را ارسال نخواهد کرد.
  • در نوع ۲پیام ارسالی حداقل یک بار ارسال میشود به این معنی که تا مشترک یا مشترکین پیام را دریافت نکنند سرور واسطه پیام را در نوبت های بعدی ارسال خواهد کرد. و ممکن است مشترک آن پیام را حتی بیش از یکبار دریافت کند.
  • در نوع ۳تضمین میشود که مشترک پیام را فقط یکبار دریافت کند. این امن ترین در عین حال کندترین روش ارسال پیام است زیرا که به سیستم تصدیق ۴ مرحله ای نیاز دارد.

آخرین وصیت (LWT) چیست؟

هر کلاینتی که به سرور واسطه متصل میشود میتواند سرفصل و پیام آخرین وضیت خود را تعیین کند. و سرور واسطه آن را ذخیره میکند و به محض اینکه کلاینت ارتباطش با سرور واسطه قطع شود سرور واسطه هر کلاینتی که به سرفصل آخرین وضیت به روز  شده باشد را با ارسال پیام آخرین وضیت مطلع میکند.

امنیت در پروتکل MQTT

کلاینت ها میتونند با فرستادن username و password با broker ارتباط برقرار کنند .اما این یه مشکل امنیتی داره که هر بار توی همون بسته اطلاعات تصدیق هویتی رو بدون رمز گذاری میفرسته . البته خوشبختانه broker هایی هم هستند که قابلیت رمز گذاری TLS رو پشتیبانی میکنند .

چند نمونه از نرم افزار های Broker

Mosquitto ، Mosca ،RSMB ،HiveMQ

کارگزار (Server):

این قسمت از سیستم باید همواره از تاپیک‌هایی که دستگاه‌ها منتشر می‌کنند مطلع باشد و آن را بین همه‌ی دستگاه‌هایی که مرتبط با تاپیک فوق هستند، توزیع کند.سرور هم به صورت لوکال در یک سخت افزار میتوان اجرا شود و هم تحت شبکه به روی یک کامپیوتر محلی متصل به شبکه که با ید همیشه روشن باشد.

دیوایس ها در اینترنت اشیاء IOT

یکی از موارد مهم این است که دیوایسی  که استفاده می‌کنیم باید به یک شبکه  بی‌سیم یا با سیم  متصل بوده و از لحاظ موقعیت، در دسترس تمامی گره‌ها باشد.این دیوایس ها بر اساس مازولهای بر پایه یک تراشه ESP8266 است  ضمن اینکه میتوان از ماژول sim80 و مود اینترنت ان استفاده کرد.

مزایای این ماژول ها

  • اندازه‌ی کوچک
  • هزینه بسیار پایین
  • امکانات وای فای
  • رابط سریال

تمامی دیوایسهای که بر مبنای هسته های وای فای esp , sim  طراحی میشود نیاز به پردازنده ندارد و درون خود هسته برنامه نویسی میشود که باعث ارزان شدن دیوایس طراحی شده میشود

لینک دانلود کتاب مرتبط با اینترنت اشیاء

Designing the internet of things

 

دیدگاهتان را بنویسید