Mode connecté (commandes)
Pour pouvoir se connecter au tag et télécharger le datalogger, il est recommandé de configurer un Advertising Interval inférieur ou égal à 3 secondes. Si la période de publicité est supérieure à cette valeur, l'établissement du mode connecté peut prendre plus de temps et nécessiter plusieurs tentatives.
Liste des commandes
| Commande | Action | Version firmware minimale |
|---|---|---|
| LED_ON | Allume la LED (clignotement infini) | ≥ 1.0.0 |
| LED_OFF | Éteint la LED | ≥ 1.0.0 |
| LED_ON XX | Allume la LED pendant XX secondes | ≥ 2.0.0 |
| BUZZ_ON | Active le buzzer (bips répétés) | ≥ 1.0.0 |
| BUZZ_OFF | Désactive le buzzer | ≥ 1.0.0 |
| BUZZ_ON XX | Active le buzzer pendant XX secondes | ≥ 2.0.0 |
| DIGI_ON | Met la sortie digitale à ON | ≥ 2.1.0 |
| DIGI_OFF | Met la sortie digitale à OFF | ≥ 2.1.0 |
| DIGI_ON XX | Met la sortie digitale à ON pendant XX secondes | ≥ 2.1.0 |
| RAZ_COUNT | Réinitialise le compteur | ≥ 2.0.0 |
| LOG_DL | Télécharge le datalogger (ordre chronologique) | ≥ 2.0.0 |
| LOG_SO_DL | Télécharge en ordre inverse | ≥ 4.0.0 |
| LOG_RST | Efface le datalogger et son horodatage | ≥ 2.0.0 |
| LOG_SP_DL XX YY | Télécharge les données entre index XX et YY (ordre chronologique) | ≥ 4.0.0 |
| LOG_SP_INV_DL XX YY | Télécharge les données entre index XX et YY (ordre inverse) | ≥ 4.0.0 |
| LOG_SP_DL_DATE | Télécharge entre deux dates (chronologique) | ≥ 4.1.0 |
| LOG_SP_INV_DL_DATE | Télécharge entre deux dates (ordre inverse) | ≥ 4.1.0 |
| LOG_SET_CURR_DATE | Définit la date courante du tag | ≥ 4.1.0 |
| LOG_READ_CURR_DATE | Lit la date courante | ≥ 4.1.0 |
| LOG_READ_START_DATE | Lit la date de début d’enregistrement | ≥ 4.1.0 |
| GET_BATT_VOLTAGE | Retourne la tension batterie (mV) | ≥ 2.1.0 |
| GET_SENSOR_DATA | Retourne la dernière valeur capteur | ≥ 2.2.0 |
Datalogger simple (temps relatif)
Les tags capteurs ELA Innovation peuvent utiliser la fonction datalogger.
Le datalogger est un enregistrement de données sauvegardées pendant l’advertising, chaque valeur étant associée à un horodatage permettant d’identifier le moment de la mesure.
Fonctionnement
Pour les firmwares < 4.0.0, le datalogger est récupérable en mode connecté via la commande :
LOG_DL
Format des données
Exemple pour un capteur température avec un intervalle de 30 secondes :
Temperature LOG:
DATA_START
0d0h0m30s:2712
0d0h1m0s:2730
0d0h1m30s:2695
…
1d3h25m30s:1505
END_OF_DATA
0d0h0m30s→ 30 secondes après démarrage1d3h25m30s→ 1 jour, 3h, 25 min, 30 sec après démarrage
Le format est identique pour tous les produits :
xxd xxh xxm xxs : valeur capteur
Les données capteurs correspondent aux valeurs transmises en advertising.
Suppression des données
Commande :
LOG_RST
Efface complètement le contenu du datalogger.
Téléchargement partiel (firmware ≥ 4.0.0)
Permet de réduire le volume de données transférées.
Commandes disponibles
LOG_SP_DL XX YY
→ ordre chronologique (XX = plus ancien)
LOG_SP_INV_DL XX YY
→ ordre inverse (XX = plus récent)
Exemples
LOG_DL
DATA_START
0d0h0m30s:2712
...
END_OF_DATA
LOG_SP_DL 03 12
DATA_START
0d0h1m30s:2695
...
END_OF_DATA
LOG_SP_INV_DL 03 12
DATA_START
1d3h25m30s:1505
...
END_OF_DATA
Datalogger temps absolu
Pour les versions firmware strictement inférieures à 4.1.0, l’horodatage du datalogger peut être récupéré en temps absolu avec le format :
DD/MM/YYYY HH:MM:SS Tz:Tz
en utilisant la commande :
LOG_SP_DL_DATE
Principe de fonctionnement
L’utilisation du temps absolu nécessite de définir une date de référence dans le beacon via la commande :
LOG_SET_CURR_DATE
Cette commande doit être envoyée :
- après le début de l’enregistrement (après
LOG_RSTou reboot) - avant la commande
LOG_SP_DL_DATE
Téléchargement partiel
Comme pour le datalogger simple, il est possible de télécharger uniquement une partie des données en spécifiant une plage de dates :
LOG_SP_DL_DATE DD/MM/YYYY HH:MM dd/mm/yyyy hh:mm
Téléchargement inverse
Il est également possible de récupérer les données en ordre chronologique inverse (du plus récent au plus ancien) :
LOG_SP_INV_DL_DATE
Avec possibilité de définir une plage de dates.
Exemples de commandes
LOG_DL
Temperature LOG:
DATA_START
0d0h0m30s:2712
0d0h1m0s:2730
0d0h1m30s:2695
…
1d3h24m30s:1617
1d3h25m0s:1500
1d3h25m30s:1505
END_OF_DATA
LOG_SP_DL 03 12
Temperature LOG:
DATA_START
0d0h1m30s:2695
0d0h2m0s:2700
0d0h2m30s:2705
…
0d0h5m0s:2902
0d0h5m30s:2875
0d0h6m0s:2822
END_OF_DATA
LOG_SP_INV_DL 03 12
Temperature LOG:
DATA_START
1d3h25m30s:1505
1d3h25m0s:1500
1d3h24m30s:1617
…
1d3h20m30s:1200
1d3h20m00s:1102
1d3h19m30s:1015
END_OF_DATA
Data Logger EN12830
Configuration du mode connecté BLE
Démarrage de l'enregistrement
Pour commencer à stocker les relevés de température dans la mémoire du tag, vous devez envoyer la date/heure de démarrage au tag. Cette date/heure de démarrage sera utilisée comme base pour l'horodatage des données. Après l'envoi de la commande, le data logger commencera à surveiller et à stocker les valeurs pour la période définie dans la configuration NFC.
Commande : DATALOGGER_START
Vous devez ensuite fournir le mot de passe BLE pour que la commande soit prise en compte par le tag. Enfin, vous devez fournir la date au format suivant :
DD/MM/YYYY HH:mm:SS +hh:gg
Où :
- DD : jour de début de l'enregistrement, écrit avec 2 chiffres (ex. 01, 08, 15...)
- MM : mois de début de l'enregistrement, écrit avec 2 chiffres (ex. 01, 05, 11...)
- YYYY : année de début de l'enregistrement, écrite avec 4 chiffres (ex. 2019...)
- HH : heure de début de l'enregistrement, en format 24 heures, écrite avec 2 chiffres (ex. 02, 16, 23...)
- mm : minute de début de l'enregistrement, écrite avec 2 chiffres (ex. 01, 26, 54...)
- SS : secondes de début de l'enregistrement, écrites avec 2 chiffres (ex. 05, 18, 56...)
- hh : heure du fuseau horaire UTC utilisé pour démarrer l'enregistrement, écrite avec 2 chiffres (ex. 00, 03...)
- gg : minutes du fuseau horaire UTC utilisé pour démarrer l'enregistrement, écrites avec 2 chiffres (ex. 00, 30...)
Exemple de commande :
DATALOGGER_START PASSWORD_1 05/06/2019 11:20:00 +01:00
Réponses du tag :
- Si le mot de passe est valide :
DATALOGGER_START: Success - Si le mot de passe est invalide :
DATALOGGER_START: ACCESS DENIED - Si la date est invalide :
DATALOGGER_START: WRONG PARAMETERS
Lorsque cette commande est envoyée au tag, tout le contenu précédent stocké sur le data logger est supprimé et l'enregistrement redémarre à zéro.
Lorsque cette commande est envoyée au tag, la première mesure du capteur sera effectuée après la période de journalisation entrée dans la configuration NFC.
Par exemple, si la période du Datalogger est de 30 secondes, la première donnée du data logger sera mesurée et stockée 30 secondes après l'envoi de la commande DATALOGGER_START.
Arrêt de l'enregistrement
Vous pouvez arrêter l'enregistrement sur le tag en utilisant la commande DATALOGGER_STOP. Vous devez fournir le mot de passe BLE pour que la commande soit prise en compte par le tag. Les données déjà enregistrées ne sont pas effacées par cette commande.
Exemple de commande :
DATALOGGER_STOP PASSWORD_1
Réponses du tag :
- Si le mot de passe est valide et l'enregistrement est en cours :
DATALOGGER_STOP: Success - Si le mot de passe est valide mais l'enregistrement n'est pas en cours :
DATALOGGER_STOP: LOG not started! - Si le mot de passe est invalide :
DATALOGGER_STOP: ACCESS DENIED
Les données stockées dans la mémoire du data logger peuvent être récupérées (commande READ_DATA) jusqu'à ce que vous démarriez une autre session d'enregistrement ou redémarriez le tag.
Récupération et vérification des données
Lecture de toutes les valeurs du data logger
Vous pouvez lire les données stockées à tout moment, sans avoir à arrêter l'enregistrement.
4 commandes en mode connecté sont disponibles pour récupérer les données du data logger :
- READ_DATA : télécharge le data logger complet en ordre chronologique (du plus ancien au plus récent)
- READ_INV_DATA : télécharge le data logger complet en ordre inverse (du plus récent au plus ancien)
- READ_SP_DATA DD/MM/YYYY HH:MM dd/mm/yyyy hh:mm : télécharge le data logger complet en ordre chronologique entre les dates DD/MM/YYYY HH:MM et dd/mm/yyyy hh:mm
- READ_SP_INV_DATA DD/MM/YYYY HH:MM dd/mm/yyyy hh:mm : télécharge le data logger complet en ordre chronologique inverse entre les dates DD/MM/YYYY HH:MM et dd/mm/yyyy hh:mm
Pour chaque commande, le mot de passe doit être spécifié. Si la syntaxe de la commande est valide, le tag retourne READ_DATA: Success. Le tag commence ensuite à transmettre ses données.
Exemples de commandes :
READ_DATA PASSWORD_1
READ_INV_DATA PASSWORD_1
READ_SP_DATA DD/MM/YYYY HH:MM dd/mm/yyyy hh:mm PASSWORD_1
READ_SP_INV_DATA DD/MM/YYYY HH:MM dd/mm/yyyy hh:mm PASSWORD_1
Réponses du tag :
- Si le mot de passe est valide :
READ_DATA: Success - Si le mot de passe est invalide :
READ_DATA: ACCESS DENIED - Si le mot de passe est valide mais l'enregistrement n'est pas en cours :
READ_DATA: LOG not started!
Une fois la commande reçue, le tag transmet toutes les données stockées dans la mémoire du data logger. Les données sont au format suivant :
---DOWNLOAD_START---
Firmware version: 2.1.0\n
MacAddress: 01:02:03:04:05:FE\n
Name: TAG_LOCAL_NAME\n
Unit: Celsius degrees\n
Start date: 01/04/2019 11:26:33 +01:00\n
<DATA_START>\n
01/04/2019 11:26:33+01:00: 23.34\n
01/04/2019 11:26:43+01:00: 23.44\n
[…]
<DATA_END>\n
CRC16: 0x0D06\n
---DOWNLOAD_END---
Les caractères de nouvelle ligne (\n) ne sont pas visibles, mais ils doivent être pris en compte pour le calcul du CRC.
Explication des champs :
- ---DOWNLOAD_START--- : marqueur indiquant le début de la transmission par le data logger
- Firmware version : version du firmware du data logger (tag)
- MacAddress : numéro d'identification unique du tag
- Name : nom du tag tel que configuré dans la mémoire NFC
- Unit : unité utilisée pour les valeurs de température (°C dans cet exemple)
- Start date : début de l'enregistrement tel qu'envoyé par la commande
DATALOGGER_START - <DATA_START> : marqueur indiquant le début de la transmission des données de température
- 01/04/2019 11:26:33+01:00: 23.34 : exemple complet de données de température avec horodatage
- <DATA_END>; : marqueur indiquant la fin de la transmission des données de température
- CRC16 : contrôle de redondance cyclique calculé à partir des données transmises
- ---DOWNLOAD_END--- : marqueur indiquant la fin de la transmission par le data logger
Lecture des données de température
Dans l'exemple précédent, les relevés de température sont formalisés comme suit :
01/04/2019 11:26:33+01:00: 23.34
- 01/04/2019 correspond à la date à laquelle la température a été relevée : 1er avril 2019 dans cet exemple
- 11:26:33 correspond à l'heure à laquelle la température a été relevée
- +01:00 correspond au fuseau horaire UTC, fourni avec la commande
DATALOGGER_START - 23.34 correspond à la valeur de température exprimée dans l'unité transmise par le data logger, 23,34°C dans cet exemple
Vérification du CRC du data logger
Les données du datalogger sont contrôlées par un calcul CRC16 (Cyclic Redundancy Check). Les détails du CRC sont les suivants :
- Algorithme : CRC-16-CCITT
- Polynôme : 0x1021
- Valeur d'initialisation : 0xFFFF
Exemple de calcul : Données d'entrée (type ASCII) 0123456789ABCDEF
- Résultat :
0x2C1F
Le calcul du CRC du data logger est effectué sur toutes les données contenues entre les marqueurs ---DOWNLOAD_START--- (non inclus) et la chaîne de caractères CRC16: 0x (inclus).
Exemple complet de data logger :
---DOWNLOAD_START---
Firmware version: 2.1.0\n
MacAddress: FA:FD:50:39:A1:2C\n
Name: BE_TEST_T3\n
Unit: Celsius degrees\n
Start date: 14/06/2019 12:00:00 +01:00\n
<DATA_START>\n
14/06/2019 12:00:10 +01:00: 26.62\n
14/06/2019 12:00:20 +01:00: 26.62\n
<DATA_END>\n
CRC16: 0xDF91\n
---DOWNLOAD_END---
La valeur CRC est calculée sur toutes les données affichées ci-dessus (de Firmware version à CRC16: 0x inclus). Pour cet exemple, la valeur est donc 0xDF91.
Un calculateur CRC est disponible en ligne à cette adresse : http://www.tahapaksu.com/crc/. Utilisez le résultat contenu dans le champ CRC-CCITT (0xFFFF).
- L'utilisation de la fonction
READ_DATAn'efface pas les données enregistrées et transmises - L'enregistrement est arrêté jusqu'à ce que la transmission ne soit pas terminée (marqueur "---DOWNLOAD_END---"). Il continue automatiquement dès que la transmission des données est terminée
Lecture de la date de début d'enregistrement
La commande pour lire la date de début d'enregistrement qui a été envoyée au tag est READ_START_DATE. Vous devez fournir le mot de passe BLE pour que la commande soit prise en compte par le tag.
Exemple de commande :
READ_START_DATE PASSWORD_1
Réponses du tag :
- Si le mot de passe est valide mais l'enregistrement n'est pas en cours :
READ_START_DATE: LOG not started! - Si le mot de passe est valide et l'enregistrement est en cours :
READ_START_DATE: DD/MM/YYYY HH:MM:SS +UU:UU - Si le mot de passe est invalide :
READ_START_DATE: ACCESS DENIED