Add language notifications; Add power door handel
This commit is contained in:
parent
d97d90cf95
commit
0876e73c68
12 changed files with 445 additions and 581 deletions
|
|
@ -39,7 +39,7 @@ exports.install = function(instance) {
|
|||
|
||||
var SunCalc = require('./helper/suncalc');
|
||||
const DataToTbHandler = require('./helper/DataToTbHandler');
|
||||
const ErrorToServiceHandler = require('./helper/ErrorToServiceHandler');
|
||||
const errorHandler = require('./helper/ErrorToServiceHandler');
|
||||
const { sendNotification } = require('./helper/notification_reporter');
|
||||
const process = require('process');
|
||||
const { errLogger, logger, monitor } = require('./helper/logger');
|
||||
|
|
@ -127,8 +127,6 @@ exports.install = function(instance) {
|
|||
//prikazy kt sa budu spustat na dany node - see config.js in terminal-oms.app. (1 - dimming)
|
||||
let listOfCommands = [0, 1, 6, 7, 8, 74, 75, 76, 77, 78, 79, 80, 87, 89];
|
||||
|
||||
const errorHandler = new ErrorToServiceHandler();
|
||||
|
||||
let rotary_switch_state;
|
||||
let lux_sensor;
|
||||
let state_of_breaker = {};//key is line, value is On/Off
|
||||
|
|
@ -165,8 +163,6 @@ exports.install = function(instance) {
|
|||
tbHandler = new DataToTbHandler(SEND_TO.tb);
|
||||
tbHandler.setSender(exports.title);
|
||||
|
||||
errorHandler.setProjectsId(SETTINGS.project_id);
|
||||
|
||||
let now = new Date();
|
||||
console.log("CMD Manager installed", now.toLocaleString("sk-SK"));
|
||||
|
||||
|
|
@ -186,7 +182,6 @@ exports.install = function(instance) {
|
|||
}, 120000);
|
||||
reportEdgeDateTimeAndNumberOfLuminaires();
|
||||
|
||||
|
||||
setCorrectTime = setInterval(setCorrectPlcTimeOnceADay, 60000 * 60); // 1 hour
|
||||
setCorrectPlcTimeOnceADay();
|
||||
|
||||
|
|
@ -1155,7 +1150,7 @@ exports.install = function(instance) {
|
|||
params.type = "cmd-master";
|
||||
params.register = 4;
|
||||
params.address = 0;
|
||||
params.timestamp = Date.now() + 60000;
|
||||
params.timestamp = 0;
|
||||
params.addMinutesToTimestamp = 5;
|
||||
params.tbname = SETTINGS.rvoTbName;
|
||||
params.info = "Master node FW verzia";
|
||||
|
|
@ -1579,6 +1574,7 @@ exports.install = function(instance) {
|
|||
let readBytes = 11;
|
||||
let timeout = 4000;
|
||||
|
||||
|
||||
// await keyword is important, otherwise incorrect data is returned!
|
||||
await writeData(rsPort, resp, readBytes, timeout).then(function(data) {
|
||||
|
||||
|
|
@ -1592,7 +1588,6 @@ exports.install = function(instance) {
|
|||
//ak sa odpoved zacina 0 - je to v poriadku, inak je NOK
|
||||
let message = result.message; // OK, NOK
|
||||
let message_type = result.type;
|
||||
let error = result.error;
|
||||
|
||||
if (params.hasOwnProperty("debug")) {
|
||||
if (params.debug) {
|
||||
|
|
@ -1643,11 +1638,6 @@ exports.install = function(instance) {
|
|||
if (register == 4) values["edge_fw_version"] = SETTINGS.edge_fw_version;
|
||||
}
|
||||
|
||||
//odoslanie príkazu z terminálu - dáta
|
||||
if (type == "cmd-terminal") {
|
||||
sendNotification("CMD Manager: process cmd", SETTINGS.rvoTbName, "command_was_sent_from_terminal_interface", {}, params, SEND_TO.tb, instance);
|
||||
}
|
||||
|
||||
if (params.debug) {
|
||||
//logger.debug("saveToTb", saveToTb, tbname, values);
|
||||
}
|
||||
|
|
@ -1879,16 +1869,6 @@ exports.install = function(instance) {
|
|||
|
||||
logger.debug(0, "RPC runSyncExec - Promise Resolved:" + status);
|
||||
|
||||
//APP START
|
||||
let dataToInfoSender = { id: SETTINGS.project_id, name: SETTINGS.rvo_name };
|
||||
dataToInfoSender.fw_version = SETTINGS.edge_fw_version;
|
||||
dataToInfoSender.startdate = new Date().toISOString().slice(0, 19).replace('T', ' ');
|
||||
dataToInfoSender.__force__ = true;
|
||||
|
||||
instance.send(SEND_TO.infoSender, dataToInfoSender);
|
||||
|
||||
logger.debug(0, "---------------------------->START message send to service", dataToInfoSender);
|
||||
|
||||
}).catch(function(reason) {
|
||||
instance.send(SEND_TO.debug, "CMD manager - RPC runSyncExec - promise rejected:" + reason);
|
||||
});
|
||||
|
|
@ -1986,7 +1966,7 @@ exports.install = function(instance) {
|
|||
//logger.debug(tasks);
|
||||
|
||||
logger.debug("-->CMD MANAGER - RUN TASKS");
|
||||
interval = setInterval(runTasks, LONG_INTERVAL);
|
||||
interval = setInterval(runTasks, 5000);
|
||||
}
|
||||
else if (cmd == "reload_relays") {
|
||||
loadRelaysData(flowdata.data.line);
|
||||
|
|
@ -2627,7 +2607,7 @@ exports.install = function(instance) {
|
|||
}
|
||||
|
||||
//Dimming, CCT
|
||||
if (register == 1) {
|
||||
else if (register == 1) {
|
||||
let brightness = 0;
|
||||
let dimming = byte0;
|
||||
if (dimming > 128) {
|
||||
|
|
@ -2648,125 +2628,87 @@ exports.install = function(instance) {
|
|||
}
|
||||
|
||||
//
|
||||
if (register == 4) {
|
||||
else if (register == 4) {
|
||||
values["master_node_version"] = bytes[1] + "." + bytes[2];
|
||||
//logger.debug("FW Version", register, bytes);
|
||||
}
|
||||
|
||||
//Napätie
|
||||
if (register == 74) {
|
||||
else if (register == 74) {
|
||||
let voltage = (bytesToInt(bytes) * 0.1).toFixed(1);
|
||||
values["voltage"] = Number(voltage);
|
||||
}
|
||||
|
||||
//Prúd
|
||||
if (register == 75) {
|
||||
else if (register == 75) {
|
||||
let current = bytesToInt(bytes);
|
||||
values["current"] = current;
|
||||
}
|
||||
|
||||
//výkon
|
||||
if (register == 76) {
|
||||
else if (register == 76) {
|
||||
let power = (bytesToInt(bytes) * 0.1).toFixed(2);
|
||||
values["power"] = Number(power);
|
||||
}
|
||||
|
||||
//účinník
|
||||
if (register == 77) {
|
||||
else if (register == 77) {
|
||||
let power_factor = Math.cos(bytesToInt(bytes) * 0.1).toFixed(2);
|
||||
values["power_factor"] = Number(power_factor);
|
||||
}
|
||||
|
||||
//frekvencia
|
||||
if (register == 78) {
|
||||
else if (register == 78) {
|
||||
let frequency = (bytesToInt(bytes) * 0.1).toFixed(2);
|
||||
values["frequency"] = Number(frequency);
|
||||
}
|
||||
|
||||
//energia
|
||||
if (register == 79) {
|
||||
else if (register == 79) {
|
||||
let energy = bytesToInt(bytes);
|
||||
|
||||
//Energiu treba reportovať v kWh. Teda číslo, ktoré príde treba podeliť 1000. Toto som ti možno zle napísal.
|
||||
|
||||
//Energiu treba reportovať v kWh -> delit 1000
|
||||
values["energy"] = energy / 1000;
|
||||
}
|
||||
|
||||
//doba života
|
||||
if (register == 80) {
|
||||
else if (register == 80) {
|
||||
let lifetime = (bytesToInt(bytes) / 60).toFixed(2);
|
||||
values["lifetime"] = Number(lifetime);
|
||||
}
|
||||
|
||||
//nastavenie profilu
|
||||
if (register == 8) {
|
||||
else if (register == 8) {
|
||||
let time_schedule_settings = bytesToInt(bytes);
|
||||
values["time_schedule_settings"] = time_schedule_settings;
|
||||
}
|
||||
|
||||
//naklon - nateraz sa z nodu nevycitava! kvoli problemom s accelerometrom a vracanymi hodnotami, posielame temp a x y z vo funkcii accelerometerData()
|
||||
if (register == 84) {
|
||||
const temp = byte3 >= 128 ? (byte3 - 128) * (-1) : byte3;
|
||||
const inclination_x = byte2 >= 128 ? (byte2 - 128) * (-1) : byte2;
|
||||
const inclination_y = byte1 >= 128 ? (byte1 - 128) * (-1) : byte1;
|
||||
const inclination_z = byte0 >= 128 ? (byte0 - 128) * (-1) : byte0;
|
||||
|
||||
if (temp === undefined) temp = 999;
|
||||
if (inclination_x === undefined) inclination_x = 999;
|
||||
if (inclination_y === undefined) inclination_y = 999;
|
||||
if (inclination_z === undefined) inclination_z = 999;
|
||||
|
||||
values["temperature"] = temp;
|
||||
values["inclination_x"] = inclination_x;
|
||||
values["inclination_y"] = inclination_y;
|
||||
values["inclination_z"] = inclination_z;
|
||||
}
|
||||
|
||||
let h = byte3;
|
||||
let m = byte2;
|
||||
|
||||
let timestamp;
|
||||
|
||||
if (register == 87 || register == 6 || register == 7) {
|
||||
//if(byte3 < 10) h = "0" + byte3;
|
||||
//if(byte2 < 10) m = "0" + byte2;
|
||||
//if(byte1 < 10) s = "0" + byte1;
|
||||
|
||||
var d = new Date();
|
||||
d.setHours(h, m, 0, 0);
|
||||
timestamp = d.getTime();
|
||||
}
|
||||
|
||||
//aktuálny čas
|
||||
if (register == 87) {
|
||||
//Byte3 - hodiny, Byte 2 - minúty, Byte 1 -sek.
|
||||
//values["actual_time"] = h + ":" + m + ":" + s;
|
||||
|
||||
values["actual_time"] = timestamp;
|
||||
}
|
||||
|
||||
//čas súmraku
|
||||
if (register == 6) {
|
||||
//Byte3 - hodiny, Byte 2 - minúty, Byte 1 -sek.
|
||||
//values["dusk_time"] = h + ":" + m + ":" + s;
|
||||
|
||||
values["dusk_time"] = timestamp;
|
||||
}
|
||||
|
||||
//čas úsvitu
|
||||
if (register == 7) {
|
||||
//Byte3 - hodiny, Byte 2 - minúty, Byte 1 -sek.
|
||||
//values["dawn_time"] = h + ":" + m + ":" + s;
|
||||
|
||||
values["dawn_time"] = timestamp;
|
||||
else if (register == 84) {
|
||||
values["temperature"] = byte3 >= 128 ? (byte3 - 128) * (-1) : byte3;
|
||||
values["inclination_x"] = byte2 >= 128 ? (byte2 - 128) * (-1) : byte2;
|
||||
values["inclination_y"] = byte1 >= 128 ? (byte1 - 128) * (-1) : byte1;
|
||||
values["inclination_z"] = byte0 >= 128 ? (byte0 - 128) * (-1) : byte0;
|
||||
}
|
||||
|
||||
//FW verzia nodu
|
||||
if (register == 89) {
|
||||
else if (register == 89) {
|
||||
//formát: "Byte3: Byte2.Byte1 (Byte0)"
|
||||
values["fw_version"] = byte3 + ":" + byte2 + "." + byte1 + "(" + byte0 + ")";
|
||||
}
|
||||
|
||||
else if (register == 87 || register == 6 || register == 7) {
|
||||
var d = new Date();
|
||||
d.setHours(byte3, byte2, 0, 0);
|
||||
let timestamp = d.getTime();
|
||||
|
||||
//aktuálny čas
|
||||
if (register == 87) values["actual_time"] = timestamp;
|
||||
//čas súmraku
|
||||
else if (register == 6) values["dusk_time"] = timestamp;
|
||||
//čas úsvitu
|
||||
else if (register == 7) values["dawn_time"] = timestamp;
|
||||
}
|
||||
|
||||
return values;
|
||||
}
|
||||
|
||||
|
|
@ -2850,9 +2792,13 @@ exports.install = function(instance) {
|
|||
|
||||
if (temperatureInSenica === null) return;
|
||||
|
||||
for (const key in relaysData) {
|
||||
//clone nodesData and relaysData objects
|
||||
let nodesData_clone = JSON.parse(JSON.stringify(nodesData));
|
||||
let relaysData_clone = JSON.parse(JSON.stringify(relaysData));
|
||||
|
||||
const lineData = relaysData[key];
|
||||
for (const key in relaysData_clone) {
|
||||
|
||||
const lineData = relaysData_clone[key];
|
||||
const lineNumber = lineData.line;
|
||||
const contactor = lineData.contactor;
|
||||
|
||||
|
|
@ -2862,17 +2808,21 @@ exports.install = function(instance) {
|
|||
|
||||
let date = Date.now();
|
||||
|
||||
Object.keys(nodesData).forEach((node, index) => {
|
||||
Object.keys(nodesData_clone).forEach((node, index) => {
|
||||
|
||||
setTimeout(function() {
|
||||
|
||||
if (nodesData[node].line === lineNumber) {
|
||||
if (nodesData_clone[node].line === lineNumber) {
|
||||
|
||||
// NOTE: if status of luminaire is NOK or OFFLINE, we do not send data;
|
||||
let status = nodesData_clone[node].status;
|
||||
if (status === "OFFLINE" || !status) return;
|
||||
|
||||
let x = null;
|
||||
if (naklony.hasOwnProperty(node)) x = naklony[node].naklon;
|
||||
if (x === null) x = 0;
|
||||
|
||||
sendTelemetry({ temperature: Math.round(temperatureInSenica + 10 + Math.floor(Math.random() * 3)), inclination_x: x, inclination_y: 0, inclination_z: 0 }, nodesData[node].tbname, date);
|
||||
sendTelemetry({ temperature: Math.round(temperatureInSenica + 10 + Math.floor(Math.random() * 3)), inclination_x: x, inclination_y: 0, inclination_z: 0 }, nodesData_clone[node].tbname, date);
|
||||
}
|
||||
|
||||
}, (index + 1) * 500);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue