CayenneLPP

The Cayenne Low Power Payload (LPP) provides a convenient and easy way to send data over LPWAN networks such as LoRaWAN. The Cayenne LPP is compliant with the payload size restriction, which can be lowered down to 11 bytes, and allows the end device to send multiple sensor data at one time.

Configure Your Device

In order to use the CayenneLPP Payload Formatter, your device must send Cayenne compatible binary payloads. For Arduino compatible boards, documentation about altering your Arduino Sketch to encode data with CayenneLPP can be found at The Things Network Cayenne Documentation. General information about the CayenneLPP Payload is available in the CayenneLPP Github Repository.

Decoded Payload

Once you have configured your device to send CayenneLPP compatible payloads, enabling the CayenneLPP Payload Formatter will add a decoded_payload object to uplink messages from your device.

For example, the following binary data:

[0x3, 0x67, 0x01, 0x10, 0x05, 0x67, 0x00, 0xFF]

will produce the following uplink_message:

{
  "uplink_message": {
    "f_port": 8,
    "f_cnt": 113,
    "frm_payload": "A2cBEAVnAP8=",
    "decoded_payload": {
      "temperature_3": 27.200000762939453,
      "temperature_5": 25.5
    },
  }
}

Translating Sensor Types to decoded_payload Fields

A description of the Cayenne LPP sensor types is available in the Cayenne documentation here.

The Things Stack uses the sensor names to create the decoded_payload fields, so a Cayenne payload with one LPP_TEMPERATURE and one LPP_BAROMETRIC_PRESSURE sensor reading will produce the following decoded payload:

{
  "uplink_message": {
    "f_port": 8,
    "f_cnt": 113,
    "frm_payload": "AHMnvwBnAN4=",
    "decoded_payload": {
      "barometric_pressure_0": 1017.5,
      "temperature_0": 22.200000762939453
    },
  }
}

The decoded_payload entries are formed from the lowercase sensor constant and channel, i.e. a LPP_TEMPERATURE reading on channel 0 becomes temperature_0.