The output from the decoder is embedded in to a message with the meta-data of the device, application and gateway ids, locations, timestamps and more. This is an MQTT message:
{
"app_id": "descartes-room-monitor",
"counter": 36259,
"dev_id": "descartes-tt-indoor-002",
"hardware_serial": "DE5CA7FFFFFFFFF9",
"metadata": {
"airtime": 56576000,
"coding_rate": "4/5",
"data_rate": "SF7BW125",
"frequency": 868.1,
"gateways": [
{
"altitude": 150,
"channel": 0,
"gtw_id": "eui-de5ca70000000001",
"latitude": 53.34065,
"longitude": -1.69435,
"rf_chain": 0,
"rssi": -60,
"snr": 9,
"time": "",
"timestamp": 1084307099
},
{
"channel": 0,
"gtw_id": "eui-de5ca70000000002",
"rf_chain": 0,
"rssi": -82,
"snr": 8.75,
"time": "2020-08-11T14:58:40Z",
"timestamp": 2928876931
},
{
"altitude": 217,
"channel": 0,
"gtw_id": "eui-de5ca70000000000",
"latitude": 53.32636,
"longitude": -1.74385,
"rf_chain": 0,
"rssi": -78,
"snr": 9,
"time": "",
"timestamp": 1692305843
}
],
"modulation": "LORA",
"time": "2020-08-11T14:58:40.031208959Z"
},
"payload_fields": {
"DHTHumidity": 50,
"DHTTemp": 22,
"DS18Temp": 24.31,
"LDR": 339,
"battery": 3.515,
"flags": 0
},
"payload_raw": "AAOWCX8BUxYy",
"port": 1
}
However you should not rely on the decoder as it’s fallback is to send / store the uplink without decoding if the servers are under load and the JS times out.