Serial melalui Bluetooth di web

Prancis Beaufort
François Beaufort

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

Kini, Web Serial API mendukung komunikasi dengan layanan RFCOMM pada perangkat Bluetooth Klasik yang disambungkan, termasuk Serial Port Profile (SPP) di Chrome 117 di desktop. Hal ini membuka berbagai peluang baru bagi developer web dan pengguna. Berikut adalah beberapa perangkat di 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 Bluetooth SPP untuk mencatat pergerakan hewan.

Protokol RFCOMM Bluetooth

Ingat kembali ke akhir tahun 90-an. Cukup letakkan Percontohan Telapak Tangan ke dudukannya untuk menyinkronkan kalender Anda untuk hari berikutnya. Bukankah lebih baik jika Anda bisa melakukan itu 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 perangkat keras 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, API untuk menghubungkan ke perangkat serial, dan Bluetooth, untuk memungkinkan akses ke layanan RFCOMM lama ini sebelum produsen akhirnya bermigrasi ke Bluetooth Hemat Energi dan developer dapat menggunakan Web Bluetooth API sebagai gantinya.

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 dengan update berikut pada Web Serial API:

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

Anda dapat mempelajari cara menggunakan Web Serial API di artikel Membaca dari dan menulis ke port serial. Artikel ini mengasumsikan bahwa Anda memiliki pengetahuan dasar tentang Bluetooth dan berfokus pada serial melalui perubahan 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 apa pun yang belum dipetakan yang disediakan oleh Profil Port Seri 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 standar, beberapa perangkat menggunakan layanan berbasis RFCOMM kustom. Perangkat ini memiliki ID Class Layanan yang tidak ada dalam rentang UUID Bluetooth standar.

Anda harus meneruskan daftar allowedBluetoothServiceClassIds ke navigator.serial.requestPort() untuk mengakses layanan berbasis RFCOMM kustom ini seperti yang ditunjukkan pada 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 Kelas Layanan yang menggunakan UUID Dasar SIG Bluetooth (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 dan diidentifikasi berdasarkan 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 Class Layanan yang terkait dengan saluran RFCOMM yang terhubung dengan port akan tersedia di info port serial yang ditampilkan dengan memanggil port.getInfo(). Jika port serial dipetakan, ia akan menampilkan "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 dapat diinstal secara opsional bersama aplikasi sistem operasi lainnya.

Aplikasi menggunakan Web Serial API untuk berkomunikasi dengan Pixel Buds Pro. Hal ini memungkinkan pengguna mengontrol berbagai setelan di Pixel Buds Pro, 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 Baumeister di Unsplash.