PayloadFormatter
Cette bibliothèque permet de facilement générer des trames en incorporant diverses informations et notamment des températures en format Q10.6.
Guide de démarrage rapide

Introduction

Cette bibliothèque inclue une seule classe : PayloadFormatter.
Elle permet de construire une trame contenant : le nombre total de trames à transmettre, le numéro de la trame transmise, le nombre de lignes de températures, le nombre de colonnes de températures, la date et l'heure,
la température extérieure, les températures de la matrice aux nombre de lignes * colonnes.
Cette trame peut ensuite être décodée via le décodeur de trame écrit en javascript disponible ici.
Ce décodeur peut être intégré à TTN.

Attention, il faut préalablement installer la bibliothèque RTClib-master dans le dossier Documents\Arduino\libraries téléchargeable ici.
Elle est nécessaire car elle définit l'objet DateTime.

Voici un code d'exemple de l'utilisation de l'objet PayloadFormatter :

#include <PayloadFormatter.h>
//Programme d'exemple d'utilisation de la bibliothèque PayloadFormatter
//Création de l'objet pour 4 températures internes (2 lignes par 2 colonnes)
PayloadFormatter formatter(2,2);
double temperatureExterne = 28.58;
double temperatureInternes[2][4] = {{15.21,16.18,12.45,18.42},{18.58,11.49,22.38,9.73}};
DateTime dt(2020, 5, 14, 12,39); //14/05/2020 à 12h39
uint8_t *buffer(NULL);
uint16_t size(0);
void setup()
{
Serial.begin(115200);
Serial.println("Démarrage d'une session de construction de 2 trames");
formatter.startSession(2);
size = formatter.buildPayload(&buffer, &dt, temperatureExterne, temperatureInternes[0]);
Serial.print("Trame construite : ");
for(int i(0); i < size; i++)
{
buffer[i] <= 0x0F ? Serial.print("0") : Serial.print(""); Serial.print(buffer[i], HEX); Serial.print(" ");
}
Serial.printf(" de taille : %u\n Session terminee ? %s\n", size, formatter.endSession() ? "OUI" : "NON");
size = formatter.buildPayload(&buffer, &dt, temperatureExterne, temperatureInternes[1]);
Serial.print("Trame construite : ");
for(int i(0); i < size; i++)
{
buffer[i] <= 0x0F ? Serial.print("0") : Serial.print(""); Serial.print(buffer[i], HEX); Serial.print(" ");
}
Serial.printf(" de taille : %u\n Session terminee ? %s\n", size, formatter.endSession() ? "OUI" : "NON");
Serial.println("Fin de l'exemple");
}
void loop()
{
}
Auteur
Anatole SCHRAMM-HENRY
Date
15 Jan 2020