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 des appareils Bluetooth à basse consommation (BLE) et des appareils série. Bien que de nombreux développeurs Web utilisent déjà ces API avec succès, il existe également une demande croissante de prise en charge des appareils Bluetooth Classic.

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

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

Le protocole RFCOMM Bluetooth

Revivez la fin des années 90. Il vous suffit de placer votre Palm Pilot sur son support pour synchroniser votre agenda du jour suivant. Et si vous pouviez le faire sans fil ? Grâce à cette nouvelle technologie Bluetooth, vous pouvez vous débarrasser des câbles. 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 le protocole de communication en radiofréquences (RFCOMM, Radio Frequency Communication) 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. Il permet de répondre aux exigences spécifiques en termes de latence et de bande passante qui ne sont pas encore satisfaites par la technologie Bluetooth Low Energy. C'est pourquoi nous avons développé une intégration entre Web Serial, une API de connexion aux appareils série, et le Bluetooth, afin de permettre l'accès à ces anciens services RFCOMM avant que les fabricants ne passent à la technologie Bluetooth Low Energy et que les développeurs puissent 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 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 apportées à 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 standard Bluetooth Classic.
  • Chrome peut désormais communiquer avec l'interface série même si le système d'exploitation n'a pas créé spécifiquement de nœud d'appareil via un port série émulé.
  • Chrome peut désormais communiquer avec un service non port série qui expose une interface série RFCOMM (consultez la section 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 avez des connaissances de base sur le Bluetooth et se concentre sur les changements de série via Bluetooth.

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

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

Bien que la plupart des appareils exposent une communication basée sur SPP via le profil standard de port série Bluetooth Classic, certains utilisent des services personnalisés basés sur RFCOMM. L'ID de classe de service de ces appareils est différent de la plage d'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 touche de filtre bluetoothServiceClassId lorsque vous appelez navigator.serial.requestPort() pour demander à l'utilisateur une liste des ports série Bluetooth filtrés par 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 sur le 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 les Pixel Buds Pro

L'application Web associée Pixel Buds Pro est une nouvelle application Web qui permet aux utilisateurs de contrôler leurs Pixel Buds Pro depuis n'importe quel appareil avec un navigateur Web. Il repose sur les technologies de progressive web apps pour assurer un chargement instantané et peut éventuellement être installé avec d'autres applications de 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 de 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 associée aux Pixel Buds Pro, accédez à mypixelbuds.google.com sur un appareil ChromeOS (d'autres plates-formes seront bientôt disponibles).

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

Ressources

Remerciements

Merci à Reilly Grant, Thomas Steiner, Ben Morss et Vincent Scheib pour leurs avis. Image héros de Mika Baumeister sur Unsplash.