اپلیکیشنهای وان پلتفرم
Mosquitto
Mosquitto چیست و چه نقشی در MQTT دارد؟
Eclipse Mosquitto یا موسکیتو، یک واسط پیام متنباز برای پروتکل MQTT است. دستگاه یا برنامه پیام را روی یک موضوع منتشر میکند و دریافتکنندگان عضو آن موضوع، پیام را میگیرند. این الگوی انتشار و اشتراک برای ارتباط میان اجزایی مفید است که لازم نیست مستقیماً از نشانی و وضعیت یکدیگر خبر داشته باشند.
در پروژهٔ اینترنت اشیا، حسگر میتواند مقدار اندازهگیریشده را ارسال کند و برنامهٔ جداگانه آن را دریافت کند. Mosquitto مسیر تبادل را فراهم میکند، اما بهتنهایی سامانهٔ کامل ذخیرهسازی تاریخی، نمایش نمودار یا مدیریت تجهیزات نیست. نقش این اجزا باید در طرح مشخص باشد تا پس از نصب واسط، انتظار آماده بودن کل محصول ایجاد نشود.
یک نمونهٔ ساده از دریافت دادهٔ حسگر
فرض کنید چند حسگر دما در ساختمانهای مختلف دارید. هر دستگاه شناسهای مشخص دارد و مقدار را در مسیر موضوعی مربوط به خودش میفرستد. یک برنامهٔ دریافتکننده میتواند پیامها را اعتبارسنجی کند و در دیتابیس ثبت کند. داشبورد نیز اطلاعات را از همان محل ذخیرهسازی میخواند. این تفکیک کمک میکند تغییر ظاهر داشبورد، روش اتصال همهٔ دستگاهها را عوض نکند.
برای دادهٔ دریافتی، واحد اندازهگیری و زمان ثبت را روشن کنید. عددی که بدون توضیح ارسال میشود ممکن است در دو دستگاه معنای متفاوتی داشته باشد. بهتر است قالب پیام، فیلدهای لازم و رفتار در برابر مقدار نامعتبر از ابتدا ثبت شوند. یک قرارداد کوچک و روشن از اصلاح تعداد زیادی دستگاه پس از رشد پروژه سادهتر است.
نامگذاری موضوعها و مجوز دستگاهها
موضوعها را با ساختاری قابل گسترش طراحی کنید؛ برای نمونه، ابتدا پروژه و سپس شناسهٔ دستگاه و نوع داده قرار بگیرد. هدف این است که دریافتکننده بتواند مجموعهٔ مرتبط را انتخاب کند بدون اینکه اطلاعات پروژههای دیگر ناخواسته وارد پردازش شود. قبل از نهایی کردن ساختار، چند دستگاه و چند نوع پیام متفاوت را در یک محیط آزمایشی اجرا کنید.
احراز هویت و مجوز انتشار یا دریافت باید متناسب با هر دستگاه باشد. لازم نیست حسگری که فقط مقدار دما میفرستد بتواند فرمانهای همهٔ تجهیزات را بخواند یا تغییر دهد. اطلاعات اتصال مشترک برای همهٔ دستگاهها، بازبینی و قطع دسترسی یک تجهیز را دشوار میکند. از ارتباط رمزگذاریشده و روش احراز هویت متناسب با توان دستگاه استفاده کنید.
قطع ارتباط، پیام قدیمی و اجرای دوباره
اینترنت دستگاه ممکن است برای مدتی قطع شود. پیش از راهاندازی، تعیین کنید در این فاصله داده کجا نگهداری میشود و پس از اتصال چه چیزی ارسال خواهد شد. تنظیمات نشست، ماندگاری و کیفیت تحویل باید با رفتار کلاینت هماهنگ باشند. صرف انتخاب یک گزینه در واسط، تضمین نمیکند کل فرایند کسبوکار دقیقاً یک بار اجرا شود.
برای فرمانی که اثر عملی دارد، دریافت دوباره یا دیرهنگام را جدی بگیرید. پیشنهاد میشود شناسه، زمان اعتبار و روش تأیید نتیجه در طراحی فرمان وجود داشته باشد. در آزمایش، اتصال را عمداً قطع و برقرار کنید و ببینید دستگاه چه کاری انجام میدهد. نمایش آخرین مقدار شناختهشده نیز باید از دادهٔ تازه قابل تشخیص باشد تا وضعیت قدیمی با وضعیت فعلی اشتباه نشود.
سرور مناسب برای Mosquitto
برای استقرار اولیه میتوانید پلنهای سرور مجازی لینوکس را بررسی کنید. تعداد اتصالهای همزمان، نرخ انتشار، اندازهٔ پیام و تعداد دریافتکنندگان روی مصرف منابع اثر دارند. یک پیام که به افراد زیادی تحویل میشود بار متفاوتی از پیامی دارد که فقط یک مصرفکننده میگیرد. نیاز دیسک نیز به تنظیمات نگهداری وابسته است.
اگر موضوع اصلی پروژه پردازش کارهای پسزمینه میان سرویسهاست، کاربرد RabbitMQ را هم در مرحلهٔ طراحی بررسی کنید. انتخاب واسط باید با پروتکل دستگاهها، الگوی تحویل و توان نگهداری تیم هماهنگ باشد. مشابه بودن واژهٔ پیام در معرفی دو ابزار، به معنی یکسان بودن معماری مناسب آنها نیست.
چه چیزی را پس از نصب زیر نظر بگیریم؟
فقط روشن بودن سرویس کافی نیست. تعداد اتصال، قطعووصل پرتکرار و روند ورود داده را بررسی کنید. ممکن است واسط فعال باشد اما بخشی از دستگاهها به دلیل تغییر رمز یا مشکل شبکه هیچ پیامی نفرستند. برای هر گروه دستگاه، انتظار مشخصی از زمان آخرین داده داشته باشید تا خاموشی بیصدا قابل تشخیص شود.
هنگام بهروزرسانی، نمونهای از کلاینتهای واقعی را آزمایش کنید. دستگاه قدیمی و برنامهٔ جدید ممکن است قابلیتها و تنظیمات متفاوتی داشته باشند. نسخهٔ پشتیبان تنظیمات و اطلاعات لازم برای بازیابی را جدا نگه دارید و روند تعویض گواهی یا اطلاعات اتصال را پیش از انقضا برنامهریزی کنید. این کار از قطع ناگهانی تعداد زیادی دستگاه جلوگیری میکند.
آمادهسازی درخواست راهاندازی
تعداد دستگاهها، نوع کلاینت، موقعیت اتصال، حدود پیام در ثانیه و نیاز نگهداری را مشخص کنید. اگر قرار است فرمان هم ارسال شود، مسیر آن را از دادهٔ اندازهگیری جدا توضیح دهید. برای درخواست نصب در وان پلتفرم از دکمهٔ نصب و استفاده وارد ناحیهٔ کاربری شوید. توسعهٔ برنامهٔ دستگاه و داشبورد، بخش جداگانهای از پروژه است و با نصب واسط بهصورت خودکار آماده نمیشود.
سوالات متداول
آیا Mosquitto نمودار و پنل کامل اینترنت اشیا دارد؟
نقش اصلی آن تبادل پیام MQTT است. ذخیرهسازی تاریخی، داشبورد و قواعد اختصاصی پردازش باید در اجزای دیگر یا ابزارهای مکمل پروژه آماده شوند.
آیا همهٔ دستگاهها میتوانند از یک حساب استفاده کنند؟
ممکن است از نظر پیادهسازی انتخاب شود، اما مدیریت دسترسی مستقل معمولاً کنترل بهتری میدهد. طراحی را با تعداد تجهیزات و توان نگهداری هماهنگ کنید.
آیا نصب روی یک سرور کوچک برای همیشه کافی است؟
ظرفیت به الگوی واقعی پیام و اتصال بستگی دارد. پس از شروع، مصرف و رشد پروژه را اندازه بگیرید و بر همان اساس ارتقا دهید.
آیا خرید سرور شامل برنامهنویسی دستگاههاست؟
نباید چنین فرضی داشت. نصب سرویس، تنظیم اتصال، توسعهٔ کلاینت و ساخت منطق محصول کارهای متفاوتی هستند و محدودهٔ هرکدام باید مشخص شود.
زیرساخت مناسب برای راهاندازی را انتخاب کنید
پلنها و منابع سرور را متناسب با نیاز نرمافزار و پروژهٔ خود مقایسه کنید.