Serial melalui Bluetooth di web

François Beaufort
François Beaufort

Web Bluetooth API dan Web Serial API memungkinkan aplikasi web berkomunikasi dengan perangkat Bluetooth Hemat Energi (BLE) dan perangkat serial. Meskipun banyak developer web sudah menggunakan API ini untuk meraih kesuksesan besar, ada juga permintaan yang terus meningkat untuk dukungan perangkat Bluetooth Klasik.

Sekarang, Web Serial API mendukung komunikasi dengan layanan RFCOMM di perangkat Bluetooth Klasik yang disambungkan, termasuk Serial Port Profile (SPP) di Chrome 117 versi desktop. Hal ini membuka kemungkinan baru bagi developer dan pengguna web. Berikut beberapa perangkat dunia nyata yang dapat memanfaatkan hal ini:

  • Pixel Buds Pro dan earbud nirkabel lainnya menggunakan RFCOMM untuk mengelola setelan audio dan update firmware.
  • Sistem tempat penjualan seluler menggunakan Bluetooth SPP untuk berkomunikasi dengan printer tanda terima.
  • Pembaca tag RFID ternak menggunakan SPP Bluetooth untuk mencatat pergerakan hewan.

Protokol RFCOMM Bluetooth

Bawa diri Anda kembali ke akhir 90-an. Anda cukup memasukkan Palm Pilot ke dudukannya untuk menyinkronkan kalender Anda untuk hari berikutnya. Pasti menyenangkan jika Anda bisa melakukannya secara nirkabel? Dengan teknologi "Bluetooth" baru ini, Anda dapat menyingkirkan semua kabel yang berantakan. Nirkabel adalah masa depan! Hanya ada satu masalah, segala sesuatu yang ada dirancang untuk terhubung dengan kabel RS-232. Jadi, Bluetooth menggunakan protokol Radio Frequency Communication (RFCOMM) untuk menyediakan antarmuka tersebut ke semua software dan hardware yang ada.

Bahkan saat ini, layanan RFCOMM banyak digunakan dalam perangkat keras baru maupun yang sudah ada. Teknologi ini memungkinkan pemenuhan persyaratan bandwidth dan latensi tertentu yang sejauh ini tidak dipenuhi oleh Bluetooth Hemat Energi. Itulah sebabnya kami mengembangkan integrasi antara Web Serial, sebuah API untuk terhubung ke perangkat serial, dan Bluetooth, untuk memungkinkan akses ke layanan RFCOMM lama ini sebelum produsen akhirnya bermigrasi ke Bluetooth Hemat Energi dan sebagai gantinya, developer dapat menggunakan Web Bluetooth API.

Perubahan Web Serial API

Mulai Chrome 117 di desktop, developer web kini dapat berkomunikasi secara andal dengan perangkat Bluetooth Klasik yang disambungkan melalui layanan RFCOMM menggunakan Web Serial API. Hal ini dimungkinkan oleh update berikut pada Web Serial API:

  • Chrome kini menyebutkan perangkat Bluetooth yang disambungkan dan mengekspos antarmuka serial menggunakan Profil Port Serial Klasik Bluetooth standar.
  • Chrome kini dapat berkomunikasi dengan antarmuka serial meskipun sistem operasi belum membuat node perangkat melalui port serial yang diemulasi secara khusus.
  • Chrome kini dapat berkomunikasi dengan layanan Port non-Serial yang mengekspos antarmuka serial RFCOMM (lihat ID Kelas Layanan non-standar).

Anda dapat mempelajari cara menggunakan Web Serial API dalam artikel Membaca dari dan menulis ke port serial. Artikel ini mengasumsikan bahwa Anda memiliki pengetahuan dasar tentang Bluetooth dan berfokus pada perubahan serial melalui Bluetooth.

Tanpa menentukan filter apa pun, memanggil navigator.serial.requestPort() memungkinkan pengguna memilih port serial non-Bluetooth, port serial Bluetooth yang sudah dipetakan, dan port serial apa pun yang belum dipetakan yang disediakan oleh Profil Port Serial Klasik Bluetooth standar.

// Prompt user to select any serial port.
const port = await navigator.serial.requestPort();

Meskipun sebagian besar perangkat mengekspos komunikasi berbasis SPP melalui Profil Port Serial Klasik Bluetooth terstandardisasi, sebagian perangkat menggunakan layanan berbasis RFCOMM kustom. Perangkat ini memiliki ID Kelas Layanan yang tidak berada dalam rentang UUID Bluetooth standar.

Anda harus meneruskan daftar allowedBluetoothServiceClassIds ke navigator.serial.requestPort() untuk mengakses layanan berbasis RFCOMM kustom ini seperti yang ditunjukkan dalam contoh di bawah.

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],
});

Perlu diketahui bahwa semua ID Kelas Layanan yang menggunakan UUID Bluetooth SIG Base (yaitu, semua UUID yang diakhiri dengan "-0000-1000-8000-00805f9b34fb") diblokir, kecuali ID Profil Port Serial karena Chrome tidak mendukung layanan Bluetooth Klasik seperti audio dan video.

Anda juga dapat menggunakan kunci filter bluetoothServiceClassIdsaat memanggil navigator.serial.requestPort() untuk memberi pengguna daftar port serial Bluetooth yang difilter yang diidentifikasi berdasarkan ID Kelas Layanan. Lihat contoh di bawah.

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 }],
});

Jika port serial adalah bagian dari perangkat Bluetooth, kunci bluetoothServiceClassId baru yang berisi ID Kelas Layanan yang terkait dengan saluran RFCOMM tempat port terhubung tersedia dalam info port serial yang ditampilkan dengan memanggil port.getInfo(). Jika port serial dipetakan, ia akan mengembalikan "00001101-0000-1000-8000-00805f9b34fb" atau 0x1101 dalam bentuk pendeknya.

const { bluetoothServiceClassId } = port.getInfo();

Contoh kasus penggunaan: Mengontrol Pixel Buds Pro

Aplikasi Pendamping Web Pixel Buds Pro adalah aplikasi web baru yang memungkinkan pengguna mengontrol Pixel Buds Pro dari perangkat apa pun dengan browser web. Aplikasi ini dibuat menggunakan teknologi Progressive Web App untuk pengalaman pemuatan instan dan secara opsional dapat diinstal bersama aplikasi sistem operasi lain.

Aplikasi menggunakan Web Serial API untuk berkomunikasi dengan Pixel Buds Pro. Dengan begitu, pengguna dapat mengontrol berbagai setelan di Pixel Buds Pro-nya, seperti kontrol bising aktif, equalizer, deteksi saat di telinga, dan update firmware.

Untuk mencoba Aplikasi Pendamping Web Pixel Buds Pro, buka mypixelbuds.google.com di perangkat ChromeOS (platform lain akan segera hadir).

Screenshot Aplikasi Pendamping Web Pixel Buds Pro.
Aplikasi Pendamping Web Pixel Buds Pro.

Referensi

Ucapan terima kasih

Terima kasih kepada Reilly Grant, Thomas Steiner, Ben Morss, dan Vincent Scheib atas ulasan mereka. Banner besar oleh Mika Baumester di Unsplash.