پشت یک دکمه ساده چه اتفاقی میافتد؟
فرض کنید یک پمپ آب داخل گلخانهای نصب شده که چند کیلومتر با شما فاصله دارد.
بهجای اینکه برای روشن کردن پمپ به گلخانه بروید، موبایل خود را باز میکنید، وارد داشبورد میشوید و دکمه **روشن کردن** را میزنید.
چند لحظه بعد پمپ شروع به کار میکند.
از نگاه کاربر همهچیز بسیار ساده است؛ اما پشت همین دکمه، چند سیستم مختلف باید با یکدیگر ارتباط برقرار کنند.
این دقیقاً یکی از پایههای اصلی اینترنت اشیاست: ایجاد ارتباط میان تجهیزات فیزیکی و نرمافزار، به شکلی که بتوان آنها را از راه دور مانیتور و کنترل کرد.
مرحله اول؛ دستگاه باید بتواند با اینترنت ارتباط برقرار کند
همهچیز از سختافزار شروع میشود.
یک میکروکنترلر مانند ESP32 یا بردهای مشابه میتواند به سنسورها، رلهها، موتورهای الکتریکی و تجهیزات مختلف متصل شود.
این کنترلر در واقع نقش واسط میان دنیای فیزیکی و نرمافزار را دارد.
برای مثال ممکن است دمای محیط را از یک سنسور دریافت کند یا رله متصل به یک پمپ را روشن و خاموش کند.
اما خواندن سنسور یا فعال کردن رله بهتنهایی یک سیستم IoT نمیسازد. دستگاه باید بتواند این اطلاعات را به یک زیرساخت مرکزی ارسال کند و فرمانهای جدید را نیز دریافت کند.
مرحله دوم؛ دستگاه وارد شبکه IoT میشود
در سیستمهای اینترنت اشیا معمولاً از پروتکلهایی استفاده میشود که برای ارتباط سریع و سبک میان دستگاهها طراحی شدهاند.
یکی از شناختهشدهترین آنها MQTT است.
در این مدل، بهجای اینکه دستگاه دائماً درخواستهای سنگین HTTP ارسال کند، پیامهای کوچک از طریق یک MQTT Broker ردوبدل میشوند.
برای مثال دستگاه میتواند منتظر دریافت فرمان روی مسیری شبیه این باشد:
`device/123/pump/set`
اگر سرور پیام `ON` را روی این مسیر ارسال کند، کنترلر آن را دریافت کرده و رله پمپ را فعال میکند.
این معماری بهخصوص زمانی اهمیت پیدا میکند که تعداد دستگاهها زیاد باشد و سیستم نیاز به ارتباط سریع و مداوم داشته باشد.
مرحله سوم؛ کاربر فرمان را از داشبورد ارسال میکند
حالا کاربر وارد پنل تحت وب یا اپلیکیشن میشود.
دستگاه خود را مشاهده میکند و روی گزینه روشن کردن پمپ میزند.
در اینجا اپلیکیشن مستقیماً با پمپ صحبت نمیکند.
ابتدا درخواست به بکاند پلتفرم ارسال میشود.
سرور اطلاعات مختلفی را بررسی میکند:
پس از بررسی این موارد، فرمان مناسب برای دستگاه ارسال میشود.
مرحله چهارم؛ فرمان تبدیل به یک اتفاق واقعی میشود
کنترلر فرمان را دریافت میکند و بر اساس برنامهای که روی آن اجرا شده، تصمیم میگیرد چه عملیاتی انجام دهد.
برای مثال:
`ON` → فعال کردن رله
`OFF` → غیرفعال کردن رله
`SET_SPEED:70` → تنظیم سرعت موتور روی ۷۰ درصد
در همین نقطه یک فرمان نرمافزاری تبدیل به یک اتفاق واقعی در دنیای فیزیکی میشود.
شاید همین ویژگی جذابترین بخش اینترنت اشیا باشد؛ اینکه یک دستور دیجیتال میتواند روی تجهیزی در کیلومترها فاصله اثر بگذارد.
مرحله پنجم؛ دستگاه باید وضعیت جدید را گزارش کند
یک سیستم IoT حرفهای نباید صرفاً فرض کند که فرمان با موفقیت اجرا شده است.
بعد از انجام عملیات، دستگاه میتواند وضعیت جدید خود را دوباره برای پلتفرم ارسال کند.
مثلاً:
داشبورد نیز همین اطلاعات را به کاربر نمایش میدهد.
در نتیجه کاربر فقط فرمان ارسال نمیکند؛ بلکه میتواند نتیجه واقعی اجرای آن را نیز مشاهده کند.
این چرخه بازخورد یکی از تفاوتهای مهم میان یک سیستم کنترل ساده و یک زیرساخت IoT قابلاعتماد است.
اینترنت اشیا فقط برای روشن و خاموش کردن نیست
کنترل تجهیزات تنها یکی از قابلیتهای اینترنت اشیاست.
وقتی دستگاهها بهصورت مداوم اطلاعات ارسال میکنند، داده ارزشمند دیگری نیز در اختیار کسبوکار قرار میگیرد.
فرض کنید سنسور دما هر چند دقیقه یکبار اطلاعات محیط را ثبت کند.
در این حالت بهجای اینکه فقط دمای فعلی را ببینید، میتوانید نموداری از تغییرات دما در طول روز، هفته یا ماه داشته باشید.
همین موضوع برای اطلاعات مختلف قابل استفاده است:
در واقع دستگاه متصل به اینترنت به یک منبع دائمی داده تبدیل میشود.
مرحله بعدی؛ اتوماسیون
وقتی کنترل از راه دور و دریافت اطلاعات در کنار یکدیگر قرار بگیرند، مرحله جذابتری آغاز میشود: اتوماسیون.
برای مثال میتوان قانونی تعریف کرد:
اگر دمای محیط از ۳۵ درجه بیشتر شد، سیستم تهویه بهصورت خودکار روشن شود.
یا:
اگر سطح آب مخزن از مقدار مشخصی کمتر شد، پمپ فعال شود و همزمان یک هشدار برای مدیر ارسال شود.
در چنین سیستمی دیگر لازم نیست کاربر دائماً داشبورد را بررسی کند.
سیستم بر اساس دادهها تصمیم میگیرد و عملیات مشخصی را اجرا میکند.
چالش اصلی از جایی شروع میشود که تعداد دستگاهها افزایش پیدا میکند
ساخت یک نمونه آزمایشی با یک برد و یک سنسور معمولاً کار پیچیدهای نیست.
چالش زمانی آغاز میشود که قرار باشد دهها، صدها یا هزاران دستگاه به سیستم متصل شوند.
در این مرحله زیرساخت باید بتواند بخشهای مختلفی را مدیریت کند:
اگر قرار باشد تمام این بخشها برای هر پروژه از ابتدا ساخته شوند، توسعه یک محصول IoT میتواند زمانبر و پرهزینه شود.
سوکت؛ لایه ارتباطی میان سختافزار و نرمافزار
سوکت با هدف سادهتر کردن همین مسیر طراحی شده است.
بهجای اینکه توسعهدهنده یا کسبوکار برای هر پروژه تمام زیرساخت ارتباط با تجهیزات را از ابتدا ایجاد کند، دستگاهها میتوانند به یک پلتفرم مرکزی متصل شوند.
در این ساختار میتوان دستگاهها را مدیریت کرد، اطلاعات سنسورها را دریافت کرد، عملیات مختلف برای هر دستگاه تعریف کرد و از طریق پنل تحت وب یا اپلیکیشن تجهیزات را کنترل کرد.
هدف این است که مسیر بین سختافزار و نرمافزار سادهتر شود:
**دستگاه را متصل کنید، داده را دریافت کنید، عملیات تعریف کنید و از راه دور کنترل داشته باشید.**
این موضوع به تیمهای توسعه اجازه میدهد بهجای صرف زمان برای ساخت دوباره زیرساخت IoT، بیشتر روی محصول اصلی و کاربرد واقعی دستگاه خود تمرکز کنند.
از یک فرمان ساده تا یک سیستم متصل
وقتی در یک داشبورد دکمهای را فشار میدهید و چند لحظه بعد دستگاهی در کیلومترها دورتر واکنش نشان میدهد، چیزی که مشاهده میکنید فقط آخرین بخش یک زنجیره بزرگ است.
پشت آن دکمه، سختافزار، پروتکل ارتباطی، سرور، API، سیستم احراز هویت و جریان لحظهای داده در حال همکاری هستند.
قدرت یک پلتفرم IoT دقیقاً در همین نقطه مشخص میشود؛ اینکه تمام این پیچیدگیها را در پشت صحنه مدیریت کند و در نهایت تجربهای ساده برای کاربر بسازد.