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

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

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

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

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

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

 

تعریف پروژه

تعریف پروژه نسبتاً ساده است، ساختن یک 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 رو اینجا روی گیت هاب من ببینید.

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

 

 

 

0 نفر

پــــســنــدیـده انـد

توجه

دیدگاه ها

12 دیدگاه

  • سجاد Sdrad
    سجاد سفیدگر
    ۳ اسفند ۱۳۹۷

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

    • میثم BitBird
      meisam
      ۴ اسفند ۱۳۹۷

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

  • علی
    ۷ آذر ۱۳۹۷

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

    • میثم BitBird
      meisam
      ۷ آذر ۱۳۹۷

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

  • Navidhatami
    ۶ آذر ۱۳۹۷

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

    • میثم BitBird
      meisam
      ۶ آذر ۱۳۹۷

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

  • V
    ۵ آذر ۱۳۹۷

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

    • میثم BitBird
      meisam
      ۵ آذر ۱۳۹۷

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

  • محمد
    ۴ آذر ۱۳۹۷

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

    • میثم BitBird
      meisam
      ۵ آذر ۱۳۹۷

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

  • نوید
    ۴ آذر ۱۳۹۷

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

    • میثم BitBird
      meisam
      ۵ آذر ۱۳۹۷

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

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 3 سال پیش
راه اندازی LCD گرافیکی Nokia 1661

راه اندازی LCD گرافیکی Nokia 1661

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش
ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش
همه چیز درباره ریموت کنترل‌های هاپینگ

همه چیز درباره ریموت کنترل‌های هاپینگ

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

Zeus ‌ Zeus ‌
  • 5 سال پیش
مسابقه سوم: استخراج داده از رشته ها در زبان C

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش
مسابقه ششم: بزن میکروکنترلر را بسوزون!

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 12 ماه پیش
آموزش قدم به قدم راه اندازی NRF24L01

آموزش قدم به قدم راه اندازی NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش
ساخت ماینر با FPGA و ARM

ساخت ماینر با FPGA و ARM

چند ماهی هست که تب بیت کوین و ارزهای دیجیتال خیلی بالا رفته! چه شد که این پست را نوشتم همانطور که...

Zeus ‌ Zeus ‌
  • 3 سال پیش
کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 3 سال پیش
مسابقه چهارم: کدام حلقه سریع‌تر است؟

مسابقه چهارم: کدام حلقه سریع‌تر است؟

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

Zeus ‌ Zeus ‌
  • 2 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک