Spécifications des trames BLE - ELA Innovation
Informations générales sur Bluetooth
| Ressource | Lien |
|---|---|
| Informations générales | https://www.bluetooth.com/bluetooth-technology |
| Spécifications BLE | https://www.bluetooth.com/specifications |
| Services et caractéristiques BLE | https://www.bluetooth.com/specifications/gatt |
Produits concernés
- Famille Blue pour identification et capteurs.
- Famille Wirepas pour de l'émulation BLE.
Informations sur les données
Service Data vs Manufacturer Specific Data
À partir de la version firmware 2.0.0, il est possible d'envoyer les données via Manufacturer Specific Data en activant le paramètre Mfr. Data Enable dans la configuration NFC.
Identifiant de société ELA Innovation (CIN) : 0x0757
Trame Scan Response
Certains formats permettent d'envoyer une trame "Scan Response" contenant des informations supplémentaires (nom du tag, batterie, etc.).
Format "ID"
| Byte | Service Data Type | Mfr Spec. Data Type (≥2.0.0) |
|---|---|---|
| 1 | Length: 0x02 | Length: 0x02 |
| 2 | Type: 0x01 | Type: 0x01 |
| 3 | Data: 0x06 | Data: 0x06 |
| 4 | Length: ≤0x10 | Length: 0x0A |
| 5 | Type: 0x09 | Type: 0xFF |
| 6 | Name[0] | ELA_CIN_LSB: 0x57 |
| 7 | Name[1] | ELA_CIN_MSB: 0x07 |
| 8 | Name[2] | MFR_Num[0] |
| 9 | Name[3] | MFR_Num[1] |
| 10 | Name[4] | MFR_Num[2] |
| 11 | Name[5] | MFR_Num[3] |
| 12 | Name[6] | MFR_Num[4] |
| 13 | Name[7] | MFR_Num[5] |
| 14 | Name[8] | MFR_Num[6] |
| 15 | Name[9] | Length: ≤0x10 |
| 16-31 | Name / Non utilisé | Type: 0x09 + Name[0-14] |
Format "iBeacon"
| Byte | Version 1.0.0, 2.0.0 | Version ≥2.1.0 |
|---|---|---|
| 1 | Length: 0x02 | Length: 0x02 |
| 2 | Type: 0x01 | Type: 0x01 |
| 3 | Data: 0x04 | Data: 0x06 |
| 4 | Length: 0x1A | Length: 0x1A |
| 5 | Type: 0xFF | Type: 0xFF |
| 6 | Apple CIN_LSB: 0x4C | Apple CIN_LSB: 0x4C |
| 7 | Apple CIN_MSB: 0x00 | Apple CIN_MSB: 0x00 |
| 8 | Beacon type: 0x02 | Beacon type: 0x02 |
| 9 | Data size: 0x15 | Data size: 0x15 |
| 10-25 | UUID[0-15] | UUID[0-15] |
| 26-27 | Major[0-1] | Major[0-1] |
| 28-29 | Minor[0-1] | Minor[0-1] |
| 30 | Power TX at 1m | Power TX at 1m |
Note : Le nom du tag est transmis dans le Scan Response.
Format "Eddystone"
| Byte | Value |
|---|---|
| 1 | Length: 0x02 |
| 2 | Type: 0x01 |
| 3 | Data: 0x06 |
| 4 | Length: 0x03 |
| 5 | Type: 0x03 |
| 6 | Eddystone_UUID_LSB: 0xAA |
| 7 | Eddystone_UUID_MSB: 0xFE |
| 8 | Length: 0x17 |
| 9 | Type: 0x16 |
| 10 | Eddystone_UUID_LSB: 0xAA |
| 11 | Eddystone_UUID_MSB: 0xFE |
| 12 | Frame type UUID: 0x00 |
| 13 | Power TX at 0m |
| 14-23 | NID[0-9] |
| 24-29 | BID[0-5] |
| 30-31 | Reserved |
Note : Le nom du tag est transmis dans le Scan Response.
Format "T" / "T EN" / "T Probe" (Température)
| Byte | Service Data (≥1.0.0) | Mfr Spec. Data (≥2.0.0) |
|---|---|---|
| 1 | Length: 0x02 | Length: 0x02 |
| 2 | Type: 0x01 | Type: 0x01 |
| 3 | Data: 0x06 | Data: 0x06 |
| 4 | Length: 0x05 | Length: 0x06 |
| 5 | Type: 0x16 | Type: 0xFF |
| 6 | Temperature carac. LSB: 0x6E | ELA_CIN_LSB: 0x57 |
| 7 | Temperature carac. MSB: 0x2A | ELA_CIN_MSB: 0x07 |
| 8 | T° Data (0.01°C) LSB | TEMP_ID: 0x12 |
| 9 | T° Data (0.01°C) MSB | T° Data (0.01°C) LSB |
| 10 | Length: ≤0x10 | T° Data (0.01°C) MSB |
| 11-26 | Type: 0x09 + Name[0-14] | Length: ≤0x10 + Type: 0x09 + Name[0-14] |
Résolution : 0.01°C
Exemple : 0x0A6C = 2668 → 26.68°C
Format "RHT" (Température + Humidité)
| Byte | Service Data (≥1.0.0) | Mfr Spec. Data (≥2.0.0) |
|---|---|---|
| 1 | Length: 0x02 | Length: 0x02 |
| 2 | Type: 0x01 | Type: 0x01 |
| 3 | Data: 0x06 | Data: 0x06 |
| 4 | Length: 0x05 | Length: 0x08 |
| 5 | Type: 0x16 | Type: 0xFF |
| 6 | Temperature carac. LSB: 0x6E | ELA_CIN_LSB: 0x57 |
| 7 | Temperature carac. MSB: 0x2A | ELA_CIN_MSB: 0x07 |
| 8 | T° Data (0.01°C) LSB | RHT_DATA_ID: 0x21 |
| 9 | T° Data (0.01°C) MSB | RH Data (%) |
| 10 | Length: 0x04 | TEMP_DATA_ID: 0x12 |
| 11 | Type: 0x16 | T° Data (0.01°C) LSB |
| 12 | Humidity carac. LSB: 0x6F | T° Data (0.01°C) MSB |
| 13 | Humidity carac. MSB: 0x2A | Length: ≤0x10 |
| 14 | RH Data (%) | Type: 0x09 |
| 15-31 | Length: ≤0x10 + Type: 0x09 + Name[0-14] | Name[0-14] |
Résolution température : 0.01°C
Résolution humidité : 1%
Format "MAG" (Magnétique)
| Byte | Service Data (≥2.0.0) | Mfr Spec. Data (≥2.0.0) |
|---|---|---|
| 1 | Length: 0x02 | Length: 0x02 |
| 2 | Type: 0x01 | Type: 0x01 |
| 3 | Data: 0x06 | Data: 0x06 |
| 4 | Length: 0x05 | Length: 0x06 |
| 5 | Type: 0x16 | Type: 0xFF |
| 6 | Alert Level carac. LSB: 0x06 | ELA_CIN_LSB: 0x57 |
| 7 | Alert Level carac. MSB: 0x2A | ELA_CIN_MSB: 0x07 |
| 8 | MAG Data (cnt + state) LSB | MAG_DATA_ID: 0x32 |
| 9 | MAG Data (cnt + state) MSB | MAG Data (cnt + state) LSB |
| 10 | Length: 0x04 | MAG Data (cnt + state) MSB |
| 11 | Type: 0x16 | Length: ≤0x10 |
| 12 | Alert Status carac. LSB: 0x3F | Type: 0x09 |
| 13 | Alert Status carac. MSB: 0x2A | Name[0-14] |
| 14-31 | Data: 0x00 + Length: ≤0x10 + Type: 0x09 + Name[0-14] |
Données MAG :
- Bits 0-14 : Compteur d'événements (0-32767)
- Bit 15 : État de l'aimant (0 = absent, 1 = présent)
Format "MOV" (Mouvement)
| Byte | Service Data (≥2.0.0) | Mfr Spec. Data (≥2.0.0) |
|---|---|---|
| 1 | Length: 0x02 | Length: 0x02 |
| 2 | Type: 0x01 | Type: 0x01 |
| 3 | Data: 0x06 | Data: 0x06 |
| 4 | Length: 0x05 | Length: 0x06 |
| 5 | Type: 0x16 | Type: 0xFF |
| 6 | Alert Level carac. LSB: 0x06 | ELA_CIN_LSB: 0x57 |
| 7 | Alert Level carac. MSB: 0x2A | ELA_CIN_MSB: 0x07 |
| 8 | MOV Data (cnt + state) LSB | MOV_DATA_ID: 0x42 |
| 9 | MOV Data (cnt + state) MSB | MOV Data (cnt + state) LSB |
| 10 | Length: 0x04 | MOV Data (cnt + state) MSB |
| 11 | Type: 0x16 | Length: ≤0x10 |
| 12 | Alert Status carac. LSB: 0x3F | Type: 0x09 |
| 13 | Alert Status carac. MSB: 0x2A | Name[0-14] |
| 14-31 | Data: 0x01 + Length: ≤0x10 + Type: 0x09 + Name[0-14] |
Données MOV :
- Bits 0-14 : Compteur d'événements (0-32767)
- Bit 15 : État de mouvement (0 = aucun mouvement, 1 = mouvement en cours)
Format "ANG" (Accéléromètre 3 axes)
| Byte | Service Data (≥1.0.0) | Mfr Spec. Data (≥2.0.0) |
|---|---|---|
| 1 | Length: 0x02 | Length: 0x02 |
| 2 | Type: 0x01 | Type: 0x01 |
| 3 | Data: 0x06 | Data: 0x06 |
| 4 | Length: 0x09 | Length: 0x0A |
| 5 | Type: 0x16 | Type: 0xFF |
| 6 | MAG 3D carac. LSB: 0xA1 | ELA_CIN_LSB: 0x57 |
| 7 | MAG 3D carac. MSB: 0x2A | ELA_CIN_MSB: 0x07 |
| 8 | Accel. Data X axis (mg) LSB | ANG_DATA_ID: 0x56 |
| 9 | Accel. Data X axis (mg) MSB | Accel. Data X axis (mg) LSB |
| 10 | Accel. Data Y axis (mg) LSB | Accel. Data X axis (mg) MSB |
| 11 | Accel. Data Y axis (mg) MSB | Accel. Data Y axis (mg) LSB |
| 12 | Accel. Data Z axis (mg) LSB | Accel. Data Y axis (mg) MSB |
| 13 | Accel. Data Z axis (mg) MSB | Accel. Data Z axis (mg) LSB |
| 14-31 | Length: ≤0x10 + Type: 0x09 + Name[0-14] | Accel. Data Z axis (mg) MSB + Length: ≤0x10 + Type: 0x09 + Name[0-14] |
Résolution : 1 mg (milli-g)
Format : Entier signé 16 bits (complément à deux)
Format "DIGI IN" (Entrée numérique)
| Byte | Service Data (≥2.0.0) | Mfr Spec. Data (≥2.0.0) |
|---|---|---|
| 1 | Length: 0x02 | Length: 0x02 |
| 2 | Type: 0x01 | Type: 0x01 |
| 3 | Data: 0x06 | Data: 0x06 |
| 4 | Length: 0x05 | Length: 0x06 |
| 5 | Type: 0x16 | Type: 0xFF |
| 6 | Alert Level carac. LSB: 0x06 | ELA_CIN_LSB: 0x57 |
| 7 | Alert Level carac. MSB: 0x2A | ELA_CIN_MSB: 0x07 |
| 8 | DI Data (cnt + state) LSB | DIGI_IN_DATA_ID: 0x62 |
| 9 | DI Data (cnt + state) MSB | DI Data (cnt + state) LSB |
| 10 | Length: 0x04 | DI Data (cnt + state) MSB |
| 11 | Type: 0x16 | Length: ≤0x10 |
| 12 | Alert Status carac. LSB: 0x3F | Type: 0x09 |
| 13 | Alert Status carac. MSB: 0x2A | Name[0-14] |
| 14-31 | Data: 0x02 + Length: ≤0x10 + Type: 0x09 + Name[0-14] |
Données DI :
- Bits 0-14 : Compteur d'événements (0-32767)
- Bit 15 : État de l'entrée (0 = relâché, 1 = appuyé)
Format "Analog IN" (Entrée analogique)
| Byte | Service Data (≥2.0.0) | Mfr Spec. Data (≥2.0.0) |
|---|---|---|
| 1 | Length: 0x02 | Length: 0x02 |
| 2 | Type: 0x01 | Type: 0x01 |
| 3 | Data: 0x06 | Data: 0x06 |
| 4 | Length: 0x05 | Length: 0x06 |
| 5 | Type: 0x16 | Type: 0xFF |
| 6 | Analog Out carac. LSB: 0x58 | ELA_CIN_LSB: 0x57 |
| 7 | Analog Out carac. MSB: 0x2A | ELA_CIN_MSB: 0x07 |
| 8 | Analog Data measure (mV) LSB | AN_IN_DATA_ID: 0x72 |
| 9 | Analog Data measure (mV) MSB | Analog Data measure (mV) LSB |
| 10-31 | Length: ≤0x10 + Type: 0x09 + Name[0-14] | Analog Data measure (mV) MSB + Length: ≤0x10 + Type: 0x09 + Name[0-14] |
Résolution : 1 mV
Format : Entier non signé 16 bits
Format "DIGI OUT" (Sortie numérique)
| Byte | Value |
|---|---|
| 1 | Length: 0x02 |
| 2 | Type: 0x01 |
| 3 | Data: 0x06 |
| 4 | Length: 0x0A |
| 5 | Type: 0xFF |
| 6 | ELA_CIN_LSB: 0x57 |
| 7 | ELA_CIN_MSB: 0x07 |
| 8 | MFR_NUM_ID: 0x86 |
| 9-14 | MFR_Num[0-5] |
| 15 | Length: ≤0x10 |
| 16 | Type: 0x09 |
| 17-31 | Name[0-14] |
MFR_Num : Numéro hexadécimal configurable (max 0xFFFFFFFFFFFF)
Format "PIR" (Détecteur de présence)
| Byte | Service Data (≥3.0.1) | Mfr Spec. Data (≥3.0.1) |
|---|---|---|
| 1 | Length: 0x02 | Length: 0x02 |
| 2 | Type: 0x01 | Type: 0x01 |
| 3 | Data: 0x06 | Data: 0x06 |
| 4 | Length: 0x05 | Length: 0x06 |
| 5 | Type: 0x16 | Type: 0xFF |
| 6 | Rainfall Carac. LSB: 0x78 | ELA_CIN_LSB: 0x57 |
| 7 | Rainfall Carac. MSB: 0x2A | ELA_CIN_MSB: 0x07 |
| 8 | PIR Data (cnt + state) LSB | PIR_DATA_ID: 0x92 |
| 9 | PIR Data (cnt + state) MSB | PIR Data (cnt + state) LSB |
| 10-31 | Length: ≤0x0F + Type: 0x09 + Name[0-14] | PIR Data (cnt + state) MSB + Length: ≤0x0F + Type: 0x09 + Name[0-14] |
Données PIR :
- Bits 0-14 : Compteur d'événements (0-32767)
- Bit 15 : État de détection (0 = aucun mouvement détecté, 1 = mouvement détecté)
Informations sur la batterie
Capacité de la batterie
La capacité de la batterie est transmise dans le Scan Response lorsqu'elle descend en dessous de 15%.
Service Data (Version 1.0.0, 2.0.0, 2.1.x)
| Byte | Value |
|---|---|
| 1 | Length: 0x04 |
| 2 | Type: 0x16 |
| 3 | Battery Serv. LSB: 0x0F |
| 4 | Battery Serv. MSB: 0x18 |
| 5 | Batt. data (%) |
Service Data (Version ≥2.2.0)
| Byte | Value |
|---|---|
| 1 | Length: 0x04 |
| 2 | Type: 0x16 |
| 3 | Battery Serv. LSB: 0x19 |
| 4 | Battery Serv. MSB: 0x2A |
| 5 | Batt. data (%) |
Mfr Spec. Data (Version ≥2.0.0)
| Byte | Value |
|---|---|
| 1 | Length: 0x05 |
| 2 | Type: 0xFF |
| 3 | ELA_CIN_LSB: 0x57 |
| 4 | ELA_CIN_MSB: 0x07 |
| 5 | BATT_DATA_ID: 0xF1 |
| 6 | Batt. data (%) |
Tension de la batterie (Version ≥3.0.0)
Disponible si le paramètre "Battery voltage presence" est activé dans la configuration NFC.
| Byte | Value |
|---|---|
| 1 | Length: 0x06 |
| 2 | Type: 0xFF |
| 3 | ELA_CIN_LSB: 0x57 |
| 4 | ELA_CIN_MSB: 0x07 |
| 5 | BATT_DATA_ID: 0xF2 |
| 6 | Batt. voltage (mV) LSB |
| 7 | Batt. voltage (mV) MSB |
Résolution : 1 mV
Notes de version
Version 1.0.0
- Transmission du Battery Service dans le Scan Response lorsque la batterie descend en dessous de 15%
- Suppression du Nordic UART Service (NUS) du Scan Response
Version 2.0.0
- Nom du tag envoyé dans le Scan Response pour iBeacon/Eddystone
- Identifiant de société ELA Innovation : 0x0757
- Ajout du champ "ID Manufacturer Data" pour les formats ELA_ID et DIGI_OUT
Version 2.1.0
- Renommage TOR IN → DIGI IN et TOR OUT → DIGI OUT
Version 2.2.0
- Données de batterie dans le Battery Level service (0x2A19)
- Type d'adresse MAC changé de Random à Public
Version 3.0.0
- Possibilité de transmettre la tension de la batterie dans le Scan Response
Ressources
Code d'exemple disponible sur : https://github.com/elaInnovation
Documentation complète : www.elainnovation.com
Document non contractuel - Les spécifications peuvent être modifiées sans notification