Qu’est-ce que Bluetooth LE?
Bluetooth Low Energy (BLE) est une itération de la technologie Bluetooth conçue pour l’Internet des objets.Facile à utiliser et mis en œuvre sur tous les principaux systèmes d’exploitation, ce qui en fait une excellente option pour la communication à distance avec des objets «intelligents».
En tant que développeur, que dois-je savoir sur Bluetooth LE?
Chaque périphérique BLE dispose d’un ensemble de points de terminaison qui permettent aux autres périphériques BLE d’interagir avec lui. Les points d’extrémité sont inclus dans le profil d’attributs génériques (GATT) du périphérique.
Un appareil a un seul profil GATT qui constitue son interface. Au niveau supérieur, un périphérique dispose d’un ensemble de services. Chaque service est composé d’un ensemble de caractéristiques. Ces caractéristiques sont les points de terminaison réels qui permettent l’interaction avec le périphérique. Chaque caractéristique possède un ensemble de propriétés qui déterminent comment les autres périphériques peuvent interagir avec lui. Les caractéristiques peuvent autoriser n’importe quelle combinaison des interactions suivantes:
Lire (Read) : permet aux clients de lire cette caractéristique en utilisant l’une des opérations de lecture.
Ecrire (Write): permet aux clients d’utiliser l’opération Demande d’écriture / Réponse (Write Request / Response)
Ecrire sans demander une réponse (WriteWithoutResponse): permet aux clients d’utiliser l’opération d’écriture (Write Command).
Notifier (Notify): permet au serveur d’utiliser l’opération de gestion de notification de la valeur (Handle Value Notification).
Indiquer ( Indicate) : permet au serveur d’utiliser l’opération Indication / Confirmation de la valeur de traitement.
Écriture signée (SignedWrite): permet aux clients d’utiliser l’opération Signed Write Command.
Auxiliaires inscriptibles (WritableAuxilliaries): permet à un client d’écrire dans le descripteur de description d’utilisateur caractéristique.
Diffusion: permet de placer cette valeur caractéristique dans des paquets publicitaires.
Il existe des services(https://www.bluetooth.com/specifications/gatt/services) et des caractéristiques (https://www.bluetooth.com/specifications/gatt/characteristics) réservés pour des types spécifiques d’appareils et d’informations. Par exemple, un moniteur de fréquence cardiaque aura toujours un service avec l’identificateur 0x180D qui a les caractéristiques 0x2A37, 0x2A38 et 0x2A39. Avant de commencer le développement, assurez-vous de documenter complètement le profil du GATT pour l’appareil.
Bluetooth LE dans Android
BLE dans Android est un peu simple. L’interface principale est le BluetoothAdapter (https://developer.android.com/reference/android/bluetooth/BluetoothAdapter.html) , qui est nécessaire pour toute activité Bluetooth. Une fois qu’un périphérique (BluetoothGatt : https://developer.android.com/reference/android/bluetooth/BluetoothGatt.html) est découvert, vous pouvez vous connecter à cet objet en appelant une méthode (.connectGatt () :https://developer.android.com/reference/android/bluetooth/BluetoothDevice.html#connectGatt(android.content.Context, boolean, android.bluetooth.BluetoothGattCallback)). L’objet retourné est l’appareil connecté, avec lequel vous pouvez interagir comme ci-dessus.
La partie qui concerne la découverte de l’appareil et la connexion ,’est pas trop claire. Les rappels (LeScanCallback : https://developer.android.com/reference/android/bluetooth/BluetoothAdapter.LeScanCallback.html) et BluetoothGattCallback :https://developer.android.com/reference/android/bluetooth/BluetoothGattCallback.html ) sont transmis à la découverte et à la connexion pour gérer les erreurs / succès. Ces classes doivent être étendues et implémentées pour afficher correctement les périphériques et s’y connecter.
Bluetooth LE dans iOS
L’implémentation BLE pour iOS est incluse dans le framework Core Bluetooth (https://developer.apple.com/documentation/corebluetooth). Apple a fourni une documentation très utile détaillant la structure des données et l’utilisation de ce framework.
Fondamentalement, la structure de données suit sa représentation physique. À l’aide d’un CBCentralManager (https://developer.apple.com/documentation/corebluetooth/cbcentralmanager), vous pouvez rechercher et vous connecter aux périphériques (CBPeripheral :https://developer.apple.com/documentation/corebluetooth/cbperipheral). La fonctionnalité du gestionnaire central est limitée à la découverte, à la connexion et à la déconnexion des périphériques. Une fois connecté à un périphérique, l’objet CBPeripheral est l’interface principale pour interagir avec le périphérique. Vous pouvez découvrir les services de l’appareil (CBService: https://developer.apple.com/documentation/corebluetooth/cbservice), découvrir les caractéristiques d’un service (CBCharacteristic: https://developer.apple.com/documentation/corebluetooth/cbcharacteristic) et interagir directement avec les caractéristiques.
Cross-Platform Bluetooth LE
Le partage de code dans une application multiplateforme signifie que les détails de mise en œuvre pour chaque plate-forme doivent être extraits.
Il y a des différents contributions dans Github, je cite quelques exemple:
- Plugin.BLE: https://github.com/xabre/xamarin-bluetooth-le
- XamarinBluetoothLE: https://www.nuget.org/packages/XamarinBluetoothLE
- Plugin.BluetoothLE: https://github.com/aritchie/bluetoothle
Dernières pensées
Avec la croissance incroyablement rapide du monde IoT, Bluetooth (en particulier BLE) sera une option valable pour la communication avec des objets intelligents. Mon espoir est que ces bibliothèques multiplate-formes aideront les développeurs d’applications à regarder au-delà des détails de l’implémentation de BLE et à se concentrer sur l’utilisation ces technologies.
Dans l’article qui suit nous allons expliquer l’intégration des DLLs ainsi que les différents méthodes offertes.