Полезная нагрузка Cayenne Low Power (LPP) предоставляет удобный и простой способ отправки данных по сетям LPWAN, таким как Lorawan. LPP Cayenne соответствует ограничению размера полезной нагрузки, которое можно снизить до 11 байтов и позволяет устройству отправлять несколько данных датчиков одновременно.
Кроме того, LPP Cayenne позволяет устройству отправлять разные данные датчика в разных кадрах. Для этого каждый датчик должен быть префикс с двумя байтами:
| 1 байт | 1 байт | N байтов | 1 байт | 1 байт | М байты | ... |
| Data1 Ch. | Тип данных1 | Data1 | Data2 Ch. | Тип данных2 | Данные2 | ... |
Типы данных соответствуют рекомендациям IPSO Alliance Smart Objects, которые идентифицируют каждый тип данных с «идентификатором объекта». Однако, как показано ниже, преобразование сделано, чтобы соответствовать идентификатору объекта в один байт.
LPP_DATA_TYPE = IPSO_OBJECT_ID - 3200
Каждый тип данных может использовать 1 или более байтов для отправки данных в соответствии со следующей таблицей.
| Тип | Ipso | LPP | Гекс | Размер данных | Разрешение данных за бит |
| Цифровой ввод | 3200 | 0 | 0 | 1 | 1 |
| Цифровой выход | 3201 | 1 | 1 | 1 | 1 |
| Аналоговый вход | 3202 | 2 | 2 | 2 | 0,01 подписано |
| Аналоговый выход | 3203 | 3 | 3 | 2 | 0,01 подписано |
| Датчик освещения | 3301 | 101 | 65 | 2 | 1 Lux Unsigned MSB |
| Датчик присутствия | 3302 | 102 | 66 | 1 | 1 |
| Датчик температуры | 3303 | 103 | 67 | 2 | 0,1 ° C подписано MSB |
| Датчик влажности | 3304 | 104 | 68 | 1 | 0,5 % без подписи |
| Акселерометр | 3313 | 113 | 71 | 6 | 0,001 г подписано MSB на ось |
| Барометр | 3315 | 115 | 73 | 2 | 0,1 HPA без знака MSB |
| Гирометр | 3334 | 134 | 86 | 6 | 0,01 °/с подписано MSB на ось |
| GPS местоположение | 3336 | 136 | 88 | 9 | Широта: 0,0001 ° Подписано MSB |
| Долгота: 0,0001 ° Подписано MSB | |||||
| Высота: 0,01 метра подписана MSB |
| Полезная нагрузка (шестигранник) | 03 67 01 10 05 67 00 ff | |
| Канал данных | Тип | Ценить |
| 03 ⇒ 3 | 67 ⇒ температура | 0110 = 272 ⇒ 27,2 ° C |
| 05 ⇒ 5 | 67 ⇒ температура | 00ff = 255 ⇒ 25,5 ° C |
Кадр
| Полезная нагрузка (шестигранник) | 01 67 FF D7 | |
| Канал данных | Тип | Ценить |
| 01 ⇒ 1 | 67 ⇒ температура | Ffd7 = -41 ⇒ -4,1 ° C |
Кадр N+1
| Полезная нагрузка (шестигранник) | 06 71 04 D2 FB 2E 00 00 | |
| Канал данных | Тип | Ценить |
| 06 ⇒ 6 | 71 ⇒ Акселерометр | 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());