⬆️Multipurpose Button Uplink decoder
function Decoder(data){
function decbin(byte){
return (parseInt(byte, 16).toString(2)).padStart(8, '0');
}
var batteryTmp = ("0" + `${data[2] + data[3]}`.toString(16)).substr(-2)[0];
var batteryVoltageCalculated = 2 + parseInt("0x"+ batteryTmp , 16) * 0.1;
var thermistorProperlyConnected = decbin(data[5])[5] == 0;
var extT1 = ("0" + data[5].toString(16)).substr(-2)[1];
var extT2 = ("0" + `${data[6]+data[7]}`.toString(16)).substr(-2);
var temperature = thermistorProperlyConnected ? parseInt(`0x${extT1}${extT2}`, 16) * 0.1 : 0;
var pressEvent = `${data[8] + data[9]}`;
if (data[1] == 1) {
return {
pressEvent: pressEvent,
batteryVoltage: batteryVoltageCalculated,
thermistorProperlyConnected:thermistorProperlyConnected,
temperature: temperature
}
}
}
Helium Decoder
function Decoder(bytes, port, uplink_info) {
function decbin(byte){
return (parseInt(byte, 16).toString(2)).padStart(8, '0');
}
var data = bytes.map(function (byte) {
var number = parseInt(byte).toString(16);
if( (number.length % 2) > 0) { number= "0" + number }
return number;
});
var batteryTmp = ("0" + `${data[1]}`.toString(16)).substr(-2);
var batteryVoltageCalculated = 2 + parseInt("0x"+ batteryTmp , 16) * 0.1;
var thermistorProperlyConnected = decbin(data[2])[5] == 0;
var extT1 = ("0" + data[2].toString(16)).substr(-2)[1];
var extT2 = ("0" + `${data[3]}`.toString(16)).substr(-2);
var temperature = thermistorProperlyConnected ? parseInt(`0x${extT1}${extT2}`, 16) * 0.1 : 0;
var pressEvent = `${data[4]}`;
if (data[0] == '01') {
return {
"pressEvent": pressEvent,
"batteryVoltage": batteryVoltageCalculated,
"thermistorProperlyConnected":thermistorProperlyConnected,
"temperature": temperature
}
}
}
Last updated