diff --git a/decoder.js b/decoder.js index fe4cb01..85ea2c4 100644 --- a/decoder.js +++ b/decoder.js @@ -1,32 +1,71 @@ function Decode(fPort, data, variables) { if (fPort === 13) { return [ - { - led_state: bytes[0]===0?"Off":"On", + { + 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]+"%", + 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", + 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]+"%", + { + led_state: (bytes[0] & 0x7f) === 0 ? "Off" : "On", + battery_level: bytes[1] + "%", } ]; - } - }; \ No newline at end of file + } + + 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]), + } + ]; + } + } + } + +}; \ No newline at end of file