آموزش جامع BLE

UUID در BLE: تفاوت UUID16، UUID32 و UUID128 و طراحی سرویس اختصاصی

UUIDهای استاندارد و اختصاصی را بشناسید، سرویس‌های Battery و Device Information را استفاده کنید و برای محصول خود UUID128 منظم طراحی کنید.

فهرست مطالب
عکس واقعی برد ESP32 دارای ماژول ESP-WROOM-32؛ نمونهٔ سخت‌افزار سازگار با BLE.
عکس واقعی برد ESP32 دارای ماژول ESP-WROOM-32؛ نمونهٔ سخت‌افزار سازگار با BLE. عکس: Ubahnverleih؛ منبع Wikimedia Commons؛ CC0. محتوای عکس تغییر نکرده است؛ نسخهٔ نمایشی ویکی‌مدیا استفاده شده است. این عکس مستند اجرای آزمایش LCENJ نیست.
مرحله 10 از ۲۰ مسیر تسلط بر BLE

UUID هویت نوع Service، Characteristic یا Descriptor است. UUID کوتاه استاندارد را Bluetooth SIG تخصیص می‌دهد و برای قابلیت اختصاصی محصول باید از UUID128 تولیدشده و مستند استفاده کنید.

UUID16، UUID32 و UUID128

UUID16 در Base UUID بلوتوث جای می‌گیرد و برای انواع استاندارد کم‌حجم است. UUID32 کمتر رایج است. UUID128 فضای بزرگی برای شناسه اختصاصی فراهم می‌کند. نمایش متنی UUID با ترتیب بایت روی هوا یکی نیست؛ هنگام Capture به Endianness دقت کنید.

سرویس‌های استاندارد

Battery Service، Device Information، Heart Rate و Environmental Sensing قراردادهای تعریف‌شده دارند و باعث سازگاری بهتر با ابزارها می‌شوند. اگر نیاز شما با استاندارد منطبق است همان را استفاده کنید و نوع داده، واحد و بازه را مطابق مشخصات پیاده‌سازی کنید.

چه زمانی سرویس اختصاصی بسازیم؟

اگر داده یا عملیات محصول در سرویس استاندارد جا نمی‌گیرد، یک UUID128 تصادفی برای Service و UUIDهای مجزا برای Characteristicها بسازید. برای کاهش احتمال برخورد شناسه، UUID را با ابزار استاندارد تولید کنید؛ UUID قابل مشاهده است و غیرقابل‌حدس‌بودن آن سازوکار امنیتی نیست. جدول UUID، Property، Permission، قالب Value و نسخه پروتکل را در مستند پروژه نگه دارید.

نسخه‌پذیری قرارداد

تغییر طول یا معنی Value می‌تواند برنامه قدیمی را خراب کند. یک Characteristic نسخه پروتکل یا فیلد Version در Payload قرار دهید. برای تغییر ناسازگار، UUID جدید یا نسخه Major جدید تعریف کنید و مدت مشخصی از نسخه قبلی پشتیبانی کنید.

طرح UUID برای سنسور محیطی

یک UUID128 برای Service بسازید. سپس UUIDهای جدا برای Temperature، Humidity، Sample Interval و Protocol Version تولید کنید. در جدول طراحی مشخص کنید دما int16 با مقیاس 0.01 درجه و ترتیب Little Endian است. این جدول مرجع Firmware و اپلیکیشن خواهد بود.

UUID کوتاه، UUID کامل و امنیت سه موضوع جدا هستند

Battery Service: 0x180F
Full UUID: 0000180f-0000-1000-8000-00805f9b34fb
Battery Level: 0x2A19, uint8 percentage

UUIDهای ۱۶ و ۳۲ بیتی در فضای تخصیص Bluetooth SIG قرار دارند؛ برای داده اختصاصی، یک UUID صدوبیست‌وهشت‌بیتی یکتا انتخاب کنید. UUID تصادفی راهی برای کاهش احتمال برخورد شناسه است و نقش رمز عبور ندارد. دانستن یا حدس‌زدن UUID نباید مجوز خواندن داده خصوصی یا اجرای فرمان بدهد.

برای سازگاری، جدول قرارداد شامل UUID، Properties، Permissions، طول، واحد، ترتیب بایت و نسخه باشد. تغییر معنی داده با ثابت نگه‌داشتن UUID ممکن است برنامه قدیمی را به تفسیر اشتباه برساند؛ مهاجرت قرارداد و کش سرویس را صریح طراحی کنید.

پرسش و پاسخ مقاله

سوال فنی خود را مطرح کنید

پرسش‌ها و پاسخ‌ها پس از بررسی مدیر منتشر می‌شوند. نویسنده، پیش‌نویس در انتظار بررسی را می‌بیند.

هنوز پرسش تاییدشده‌ای برای این مقاله ثبت نشده است.