function Decoder(bytes, port) { // Decode an uplink message from a buffer (array) of bytes to an object of fields. var decoded = {}; // decoded.port = port; decoded.humidity = 0; decoded.temp = 0; decoded.count = 0; decoded.bat = 0; if (port === 10) { // Port selection decoded.temp = (bytes[0] << 16 | bytes[1]<<8 | bytes[2] | (bytes[0] & 0x80 ? 0xFF<<24 : 0))/1000; decoded.humidity = (bytes[3] << 16 | bytes[4]<<8 | bytes[5] | (bytes[3] & 0x80 ? 0xFF<<24 : 0))/1000; decoded.count = (bytes[6] << 16 | bytes[7]<<8 | bytes[8] | (bytes[6] & 0x80 ? 0xFF<<24 : 0))/1000; decoded.bat = (bytes[9] << 16 | bytes[10]<<8 | bytes[11] | (bytes[3] & 0x80 ? 0xFF<<24 : 0))/1000; } //return decoded; return{ field1:decoded.temp, field2:decoded.humidity, field3:decoded.count, field4:decoded.bat }; }