La carga útil de baja potencia de Cayenne (LPP) proporciona una manera conveniente y fácil de enviar datos a través de redes LPWAN como Lorawan. El Cayenne LPP cumple con la restricción del tamaño de la carga útil, que se puede bajar a 11 bytes, y permite que el dispositivo envíe múltiples datos del sensor a la vez.
Además, el Cayenne LPP permite que el dispositivo envíe diferentes datos del sensor en diferentes marcos. Para hacer eso, cada datos del sensor debe estar prefijado con dos bytes:
| 1 byte | 1 byte | N bytes | 1 byte | 1 byte | M bytes | ... |
| Datos1 CH. | Tipo de datos1 | Datos1 | Data2 Ch. | Tipo de datos2 | Datos2 | ... |
Los tipos de datos se ajustan a las pautas de objetos inteligentes de IPSO Alliance, que identifican cada tipo de datos con una "ID de objeto". Sin embargo, como se muestra a continuación, se realiza una conversión para adaptarse al ID del objeto en un solo byte.
LPP_DATA_TYPE = IPSO_OBJECT_ID - 3200
Cada tipo de datos puede usar 1 o más bytes para enviar los datos de acuerdo con la siguiente tabla.
| Tipo | Ipso | LPP | Maleficio | Tamaño de datos | Resolución de datos por bit |
| Entrada digital | 3200 | 0 | 0 | 1 | 1 |
| Salida digital | 3201 | 1 | 1 | 1 | 1 |
| Entrada analógica | 3202 | 2 | 2 | 2 | 0.01 firmado |
| Salida analógica | 3203 | 3 | 3 | 2 | 0.01 firmado |
| Sensor de iluminancia | 3301 | 101 | 65 | 2 | 1 Lux Unsigned MSB |
| Sensor de presencia | 3302 | 102 | 66 | 1 | 1 |
| Sensor de temperatura | 3303 | 103 | 67 | 2 | 0.1 ° C firmado MSB |
| Sensor de humedad | 3304 | 104 | 68 | 1 | 0.5 % sin firmar |
| Acelerómetro | 3313 | 113 | 71 | 6 | 0.001 g firmado MSB por eje |
| Barómetro | 3315 | 115 | 73 | 2 | 0.1 HPA MSB sin firmar |
| Girómetro | 3334 | 134 | 86 | 6 | MSB firmado de 0.01 °/S por eje |
| Ubicación GPS | 3336 | 136 | 88 | 9 | Latitud: 0.0001 ° firmado MSB |
| Longitud: 0.0001 ° MSB firmado | |||||
| Altitud: MSB firmado de 0.01 metros |
| Carga útil (hex) | 03 67 01 10 05 67 00 ff | |
| Canal de datos | Tipo | Valor |
| 03 ⇒ 3 | 67 ⇒ Temperatura | 0110 = 272 ⇒ 27.2 ° C |
| 05 ⇒ 5 | 67 ⇒ Temperatura | 00ff = 255 ⇒ 25.5 ° C |
Marco n
| Carga útil (hex) | 01 67 ff d7 | |
| Canal de datos | Tipo | Valor |
| 01 ⇒ 1 | 67 ⇒ Temperatura | Ffd7 = -41 ⇒ -4.1 ° C |
Marco N+1
| Carga útil (hex) | 06 71 04 D2 FB 2E 00 00 | |
| Canal de datos | Tipo | Valor |
| 06 ⇒ 6 | 71 ⇒ Acelerómetro | X: 04d2 = +1234 ⇒ +1.234g |
| Y: fb2e = -1234 ⇒ -1.234g | ||
| Z: 0000 = 0 ⇒ 0g | ||
#include 'CayenneLPP.h';
#define MAX_SIZE 200; // depends on spreading factor and frequency used
CayenneLPP Payload(MAX_SIZE);
float celsius = -4.1;
float accel[] = {1.234, -1.234, 0};
float rh = 30;
float hpa = 1014.1;
float latitude = 42.3519;
float longitude = -87.9094;
float altitude:10
int size = 0;
Payload.reset();
size = Payload.addTemperature(0, celsius);
if (size == 0) {
// not enough byte left to add the data
}
else {
// add function returned current payload size
}
Payload.addAccelerometer(1, accel[0], accel[1], accel[2]);
Payload.addRelativeHumidity(3, rh);
Payload.addBarometricPressure(4, hpa);
Payload.addGPS(5, latitude, longitude, altitude);
// Call LoRaWAN library to send the frame
LORA_SEND(Payload.getBuffer(), Payload.getSize());