63 lines
1.8 KiB
JavaScript
63 lines
1.8 KiB
JavaScript
function Decoder(bytes, port) {
|
|
|
|
var decoded = {};
|
|
|
|
function transformersint(bytes){
|
|
value = bytes[0] * 256 + bytes[1];
|
|
if (value == 32768){
|
|
return;
|
|
}
|
|
if (value > 32768) {
|
|
value = 32768 - value;
|
|
}
|
|
value = value;
|
|
return value;
|
|
}
|
|
|
|
function transformersfloat(bytes){
|
|
value = bytes[0] * 256 + bytes[1];
|
|
if (value == 32768){
|
|
return;
|
|
}
|
|
if (value > 32768) {
|
|
value = 32768 - value;
|
|
}
|
|
value = value;
|
|
return value/100;
|
|
}
|
|
|
|
function transformersAI(bytes){
|
|
value = bytes[0];
|
|
if (value == 255 || value >100){
|
|
return;
|
|
}
|
|
return value;
|
|
}
|
|
|
|
if (port == 3) {
|
|
if(bytes[0]==0x40) {
|
|
decoded.light = transformersint(bytes.slice(1, 3));
|
|
decoded.mic = transformersint(bytes.slice(3, 5));
|
|
decoded.imux = transformersfloat(bytes.slice(5, 7));
|
|
decoded.imuy = transformersfloat(bytes.slice(7, 9));
|
|
decoded.imuz = transformersfloat(bytes.slice(9, 11));
|
|
}
|
|
if(bytes[0]==0x42) {
|
|
decoded.temp = transformersfloat(bytes.slice(1, 3));
|
|
decoded.humi = transformersfloat(bytes.slice(3, 5));
|
|
decoded.voc = transformersint(bytes.slice(5, 7));
|
|
decoded.co2 = transformersint(bytes.slice(7, 9));
|
|
decoded.soil = transformersint(bytes.slice(9, 11));
|
|
}
|
|
if(bytes[0]==0x44) {
|
|
decoded.confidence_1 = transformersAI(bytes.slice(2));
|
|
decoded.confidence_2 = transformersAI(bytes.slice(4));
|
|
decoded.confidence_3 = transformersAI(bytes.slice(6));
|
|
decoded.confidence_4 = transformersAI(bytes.slice(8));
|
|
decoded.confidence_5 = transformersAI(bytes.slice(10));
|
|
}
|
|
|
|
}
|
|
|
|
return decoded;
|
|
} |