اینترنت اشیا IOT پلتفرم uBeac

آموزش IoT پلتفرم uBeac بخش ششم: پروتکل های ارتباطی HTTP و MQTT

getting-started-with-ubeac-iot-platform-part-six-protocol-digispark

در بخش‌های قبلی قدم به قدم برای ساخت حساب کاربری و تنظیمات اولیه پلتفرم اینترنت اشیا uBeac کامل بررسی کردیم. در این بخش روش راه اندازی و تنظیمات اولیه برای پروتکل ارتباطی را توضیح خواهیم داد. دو روش برای ارتباط با پلتفرم uBeac در نظر گرفته شده است. ارتباط بین دستگاه و uBeac از طریق پروتکل HTTP و یا MQTT برقرار می‌شود. همچنین برای برقراری ارتباط امن برای ارسال دیتا از SSL و TLS استفاده شده است. در ادامه به معرفی این دو پروتکل ارتباطی و نحوه ی استفاده از آن ها خواهیم پرداخت. در ادامه با مرجع تخصصی IoT پلتفرم uBeac به زبان فارسی، دیجی اسپارک همراه باشید.

 


پروتکل ارتباطی HTTP


پروتکل اصلی برای ارسال اطلاعات در اینترنت پروتکل HTTP است. برای تامین امینت ارسال دیتا در این بستر از SSL استفاده می‌کنیم. در پلتفرم می‌توانیم دیتاها و دیتاهای دریافتی از دستگاه را از طریق پروتکل HTTP ارسال کنیم. روند ارسال اطلاعات به سرور فقط به پروتکل منتهی نمی‌شود. بلکه متدهایی که روی پروتکل مربوطه سوار می‌شوند، هم اهمیت دارند. متدهایی که برای ارسال اطلاعات یا همان Data استفاده می‌شود:

  • GET
  • POST
  • PUT
  • PATCH

تمامی این متدها در پلتفرم uBeac پشتیبانی می‌شوند.  از این قابلیت برای ارسال ریکوئست HTTP استفاده می‌شود. برای این  منظور از مدل گیت وی single sensor استفاده کنید. سپس url دریافتی را در postman قرار دهید. سپس از متد GET, POST,PUT,PATCH برای ریکوئست انتخاب کنید. سپس نوع محتوا را در هدر درخواست خود  “application/json “مشخص کنید. HTTP یک پروتکل لایه‌ی به صورت هفت شبکه، یعنی لایه‌ی Application است که برای برقراری ارتباط بین Web Client و Web Server استفاده می‌شود. این پروتکل، با هر دو پروتکل اصلی لایه‌ی Transport، یعنی TCP و UDP سازگار است و می‌تواند بر پایه‌ی آن‌ها اتصالات را برقرار کند. در پروتکل HTTP برای نمونه یک مرورگر، درخواستی را برای سرور در قالب این پروتکل ارسال می‌کند. این درخواست می‌تواند یک Request باشد. در uBeac هر بار یک ریکوئست از سنسور و دیوایس از طریق پروتکل HTTP ارسال می‌شود.  پس از دریافت Request، سرور آن را بررسی می‌کند و براساس پارامتر‌هایی مانند در دسترس بودن Resource مورد نظر کاربر و درست بودن درخواست ارسال شده، اقدامات بعدی صورت میگیرد. برای ارسال دیتا از متد post استفاده می‌کنیم. از این متد برای ارسال یک داده به وب سرور استفاده می‌شود. برای قرار دادن داده در url از متد post استفاده می‌کنیم. برای استفاده از پروتکل HTTP از پارامترهای زیر استفاده می‌کنیم.

  • Host:اسم دامنه و یا ip address برای ارسال درخواست
  • Path :Path مسیر، محل قرار گیری Resource را در سرور مشخص میکند یا به عبارتی مسیر فایل در host compute است. مثلا اگر آدرس url ما به صورت http://digispark.hub.ubeac.io/Ladypi باشد، مسیر /Ladypi است.
  • Headers: در هدر پارامترهایی مانند نوع دیتا، متد مورد درخواست، Content-Type, Content-Length را مشخص می‌کند.
  • Content-Length به سایز Body اشاره دارد و  بایت است و Content-Type نوع مدیای ارسال شده یا mime type در Body به سرور است.
  • Body/Payload: در ریکوئست post,put,patch دیتایی است که به سرور ارسال می‌شود. ریکوئست GET به صورت معمول فاقد body است زیرا برای درخواست داده است نه ارسال دیتا

در ادامه به معرفی متدهای HTTP پرداخته شده است که بهتر است بدانید.

۱- GET Method: این متد زمانی استفاده می‌شود که Client برای دریافت یا دسترسی به یک Resource، درخواست‌ را ارسال می‌کند. از این متد برای دربافت دیتا استفاده می‌شود.

۲- HEAD Method: مشابه با متد GET است با این تفاوت که منبع مورد نظر برای کاربر استفاده نمی‌شود اما کاربر می‌تواند پاسخ سرور به یک درخواست GET را ببیند. اگر برای ارسال دیتا ضرورتی برای دریافت همه دیتاها نباشد، منطقی است که از متد HEAD استفاده کنیم.

