AQI Sensor Uplink Decoder
function Decoder(bytes) {
var decbin = function(number) {
return parseInt(number, 10).toString(2)
}
var byteArray = bytes.map(function (byte) {
var number = decbin(byte);
return Array(9 - number.length).join("0") + number;
});
var sAQI1 = byteArray[1].substr(0);
var sAQI2 = byteArray[2].slice(0, 1);
var p1 = byteArray[6];
var p2 = byteArray[7].slice(0, 3);
var t1 = byteArray[7].substr(4);
var t2 = byteArray[8].slice(0, 6);
return {
sAQI: parseInt('' + sAQI1 + sAQI2, 2) * 16,
AQI: parseInt(byteArray[2].substring(1, 6), 2) * 16,
VOC: parseInt(byteArray[4], 2) * 4,
relative_humidity: parseInt(byteArray[5], 2) * 4 / 10,
pressure: (parseInt('' + p1 + p2, 2) * 40 + 30000) / 100,
temperature: (parseInt('' + t1 + t2, 2) - 400) / 10,
accuracy_aqi: parseInt(byteArray[8].substr(-2), 2),
voltage: parseInt(byteArray[9], 2) * 8 + 1600
};
}
Last updated