function Decode(fPort, data, variables) { if (fPort === 13) { return [ { led_state: bytes[0] === 0 ? "Off" : "On", mtm_code_1: bytes[1], mtm_code_2: bytes[2], hw_code: bytes[3], battery_level: bytes[4] + "%", size_value: bytes[5], spot_cnt: bytes[6] + " blocks", spillage_level: bytes[7] + "%", top1_position: "X= " + bytes[8] % 10 + " Y= " + parseFloat(bytes[8] / 10).toFixed(0), top2_position: "X= " + bytes[9] % 10 + " Y= " + parseFloat(bytes[9] / 10).toFixed(0), top3_position: "X= " + bytes[10] % 10 + " Y= " + parseFloat(bytes[10] / 10).toFixed(0), top4_position: "X= " + bytes[11] % 10 + " Y= " + parseFloat(bytes[11] / 10).toFixed(0), min_temp: (bytes[12] + bytes[13] / 100) + "C", average_temp: (bytes[14] + bytes[15] / 100) + "C", max_temp: (bytes[16] + bytes[17] / 100) + "C", center_temp: (bytes[18] + bytes[19] / 100) + "C", } ] } else if (fPort === 14) { return [ { led_state: (bytes[0] & 0x7f) === 0 ? "Off" : "On", battery_level: bytes[1] + "%", } ]; } else if (fPort === 1) { if (bytes[0] === 0x56) { return [ { mtm_code_1: bytes[1], mtm_code_2: bytes[2], HW_Version: "HW:" + bytes[3], SW_Version: "SW" + bytes[4] + ":" + bytes[5] + ":" + bytes[6] + ":" + bytes[7], } ]; } else if (bytes[0] === 0x53) { return [ { mtm_code_1: bytes[1], mtm_code_2: bytes[2], sw_code: bytes[3], hw_code: bytes[4], battery_level: bytes[5] + "%", size_value: bytes[6], } ]; } if (bytes[0] === 0x59) { if (bytes[1] === 0x44) { return [ { HB_interval: (bytes[2] - 0x30) * 10 + (bytes[3] - 0x30), HB_interval_unit: String.fromCharCode(bytes[4]), } ]; } } } };