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,35 +1,23 @@
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);
else buffer.push(bytes);
//var decimal = (buffer[0] << 24) + (buffer[1] << 16) + (buffer[2] << 8) + buffer[3]; let result = 0;
let l = (buffer.length - 1) * 8; for (let i = 0; i < buffer.length; i++) {
result = (result << 8) | buffer[i];
}
let decimal = 0; return result >>> 0; //ensure it's an unsigned 32-bit number
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) { function resizeArray(arr, newSize, defaultValue) {
while(newSize > arr.length) while (newSize > arr.length)
arr.push(defaultValue); arr.push(defaultValue);
arr.length = newSize; arr.length = newSize;
} }
@ -38,14 +26,14 @@ longToByteArray = function(/*long*/long) {
// we want to represent the input as a 8-bytes array // we want to represent the input as a 8-bytes array
var byteArray = [0, 0, 0, 0, 0, 0, 0, 0]; var byteArray = [0, 0, 0, 0, 0, 0, 0, 0];
for ( var index = 0; index < byteArray.length; index ++ ) { for (var index = 0; index < byteArray.length; index++) {
var byte = long & 0xff; var byte = long & 0xff;
byteArray [ index ] = byte; byteArray[index] = byte;
long = (long - byte) / 256 ; long = (long - byte) / 256;
} }
return byteArray; return byteArray;
}; };
function addDays(date, days) { function addDays(date, days) {
var result = new Date(date); var result = new Date(date);
@ -61,31 +49,31 @@ sleep(2000).then(() => {
}); });
*/ */
function sleep (time) { function sleep(time) {
return new Promise((resolve) => setTimeout(resolve, time)); return new Promise((resolve) => setTimeout(resolve, time));
} }
function isEmptyObject( obj ) { function isEmptyObject(obj) {
for ( var name in obj ) { for (var name in obj) {
return false; return false;
} }
return true; return true;
} }
function convertUTCDateToLocalDate(date) { function convertUTCDateToLocalDate(date) {
var newDate = new Date(date); var newDate = new Date(date);
newDate.setMinutes(date.getMinutes() + date.getTimezoneOffset()); newDate.setMinutes(date.getMinutes() + date.getTimezoneOffset());
return newDate; return newDate;
} }
function addZeroBefore(n) { function addZeroBefore(n) {
return (n < 10 ? '0' : '') + n; return (n < 10 ? '0' : '') + n;
} }
var convertBase = function () { var convertBase = function() {
function convertBase(baseFrom, baseTo) { function convertBase(baseFrom, baseTo) {
return function (num) { return function(num) {
return parseInt(num, baseFrom).toString(baseTo); return parseInt(num, baseFrom).toString(baseTo);
}; };
@ -110,7 +98,7 @@ var convertBase = function () {
convertBase.hex2dec = convertBase(16, 10); convertBase.hex2dec = convertBase(16, 10);
return convertBase; return convertBase;
}(); }();
module.exports = { module.exports = {
bytesToInt, bytesToInt,