Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function Decoder(bytes, port) {
- return qalcosonicDecode(bytes);
- }
- function hexToDec(hexString){
- return parseInt(hexString, 16);
- }
- function bufferToHex(buffer) {
- var str = "";
- for(var i=0; i<buffer.length; i++) {
- var tmp = (buffer[i] & 0xff).toString(16);
- if(tmp.length == 1) {
- tmp = "0" + tmp;
- }
- str += tmp;
- }
- return str;
- }
- function bufferToStatus(buffer) {
- var str = "";
- var dec = hexToDec(buffer);
- if (dec === 0)
- return "No error"
- if (dec & 4)
- str += "Power low, "
- if (dec & 8)
- str += "Permanent error, "
- if (dec & 16)
- str += "Temporary error, "
- if (dec & 32)
- str += "Leak, "
- if (dec & 160)
- str += "Burst, "
- if (dec & 96)
- str += "Backflow, "
- if (dec & 128)
- str += "Freeze, "
- if (str.length > 0)
- str = str.slice(0, -2);
- return "(0x" + buffer + ") " + str;
- }
- function unixToTime(unix_timestamp) {
- var date = new Date(unix_timestamp*1000);
- var hours = "0" + date.getHours();
- var minutes = "0" + date.getMinutes();
- var seconds = "0" + date.getSeconds();
- var day = "0" + date.getDate();
- var month = "0" + (date.getMonth()+1).toString();
- var year = "0" + date.getFullYear();
- var formattedTime = day.substr(-2) + '/' + month.substr(-2) + '/' + year.substr(-4) +' ' + hours.substr(-2) + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);
- return formattedTime;
- }
- function qalcosonicDecode(bytes){
- var myObj = {};
- var bytes_time_reversed = bytes.reverse();
- var bytes_time = bytes.slice(43,47)
- var bytes_status = bytes.slice(42,43)
- var bytes_water = bytes.slice(38,42)
- var bytes_log_time = bytes.slice(34,38)
- var bytes_log_water = bytes.slice(30,34)
- var bytes_delta_vol_1 = bytes.slice(28,30)
- var bytes_delta_vol_2 = bytes.slice(26,28)
- var bytes_delta_vol_3 = bytes.slice(24,26)
- var bytes_delta_vol_4 = bytes.slice(22,24)
- var bytes_delta_vol_5 = bytes.slice(20,22)
- var bytes_delta_vol_6 = bytes.slice(18,20)
- var bytes_delta_vol_7 = bytes.slice(16,18)
- var bytes_delta_vol_8 = bytes.slice(14,16)
- var bytes_delta_vol_9 = bytes.slice(12,14)
- var bytes_delta_vol_10 = bytes.slice(10,12)
- var bytes_delta_vol_11 = bytes.slice(8,10)
- var bytes_delta_vol_12 = bytes.slice(6,8)
- var bytes_delta_vol_13 = bytes.slice(4,6)
- var bytes_delta_vol_14 = bytes.slice(2,4)
- var bytes_delta_vol_15 = bytes.slice(0,2)
- var basePayloadConverted = bufferToHex(bytes);
- var bytes_water_hex = bufferToHex(bytes_water);
- var bytes_log_water_hex = bufferToHex(bytes_log_water);
- var bytes_status_hex = bufferToHex(bytes_status);
- var bytes_time_hex = bufferToHex(bytes_time);
- var bytes_log_time_hex = bufferToHex(bytes_log_time);
- var bytes_delta_vol_1_hex = bufferToHex(bytes_delta_vol_1);
- var bytes_delta_vol_2_hex = bufferToHex(bytes_delta_vol_2);
- var bytes_delta_vol_3_hex = bufferToHex(bytes_delta_vol_3);
- var bytes_delta_vol_4_hex = bufferToHex(bytes_delta_vol_4);
- var bytes_delta_vol_5_hex = bufferToHex(bytes_delta_vol_5);
- var bytes_delta_vol_6_hex = bufferToHex(bytes_delta_vol_6);
- var bytes_delta_vol_7_hex = bufferToHex(bytes_delta_vol_7);
- var bytes_delta_vol_8_hex = bufferToHex(bytes_delta_vol_8);
- var bytes_delta_vol_9_hex = bufferToHex(bytes_delta_vol_9);
- var bytes_delta_vol_10_hex = bufferToHex(bytes_delta_vol_10);
- var bytes_delta_vol_11_hex = bufferToHex(bytes_delta_vol_11);
- var bytes_delta_vol_12_hex = bufferToHex(bytes_delta_vol_12);
- var bytes_delta_vol_13_hex = bufferToHex(bytes_delta_vol_13);
- var bytes_delta_vol_14_hex = bufferToHex(bytes_delta_vol_14);
- var bytes_delta_vol_15_hex = bufferToHex(bytes_delta_vol_15);
- var water = hexToDec(bytes_water_hex);
- var log_water = hexToDec(bytes_log_water_hex);
- var delta_vol_1 = hexToDec(bytes_delta_vol_1_hex);
- var delta_vol_2 = hexToDec(bytes_delta_vol_2_hex);
- var delta_vol_3 = hexToDec(bytes_delta_vol_3_hex);
- var delta_vol_4 = hexToDec(bytes_delta_vol_4_hex);
- var delta_vol_5 = hexToDec(bytes_delta_vol_5_hex);
- var delta_vol_6 = hexToDec(bytes_delta_vol_6_hex);
- var delta_vol_7 = hexToDec(bytes_delta_vol_7_hex);
- var delta_vol_8 = hexToDec(bytes_delta_vol_8_hex);
- var delta_vol_9 = hexToDec(bytes_delta_vol_9_hex);
- var delta_vol_10 = hexToDec(bytes_delta_vol_10_hex);
- var delta_vol_11 = hexToDec(bytes_delta_vol_11_hex);
- var delta_vol_12 = hexToDec(bytes_delta_vol_12_hex);
- var delta_vol_13 = hexToDec(bytes_delta_vol_13_hex);
- var delta_vol_14 = hexToDec(bytes_delta_vol_14_hex);
- var delta_vol_15 = hexToDec(bytes_delta_vol_15_hex);
- var status = bufferToStatus(bytes_status_hex);
- var unix_timestamp = hexToDec(bytes_time_hex);
- var unix_log_timestamp = hexToDec(bytes_log_time_hex);
- var stringTime = unixToTime(unix_timestamp);
- var stringLogTime = unixToTime(unix_log_timestamp);
- var stringStatus = status;
- var stringWater = water*0.001;
- var stringLogWater = log_water*0.001;
- myObj.time = stringTime;
- myObj.status = stringStatus;
- myObj.volume = stringWater;
- myObj.logTime = stringLogTime;
- myObj.logVolume = stringLogWater;
- myObj.delta1 = delta_vol_1 * 0.001;
- myObj.delta2 = delta_vol_2 * 0.001;
- myObj.delta3 = delta_vol_3 * 0.001;
- myObj.delta4 = delta_vol_4 * 0.001;
- myObj.delta5 = delta_vol_5 * 0.001;
- myObj.delta6 = delta_vol_6 * 0.001;
- myObj.delta7 = delta_vol_7 * 0.001;
- myObj.delta8 = delta_vol_8 * 0.001;
- myObj.delta9 = delta_vol_9 * 0.001;
- myObj.delta10 = delta_vol_10 * 0.001;
- myObj.delta11 = delta_vol_11 * 0.001;
- myObj.delta12 = delta_vol_12 * 0.001;
- myObj.delta13 = delta_vol_13 * 0.001;
- myObj.delta14 = delta_vol_14 * 0.001;
- myObj.delta15 = delta_vol_15 * 0.001;
- return myObj;
- }
Add Comment
Please, Sign In to add comment