Cayenne Low Power Payload

Dans les réseaux à basse consommation énergétique le nombre d'octets à transmettre a un coût, il est donc d'usage de transmettre uniquement l'information utile. Mais cela peut manquer de souplesse, et c'est là où le format Cayenne améliore la gestion des données, tout en conservant un payload minimal.

Cayenne Docs
Create and rapid prototype Internet of Things products with Cayenne, an IoT project builder for developers and makers to quickly create their connected device projects.

Trame Cayenne LPP

Pour transmettre nos données en utilisant le format Cayenne nous allons construire une trame (suite d'octets) qui aura la forme suivante :

1 Octet 1 Octet n Octets ...
Canal Type Donnée ...
  • Canal : sert à identifier de façon unique un des capteurs du périphérique.
  • Type : permet de qualifier la mesure et donc sa taille. (ex : 63 pour une mesure de température qui se fera sur 2 octets signés)

Pour l'ensemble des possibilités, référez-vous aux tableaux de la documentation de Cayenne qui même en anglais reste très compréhensible.

Un des gros avantages de Cayenne est donc de pouvoir transmettre sur une même application des données de nature différente ou en cas d'absence d'une mesure de transmettre la trame.

Décodage chez TTN/TTS

Chez TTN/TTS le décodage Cayenne LPP est proposé par défaut :

Ce qui vous permet d'avoir dans les Live data le décodage de vos données pour avoir une lecture directe dans le decoded payload :

Donnée d'un paquet LoRaWAN décodé par TTS TTN

Coté arduino

Voici un code qui permet de créer une trame Cayenne puis de générer le appData et le appDataSize dans le cas de l'utilisation d'un CubeCell :

#include <CayenneLPP.h>

CayenneLPP lpp(160);

static void prepareTxFrame()
{
  lpp.reset();
  lpp.addAnalogInput(1, voltage / 1000);
  lpp.addTemperature(2, temperature);
  lpp.addRelativeHumidity(3, humidity);
  appDataSize = lpp.getSize();
  memcpy(appData, lpp.getBuffer(), lpp.getSize());
}