Bluefruit-LE-Shield-BLE-GATT

De MCHobby - Wiki
Révision datée du 16 juillet 2017 à 21:09 par Admin (discussion | contributions) (→‎GATT BLE)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Sauter à la navigation Sauter à la recherche


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

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.

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.)
# 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).

  • 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.)
# 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:

{{{2}}}
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.

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