A Cayenne Baixa carga útil de baixa potência (LPP) fornece uma maneira conveniente e fácil de enviar dados sobre redes LPWAN, como Lorawan. O Cayenne LPP é compatível com a restrição de tamanho da carga útil, que pode ser reduzida para 11 bytes, e permite que o dispositivo envie vários dados do sensor ao mesmo tempo.
Além disso, o Cayenne LPP permite que o dispositivo envie diferentes dados do sensor em diferentes quadros. Para fazer isso, cada dados do sensor deve ser prefixado com dois bytes:
| 1 byte | 1 byte | N bytes | 1 byte | 1 byte | M bytes | ... |
| Data1 cap. | Data1 tipo | Data1 | Data2 Ch. | Data2 Tipo | Data2 | ... |
Os tipos de dados estão em conformidade com as diretrizes do IPSO Alliance Smart Objects, que identifica cada tipo de dados com um "ID do objeto". No entanto, como mostrado abaixo, uma conversão é feita para se ajustar ao ID do objeto em um único byte.
LPP_DATA_TYPE = IPSO_OBJECT_ID - 3200
Cada tipo de dados pode usar 1 ou mais bytes para enviar os dados de acordo com a tabela a seguir.
| Tipo | IPSO | Lpp | Hexadecimal | Tamanho dos dados | Resolução de dados por bit |
| Entrada digital | 3200 | 0 | 0 | 1 | 1 |
| Saída digital | 3201 | 1 | 1 | 1 | 1 |
| Entrada analógica | 3202 | 2 | 2 | 2 | 0,01 assinado |
| Saída analógica | 3203 | 3 | 3 | 2 | 0,01 assinado |
| Sensor de iluminação | 3301 | 101 | 65 | 2 | 1 lux msb não assinado |
| Sensor de presença | 3302 | 102 | 66 | 1 | 1 |
| Sensor de temperatura | 3303 | 103 | 67 | 2 | 0,1 ° C assinado MSB |
| Sensor de umidade | 3304 | 104 | 68 | 1 | 0,5 % não assinado |
| Acelerômetro | 3313 | 113 | 71 | 6 | 0,001 g assinado msb por eixo |
| Barômetro | 3315 | 115 | 73 | 2 | 0,1 HPA MSB não assinado |
| Girômetro | 3334 | 134 | 86 | 6 | 0,01 °/s assinado msb por eixo |
| Localização do GPS | 3336 | 136 | 88 | 9 | Latitude: 0,0001 ° MSB assinado |
| Longitude: 0,0001 ° MSB assinado | |||||
| Altitude: 0,01 metro assinado MSB |
| Carga útil (hexadecimal) | 03 67 01 10 05 67 00 ff | |
| Canal de dados | Tipo | Valor |
| 03 ⇒ 3 | 67 ⇒ temperatura | 0110 = 272 ⇒ 27,2 ° C |
| 05 ⇒ 5 | 67 ⇒ temperatura | 00ff = 255 ⇒ 25,5 ° C |
Quadro n
| Carga útil (hexadecimal) | 01 67 ff d7 | |
| Canal de dados | Tipo | Valor |
| 01 ⇒ 1 | 67 ⇒ temperatura | Ffd7 = -41 ⇒ -4,1 ° C |
Quadro n+1
| Carga útil (hexadecimal) | 06 71 04 D2 FB 2E 00 00 | |
| Canal de dados | 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());