Power factor new calculation; new bytesToInt function with uint and bigendian
This commit is contained in:
parent
5540cee8ec
commit
1012544193
2 changed files with 114 additions and 127 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue