senica add rebuild tasks at 11 on tuesday and saturday
This commit is contained in:
parent
86619fbcff
commit
ac2ccc1c61
2 changed files with 171 additions and 168 deletions
|
|
@ -311,16 +311,19 @@ exports.install = function(instance) {
|
||||||
}, time);
|
}, time);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: FIND BETTER SOLUTION, THAN REBUILDING TASKS
|
||||||
// we ensure, all tasks will be rebuild every day at 11. To set correct switch off and on times
|
// we ensure, all tasks will be rebuild twice a week on tuesday or saturday at 11. To set correct switch off and on times
|
||||||
let sendRebuildTasksAt11 = null;
|
let sendRebuildTasksAt11 = null;
|
||||||
const checkIf11Oclock = () =>
|
const checkIf11Oclock = () =>
|
||||||
{
|
{
|
||||||
const d = new Date();
|
const d = new Date();
|
||||||
const h = d.getHours();
|
const h = d.getHours();
|
||||||
if(h === 11)
|
const day = d.getDay();
|
||||||
|
|
||||||
|
if((day === 2 || day === 6) && h === 11)
|
||||||
{
|
{
|
||||||
instance.send(instanceSendTo.cmd_manager, {sender:"dido_controller", cmd:"buildTasks"});
|
instance.send(instanceSendTo.cmd_manager, {sender:"dido_controller", cmd:"buildTasks"});
|
||||||
|
monitor.info("Task rebuilt at 11 o'clock, tuesday, saturday");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sendRebuildTasksAt11 = setInterval(checkIf11Oclock, 3600000);
|
sendRebuildTasksAt11 = setInterval(checkIf11Oclock, 3600000);
|
||||||
|
|
@ -1465,13 +1468,13 @@ exports.install = function(instance) {
|
||||||
const lineOnSameBraker = line + 3 + "";
|
const lineOnSameBraker = line + 3 + "";
|
||||||
|
|
||||||
if(relaysData.hasOwnProperty(lineOnSameBraker)) {
|
if(relaysData.hasOwnProperty(lineOnSameBraker)) {
|
||||||
instance.send(instanceSendTo.cmd_manager, {sender: "di_do_controller", cmd: "state_of_breaker", value: value, line: line + 3});
|
instance.send(instanceSendTo.cmd_manager, {sender: "dido_controller", cmd: "state_of_breaker", value: value, line: line + 3});
|
||||||
|
|
||||||
deviceStatuses["state_of_breaker"][line + 3] = value;
|
deviceStatuses["state_of_breaker"][line + 3] = value;
|
||||||
reportLineStatus(line + 3);
|
reportLineStatus(line + 3);
|
||||||
|
|
||||||
values[type] = value;
|
values[type] = value;
|
||||||
tbname = relaysData[lineOnSameBraker].tbname;
|
const tbname = relaysData[lineOnSameBraker].tbname;
|
||||||
sendTelemetry(values, tbname);
|
sendTelemetry(values, tbname);
|
||||||
|
|
||||||
delete values[type];
|
delete values[type];
|
||||||
|
|
@ -1909,4 +1912,4 @@ exports.install = function(instance) {
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
// ]
|
// ]
|
||||||
// }
|
// }
|
||||||
|
|
|
||||||
|
|
@ -1,163 +1,163 @@
|
||||||
class DataToTbHandler
|
class DataToTbHandler
|
||||||
{
|
{
|
||||||
constructor(index) {
|
constructor(index) {
|
||||||
this.index = index;
|
this.index = index;
|
||||||
|
|
||||||
this.previousValues = {};
|
this.previousValues = {};
|
||||||
this.debug = false;
|
this.debug = false;
|
||||||
this.messageCounter = 0;
|
this.messageCounter = 0;
|
||||||
|
|
||||||
this.sender = "";
|
this.sender = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
dump()
|
dump()
|
||||||
{
|
{
|
||||||
console.log("----------------------------");
|
console.log("----------------------------");
|
||||||
console.log("previousValues", this.previousValues);
|
console.log("previousValues", this.previousValues);
|
||||||
console.log("----------------------------");
|
console.log("----------------------------");
|
||||||
}
|
}
|
||||||
|
|
||||||
setSender(sender)
|
setSender(sender)
|
||||||
{
|
{
|
||||||
this.sender = sender;
|
this.sender = sender;
|
||||||
}
|
}
|
||||||
|
|
||||||
isEmptyObject( obj ) {
|
isEmptyObject( obj ) {
|
||||||
for ( var name in obj ) {
|
for ( var name in obj ) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
sendToTb(dataToTb, instance)
|
sendToTb(dataToTb, instance)
|
||||||
{
|
{
|
||||||
|
|
||||||
if(!FLOW.OMS_brokerready)
|
if(!FLOW.OMS_brokerready)
|
||||||
{
|
{
|
||||||
return dataToTb;
|
return dataToTb;
|
||||||
}
|
}
|
||||||
|
|
||||||
let keys = Object.keys(dataToTb);
|
let keys = Object.keys(dataToTb);
|
||||||
|
|
||||||
if(keys.length == 0)
|
if(keys.length == 0)
|
||||||
{
|
{
|
||||||
if(this.debug) console.log("sendToTb received epty object", dataToTb);
|
if(this.debug) console.log("sendToTb received epty object", dataToTb);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
let tbname = keys[0];
|
let tbname = keys[0];
|
||||||
let ts;
|
let ts;
|
||||||
|
|
||||||
let arrayOfValues = dataToTb[tbname];
|
let arrayOfValues = dataToTb[tbname];
|
||||||
let arrayOfValuesToSend = [];
|
let arrayOfValuesToSend = [];
|
||||||
|
|
||||||
for(let i = 0; i < arrayOfValues.length; i++)
|
for(let i = 0; i < arrayOfValues.length; i++)
|
||||||
{
|
{
|
||||||
ts = arrayOfValues[i].ts;
|
ts = arrayOfValues[i].ts;
|
||||||
|
|
||||||
//console.log("sendToTb------------>before", arrayOfValues[i].values, tbname);
|
//console.log("sendToTb------------>before", arrayOfValues[i].values, tbname);
|
||||||
|
|
||||||
let values = this.prepareValuesForTb(tbname, ts, arrayOfValues[i].values);
|
let values = this.prepareValuesForTb(tbname, ts, arrayOfValues[i].values);
|
||||||
|
|
||||||
//console.log("sendToTb------------>after", values);
|
//console.log("sendToTb------------>after", values);
|
||||||
|
|
||||||
if(!this.isEmptyObject(values))
|
if(!this.isEmptyObject(values))
|
||||||
{
|
{
|
||||||
arrayOfValuesToSend.push({ts: ts, values: values});
|
arrayOfValuesToSend.push({ts: ts, values: values});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(arrayOfValuesToSend.length == 0)
|
if(arrayOfValuesToSend.length == 0)
|
||||||
{
|
{
|
||||||
//if(this.debug) console.log("data not sent - empty array");
|
//if(this.debug) console.log("data not sent - empty array");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
let dataToTb = {
|
let dataToTb = {
|
||||||
[tbname]: [
|
[tbname]: [
|
||||||
{
|
{
|
||||||
"ts": Date.now(),
|
"ts": Date.now(),
|
||||||
"values": values
|
"values": values
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
this.messageCounter++;
|
this.messageCounter++;
|
||||||
|
|
||||||
let dataToTbModified = {
|
let dataToTbModified = {
|
||||||
[tbname]: arrayOfValuesToSend
|
[tbname]: arrayOfValuesToSend
|
||||||
}
|
}
|
||||||
|
|
||||||
//console.log(this.sender + " DATA SEND TO TB ", tbname, this.messageCounter, new Date(ts), dataToTbModified[tbname][0].values, this.instance);
|
//console.log(this.sender + " DATA SEND TO TB ", tbname, this.messageCounter, new Date(ts), dataToTbModified[tbname][0].values, this.instance);
|
||||||
if(this.debug) console.log(this.sender + " DATA SEND TO TB ", this.index, tbname, arrayOfValuesToSend);
|
if(this.debug) console.log(this.sender + " DATA SEND TO TB ", this.index, tbname, arrayOfValuesToSend);
|
||||||
|
|
||||||
instance.send(this.index, dataToTbModified);
|
instance.send(this.index, dataToTbModified);
|
||||||
}
|
}
|
||||||
|
|
||||||
getDiffTimestamp(key)
|
getDiffTimestamp(key)
|
||||||
{
|
{
|
||||||
let seconds = 60*60;//1h
|
let seconds = 60*60;//1h
|
||||||
//seconds = 1;//for testing
|
//seconds = 1;//for testing
|
||||||
|
|
||||||
//TODO set different value for given key!!!
|
//TODO set different value for given key!!!
|
||||||
//if(key == "status") seconds = 2*60*60;//2h
|
//if(key == "status") seconds = 2*60*60;//2h
|
||||||
|
|
||||||
let timestampDiffToRemoveKey = seconds*1000;
|
let timestampDiffToRemoveKey = seconds*1000;
|
||||||
|
|
||||||
return timestampDiffToRemoveKey;
|
return timestampDiffToRemoveKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
prepareValuesForTb(tbname, timestamp, values)
|
prepareValuesForTb(tbname, timestamp, values)
|
||||||
{
|
{
|
||||||
let keys = Object.keys(values);
|
let keys = Object.keys(values);
|
||||||
if(!this.previousValues.hasOwnProperty(tbname))
|
if(!this.previousValues.hasOwnProperty(tbname))
|
||||||
{
|
{
|
||||||
this.previousValues[tbname] = {};
|
this.previousValues[tbname] = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
//if(this.debug) console.log("prepareValuesForTb", tbname, timestamp, values);
|
//if(this.debug) console.log("prepareValuesForTb", tbname, timestamp, values);
|
||||||
|
|
||||||
for(let i = 0; i < keys.length; i++)
|
for(let i = 0; i < keys.length; i++)
|
||||||
{
|
{
|
||||||
let key = keys[i];
|
let key = keys[i];
|
||||||
let value = values[key];
|
let value = values[key];
|
||||||
|
|
||||||
if(!this.previousValues[tbname].hasOwnProperty(key))
|
if(!this.previousValues[tbname].hasOwnProperty(key))
|
||||||
{
|
{
|
||||||
this.previousValues[tbname][key] = {ts: timestamp, value: value};
|
this.previousValues[tbname][key] = {ts: timestamp, value: value};
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(this.previousValues[tbname][key].value === value)
|
if(this.previousValues[tbname][key].value === value)
|
||||||
{
|
{
|
||||||
let diff = timestamp - this.previousValues[tbname][key].ts;
|
let diff = timestamp - this.previousValues[tbname][key].ts;
|
||||||
|
|
||||||
let timestampDiffToRemoveKey = this.getDiffTimestamp(key);
|
let timestampDiffToRemoveKey = this.getDiffTimestamp(key);
|
||||||
if(diff > timestampDiffToRemoveKey)
|
if(diff > timestampDiffToRemoveKey)
|
||||||
{
|
{
|
||||||
this.previousValues[tbname][key].ts = Date.now();
|
this.previousValues[tbname][key].ts = Date.now();
|
||||||
//if(this.debug) console.log(this.sender + ": update ts for key", key, "diff is", diff, "messageCounter", this.messageCounter);
|
//if(this.debug) console.log(this.sender + ": update ts for key", key, "diff is", diff, "messageCounter", this.messageCounter);
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
delete values[key];
|
delete values[key];
|
||||||
//if(this.debug) console.log(this.sender + ": delete key", key, "diff is", diff, "messageCounter", this.messageCounter, timestampDiffToRemoveKey);
|
//if(this.debug) console.log(this.sender + ": delete key", key, "diff is", diff, "messageCounter", this.messageCounter, timestampDiffToRemoveKey);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.previousValues[tbname][key].value = value;
|
this.previousValues[tbname][key].value = value;
|
||||||
this.previousValues[tbname][key].ts = timestamp;
|
this.previousValues[tbname][key].ts = timestamp;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return values;
|
return values;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = DataToTbHandler;
|
module.exports = DataToTbHandler;
|
||||||
Loading…
Add table
Add a link
Reference in a new issue