Bluefruit-LE-Shield-BLE-GATT
GATT BLE
GATT est l'acronyme de "Generic ATTribute Profile" (profile d'attribut générique). GATT gouverne l'organisation et l'échange de données entre les périphériques connectés. Un périphérique (nommé "the peripheral" dans la nomenclature) agit comme un serveur GATT qui enregistre les données dans des enregistrements Attributs. Un second périphérique (nommé la "central") agit comme un client GATT, demandant les données au serveur lorsque cela est nécessaire.
Les commandes suivantes peuvent être utilisées pour créer des services et caractéristiques GATT personnalisés sur le BLEFriend. Ces services et caractéristiques sont utilisés pour enregistrer et échanger les données.
Attention: toutes les caractéristiques que vous aller définir seront sauvegardées dans la mémoire FLASH de configuration (non volatile) du périphérique. Ces caractéristiques seront réinitialisées à chaque démarrage du périphérique.
Il est nécessaire d'effectuer une réinitialisation système avec un 'ATZ' avec la plupart des commandes ci-dessous pour que la modification soit effective! |
Limitations de GATT
Etant donné la mémoire SRAM et les ressources limitées du module, les commandes ont certaines limitations détaillées ci-dessous. Gardez ces limitations en mémoire lorsque vous créez des services et caractéristiques GATT personnalisés.
Ces valeurs sont applicable à partir du firmware firmware 0.7.0:
- Nombre maximal de services: 10
- Nombre maximal de caractéristiques: 30
- Taille de la mémoire tampon Max pour chaque caractéristique: 32 octets
- Nombre maximum de CCCDs: 16
Vous pouvez utiliser la commande de réinitialisation d'usine (AT+FACTORYRESET) si vous avez besoin d'effacer les valeurs d'une précédente configuration. Saisissez la commande avant de débuter une nouvelle configuration.
AT+GATTCLEAR
Efface tous les services et caractéristiques GATT personnalisés qui ont été définis sur le périphérique.
- Codebase Revision: 0.3.0
- Paramètres: Aucune
- Réponse: Aucune
AT+GATTCLEAR OK
AT+GATTADDSERVICE
Ajoute une nouvelle définition de service personnalisé sur le pérhiphérique.
- Codebase Revision : 0.3.0
- Paramètre : La commande accepte une série de paires "clé-valeur", paires séparés par des virgules. Ces paires sont utilisées pour définir les propriétés du service.
Les paires clé-valeur suivantes peuvent être utilisés:- UUID : Le UUID 16-bits pour ce service. La valeur 16-bits doit être mentionnée au format hexadécimal (0x1234).
- UUID128 : Le UUID 128-bits pour ce service. Les valeurs 128-bits doivent avoir le format suivant: 00-11-22-33-44-55-66-77-88-99-AA-BB-CC-DD-EE-FF
- Réponse : La valeur d'index du service GATT personnalisé dans la table lookup. (Il est important de mémoriser cette valeur indexe pour pouvoir travailler avec le service.)
Note: Les valeurs des clés ne sont pas sensible à la case |
Un seul type de UUID peut être saisi pour le service (soit UUID ou soit UUID128) |
# Efface toutes les définitions antérieurs # de services/caractéristiques personnalisées AT+GATTCLEAR OK # Ajoute le service "battery" (UUID = 0x180F, état de la # batterie) sur le périphérique AT+GATTADDSERVICE=UUID=0x180F 1 OK # Ajoute la caractéristique "battery measurement" # (UUID = 0x2A19, mesure de la batterie), notification activée AT+GATTADDCHAR=UUID=0x2A19,PROPERTIES=0x10,MIN_LEN=1,VALUE=100 1 OK
AT+GATTADDCHAR
Ajouter une caractéristique personnalisée au dernier service ajouté sur le périphérique (via AT+GATTADDSERVICE).
AT+GATTADDCHAR doit être exécuté APRES AT+GATTADDSERVICE et ajoutera une nouvelle caractéristique à la dernière définition de service ajouté sur le périphérique. |
Depuis la version 0.6.6 du firmware, il est également possible d'utiliser des UUIDs 128-bit personnalisés avec cette commande. Voyez les exemple ci-dessous pour plus d'information. |
- Codebase Revision : 0.3.0
- Paramètres : cette commande accepte un ensemble de paires clé-valeur (séparées par des virgules) pour définir les propriétés de la caractéristique. Les paires clé-valeur suivantes peuvent être utilisés:
- UUID : L'UUID 16-bit de la caractéristique (qui sera inséré dans les 3ième et 4ièmes octets des UUID 128-bit des services parent). Cette valeur devrait être encodée au format hexadécimal au format (ex. 'UUID=0x1234'). Cette valeur doit être unique, et ne doit pas entrer en conflit avec les octets 3+4 de l'UUID 128-bit du service parent.
- PROPERTIES : Le champs propriétés 8-bit de la caractéristique, tel que définit dans Bluetooth SIG. Les valeurs suivantes peuvent être utilisées:
- 0x02 - Read (lecture)
- 0x04 - Write Without Response (écriture sans réponse)
- 0x08 - Write (écriture)
- 0x10 - Notify (notification)
- 0x20 - Indicate (désigner)
- MIN_LEN : La taille minimale des valeurs pour cette caractéristique (en octets, min = 1, max = 20, défaut = 1)
- MAX_LEN : La taille minimale des valeurs pour cette caractéristique (in octets, min = 1, max = 20, défaut = 1)
- VALUE : Valeur initiale assignée à la caractéristique (dans les limites de 'MIN_LEN' et 'MAX_LEN'). La valeur peut être un entier ("-100", "27"), un hexadécimal ("0xABCD"), ou un tableau d'octet ("aa-bb-cc-dd") ou une chaâine de caractère ("GATT!").
- >=0.7.0 - DATATYPE : cet argument indique le type de données stockée dans la caractéristique et est utilisé pour aider le parsing des données. DATATYPE peut avoir l'une des valeurs suivantes:
- AUTO (0, défaut)
- STRING (1, chaîne de caractère)
- BYTEARRAY (2, tableau d'octets)
- INTEGER (3, entier)
- >=0.7.0 - DESCRIPTION: Ajoute la chaîne de caractère en argument comme description (description entry) de la caractéristique
- >=0.7.0 - PRESENTATION: Ajoute la chaîne de caractère en argument comme format de présentation (presentation format entry) de la caractéristique.
- Réponse: La valeur d'index de la caractéristique dans la table lookup des caractéristiques GATT personnalisées. (Il est important de mémoriser cette index pour travailler ensuite avec les caractéristiques.)
Note: Les valeurs des clés ne sont pas sensible à la case |
Assurez-vous de l'unicité du UUID 16-bit et qu'il n'entre pas en conflit avec les octets 3+4 de l'UUID service 128-bit |
# Efface toutes les définitions antérieurs # de services/caractéristiques personnalisées AT+GATTCLEAR OK # Ajoute le service "battery" (UUID = 0x180F, état de la # batterie) sur le périphérique AT+GATTADDSERVICE=UUID=0x180F 1 OK # Ajoute la caractéristique "battery measurement" # (UUID = 0x2A19, mesure de la batterie), notification activée AT+GATTADDCHAR=UUID=0x2A19,PROPERTIES=0x10,MIN_LEN=1,VALUE=100 1 OK
# Efface toutes les définitions antérieurs # de services/caractéristiques personnalisées AT+GATTCLEAR OK # Ajoute un service personnalisé sur le périphérique AT+GATTADDSERVICE=UUID128=00-11-00-11-44-55-66-77-88-99-AA-BB-CC-DD-EE-FF 1 OK # Ajouter une caractéristique personnalisée au # service ci-dessus (s'assurer qu'il n'y a pas de conflit entre # le UUID 16-bit et les octets 3+4 d'un UUID service 128-bit) AT+GATTADDCHAR=UUID=0x0002,PROPERTIES=0x02,MIN_LEN=1,VALUE=100 1 OK
La version 0.6.6 du firmware de Bluefruit LE est capable d'utiliser le drapeau "nouveau UUID128" pour ajouter un des UUIDs 128-bit personnalisés qui ne sont pas relatifs à un service UUID parent (qui est utilisé lorsque l'on passe un drapeau "UUID 16-bit ").
Pour spécifier un UUID 128-bit pour votre caractéristique personnalisée, saisissez une valeur ressemblant à la syntaxe suivante:
# Ajouter une caractéristique personnalisée # au service définit ci-dessous (en utilisant un # UUID 128-bit personalisé) AT+GATTADDCHAR=UUID128=00-11-22-33-44-55-66-77-88-99-AA-BB-CC-DD-EE-FF,PROPERTIES=0x02,MIN_LEN=1,VALUE=100 1 OK
La version 0.7.0 du firmware de Bluefruit LE ajoute les nouveau mots clés DESCRIPTION et PRESENTATION, correspondant aux spécifications GATT Characteristic User Description et Characteristic Presentation Format.
Le champs DESCRIPTION est une chaîne de caractère qui contient une courte description textuelle de la caractéristique. Certaines Apps pourraient ignorer cette information, elle devrait néanmoins être visible en utilisant l'application "Master Control Panel" de Nordic sous iOS et Android.
Le champs PRESENTATION contient un payload 7-octets qui encapsule les données presentation format de la caractéristique. Il nécessite en ensemble d'octets spécifique pour fonctionner correctement. Voyez le lien suivant pour plus de détails sur le format du payload: https://developer.bluetooth.org/gatt/descriptors/Pages/DescriptorViewer.aspx?u=org.bluetooth.descriptor.gatt.characteristic_presentation_format.xml
L'exemple suivant montre comment vous pouvez utiliser ces deux nouveaux champs:
AT+GATTADDCHAR=UUID=0x2A37, PROPERTIES=0x10, MIN_LEN=2, MAX_LEN=3, VALUE=00-40, DESCRIPTION=HRM Measurement, PRESENTATION=17-00-AC-27-01-00-00
Pour le format de présentation de la caractéristique nous avons:
- Format = IEEE-11073 32-bit FLOAT (Decimal 23, Hex 0x17)
- Exposant = 0/aucun
- Unité = témpérature thermodynamique (Thermodynamic temperature): Degrés Fahrenheit (0x27AC) - Bluetooth LE Unit List
- Espace de nom/Namespace = Bluetooth SIG Assigned Number (0x01)
- Description = Aucune (0x0000)
L'application "Master Control Panel" de Nordic affiche l'information suivante:
Crédit: AdaFruit Industries www.adafruit.com
AT+GATTCHAR
Fixer ou retrouver la valeur d'une caractéristique GATT personnalisée personnalisée (basé sur le numéro d'index index ID retourné par AT+GATTADDCHAR lorsque la caractéristique à été ajouté sur le périphérique).
- Codebase Revision: 0.3.0
- Paramètre: cette fonction prend un ou deux paramètres (séparé par une virgule, un paramètre = lecture, deux paramètres = écriture).
- Le premier paramètre est l'index de la caractéristique, tel que retourné par la fonction AT+GATTADDCHAR. Ce paramètre est toujours nécessaire et s'il n'y a pas de second paramètres alors la valeur courante de la caractéristique est retournée.
- Le second paramètre (optionnel) est la nouvelle valeur à assigner à la caractéristique (dans les limites définies par MIN_SIZE et MAX_SIZE lorsque la caractéristique à été créée).
- Réponse:
- Si la commande est utilisée en mode lecture (avec l'index de la caractéristique comme seul paramètre) alors la réponse affichera la valeur actuelle de la caractéristique.
- Si la commande est utilisée en mode écriture (avec index de la caractéristique + une virgule + la nouvelle valeur) alors la caractéristique sera mise-à-jour pour utiliser la nouvelle valeur.
# Efface toutes les définitions antérieurs # de services/caractéristiques personnalisées AT+GATTCLEAR OK # Ajoute le service "battery" (UUID = 0x180F, état de la # batterie) sur le périphérique AT+GATTADDSERVICE=UUID=0x180F 1 OK # Ajoute la caractéristique "battery measurement" # (UUID = 0x2A19, mesure de la batterie), notification activée AT+GATTADDCHAR=UUID=0x2A19,PROPERTIES=0x10,MIN_LEN=1,VALUE=100 1 OK # Lire la caractéristique "battery measurement" (index ID = 1) AT+GATTCHAR=1 0x64 OK # Modifier la caractéristique "battery measurement" vers 32 (hex 0x20) AT+GATTCHAR=1,32 OK # Vérifier la valeur écrite AT+GATTCHAR=1 0x20 OK
AT+GATTLIST
Liste tous les services et caractéristiques GATT personnalisés qui ont été définis sur le périphérique.
- Codebase Revision: 0.3.0
- Paramètre: Aucun
- Réponse: Une liste de tous les services personnalisé et toutes les caractéristiques définie sur le périphérique.
# Efface tous les services/caractéristiques personnalisés AT+GATTCLEAR OK # Ajouter le service "battery" (UUID = 0x180F) sur le périphérique AT+GATTADDSERVICE=UUID=0x180F 1 OK # Ajouter la caractéristique "battery measurement" (UUID = 0x2A19), notification activée AT+GATTADDCHAR=UUID=0x2A19,PROPERTIES=0x10,MIN_LEN=1,VALUE=100 1 OK # Ajouter un service personalisé sur le périphérique AT+GATTADDSERVICE=UUID128=00-11-00-11-44-55-66-77-88-99-AA-BB-CC-DD-EE-FF 2 OK # Ajouter une caractéristique personnalisé sur le service ci-dessus # (S'assurer qu'il n'y a pas de conflit entre l'UUID 16 bits et # les octets 3+4 sur UUID service 128-bit) AT+GATTADDCHAR=UUID=0x0002,PROPERTIES=0x02,MIN_LEN=1,VALUE=100 2 OK # Obtenir une liste de tous les services GATT personnalisés et # de toutes les caractéristiques personnalisées sur le périphérique AT+GATTLIST ID=01,UUID=0x180F ID=01,UUID=0x2A19,PROPERTIES=0x10,MIN_LEN=1,MAX_LEN=1,VALUE=0x64 ID=02,UUID=0x11, UUID128=00-11-00-11-44-55-66-77-88-99-AA-BB-CC-DD-EE-FF ID=02,UUID=0x02,PROPERTIES=0x02,MIN_LEN=1,MAX_LEN=1,VALUE=0x64 OK
AT+GATTCHARRAW
Cette commande en lecture seule lit les données binaires d'une caractéristique (au lieu de ASCII. L'information n'est pas affichable mais représente moins de surcharge et facilite l'écriture de bibliothèques pour Arduino (ou autre microcontroleur).
- Codebase Revision: 0.7.0
- Paramètre: Le numéro d'index de la caractéristique (index ID) dont on désire les données
- Sortie: les données binaire correspondant à la caractéristique.
Note : Il s'agit d'une commande spécialisée et il n'y a pas de caractère NEWLINE en fin de commande! |
Basé sur "Bluefruit LE Shield" d'Adafruit Industries, écrit par
Kevin Townsend - Traduit en Français par shop.mchobby.be CC-BY-SA pour la traduction
Toute copie doit contenir ce crédit, lien vers cette page et la section "crédit de traduction".
Based on "Bluefruit LE Shield" from Adafruit Industries, written by
Kevin Townsend - Translated to French by shop.mchobby.be CC-BY-SA for the translation
Copies must includes this credit, link to this page and the section "crédit de traduction" (translation credit).
Traduit avec l'autorisation d'AdaFruit Industries - Translated with the permission from Adafruit Industries - www.adafruit.com