MQTT امنیت اینترنت اشیا IOT

نقش پروتکل MQTT در پروژه‌های اینترنت اشیا

mqtt-broker-in-iot-project-digispark
نوشته شده توسط پریسا پوربلورچیان

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

 


دلایل استفاده از MQTT در IoT


پروتکل MQTT یک پروتکل اتصالاتی ماشین به ماشین M2M بر پایه اینترنت اشیا است. از پروتکل TCP ,IP بهره می‌برد. سیستم MQTT متشکل از کلاینت ( مشتریانی ) است که با یک سرور ارتباط برقرار می‌کنند؛ به اصطلاح به آن Broker گفته می‌شود. MQTT بر پایه سیستم publish و subscribe بنا شده است. یک کلاینت می‌تواند نقش یک انتشار دهنده اطلاعات ( Publisher ) و یا دریافت کننده اطلاعات باشد. دیتا در تاپبک‌ها مرتب شده است. زمانیکه انتشار دهنده یک مورد جدید از داده‌ها را جهت توزیع فراهم می‌کند، یک پیام کنترل با دیتا به واسط اتصال دهنده یا همان Broker ارسال می‌کند. واسط‌ها ( Broker) دیتا را به هر کلاینتی که در آن تاپیک مشترک است، توزیع می‌کند. انتشار دهنده نیازی به دانستن تعداد و محل مشترکین (Subscriber) ها ندارد و مشترکین به نوبه خود نباید با دیتاهای انتشار دهندگان پیکربندی شوند.

 


تنظیمات MQTT Broker


مولفه MQTT جهت ارتباط با دیگر پروتکل‌ها نیاز به یک سری تنظیمات دارد؛ در ادامه به آن ها می‌پردازیم. در این مرحله بایستی یک آی پی برای سرویس mqtt خود تعریف کنید. در این خصوص می‌توانید از واسط‌ها یا broker رایگان و یا اوپن سورس مانند Mosquitto، EMQ ، Mosca استفاده کنید. بهترین روش استفاده از mosquitto mqtt broker است.

شماتیک یک Broker در پروتکل MQTT - دیجی اسپارک

 

  • broker: آی پی IP Address و یا Hostname : مثال: ۱۹۲٫۱۶۸٫۱٫۶۵
  • port: پورت شبکه جهت اتصال. پورت پیشفرض ۱۸۸۳ می‌باشد.
    • client_id: یک آی پی یونیک برای سرور یا همان شناسه مشتری است که مخفف عبارت client identifier می‌باشد. هر mqtt client متصل به Broker را تشخیص می‌دهد. واسط (broker) از کلاینت آی دی برای شناسایی مشتری و وضعیت کنونی مشتری استفاده می‌کند. بنابراین این آی دی بایستی برای هر مشتری منحصر به فرد یا Unique باشد. در mqtt 3.1.1 استاندارد اگر نیاز به تعریف حالت ندارید میتوانید یک کلاینت آی دی خالی ارسال کنید.
  • keepalive: یک وقفه زمانی بر حسب ثانیه است که به صورت پیشفرض ۶۰ ثانیه است. ( زمان ارسال پیام در حال برای مشتری )
  • username: یوزر نیم منحصر به فرد شما جهت اتصال به MQTT Broker
  • password: پسورد برای یوزر نیم شما
  • protocol: پروتکل های مورد استفاده به ترتیب ۳٫۱ و ۳٫۱٫۱ میباشد که به صورت پیشفرض به ۳٫۱٫۱ متصل میگردد.
  • certificate: مسیر ذخیره فایل

mqtt client ها با mqtt broker ها در حال تبادل اطلاعات هستند و فقط از  mqtt client به mqtt broker ها داده ارسال می‌گردد. ارتباط بین این دو از طریق topic و payload برقرار می‌گردد.

 

 


Topic در پروتکل MQTT


در طول اجرای پروژه‌های اینترنت اشیا با Topic سروکار خواهیم داشت. تاپیک Topic مشخص می‌کند که یک پیام متعلق به کجاست و از کجا آمده است و حاوی چه پیامی است. به مثال های زیر توجه کنید:

Bedroom/temperature

bedroom/humidity

livingroom/fan

livingroom/tv

هر تاپیک از یک یا چند سطح Level تشکیل شده است. هر سطح Level تاپیک با / تفکیک شده است. در مقایسه با پیام های خطی، تاپیک های MQTT بسیار سبک هستند. broker هر تاپیکی را بدون نیاز به تعریف پیش نیاز قبول می‌کند.


payload


در یک تعریف کلی یک رشته String از کاراکترها می‌باشد و کارهای که قرار است در طول اجرای پروژه اتمام و انجام گردد را توصیف می‌کند. به عنوان مثال دستور اجرایی ما همانند زیر است:

Action: Bedroom – Turn on light

پیام ارسالی :

 

درک موضوع

تصور کنید توسط یک برد nodemcu و سنسور اندازه گیری دما و رطوبت میخواهید دیتا توسط پروتکل MQTT به نرم افزار Node-RED ارسال گردد. قدم اول شناسایی publish و Subscribe است. در این مثال برد Nodemcu در نقش Subscribe و نرم افزار Node-RED و محیط گرافیکی آن در نقش Publish می‌باشد. در معرفی Subscribe تاپیک مربوط به کنترل پارامترهای اندازه گیری را مینویسیم و سپس نتیجه را در محیط گرافیکی ساخته شده به صورت publish دریافت می‌کنیم. پس از آن نیاز داریم که دیتا ذخیره گردد. در این خصوص دیتاهای دریافتی در دیتابیس ذخیره می‌گردد. در ادامه با اجرای آموزش های پروژه محور با ایجاد تاپیک های مختلف و ارسال دیتا از طریق mqtt بیشتر آشنا خواهیم شد.

 


 

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

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

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

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۴ دیدگاه