Projet

Général

Profil

Feature #14105 » payload.txt

Anonyme, 30/09/2022 16:00

 
function decodeUplink(input) {
var mode=(input.bytes[6] & 0x7C)>>2;
var data = {};
switch (input.fPort) {
case 2:
if((mode!=2)&&(mode!=31))
{
data.BatV=(input.bytes[0]<<8 | input.bytes[1])/1000;
data.TempC1= parseFloat(((input.bytes[2]<<24>>16 | input.bytes[3])/10).toFixed(2));
data.ADC_CH0V=(input.bytes[4]<<8 | input.bytes[5])/1000;
data.Digital_IStatus=(input.bytes[6] & 0x02)? "H":"L";
if(mode!=6)
{
data.EXTI_Trigger=(input.bytes[6] & 0x01)? "TRUE":"FALSE";
data.Door_status=(input.bytes[6] & 0x80)? "CLOSE":"OPEN";
}
}
if(mode=='0')
{
data.Work_mode="IIC";
if((input.bytes[9]<<8 | input.bytes[10])===0)
{
data.Illum=(input.bytes[7]<<24>>16 |input.bytes[8]);
}
else
{
data.TempC_SHT=parseFloat(((input.bytes[7]<<24>>16 | input.bytes[8])/10).toFixed(2));
data.Hum_SHT=parseFloat(((input.bytes[9]<<8 | input.bytes[10])/10).toFixed(1));
}
}
else if(mode=='1')
{
data.Work_mode=" Distance";
data.Distance_cm=parseFloat(((input.bytes[7]<<8 | input.bytes[8])/10) .toFixed(1));
if((input.bytes[9]<<8 | input.bytes[10])!=65535)
{
data.Distance_signal_strength=parseFloat((input.bytes[9]<<8 | input.bytes[10]) .toFixed(0));
}
}
else if(mode=='2')
{
data.Work_mode=" 3ADC";
data.BatV=input.bytes[11]/10;
data.ADC_CH0V=(input.bytes[0]<<8 | input.bytes[1])/1000;
data.ADC_CH1V=(input.bytes[2]<<8 | input.bytes[3])/1000;
data.ADC_CH4V=(input.bytes[4]<<8 | input.bytes[5])/1000;
data.Digital_IStatus=(input.bytes[6] & 0x02)? "H":"L";
data.EXTI_Trigger=(input.bytes[6] & 0x01)? "TRUE":"FALSE";
data.Door_status=(input.bytes[6] & 0x80)? "CLOSE":"OPEN";
if((input.bytes[9]<<8 | input.bytes[10])===0)
{
data.Illum=(input.bytes[7]<<24>>16 | input.bytes[8]);
}
else
{
data.TempC_SHT=parseFloat(((input.bytes[7]<<24>>16 |input.bytes[8])/10).toFixed(2));
data.Hum_SHT=parseFloat(((input.bytes[9]<<8 | input.bytes[10])/10) .toFixed(1));
}
}
else if(mode=='3')
{
data.Work_mode="3DS18B20";
data.TempC2=parseFloat(((input.bytes[7]<<24>>16 | input.bytes[8])/10).toFixed(2));
data.TempC3=parseFloat(((input.bytes[9]<<24>>16| input.bytes[10])/10) .toFixed(2));
}
else if(mode=='4')
{
data.Work_mode="Weight";
data.Weight=(input.bytes[7]<<24>>16 | input.bytes[8]);
}
else if(mode=='5')
{
data.Work_mode="Count";
data.Count=(input.bytes[7]<<24 | input.bytes[8]<<16 | input.bytes[9]<<8 | input.bytes[10]);
}
else if(mode=='30')
{
data.Work_mode="HYT";
data.TempC_SHT=parseFloat(((input.bytes[7]<<24>>16 | input.bytes[8])/10).toFixed(2));
data.Hum_SHT=parseFloat(((input.bytes[9]<<8 | input.bytes[10])/10).toFixed(1));
}
else if(mode=='31')
{
data.Work_mode="ALARM";
data.BatV=(input.bytes[0]<<8 | input.bytes[1])/1000;
data.TempC1= parseFloat(((input.bytes[2]<<24>>16 | input.bytes[3])/10).toFixed(2));
data.TempC1MIN= input.bytes[4]<<24>>24;
data.TempC1MAX= input.bytes[5]<<24>>24;
data.SHTEMPMIN= input.bytes[7]<<24>>24;
data.SHTEMPMAX= input.bytes[8]<<24>>24;
data.SHTHUMMIN= input.bytes[9];
data.SHTHUMMAX= input.bytes[10];
}

if((input.bytes.length==11)||(input.bytes.length==12))
return {
data: data,
}
break;
default:
return {
errors: ["unknown FPort"]
}
}
}
    (1-1/1)