اینترنت اشیاء, توصیه شده, نرم افزار های الکترونیک

اینترنت اشیاء را اهلی کن!- قسمت اول

توابع رایگان اینترنت اشیاء

من میثم هستم، احتمالا تنها نویسنده سیسوگ که از دنیای نرم افزار اومده!

قبلا اینجا  چندتایی مطلب درباره آردوینو نوشتم اما خوب فرصت کم و فیدبک ناکافی باعث شد که حداقل فعلا نتونم ادامه اش بدم.

مدتی پیش تصمیم گرفتم چالش جدیدی برای خودم ایجاد کنم و بعد به این نتیجه رسیدم شاید این چالش برای بعضی‌ها بتونه ابزاری باشه که جایی کمکشون کنه.

 

تعریف پروژه

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

طبیعتاً این سرویس کمی فاصله داره با چیزی که به صورت فنی بشه بهش گفت « سرویس اینترنت اشیاء « اما فعلاً ما به همین اسم صداش میزنیم!

 

این سرویس اینترنت اشیاء چکاری قراره انجام بده؟
فرض کنید یک Gsm Modem دارید که قراره اطلاعات دما و رطوبت و طول و عرض جغرافیایی که از  GPS گرفتید رو  بفرسته به  سروری و اونجا نمایش بدیم.

  • چطور ارسال میکنید؟
  • و چطور نمایش میدید؟

ما قراره در این مقاله و قسمت دوم اون دو پروژه رو معرفی کنیم که با ترکیب این دو بتونید دو مشکل بالا رو حل کنید!

هرچند پروژه فعلاً در مقیاس کوچکی تعریف شده اما میتونه پایه و اساس پروژه های بزرگی باشه که در این حیطه میتونند کاربرد داشته باشند.

 

خطر تخصصی شدن مطلب!


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

 

چالش

چرا این پروژه برای من چالش بود؟
من یک فریم‌ورک به اسم Net Core. رو انتخاب کردم برای ساختن این پروژه.

اولین نسخه این فریم ورک اواسط 2016 توسط مایکروسافت ریلیز شد(که مشخصاً از دنیای .Net اومده) اما خوشبختانه Cross-Platform هست به این معنی که شما اگه تمایل داشته باشید میتونید روی سروری با سیستم عامل لینوکس، ویندوز و یا حتی mac os اون رو نصب کنید، عالی نیست؟

گیت هاب و مایکروسافت

و جهت یادآوری باید بگم که Net. سالها به عنوان انحصار ویندوز و اون هم فقط در شرایطی که قبل از اجرا کل فریمورک Net. رو نصب میکردید قابل اجرا بود و همچین انقلابی مثل اینه که ژنرال باتیستا بیاد در کنار چه‌گوارا ضد سرمایه‌داری مبارزه کنه!

(البته نه به این شدت! اما مهم اینه که در حال حاضر مایکروسافت بزرگترین حمایت کننده و انتشار دهنده متن باز در دنیاست!)

اما قسمت چالش برای من این بود که برای اولین بار می‌خواستم یک محصول ذاتاً ویندوزی رو با ابزار کاملاً رایگان و جدید روی لینوکس توسعه بدم، و برای اینکه بامزه تر هم بشه از دیتابیس محبوبم یعنی SQL Server جدا شدم و از Postgre که برای من تا الان ناشناس بوده استفاده کنم.

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

 

ابزارها

من توی توسعه این قسمت از پروژه از این ابزار استفاده کردم:

 

۱- طبیعتاً در مرحله اول SDK مربوط به Net Core 2.

2- VS Code به عنوان محیط توسعه پروژه

3- Postgre که همونطور که گفتم به عنوان پایگاه داده

4- Dbeaver که یکی از محیط های گرافیکی رایگان استفاده از Postgre هست و در مقایسه با PgAdmin امکانات مناسب تری داره.

5- Postman به عنوان ابزار تست API

 استفاده از Postman در اینترنت اشیاء

و البته که تمامی ابزارهای بالا نات آنی رایگان هستند بات آلسو متن باز هم هستند و میتونید روی گیت‌هاب به آسونی پیداشون کنید!

 

قابلیت ها

 

این API که حکم موتور پروژه رو داره این قابلیت‌ها رو بهتون میده:

 

  • ثبت نام و ورود
  • تعریف،ویرایش و حذف سرویس و مشخصه ها (برای مثال من سرویسی به اسم دماسنج میتونم تعریف کنم و بگم این سرویس دوتا مشخصه به اسم دما و رطوبت رو قراره از دستگاه دریافت کنه)
  • تعریف دستگاه‌ها یا کاربران که مشخص میکنه چه کسانی حق استفاده از این سرویس رو دارند.
  • متدی برای دریافت اطلاعات از دستگاه‌ها به صورت JSON و یا با استفاده از URL
  • خروجی داده‌های دریافت شده

 

 

API چیه؟ JSON از کجا بخریم و چند آمپر جریان کشی داره؟!!

 

از اونجایی که موقع توسعه پروژه میدونستم اگه قراره همه یا قسمتی از مخاطبان احتمالی اون دوستان سخت افزاری باشن، نوشتن یک API تنها، مثل حلقه قدرت توی فیلم ارباب حلقه هاست، خیلی پرکاربرده اما اگه نتونی ازش استفاده کنی نهایتاً در آتش کوه موردور میسوزه!

 

برای همین تصمیم گرفتم همزمان با تکمیل API یک پروژه دیگه رو در کنارش شروع کنم که بجای اینکه کاربر رو درگیر پیچیدگی های کار با API کنه، یه واسط کاربری فوق‌العاده بهش بده تا اون این کار رو براش انجام بده!

 

اما اگه کسی علاقه‌مند باشه میتونه با استفاده از Postman و خروجی نمونه‌ای که توی پروژه گذاشتم نحوه تست همه توابع رو ببینه و یا با مقادیر جدید امتحانش کنه.

در مورد پروژه دوم توی مقاله بعدی توضیح میدم اما اگه علاقه داشتید میتونید توضیحات بیشتر و سورس کامل این API رو اینجا روی گیت هاب من ببینید.

از اینکه مقاله رو چند بار بخونید خجالت نکشید، نظرات و سوالات شما میتونه انگیزه ای بده برای تکمیل کردن و ادامه دادن این سیستم، البته شاید هم انتظارم از مهندسین الکترونیک زیاده؟ ?

 

 

 

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

12 دیدگاه در “اینترنت اشیاء را اهلی کن!- قسمت اول

  1. Avatar for سجاد سفیدگر سجاد سفیدگر گفت:

    سلام میثم جان
    من که بسیار لذت بردم از طرح همچین موضوعاتی نرم افزاری توی سیسوگ
    امیدوارم با قدرت ادامه بدی…

    1. Avatar photo meisam گفت:

      ممنون!
      اگه استقبال بشه حتما

  2. Avatar for علی علی گفت:

    یه سوال سرویسی مثل mqtt هستش اینی که نوشتین؟

    1. Avatar photo meisam گفت:

      خیر، حداقل توی این نسخه پروتکل mqtt هنوز پشتیبانی نمیشه.

  3. Avatar for Navidhatami Navidhatami گفت:

    سلام
    من که هیچی نفهمیدم ولی بی صبرانه منتظر قسمت های بعدی هستیم چون دقیقاً روی همچین پروژه ای کار می کنیم….
    با تشکر فراوان

    1. Avatar photo meisam گفت:

      سلام
      قسمت دوم آخرین ویرایش هاش رو میگذرونه و انشالله به زودی منتشر میشه، امیدوارم که اینبار مفهوم رو تونسته باشیم تا حد ممکن ساده منتقل کنیم.

  4. Avatar for V V گفت:

    سلام
    منم آن عاشق سیم و هویه! 🙂
    راستش چیزی نفهمیدم
    کاش میشد هر موضوع و بخشی رو لینک میدادید بجایی که یه کلیتی توضیح میداد یا قبل از شروع آموزش هایی وجود داشت
    زحمت کشیدید.ممنون

    1. Avatar photo meisam گفت:

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

  5. Avatar for محمد محمد گفت:

    مثل همیشه بروز مثل همیشه عالی مثل همیشه دوست داشتنی ..ادامه بده مشتاق تر شدم
    (امضا مهندس الکترونیک)

    1. Avatar photo meisam گفت:

      ممنون!
      امیدوارم از قسمت دوم مقاله هم خوشتون بیاد

  6. Avatar for نوید نوید گفت:

    افرین!!
    هیچی نفهمیدم!!
    سره فرصت دوباره میخونم ((:

    1. Avatar photo meisam گفت:

      :))
      آماده بشید برای مقاله دوم!

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *