بهروزرسانیهای میانافزار و نرمافزار از طریق هوا (OTA)
مرورکلی
از نسخه ThingsConnect 3.3 کاربر قادر است بهروزرسانیهای OTA را در دستگاهها آپلود و توزیع کنید. به عنوان یک مدیر تننت، میتوانید بستههای firmware یا نرمافزار را در مخزن OTA آپلود کنید. پس از آپلود، می توانید آنها را به پروفایل دستگاه یا خود دستگاه اختصاص دهید. ThingsConnect دستگاهها را در مورد بهروزرسانی موجود مطلع میکند و یک API مخصوص پروتکل برای دانلود firmware ارائه میکند. این پلتفرم وضعیت بهروزرسانی را دنبال میکند و تاریخچه بهروزرسانیها را ذخیره میکند. به عنوان یک کاربر پلتفرم، میتوانید فرآیند بهروزرسانی را با استفاده از داشبورد نظارت کنید.
بسته OTA را به مخزن ThingsConnect اضافه کنید
برای فهرست کردن و آپلود بستههای بهروزرسانی OTA، به آیتم منوی «بهروزرسانیهای OTA» بروید. هر بسته شامل:
- عنوان – نام بسته شما. شما می توانید از نام های مختلف برای تولید و رفع اشکال firmware/نرم افزار استفاده کنید.
- نسخه – نسخه بسته شما. ترکیب عنوان و نسخه باید از نظر محدوده یک تننت منحصر به فرد باشد.
- پروفایل دستگاه – هر بسته با یک پروفایل دستگاه سازگار است. ما سازگاری را دنبال میکنیم تا از بهروزرسانی تصادفی دستگاههای دارای firmware/نرمافزار ناسازگار جلوگیری کنیم. پیوند به پروفایل دستگاه به این معنی است که دستگاهی که از این پروفایل استفاده می کند ممکن است به بسته فعلی به روز شود. با این حال، تا زمانی که کاربر یا اسکریپت بسته را به پروفایل دستگاه یا دستگاه اختصاص دهد، بهروزرسانی فعال نمیشود.
- نوع – می تواند firmware یا نرم افزار باشد.
- الگوریتم checksum – پارامتر اختیاری است. نام کوتاهی از الگوریتم checksum برای استفاده است.
- Checksum – پارامتر اختیاری، این یک مقدار از checksum فایل است. اگر جمع کنترلی توسط کاربر ارائه نشود، سرور به طور خودکار از الگوریتم SHA-256 استفاده می کند.
- توضیحات – توضیحات متنی اختیاری سیستم عامل.
می توانید بسته های ارائه شده را مرور کنید و همچنین آنها را بر اساس عنوان جستجو کنید. همچنین می توانید بسته ها را دانلود و حذف کنید. برای باز کردن جزئیات بسته، روی ردیف جدول کلیک کنید. جزئیات بسته به شما امکان میدهد شناسه بسته و checksum را کپی کنید. همچنین، گزارشهای حسابرسی اطلاعات مربوط به کاربرانی که firmware را تهیه کردهاند را دنبال میکنند.
همه اقدامات فهرست شده از طریق REST API نیز در دسترس هستند.
firmware در مقابل نرم افزار
تفاوت بسیار جزئی بین اجرای FOTA و SOTA در هسته ThingsConnect وجود دارد. بسیاری از موارد استفاده و برنامه های کاربردی فقط باید از FOTA استفاده کنند. با این حال، دستگاههای LwM2M بهروزرسانیهای FOTA و SOTA را متفاوت پردازش میکنند.
بسته OTA را به پروفایل دستگاه اختصاص دهید
میتوانید firmware/نرمافزار را به پروفایل دستگاه اختصاص دهید تا بسته بهطور خودکار در همه دستگاههایی که پروفایل مشترک دارند توزیع شود. اسکرین شات های زیر را ببینید.
جزئیات پروفایل دستگاه به شما این امکان را میدهد که فقط بستههای بهروزرسانی OTA سازگار را انتخاب کنید (برای اطلاعات بیشتر به تهیهکننده مراجعه کنید). پروفایل دستگاه ممکن است توسط هزاران دستگاه استفاده شود. تخصیص firmware/نرمافزار فرآیند بهروزرسانی را آغاز میکند.
بسته OTA را به دستگاه اختصاص دهید
همچنین می توانید firmware/نرم افزار را به دستگاه خاصی اختصاص دهید. اسکرین شات های زیر را ببینید.
نسخه firmware که به دستگاه اختصاص داده شده است، بهطور خودکار روی نسخه firmware ای را که به پروفایل دستگاه اختصاص داده شده است، بازنویسی میکند. برای مثال، فرض کنید دستگاههای D1 و D2 را دارید که پروفایلP1 دارند:
- اگر پکیج F1 را به پروفایل P1 اختصاص دهید (از طریق UI جزئیات پروفایل یا REST API)، دستگاههای D1 و D2 به F1 بهروزرسانی میشوند.
- اگر پکیج F2 را به دستگاه D1 اختصاص دهید (از طریق UI جزئیات دستگاه یا REST API)، دستگاه D1 به F2 به روز می شود.
- تخصیص بعدی پکیج F3 به Profile P1 تنها بر روی D2 تأثیر می گذارد، زیرا هیچ نسخه firmware خاصی در سطح دستگاه اختصاص داده نشده است. بنابراین، D2 به F3 به روز می شود، در حالی که D1 همچنان از F2 استفاده می کند.
مشتریان ممکن است firmware موجود را انتخاب کرده و آن را به دستگاههای متعلق به خود اختصاص دهند. با این حال، مشتریان نمی توانند بسته های firmware را تهیه یا مدیریت کنند.
حذف پکیج های firmware که به حداقل یک دستگاه یا پروفایل دستگاه اختصاص داده شدهاند ممنوع است.
فرآیند به روز رسانی
تخصیص firmware/نرمافزار به دستگاه یا پروفایل دستگاه، فرآیند بهروزرسانی را آغاز میکند. ThingsConnect پیشرفت بهروزرسانی را دنبال میکند و آن را به ویژگیهای دستگاه ادامه میدهد. پیشرفت بهروزرسانی ممکن است یکی از حالتهای زیر را داشته باشد. وضعیت به روز رسانی به عنوان یک ویژگی دستگاه ذخیره می شود و برای بصری کردن فرآیند به روز رسانی در داشبورد استفاده می شود.
حالت QUEUED
اولین وضعیت به روز رسانی سیستم عامل/نرم افزار. به این معنی که اعلان مربوط به سیستم عامل/نرم افزار جدید در صف قرار دارد اما هنوز به دستگاه ارسال نشده است. ThingsConnect اعلانهای بهروزرسانی را در صف میگذارد تا از بارگیری بیش از اندازه جلوگیری کند. صف با سرعت ثابت پردازش می شود. به طور پیش فرض، پیکربندی شده است تا حداکثر 100 دستگاه در دقیقه را مطلع کند. برای جزئیات بیشتر به ویژگی های پیکربندی مراجعه کنید.
حالت آغاز شده(INITIATED)
به این معنی که اعلان مربوط به سیستم عامل/نرم افزار از صف واکشی شده و به دستگاه منتقل می شود. ThingsConnect اعلان را بهروزرسانی ویژگیهای مشترک زیر تبدیل میکند:
- fw(sf)_title – نام firmware (نرم افزار).
- fw(sf)_version – نسخه firmware (نرم افزار).
- fw(sf)_size – اندازه فایل firmware (نرم افزار) بر حسب بایت.
- fw(sf)_checksum – مشخصه ای است که برای تأیید صحت فایل دریافتی استفاده می شود.
fw(sf)_checksum_algorithm – الگوریتمی که برای محاسبه checksum فایل استفاده میشود.
دستگاه میتواند با استفاده از MQTT، HTTP، CoAP یا LwM2M API عضو بهروزرسانی ویژگی مشترک شود.
به روز رسانی وضعیت های گزارش شده توسط دستگاه
وضعیتهای باقیمانده توسط firmware/نرمافزار دستگاهی که در حال پردازش بهروزرسانی است، گزارش میشود. ما شرحی از آن حالت ها و نمونه برنامه های کاربردی را برای محبوب ترین پروتکل های نوشته شده در پایتون آماده کرده ایم. برنامه های کاربردی نمونه رفتار firmware/نرم افزار دستگاه را شبیه سازی می کنند و ممکن است به عنوان مرجعی برای پیاده سازی استفاده شوند.
- دانلود – اعلان در مورد به روز رسانی سیستم عامل/نرم افزار جدید دریافت شد و دستگاه شروع به دانلود پکیج به روز رسانی کرد.
- دانلود شده – دستگاه بارگیری پکیج به روز رسانی را کامل کرد.
- تأیید شده – دستگاه checksum پکیج دانلود شده را تأیید کرد.
- به روز رسانی – دستگاه به روز رسانی firmware/نرم افزار را شروع کرد. معمولاً قبل از راه اندازی مجدد دستگاه یا راه اندازی مجدد سرویس ارسال می شود.
- به روز شد – سیستم عامل با موفقیت به نسخه بعدی به روز شد.
- ناموفق – checksum تأیید نشد، یا دستگاه بهروزرسانی نشد. برای جزئیات بیشتر به برگه «شکست دستگاه» در داشبورد Firmware مراجعه کنید.
پس از بهروزرسانی firmware/نرمافزار، ThingsConnect انتظار دارد دستگاه تلهمتری زیر را ارسال کند:
برای firmware:
{"current_fw_title": "myFirmware", "current_fw_version": "1.2.3", "fw_state": "UPDATED"}
برای نرم افزار:
{"current_sw_title": "mySoftware", "current_sw_version": "1.2.3", "sw_state": "UPDATED"}
اگر بهروزرسانی firmware/نرمافزار ناموفق بود، ThingsConnect انتظار دارد دستگاه تلهمتری زیر را ارسال کند:
برای firmware:
{"fw_state": "FAILED", "fw_error": "the human readable message about the cause of the error"}
برای نرم افزار:
{"sw_state": "FAILED", "sw_error": "the human readable message about the cause of the error"}
HTTP
برای نصب کتابخانه های HTTP و checksum دستور زیر را در ترمینال اجرا کنید:
pip3 install requests mmh3 --user
مسیر پوشه کلاینت را در ترمینال وارد کنید و دستور زیر را برای ThingsConnect اجرا کنید تا اسکریپت نمونه firmware را دریافت کنید:
python3 http_firmware_client.py
نمونه مشتری HTTP را دانلود کنید: http_firmware_client.py(لینک دانلود)
پس از دریافت پیام های زیر:
- Please write your ThingsConnect host or leave it blank to use default (localhost):
- از لوکال هاست خود استفاده کنید یا آدرس پلتفرم
- Please write your ThingsConnect port or leave it blank to use default (8080):
– شما می توانید با فشردن کلید enter ادامه دهید یا شماره پورت خود را وارد کنید.
- Please write accessToken for device:
– access token را از TB کپی کرده و درون ترمینال past کنید.
- Please write firmware chunk size in bytes or leave it blank to get all firmware by request:
– اگر خالی گذاشته شود، فایل دانلودی به یکباره به صورت سایز کامل دانلود خواهد شد. اگر شما بخواهید می توانید دانلود را به صورت بخش به بخش انجام دهید.
سیستم عامل دستگاه به روز شده است. برای مشاهده وضعیت آن، باید به داشبورد سیستم عامل همانطور که در پاراگراف زیر نشان داده شده است بروید. برای اطلاع از بهروزرسانی firmware، باید درخواستی ارسال کنید و در ویژگیها عضو شوید.
MQTT
برای نصب کتابخانه های mqtt و checksum دستور زیر را در ترمینال اجرا کنید:
pip3 install paho-mqtt mmh3 --user
مسیر پوشه کلاینت را در ترمینال وارد کنید و دستور زیر را برای ThingsConnect اجرا کنید تا اسکریپت نمونه firmware را دریافت کنید:
python3 mqtt_firmware_client.py
نمونه مشتری mqtt را دانلود کنید: mqtt_firmware_client.py(لینک دانلود)
پس از دریافت پیام های زیر:
- Please write your ThingsConnect host or leave it blank to use default (localhost):
- از لوکال هاست خود استفاده کنید یا آدرس پلتفرم
- Please write your ThingsConnect port or leave it blank to use default (1883):
– شما می توانید با فشردن کلید enter ادامه دهید یا شماره پورت خود را وارد کنید.
- Please write accessToken for device:
– access token را از TB کپی کرده و درون ترمینال past کنید.
- Please write firmware chunk size in bytes or leave it blank to get all firmware by request:
– اگر خالی گذاشته شود، فایل دانلودی به یکباره به صورت سایز کامل دانلود خواهد شد. اگر شما بخواهید می توانید دانلود را به صورت بخش به بخش انجام دهید.
سیستم عامل دستگاه به روز شده است. برای مشاهده وضعیت آن، باید به داشبورد سیستم عامل همانطور که در پاراگراف زیر نشان داده شده است بروید. برای اطلاع از بهروزرسانی firmware، باید درخواستی ارسال کنید و در ویژگیها عضو شوید.
CoAP
برای نصب کتابخانه های mqtt و checksum دستور زیر را در ترمینال اجرا کنید:
pip3 install asyncio aiocoap mmh3 --user
مسیر پوشه کلاینت را در ترمینال وارد کنید و دستور زیر را برای ThingsConnect اجرا کنید تا اسکریپت نمونه firmware را دریافت کنید:
python3 coap_firmware_client.py
نمونه مشتری CoAP را دانلود کنید: CoAP_firmware_client.py
پس از دریافت پیام های زیر:
- Please write your ThingsConnect host or leave it blank to use default (localhost):
- از لوکال هاست خود استفاده کنید یا آدرس پلتفرم
- Please write your ThingsConnect port or leave it blank to use default (5683):
– شما می توانید با فشردن کلید enter ادامه دهید یا شماره پورت خود را وارد کنید.
- Please write accessToken for device:
– access token را از TB کپی کرده و درون ترمینال past کنید.
- Please write firmware chunk size in bytes or leave it blank to get all firmware by request:
– اگر خالی گذاشته شود، فایل دانلودی به یکباره به صورت سایز کامل دانلود خواهد شد. اگر شما بخواهید می توانید دانلود را به صورت بخش به بخش انجام دهید.
سیستم عامل دستگاه به روز شده است. برای مشاهده وضعیت آن، باید به داشبورد سیستم عامل همانطور که در پاراگراف زیر نشان داده شده است بروید. برای اطلاع از بهروزرسانی firmware، باید درخواستی ارسال کنید و در ویژگیها عضو شوید.
داشبورد
ThingsConnect خلاصهای از بهروزرسانی firmware/نرمافزار را برای نظارت و ردیابی وضعیت بهروزرسانی firmware/نرمافزار دستگاه شما ارائه میکند، مانند اینکه کدام دستگاهها در حال بهروزرسانی هستند، هر گونه مشکل بوت، و کدام یک قبلاً بهروزرسانی شدهاند.
داشبورد مانیتورینگ به روز رسانی سیستم عامل
داشبورد بهطور خودکار برای هر تننت جدیدی که به ThingsConnect اضافه میکنید ایجاد میشود. همچنین میتوانید JSON داشبورد را دانلود کرده:
https://github.com/thingsboard/thingsboard/blob/master/application/src/main/data/json/demo/dashboards/firmware.json
و آن را برای تننت موجود وارد کنید. در آنجا می توانید لیستی از تمام دستگاه ها را با اطلاعات کامل در مورد سیستم عامل آنها مشاهده کنید.
برای اطلاع از وضعیت بهروزرسانی firmware دستگاه خاص، روی دکمه «History of the firmware updates» در کنار نام دستگاه کلیک کنید.
به روز رسانی نرم افزار داشبورد مانیتورینگ
داشبورد بهطور خودکار برای هر تننت جدیدی که به ThingsConnect اضافه میکنید ایجاد میشود. همچنین میتوانید JSON داشبورد را دانلود کرده و آن را برای تننت موجود وارد کنید.
https://github.com/thingsboard/thingsboard/blob/master/application/src/main/data/json/demo/dashboards/software.json
در آنجا می توانید لیستی از تمام دستگاه ها را با اطلاعات کامل در مورد نرم افزار آنها مشاهده کنید. برای اطلاع از وضعیت بهروزرسانی نرمافزار دستگاه خاص، روی دکمه «سابقه بهروزرسانیهای نرمافزار» در کنار نام دستگاه کلیک کنید.
پیکربندی
سرعت پردازش صف: برای تنظیم حداکثر تعداد دستگاه هایی که در بازه زمانی انتخاب شده با استفاده از ویژگی های پیکربندی زیر مطلع می شوند:
export TB_QUEUE_CORE_FW_PACK_INTERVAL_MS=60000 export TB_QUEUE_CORE_FW_PACK_SIZE=100
تنظیم حداکثر اندازه
به طور پیش فرض، حداکثر اندازه firmware که می توانیم در پایگاه داده ذخیره کنیم 2 گیگابایت است. نمی توان آن را پیکربندی کرد.