۳- POST Method: از این متد برای ارسال دیتا به سرور Server استفاده می‌شود. اگر بخواهید دیتا از url ارسال کنید به این متد نیاز داریم.

۴- PUT Method: از این متد برای آپدیت شدن و  یا قرار دادن یک جایگزین برای یک منبع استفاده می‌شود. زمانی که کاربر URL مورد نظر خود را همراه یک منبع برای سرور ارسال می‌کند، با فرض Valid بودن درخواست کاربر، اگر منبعی در URL داده شده وجود داشته باشد، منبع ارسالی کاربر جایگزین آن می‌شود. در غیر این صورت، سرور این منبع را به عنوان منبعی جدید ایجاد می‌کند و فایل ارسالی کاربر را در آن قرار می‌دهد.

 علاوه بر آن در پلتفرم uBeac برای امنیت دیتای ارسالی اقدامات دیگری نیز صورت گرفته است که در همان صفحه ی تنظیمات Gateway امکان اضافه کردن پسورد برای url در نظر گرفته شده است.

  • استفاده از Username, Password
  • ایجاد محدودیت برای پروتکل ها
  • پشتیبانی از پروتکل های HTTP”,” HTTPS”,” MQTT” and” MQTTS
  • ایجاد محدودیت برای آی پی IP


پروتکل ارتباطی MQTT


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

برای ساخت یک گیت وی Gateway به یک URL یونیک نیاز داریم که برای ارسال دیتای سنسورها و دیوایس ها به گیت وی استفاده می‌شود.  clientID را باید برای دیوایس ها تعریف کنید تا به MQTT Broker پلتفرم uBeac متصل شود. این اسم هرجیزی میتواند باشد.

mqtt(tcp)://hub.ubeac.io/” on port “۱۸۸۳

mqtts(tcp)://hub.ubeac.io/” on port “۸۸۸۳

نیازی به تنظیم تاپیک برای MQTT Client نیست و همانند پروتکل HTTP برای پروتکل MQTT امنیت در نظر گرفته شده است. برای ارسال دیتا از دیوایس به پلتفرم از پروتکل HTTP, MQTT استفاده می‌کنیم. برای تنظیمات چگونگی روش ارسال دیتا باید در گیت وی Gateway این تتظیمات را انجام دهیم. در بخش Gateway آموزش کامل برای ساخت گیت وی توضیح داده شده است. بر روی گیت وی Gateway ساخته شده کلیک کنید. سپس وارد تنظیمات شوید.

تنظیمات پروتکل MQTT در پلتفرم اینترنت اشیا uBeac - دیجی اسپارک

 

با انتخاب یک اسم دلخواه برای Gateway یک URL با همان اسم برای پروتکل HTTP HTTPS ساخته می‌شود. همچنین با انتخاب گزینه Enable HTTP پروتکل آماده ارسال دیتا است.

انتخاب نام در پروتکل MQTT پلتفرم uBeac - دیجی اسپارک

 

تنظیمات MQTT در پلتفرم uBeac - دیجی اسپارک

 

اگر از کد آردوینو و یا رزبری پای برای ارسال دیتا به پلتفرم استفاده می‌کنید، باید در کد برنامه همین URL را برای HTTP , MQTT تعریف کنید. به همین ترتیب اقدامات نهایی برای ارسال دیتا به پلتفرم انجام شده است.

 


لوازم مورد نیاز


بردهای هوش مصنوعی و IoT

 

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

 

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

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

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

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

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

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

اروند طباطبایی

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

هرچه می آموزم میبینم که خیلی کم آموختم. علاقه به رباتیک و تکنولوژی دارم. امیدوارم بتونم دانشی را که آموخته‌ام، به روش‌های مختلفی به کاربران علاقمند منتقل کنم.

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

۱۰ دیدگاه

  • سلام خانم بلورچیان عزیز
    اموزشاتون خیلی خوبه
    اما الان نمی شه تو ubeac حساب کاربری ساخت
    چطوری مابقی چیزهایی که اموزش میدید رو انجام بدیم؟

    سوال بعدیم اینه
    تو این پلتفرم یک دیوایس اضافه می کنید
    بعدش میشه نامحدود سنسور به داشبرد اضافه کرد یا تعدادش محدوده؟
    اگه محدوده چندتاست؟

    ۳- پلفرم iot میشناسید که مثلا ۱۰ تا سنسور و نمودار و کلید فشاری رو رایگان بشه بهش اضافه کرد
    اسم پلتفرمش چیه اگر میدونید؟

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

    ممنون میشم راهنمایی بفرمایید؟

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

  • سلام
    برای ارتباط با برد Esp32 با یوبیک میشه از http و کتابخانه های esp برای ارسال دیتاها استفاده کرد؟ اگر نه جایکزین بفرمایید

    • با سلام
      بله به راحتی توسط کتابخانه های در دسترس ESP و استفاده از HTTP و کتابخانه HTTP برای بردهای ESP میتوانید از یوبیک برای دریافت داده ها ارسال کنید.

    • با سلام
      در یوبیک هر دو دسترسی HTTP , MQTT در اختیار کاربر قرار میگیرد تا بتواند به کد های نوشته شده اضافه کند.