exports.id = 'infosender'; exports.title = 'Info sender'; exports.version = '1.0.0'; exports.group = 'Worksys'; exports.color = '#2134B0'; exports.input = 1; exports.output = 1 exports.click = false; exports.author = 'oms-is'; exports.icon = 'bolt'; exports.options = { edge: "undefined" }; const { networkInterfaces } = require('os'); exports.html = `
CSV Import
`; exports.readme = `# send all data to projects.worksys.io, required to monitor status of controller(unipi)`; const { promisifyBuilder, makeMapFromDbResult } = require('./helper/db_helper.js'); const fs = require('fs'); var path = require('path'); exports.install = async function(instance) { let id; let allValues = {}; let dbSettings; let sendAllValuesInterval; let now = new Date(); console.log(exports.title, "INSTALLED", now.toLocaleString("sk-SK")); const nets = networkInterfaces(); let ipAddresses = Object.create(null); // Or just '{}', an empty object for (const name of Object.keys(nets)) { for (const net of nets[name]) { // Skip over non-IPv4 and internal (i.e. 127.0.0.1) addresses if (net.family === 'IPv4' && !net.internal) { if (!ipAddresses[name]) { ipAddresses[name] = []; } ipAddresses[name].push(net.address); } } } try { let p = path.join(__dirname + "/../databases/", 'settings.table'); if (fs.existsSync(p)) { dbSettings = TABLE("settings"); let responseSettings = await promisifyBuilder(dbSettings.find()); id = responseSettings[0]["projects_id"]; //console.log(exports.title, responseSettings, id); } } catch(err) { console.error(err); } function sendValues() { if(Object.keys(allValues).length > 0) { if(id !== undefined) { delete allValues.__force__; let dataToSend = {...allValues}; dataToSend.id = id; dataToSend.ipAddresses = ipAddresses; //dataToSend.notify_date = new Date().toISOString().slice(0, 19).replace('T', ' '); //console.log(exports.title, "------------>sendValues", dataToSend); instance.send(0, dataToSend); allValues = {}; } else { console.log(exports.title, "unable to send data, id is undefined"); } } } instance.on("close", () => { clearInterval(sendAllValuesInterval); }) instance.on("data", (flowdata) => { allValues = { ...allValues, ...flowdata.data}; //console.log("DATA RECEIVED", flowdata.data); //__force__ if(flowdata.data.hasOwnProperty("__force__")) { if(flowdata.data.__force__) { sendValues(); } } }) sendAllValuesInterval = setInterval(() => { sendValues(); }, 60000*3); }