# Bluetooth ESP

Le protocole Bluetooth définit des profils par cas d'usage pour assurer une interopérabilité entre tous les appareils Bluetooth.
Le profil Bluetooth ESP est le profil qui permet d'accéder aux données mises à disposition par un capteur ou un dispositif de mesure.

## Structure

Le profil définit l'interaction entre une entité Collector (ex. un mobile) et une entité Environmental Sensor (ex. un capteur).
Le sensor a la fonction de serveur de donnée et met à disposition ses données au fil de l'eau.
Le collector a la fonction de client qui se connecte au serveur de données.
Il précise les protocoles internes de communication ainsi que les services utilisés :
* le service Discovery précise le mode d'établissement de la connexion,
* le service Environmental Sensing Service définit l'accès aux données produites par le Sensor.
Deux services complémentaires peuvent également être utilisés :
* le service Device Information Service définit les données descriptives de l'équipement utilisé.
* le service Battery Service définit l'échange des données liées au niveau de charge de la batterie associée.

## Historique

Le profil ESP a été créé initialement par le groupe de travail Sport and Fitness pour interagir avec les capteurs environnementaux lors d'activités extérieures.
La spécification a été adoptée par Bluetooth SIG le 18 novembre 2014. Elle a fait l'objet d'une évolution le 14 septembre 2021 pour intégrer les données liées à la qualité de l'air.

## Usage

Plusieurs cas d'usage correspondent à ce profil.

### Mode affecté

Dans cet usage, les données émises par le capteur sont utilisées par des équipements identifiés. Ce cas d'usage correspond à un équivalent de raccordement filaire.

### Mode non affecté

Dans cet usage, les données émises par le capteur sont utilisées par des équipements non nécessairement identifiés. Ce cas d'usage correspond à un équivalent d'affichage déporté.
Il peut s'illustrer par exemple par la capacité de chaque personne équipée d'un mobile à consulter les valeurs mesurées par un capteur (ex. qualité de l'air) présent à proximité (ex. lieu public, transport en commun).
Le protocole Bluetooth est particulièrement intéressant pour cet usage car :
* d'une part le capteur, en tant que serveur de données, permet les connexions simultanées
* d'autre part la sémantique des données est inclus dans le standard, ce qui garantit une lecture des données sans décodage spécifique

## Spécifications

Plusieurs documents définissent le profil :
* Environmental Sensing Profile : document principal
* Environmental Sensing Service : spécification de la structure des données échangées
* Permitted Characteristics : liste des caractéristiques autorisées pour le service
* GATT Specification Supplement : spécification de chaque caractéristique
* UUID Numbers Document : codification de chacune des caractéristiques

## Données prises en compte

Les données prises en compte (caractéristiques) dans ce profil sont fixées par le standard Bluetooth et sont précisées ci-contre.
Un premier jeu de données a été défini à la création de ce service en 2014.
L'extension réalisée en 2021 a permis d'ajouter les onze principaux polluants liés à la qualité de l'air.
Cette liste n'est pas figée et peut être complétée en fonction des demandes.

## Environmental Sensing Service - ESS

Le service ESS décrit les données mises à disposition.
On distingue :
* les données principales : ESS Characteristic
* les données complémentaires: Descriptors

### ESS Characteristics

La liste des caractéristiques autorisées est précisée ci-contre.
Pour chacune de ces caractéristiques, ESS définit :
* la propriété physique ,
* l'unité prise en compte
* le codage binaire de la valeur

### Descriptors

Il s'agit d'informations facultatives qui permettent de préciser les caractéristiques :
* mode d'acquisition (fonction d'échantillonnage)
* la période de mesure et d'échantillonnage
* le milieu d'application
* l'incertitude de mesure et les valeurs mini / maxi autorisées
* l'identification de la mesure
* mécanisme d'alerte en cas d'atteinte de valeurs prédéfinies