diff --git a/flow/cmd_manager.js b/flow/cmd_manager.js index 4ead96b..07e12c6 100644 --- a/flow/cmd_manager.js +++ b/flow/cmd_manager.js @@ -2616,7 +2616,7 @@ exports.install = function(instance) { //účinník else if (register == 77) { - let power_factor = Math.cos(bytesToInt(bytes) * 0.1).toFixed(2); + let power_factor = Math.cos(bytesToInt(bytes) * 0.1 * (Math.PI / 180)).toFixed(2); values["power_factor"] = Number(power_factor); } @@ -2629,8 +2629,7 @@ exports.install = function(instance) { //energia else if (register == 79) { let energy = bytesToInt(bytes); - //Energiu treba reportovať v kWh -> delit 1000 - values["energy"] = energy / 1000; + values["energy"] = energy / 1000; //energia v kWh -> delit 1000 } //doba života diff --git a/flow/helper/utils.js b/flow/helper/utils.js index a16210c..9c054aa 100644 --- a/flow/helper/utils.js +++ b/flow/helper/utils.js @@ -1,124 +1,112 @@ -function bytesToInt(bytes, numberOfBytes) -{ - let buffer = []; - if(Array.isArray(bytes)) - { - buffer = bytes.slice(0); - if(numberOfBytes != undefined) - { - buffer = bytes.slice(bytes.length - numberOfBytes); - } - } - else buffer.push(bytes); - - //var decimal = (buffer[0] << 24) + (buffer[1] << 16) + (buffer[2] << 8) + buffer[3]; - let l = (buffer.length - 1) * 8; - - let decimal = 0; - for(let i = 0; i < buffer.length; i++) - { - var s = buffer[i] << l; - if(l < 8) s = buffer[i] - decimal = decimal + s; - - l = l - 8; - - } - - return decimal; -} - -function resizeArray(arr, newSize, defaultValue) { - while(newSize > arr.length) - arr.push(defaultValue); - arr.length = newSize; -} - -longToByteArray = function(/*long*/long) { - // we want to represent the input as a 8-bytes array - var byteArray = [0, 0, 0, 0, 0, 0, 0, 0]; - - for ( var index = 0; index < byteArray.length; index ++ ) { - var byte = long & 0xff; - byteArray [ index ] = byte; - long = (long - byte) / 256 ; - } - - return byteArray; - }; - -function addDays(date, days) { - var result = new Date(date); - result.setDate(result.getDate() + days); - return result; -} - -/* -sleep(2000).then(() => { - // Do something after the sleep! - - -}); -*/ - -function sleep (time) { - return new Promise((resolve) => setTimeout(resolve, time)); -} - -function isEmptyObject( obj ) { - for ( var name in obj ) { - return false; - } - return true; -} - -function convertUTCDateToLocalDate(date) { - var newDate = new Date(date); - newDate.setMinutes(date.getMinutes() + date.getTimezoneOffset()); - return newDate; -} - -function addZeroBefore(n) { - return (n < 10 ? '0' : '') + n; -} - -var convertBase = function () { - - function convertBase(baseFrom, baseTo) { - return function (num) { - return parseInt(num, baseFrom).toString(baseTo); - - }; - } - - // binary to decimal - convertBase.bin2dec = convertBase(2, 10); - - // binary to hexadecimal - convertBase.bin2hex = convertBase(2, 16); - - // decimal to binary - convertBase.dec2bin = convertBase(10, 2); - - // decimal to hexadecimal - convertBase.dec2hex = convertBase(10, 16); - - // hexadecimal to binary - convertBase.hex2bin = convertBase(16, 2); - - // hexadecimal to decimal - convertBase.hex2dec = convertBase(16, 10); - - return convertBase; - }(); - -module.exports = { - bytesToInt, - longToByteArray, - addDays, - addZeroBefore, - resizeArray, - isEmptyObject, - sleep, - convertUTCDateToLocalDate -} \ No newline at end of file +function bytesToInt(bytes, numberOfBytes) { + let buffer = []; + if (Array.isArray(bytes)) { + buffer = bytes.slice(0); + if (numberOfBytes != undefined) { + buffer = bytes.slice(bytes.length - numberOfBytes); + } + } + else buffer.push(bytes); + + let result = 0; + for (let i = 0; i < buffer.length; i++) { + result = (result << 8) | buffer[i]; + } + + return result >>> 0; //ensure it's an unsigned 32-bit number +} + +function resizeArray(arr, newSize, defaultValue) { + while (newSize > arr.length) + arr.push(defaultValue); + arr.length = newSize; +} + +longToByteArray = function(/*long*/long) { + // we want to represent the input as a 8-bytes array + var byteArray = [0, 0, 0, 0, 0, 0, 0, 0]; + + for (var index = 0; index < byteArray.length; index++) { + var byte = long & 0xff; + byteArray[index] = byte; + long = (long - byte) / 256; + } + + return byteArray; +}; + +function addDays(date, days) { + var result = new Date(date); + result.setDate(result.getDate() + days); + return result; +} + +/* +sleep(2000).then(() => { + // Do something after the sleep! + + +}); +*/ + +function sleep(time) { + return new Promise((resolve) => setTimeout(resolve, time)); +} + +function isEmptyObject(obj) { + for (var name in obj) { + return false; + } + return true; +} + +function convertUTCDateToLocalDate(date) { + var newDate = new Date(date); + newDate.setMinutes(date.getMinutes() + date.getTimezoneOffset()); + return newDate; +} + +function addZeroBefore(n) { + return (n < 10 ? '0' : '') + n; +} + +var convertBase = function() { + + function convertBase(baseFrom, baseTo) { + return function(num) { + return parseInt(num, baseFrom).toString(baseTo); + + }; + } + + // binary to decimal + convertBase.bin2dec = convertBase(2, 10); + + // binary to hexadecimal + convertBase.bin2hex = convertBase(2, 16); + + // decimal to binary + convertBase.dec2bin = convertBase(10, 2); + + // decimal to hexadecimal + convertBase.dec2hex = convertBase(10, 16); + + // hexadecimal to binary + convertBase.hex2bin = convertBase(16, 2); + + // hexadecimal to decimal + convertBase.hex2dec = convertBase(16, 10); + + return convertBase; +}(); + +module.exports = { + bytesToInt, + longToByteArray, + addDays, + addZeroBefore, + resizeArray, + isEmptyObject, + sleep, + convertUTCDateToLocalDate +}