Power factor new calculation; new bytesToInt function with uint and bigendian

This commit is contained in:
rasta5man 2025-08-06 12:00:17 +02:00
parent 5540cee8ec
commit 1012544193
2 changed files with 114 additions and 127 deletions

View file

@ -2616,7 +2616,7 @@ exports.install = function(instance) {
//účinník //účinník
else if (register == 77) { 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); values["power_factor"] = Number(power_factor);
} }
@ -2629,8 +2629,7 @@ exports.install = function(instance) {
//energia //energia
else if (register == 79) { else if (register == 79) {
let energy = bytesToInt(bytes); let energy = bytesToInt(bytes);
//Energiu treba reportovať v kWh -> delit 1000 values["energy"] = energy / 1000; //energia v kWh -> delit 1000
values["energy"] = energy / 1000;
} }
//doba života //doba života

View file

@ -1,124 +1,112 @@
function bytesToInt(bytes, numberOfBytes) function bytesToInt(bytes, numberOfBytes) {
{ let buffer = [];
let buffer = []; if (Array.isArray(bytes)) {
if(Array.isArray(bytes)) buffer = bytes.slice(0);
{ if (numberOfBytes != undefined) {
buffer = bytes.slice(0); buffer = bytes.slice(bytes.length - numberOfBytes);
if(numberOfBytes != undefined) }
{ }
buffer = bytes.slice(bytes.length - numberOfBytes); else buffer.push(bytes);
}
} let result = 0;
else buffer.push(bytes); for (let i = 0; i < buffer.length; i++) {
result = (result << 8) | buffer[i];
//var decimal = (buffer[0] << 24) + (buffer[1] << 16) + (buffer[2] << 8) + buffer[3]; }
let l = (buffer.length - 1) * 8;
return result >>> 0; //ensure it's an unsigned 32-bit number
let decimal = 0; }
for(let i = 0; i < buffer.length; i++)
{ function resizeArray(arr, newSize, defaultValue) {
var s = buffer[i] << l; while (newSize > arr.length)
if(l < 8) s = buffer[i] arr.push(defaultValue);
decimal = decimal + s; arr.length = newSize;
}
l = l - 8;
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];
return decimal;
} for (var index = 0; index < byteArray.length; index++) {
var byte = long & 0xff;
function resizeArray(arr, newSize, defaultValue) { byteArray[index] = byte;
while(newSize > arr.length) long = (long - byte) / 256;
arr.push(defaultValue); }
arr.length = newSize;
} return byteArray;
};
longToByteArray = function(/*long*/long) {
// we want to represent the input as a 8-bytes array function addDays(date, days) {
var byteArray = [0, 0, 0, 0, 0, 0, 0, 0]; var result = new Date(date);
result.setDate(result.getDate() + days);
for ( var index = 0; index < byteArray.length; index ++ ) { return result;
var byte = long & 0xff; }
byteArray [ index ] = byte;
long = (long - byte) / 256 ; /*
} sleep(2000).then(() => {
// Do something after the sleep!
return byteArray;
};
});
function addDays(date, days) { */
var result = new Date(date);
result.setDate(result.getDate() + days); function sleep(time) {
return result; return new Promise((resolve) => setTimeout(resolve, time));
} }
/* function isEmptyObject(obj) {
sleep(2000).then(() => { for (var name in obj) {
// Do something after the sleep! return false;
}
return true;
}); }
*/
function convertUTCDateToLocalDate(date) {
function sleep (time) { var newDate = new Date(date);
return new Promise((resolve) => setTimeout(resolve, time)); newDate.setMinutes(date.getMinutes() + date.getTimezoneOffset());
} return newDate;
}
function isEmptyObject( obj ) {
for ( var name in obj ) { function addZeroBefore(n) {
return false; return (n < 10 ? '0' : '') + n;
} }
return true;
} var convertBase = function() {
function convertUTCDateToLocalDate(date) { function convertBase(baseFrom, baseTo) {
var newDate = new Date(date); return function(num) {
newDate.setMinutes(date.getMinutes() + date.getTimezoneOffset()); return parseInt(num, baseFrom).toString(baseTo);
return newDate;
} };
}
function addZeroBefore(n) {
return (n < 10 ? '0' : '') + n; // binary to decimal
} convertBase.bin2dec = convertBase(2, 10);
var convertBase = function () { // binary to hexadecimal
convertBase.bin2hex = convertBase(2, 16);
function convertBase(baseFrom, baseTo) {
return function (num) { // decimal to binary
return parseInt(num, baseFrom).toString(baseTo); convertBase.dec2bin = convertBase(10, 2);
}; // decimal to hexadecimal
} convertBase.dec2hex = convertBase(10, 16);
// binary to decimal // hexadecimal to binary
convertBase.bin2dec = convertBase(2, 10); convertBase.hex2bin = convertBase(16, 2);
// binary to hexadecimal // hexadecimal to decimal
convertBase.bin2hex = convertBase(2, 16); convertBase.hex2dec = convertBase(16, 10);
// decimal to binary return convertBase;
convertBase.dec2bin = convertBase(10, 2); }();
// decimal to hexadecimal module.exports = {
convertBase.dec2hex = convertBase(10, 16); bytesToInt,
longToByteArray,
// hexadecimal to binary addDays,
convertBase.hex2bin = convertBase(16, 2); addZeroBefore,
resizeArray,
// hexadecimal to decimal isEmptyObject,
convertBase.hex2dec = convertBase(16, 10); sleep,
convertUTCDateToLocalDate
return convertBase; }
}();
module.exports = {
bytesToInt,
longToByteArray,
addDays,
addZeroBefore,
resizeArray,
isEmptyObject,
sleep,
convertUTCDateToLocalDate
}