تسمح Web Bluetooth API وWeb Serial API لتطبيقات الويب بالاتصال بأجهزة البلوتوث المنخفض الطاقة (BLE) والأجهزة التسلسلية على التوالي. على الرغم من أنّ العديد من مطوّري الويب يستخدمون حاليًا واجهات برمجة التطبيقات هذه لتحقيق نجاح كبير، هناك طلب متزايد على توفير الدعم لأجهزة Bluetooth Classic أيضًا.
تتيح الآن Web Serial API التواصل مع خدمات RFCOMM على الأجهزة المزوّدة بتقنية Bluetooth Classic المقترنة، بما في ذلك ملف تعريف المنفذ التسلسلي (SPP) في الإصدار 117 من Chrome على أجهزة الكمبيوتر المكتبي. ويفتح ذلك آفاقًا جديدة لمطوّري الويب والمستخدمين على حد سواء. في ما يلي بعض الأجهزة التي يمكنها الاستفادة من هذه الميزة:
- تستخدم سمّاعات Pixel Buds Pro وغيرها من سمّاعات الأذن اللاسلكية معيار RFCOMM لإدارة إعدادات الصوت وتحديثات البرامج الثابتة.
- تستخدم أنظمة نقاط البيع المتنقلة بروتوكول SPP عبر البلوتوث للاتصال بطابعات الإيصالات.
- تستخدم أجهزة قراءة علامات RFID للماشية بروتوكول SPP عبر البلوتوث لتسجيل حركات الحيوانات.
بروتوكول RFCOMM في البلوتوث
عود إلى أواخر التسعينيات. ما عليك سوى وضع جهاز Palm Pilot في قاعدته لمزامنة التقويم لليوم التالي. ألن يكون من الرائع إجراء ذلك لاسلكيًا بدلاً من ذلك؟ باستخدام تكنولوجيا "البلوتوث" الجديدة هذه، يمكنك التخلص من كل هذه الأسلاك الفوضوية. الشبكات اللاسلكية هي المستقبل! هناك مشكلة واحدة فقط، وهي أنّ كل الأجهزة مصمّمة للاتصال بكابل RS-232. إذًا، يستخدم البلوتوث بروتوكول الاتصالات بالترددات اللاسلكية (RFCOMM) لتوفير هذه الواجهة لجميع البرامج والأجهزة الحالية.
حتى اليوم، تُستخدم خدمات RFCOMM على نطاق واسع في الأجهزة الجديدة والحالية. ويسمح هذا المعيار باستيفاء متطلبات معيّنة للوقت المستغرَق في إرسال البيانات وعرض النطاق التي لا يستوفيها البلوتوث المنخفض الطاقة حتى الآن. لهذا السبب، طوّرنا عملية دمج بين Web Serial، وهي واجهة برمجة تطبيقات للاتصال بالأجهزة التسلسلية، وBluetooth، لتفعيل الوصول إلى خدمات RFCOMM القديمة هذه قبل أن ينقل المصنّعون بياناتهم في نهاية المطاف إلى Bluetooth Low Energy ويتمكّن المطوّرون من استخدام Web Bluetooth API بدلاً من ذلك.
التغييرات في Web Serial API
بدءًا من Chrome 117 على أجهزة الكمبيوتر المكتبي، يمكن الآن لمطوّري البرامج على الويب التواصل بشكل موثوق مع الأجهزة المزوّدة بالبلوتوث الكلاسيكي من خلال خدمات RFCOMM باستخدام واجهة برمجة التطبيقات Web Serial API. وقد تمت إتاحة ذلك من خلال التعديلات التالية على Web Serial API:
- يعدد Chrome الآن أجهزة البلوتوث المقترنة التي تعرض واجهة تسلسلية باستخدام الملف الشخصي الموحّد للمنفذ التسلسلي الكلاسيكي للبلوتوث.
- يمكن الآن لمتصفّح Chrome التواصل مع الواجهة التسلسلية حتى إذا لم ينشئ نظام التشغيل عقدة جهاز من خلال منفذ تسلسلي محاكي على وجه التحديد.
- يمكن الآن لمتصفّح Chrome التواصل مع خدمة غير مستندة إلى منفذ تسلسلي وتعرض واجهة تسلسلية لبروتوكول RFCOMM (راجِع أرقام تعريف فئة الخدمة غير العادية).
يمكنك الاطّلاع على كيفية استخدام Web Serial API في مقالة القراءة من منفذ تسلسلي والكتابة إليه. تفترض هذه المقالة أنّ لديك معرفة أساسية بالبلوتوث، وتركز على التغييرات في واجهة تسلسلية عبر البلوتوث.
بدون تحديد أي فلاتر، يسمح استدعاء navigator.serial.requestPort()
للمستخدمين باختيار المنافذ التسلسلية غير المزوّدة بتقنية Bluetooth، والمنافذ التسلسلية المزوّدة بتقنية Bluetooth التي سبق ربطها، وأي منافذ تسلسلية غير مرتبطة يوفّرها ملف تعريف المنافذ التسلسلية الكلاسيكية في البلوتوث.
// Prompt user to select any serial port.
const port = await navigator.serial.requestPort();
وعلى الرغم من أنّ معظم الأجهزة تعرض الاتصال المستند إلى بروتوكول SPP من خلال الملف الشخصي الموحّد للمنفذ التسلسلي الكلاسيكي في البلوتوث، يستخدم بعضها خدمات مخصَّصة مستندة إلى بروتوكول RFCOMM. تحتوي هذه الأجهزة على معرّف فئة الخدمة الذي لا يقع ضمن نطاق المعرّف الفريد العام للخدمة في البلوتوث.
يجب تمرير قائمة allowedBluetoothServiceClassIds
إلى navigator.serial.requestPort()
للوصول إلى هذه الخدمات المخصّصة المستندة إلى RFCOMM كما هو موضّح في المثال أدناه.
const myBluetoothServiceUuid = "01234567-89ab-cdef-0123-456789abcdef";
// Prompt user to select any serial port.
// Access to the custom Bluetooth RFCOMM service above will be allowed.
const port = await navigator.serial.requestPort({
allowedBluetoothServiceClassIds: [myBluetoothServiceUuid],
});
تجدر الإشارة إلى أنّه يتم حظر جميع معرّفات فئات الخدمة التي تستخدم المعرّف الفريد العالمي الفريد (UUID) لـ Bluetooth SIG Base (أي جميع أرقام UUID التي تنتهي بـ " -0000-1000-8000-00805f9b34fb") باستثناء معرّف الملف الشخصي للمنفذ التسلسلي، لأنّ Chrome لا يتوافق مع خدمات البلوتوث الكلاسيكية، مثل الصوت والفيديو.
يمكنك أيضًا استخدام bluetoothServiceClassId
مفتاح الفلتر عند الاتصال navigator.serial.requestPort()
لطلب عرض قائمة بالمنافذ التسلسلية لتقنية Bluetooth التي تمّت فلترتها والتي تم تحديدها باستخدام معرّفات فئة الخدمة. راجِع المثال أدناه.
const myBluetoothServiceUuid = "01234567-89ab-cdef-0123-456789abcdef";
// Prompt the user to select Bluetooth serial ports with
// the custom Bluetooth RFCOMM service above.
const port = await navigator.serial.requestPort({
allowedBluetoothServiceClassIds: [myBluetoothServiceUuid],
filters: [{ bluetoothServiceClassId: myBluetoothServiceUuid }],
});
إذا كان المنفذ التسلسلي جزءًا من جهاز بلوتوث، يتوفّر مفتاح bluetoothServiceClassId
جديد يحتوي على معرّف فئة الخدمة المرتبط بقناة RFCOMM التي يكون المنفذ متصلاً بها في معلومات المنفذ التسلسلي التي يتم عرضها من خلال الاتصال بـ port.getInfo()
. إذا كان المنفذ التسلسلي مرتبطًا، سيعرض "00001101-0000-1000-8000-00805f9b34fb" أو 0x1101 بشكله القصير.
const { bluetoothServiceClassId } = port.getInfo();
مثال على حالة الاستخدام: التحكّم في سماعات Pixel Buds Pro
تطبيق Pixel Buds Pro Web Companion هو تطبيق ويب جديد يتيح للمستخدمين التحكّم في سمّاعات Pixel Buds Pro من أي جهاز مزوّد بمتصفّح ويب. لقد صُمِّم باستخدام تقنيات تطبيقات الويب التقدّمية لتوفير تجربة تحميل فوري ويمكن تثبيته اختياريًا إلى جانب تطبيقات نظام التشغيل الأخرى.
يستخدم التطبيق Web Serial API للتواصل مع سمّاعات Pixel Buds Pro. يتيح ذلك للمستخدمين التحكّم في إعدادات مختلفة على سماعات Pixel Buds Pro، مثل ميزة "التحكّم النشط في الضوضاء" ومعادل الصوت وميزة "الرصد داخل الأذن" وتحديثات البرامج الثابتة.
لتجربة تطبيق Pixel Buds Pro Web Companion App، يمكنك الانتقال إلى mypixelbuds.google.com على جهاز ChromeOS (ستتوفّر على أنظمة أساسية أخرى قريبًا).
الموارد
خدمات الإقرار
شكرًا لـ "رايلي غرانت" و"توماس شتاينر" و"بن مورس" و"فنسنت شيب" على مراجعاتهم.