Numéro de série via Bluetooth sur le Web

François Beaufort
François Beaufort

L'API Web Bluetooth et l'API Web Serial permettent aux applications Web de communiquer respectivement avec les appareils BLE (Bluetooth Low Energy) et les appareils série. Bien que de nombreux développeurs Web utilisent déjà ces API avec succès, la prise en charge des appareils Bluetooth Classic est de plus en plus requise.

Désormais, l'API Web Serial permet de communiquer avec les services RFCOMM sur les appareils Bluetooth Classic associés, y compris le SPP (Serial Port Profile) dans Chrome 117 sur ordinateur. Cela offre de nouvelles possibilités aux développeurs Web comme aux utilisateurs. Voici quelques appareils qui pourraient en bénéficier:

  • Les Pixel Buds Pro et les autres écouteurs sans fil utilisent RFCOMM pour gérer les paramètres audio et les mises à jour du micrologiciel.
  • Les systèmes de point de vente mobiles utilisent le Bluetooth SPP pour communiquer avec les imprimantes de reçus.
  • Les lecteurs d'étiquettes RFID du bétail utilisent Bluetooth SPP pour enregistrer les mouvements des animaux.

Protocole Bluetooth RFCOMM

Revivez la fin des années 90. Il vous suffit de placer votre Palm Pilot sur le support de chargement pour synchroniser votre agenda du lendemain. Et si vous pouviez faire ça sans fil à la place ? Grâce à cette nouvelle technologie « Bluetooth », vous pouvez vous débarrasser de tous ces câbles encombrants. Le sans fil est l'avenir ! Il n'y a qu'un seul problème : tout ce qui existe est conçu pour se connecter avec un câble RS-232. Le Bluetooth utilise donc le protocole de communication par radiofréquence (RFCOMM) pour fournir cette interface à tous les logiciels et matériels existants.

Encore aujourd'hui, les services RFCOMM sont largement utilisés dans le matériel nouveau et existant. Elle permet de répondre à des exigences spécifiques en termes de latence et de bande passante qui ne sont pas encore satisfaites par Bluetooth Low Energy. C'est pourquoi nous avons développé une intégration entre Web Serial, une API permettant de connecter des appareils série et Bluetooth, afin de permettre l'accès à ces anciens services RFCOMM avant que les fabricants ne passent à la technologie Bluetooth Low Energy. Les développeurs peuvent utiliser l'API Web Bluetooth à la place.

Modifications apportées à l'API Web Serial

À partir de Chrome 117 sur ordinateur, les développeurs Web peuvent désormais communiquer de manière fiable avec les appareils Bluetooth Classic associés via les services RFCOMM à l'aide de l'API Web Serial. Cela a été rendu possible grâce aux mises à jour suivantes de l'API Web Serial:

  • Chrome énumère désormais les appareils Bluetooth associés qui exposent une interface série à l'aide du profil de port série Bluetooth Classic standardisé.
  • Chrome peut désormais communiquer avec l'interface série, même si le système d'exploitation n'a pas créé de nœud d'appareil via un port série émulé spécifiquement.
  • Chrome peut désormais communiquer avec un service sans port série qui expose une interface série RFCOMM (voir ID de classe de service non standards).

Pour en savoir plus sur l'utilisation de l'API Web Serial, consultez l'article Lire et écrire sur un port série. Cet article suppose que vous possédez des connaissances de base sur le Bluetooth et porte sur les modifications de la série sur le Bluetooth.

Sans spécifier de filtres, l'appel de navigator.serial.requestPort() permet aux utilisateurs de sélectionner les ports série non Bluetooth, les ports série Bluetooth qui ont déjà été mappés et tous les ports série non mappés fournis par le profil de port série classique Bluetooth standard.

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

Bien que la plupart des appareils exposent la communication basée sur SPP via le profil standardisé de port série Bluetooth Classic, certains utilisent des services personnalisés basés sur RFCOMM. Ces appareils possèdent un ID de classe de service qui ne se trouve pas à la portée de l'UUID Bluetooth standard.

Vous devez transmettre la liste allowedBluetoothServiceClassIds à navigator.serial.requestPort() pour accéder à ces services personnalisés basés sur RFCOMM, comme illustré dans l'exemple ci-dessous.

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

Notez que tous les ID de classe de service qui utilisent l'UUID Bluetooth SIG Base (c'est-à-dire tous les UUID se terminant par "-0000-1000-8000-00805f9b34fb") sont bloqués, à l'exception de l'ID de profil du port série, car Chrome n'est pas compatible avec les services Bluetooth Classic tels que l'audio et la vidéo.

Vous pouvez également utiliser la clé de filtre bluetoothServiceClassId lorsque vous appelez navigator.serial.requestPort() pour demander à l'utilisateur une liste de ports série Bluetooth filtrés identifiés par des ID de classe de service. Consultez l'exemple ci-dessous.

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

Si le port série fait partie d'un appareil Bluetooth, une nouvelle clé bluetoothServiceClassId contenant l'ID de classe de service associé au canal RFCOMM auquel le port est connecté est disponible dans les informations de port série renvoyées en appelant port.getInfo(). Si le port série est mappé, il renvoie "00001101-0000-1000-8000-00805f9b34fb" ou 0x1101 sous sa forme abrégée.

const { bluetoothServiceClassId } = port.getInfo();

Exemple de cas d'utilisation: contrôler des Pixel Buds Pro

L'application Web Pixel Buds Pro associée est une nouvelle application Web qui permet aux utilisateurs de contrôler leurs Pixel Buds Pro depuis n'importe quel appareil via un navigateur Web. Elle utilise les technologies Progressive Web Apps pour un chargement instantané et peut éventuellement être installée en même temps que d'autres applications du système d'exploitation.

L'application utilise l'API Web Serial pour communiquer avec les Pixel Buds Pro. Les utilisateurs peuvent ainsi contrôler différents paramètres sur leurs Pixel Buds Pro, comme le contrôle actif du bruit, l'égaliseur, la mise en pause automatique et les mises à jour du micrologiciel.

Pour essayer l'application Web Pixel Buds Pro associée, accédez à mypixelbuds.google.com sur un appareil ChromeOS (d'autres plates-formes seront bientôt disponibles).

Capture d'écran de l'application Web Pixel Buds Pro associée.
Application Web Pixel Buds Pro associée

Ressources

Remerciements

Merci à Reilly Grant, Thomas Steiner, Ben Morss et Vincent Scheib pour leurs avis. Image principale créée par Mika Baumeister sur Unsplash.