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 dengan sukses besar, ada juga permintaan yang 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 di desktop. Hal ini membuka kemungkinan baru bagi developer dan pengguna web. Berikut beberapa perangkat di dunia nyata yang dapat memanfaatkannya:

  • 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

Kembalilah ke akhir tahun 90-an. Anda cukup meletakkan Palm Pilot ke dudukannya untuk menyinkronkan kalender Anda ke hari berikutnya. Bukankah lebih baik jika Anda dapat melakukannya secara nirkabel? Dengan teknologi "Bluetooth" baru ini, Anda dapat menyingkirkan semua kabel yang berantakan. Nirkabel adalah masa depan! Hanya ada satu masalah, semua 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 di hardware baru dan lama. Hal ini memungkinkan untuk memenuhi persyaratan latensi dan bandwidth tertentu yang sejauh ini tidak terpenuhi 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 dengan perangkat Bluetooth Klasik yang disambungkan dengan andal melalui layanan RFCOMM menggunakan Web Serial API. Hal ini dimungkinkan oleh update berikut pada Web Serial API:

  • Chrome kini mengenumerasi perangkat Bluetooth yang disambungkan yang mengekspos antarmuka serial menggunakan Profil Port Serial Bluetooth Klasik 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 non-Port Serial yang mengekspos antarmuka serial RFCOMM (lihat ID Class 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 telah dipetakan, dan port serial yang tidak dipetakan yang disediakan oleh Profil Port Serial Bluetooth Klasik 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 Bluetooth Klasik standar, beberapa perangkat menggunakan layanan berbasis RFCOMM kustom. Perangkat ini memiliki ID Class 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],
});

Perhatikan bahwa semua ID Class Layanan yang menggunakan UUID Dasar Bluetooth SIG (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 bluetoothServiceClassId saat memanggil navigator.serial.requestPort() untuk meminta pengguna dengan daftar port serial Bluetooth yang difilter yang diidentifikasi oleh ID Class 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 dipetakan, port serial akan menampilkan "00001101-0000-1000-8000-00805f9b34fb" atau 0x1101 dalam bentuk singkatnya.

const { bluetoothServiceClassId } = port.getInfo();

Contoh kasus penggunaan: Mengontrol Pixel Buds Pro

Aplikasi Pengiring 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 dapat diinstal secara opsional bersama aplikasi sistem operasi lainnya.

Aplikasi ini menggunakan Web Serial API untuk berkomunikasi dengan Pixel Buds Pro. Hal ini memungkinkan pengguna mengontrol berbagai setelan di Pixel Buds Pro, seperti kontrol kebisingan aktif, equalizer, deteksi dalam telinga, dan update firmware.

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

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

Resource

Ucapan terima kasih

Terima kasih kepada Reilly Grant, Thomas Steiner, Ben Morss, dan Vincent Scheib atas ulasan mereka.