Adeunis Field Test Device v1.0
Adeunis FTD v1.0
var payload = new Buffer(context.payload, "base64"); var metrics = []; var header = payload.readUInt8(0); var start = 1; if((header & 128) !== 0){ metrics.push({name: "temperature", value: payload.readInt8(start)}); start+=1; } if((header & 16) !== 0){ var temp = payload.readUInt8(start); var lat_deg10 = temp >> 4; var lat_deg1 = temp - (lat_deg10 * 16); var lat_deg = lat_deg10*10+lat_deg1; start+=1; temp = payload.readUInt8(start); var lat_min = (temp >> 4) * 10 + (temp & 0x0f); start+=1; temp = payload.readUInt8(start); var temp1 = payload.readUInt8(start+1); var lat_min_dec = (temp >> 4)/10 + (temp & 0x0f)/100 + (temp1 >> 4)/1000; var lat = lat_deg+(lat_min+lat_min_dec)/60; if ((temp1 & 0x0f) == 8){ lat=-lat; } start+=2; temp = payload.readUInt8(start); temp1 = payload.readUInt8(start+1); var long_deg100 = temp >> 4; var long_deg10 = temp - (long_deg10 << 4); var long_deg1 = temp1 >> 4; var long_deg = long_deg100*100+long_deg10*10+long_deg1; var long_min10 = temp1 & 0x0f; start+=2; temp = payload.readUInt8(start); temp1 = payload.readUInt8(start+1); var long_min1 = temp >> 4; var long_min_d1 = temp & 0x0f; var long_min_d2 = temp1 >> 4; var long = long_deg + (long_min10*10+long_min1+long_min_d1/10+long_min_d2/100)/60; if((temp1 &0x01) == 1){ long = -long; } var latlong = 1; } if(latlong==1){ context.value = { metrics: metrics, gps: { latitude: lat, longitude: long } }; } else{ context.value = { metrics: metrics, gps: { latitude: null, longitude: null } }; }