sharing payload decoder for Multitech Box/EVB LoRa Demo… two days of research and forum trawling… quite relieved and learnt a lot. Let me know if it could be better. Nick
function decodeUplink(input) {
var data = {};
var acc_x = input.bytes[1];
var acc_y = input.bytes[2];
var acc_z = input.bytes[3];
var press = (input.bytes[5]<<16) | (input.bytes[6]<<8) | input.bytes[7];
var lux = (input.bytes[9]<<8) | input.bytes[10];
var temp = (input.bytes[12]<<8) | input.bytes[13];
data.acc_x = acc_x * .0625;
data.acc_y = acc_y * .0625;
data.acc_z = acc_z * .0625;
data.press = +((press * 0.25 / 1000).toFixed(2));
data.lux = lux;
data.temp = +((temp * 0.0625).toFixed(1));
return {
data: data
};
}
data format reference: MultiTech Developer Resources » Data Packet Format
updated:
function decodeUplink(input) {
var data = {};
// GPS Survey
if(input.bytes.length == 11) {
var boardtemp = input.bytes[1];
var lat = ((input.bytes[3] << 24) | (input.bytes[4] << 16) | (input.bytes[5] << 8 ) || input.bytes[6]);
var long = ((input.bytes[7] << 24) | (input.bytes[8] << 16) | (input.bytes[9] << 8 ) | input.bytes[10]);
data.boardtemp = boardtemp;
data.lat = lat / 2147483648*90; // 2^31 * 90
data.long = long / 2147483648*180; // 2^31 * 180
}
// Lora Demo
else if(input.bytes.length == 14) {
var acc_x = input.bytes[1];
var acc_y = input.bytes[2];
var acc_z = input.bytes[3];
var press = (input.bytes[5]<<16) | (input.bytes[6]<<8) | input.bytes[7];
var lux = (input.bytes[9]<<8) | input.bytes[10];
var temp = (input.bytes[12]<<8) | input.bytes[13];
data.acc_x = acc_x * .0625;
data.acc_y = acc_y * .0625;
data.acc_z = acc_z * .0625;
data.press = +((press * 0.25 / 1000).toFixed(2));
data.lux = lux;
data.temp = +((temp * 0.0625).toFixed(1));
}
return {
data: data
};
}
1 Like