TTN payload_fields

When using the Cayenne integration from The Things Network, I am forced to follow the payload format specified by Cayenne’s LPP. I am however using my own payload format, because my device also talks to other systems.

For simplicity I am using the TTN payload functions on their dashboard to parse my payload. The data then appears in a payload_fields json object when I receive the data through the normal channels (MQTT).

I expected that Cayenne also received this same json object, not only the raw payload. Why does Cayenne not plot the values of all the fields under payload_fields, without trying to parse the raw payload itself?

An example of the JSON my other systems receive from TTN when a packet is received from one of my LoRaWAN devices:

{
	"app_id": "jpm_temp_hum",
	"dev_id": "1284p_dht22_001",
	"hardware_serial": "002B13946D4F67CA",
	"port": 1,
	"counter": 13,
	"payload_raw": "AZ8A54c=",
	"payload_fields": {
		"humidity": 41.5,
		"temperature": 23.1
	},
	"metadata": {
		"time": "2017-04-03T15:14:43.072975408Z",
		"frequency": 868.1,
		"modulation": "LORA",
		"data_rate": "SF7BW125",
		"coding_rate": "4/5",
		"gateways": [{
			"gtw_id": "eui-aa555a000806053f",
			"timestamp": 3016629843,
			"time": "2017-04-03T15:14:42.750351Z",
			"channel": 0,
			"rssi": -115,
			"snr": 2.5,
			"rf_chain": 1,
			"latitude": 52.22121,
			"longitude": 6.8857374,
			"altitude": 66
		}, {
			"gtw_id": "eui-1dee039aac75c307",
			"timestamp": 2828515563,
			"time": "",
			"channel": 0,
			"rssi": -115,
			"snr": 3.2,
			"rf_chain": 1,
			"latitude": 52.216637,
			"longitude": 6.9006734,
			"altitude": 100
		}]
	}
}

The decryped payload in JSON is from the Lora Server decoding the Cayenne Payload before sending it downsream, not specified in the Cayenne LPP format.

so if your using TTN its
Device(encoded Canyee LPP)—>Gateway(encoded Canyee LPP)–>LoraServer on TTN(decodes the Cayenne LPP)—>HTTP/MQTT,etc Integration–>your application server.