Initial commit
This commit is contained in:
commit
c53c7085bc
60 changed files with 23885 additions and 0 deletions
129
flow/timesetter.js
Normal file
129
flow/timesetter.js
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
exports.id = 'timesetter';
|
||||
exports.title = 'Timesetter';
|
||||
exports.group = 'Worksys';
|
||||
exports.color = '#656D78';
|
||||
exports.input = true;
|
||||
exports.output = 1;
|
||||
exports.author = 'Rastislav Kovac';
|
||||
exports.icon = 'code';
|
||||
exports.version = '1.0.0';
|
||||
exports.readme = `
|
||||
This component can be installed just on controllers without direct internet access!
|
||||
'project_id' variable needs to be set for every project!!
|
||||
|
||||
Timesetter sends requests once a day to service-prod01.worksys.io to get
|
||||
actual date and time. It sets unipi's system timedate
|
||||
`;
|
||||
|
||||
//! SET project_id
|
||||
const project_id = 39;
|
||||
const { exec } = require('child_process');
|
||||
|
||||
|
||||
exports.install = function(instance) {
|
||||
|
||||
instance.on('data', function(flowdata) {
|
||||
|
||||
RESTBuilder.make(function(builder) {
|
||||
|
||||
if(!builder) return;
|
||||
|
||||
builder.method('GET');
|
||||
//FLOW.OMS_edge_fw_version
|
||||
builder.url(`http://192.168.252.2:8004/gettime?projects_id=${project_id}`);
|
||||
|
||||
builder.callback(function(err, response, output) {
|
||||
|
||||
if (err) {
|
||||
console.log(err);
|
||||
return;
|
||||
}
|
||||
|
||||
instance.send(0, "RESTBuilder timedatectl response");
|
||||
const res = output.response;
|
||||
|
||||
try {
|
||||
|
||||
const obj = JSON.parse(res);
|
||||
let d = new Date(obj.date);
|
||||
|
||||
const now = new Date();
|
||||
|
||||
//offset in minutes - convertUTCDateToLocalDate
|
||||
let diffInMinutes = now.getTimezoneOffset();
|
||||
//d.setMinutes( d.getMinutes() + diffInMinutes );
|
||||
|
||||
//let converted = convertUTCDateToLocalDate(d);
|
||||
|
||||
console.log("---->TimezoneOffset", diffInMinutes);
|
||||
|
||||
if(d instanceof Date)
|
||||
{
|
||||
console.log("current js date:", d, d.getHours());
|
||||
|
||||
let year = d.getFullYear();
|
||||
let month = addZeroBefore(d.getMonth() + 1);
|
||||
let day = addZeroBefore(d.getDate());
|
||||
|
||||
//-2 hodiny!!!!
|
||||
let hours = addZeroBefore( d.getHours() );
|
||||
let minutes = addZeroBefore(d.getMinutes() );
|
||||
let seconds = addZeroBefore(d.getSeconds());
|
||||
|
||||
let timestamp = `${year}${month}${day} ${hours}:${minutes}:${seconds}`;
|
||||
let dstr = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
|
||||
|
||||
|
||||
//TODO - poslat notifikaciu a nastav hw cas
|
||||
//timedatectl set-timezone "Europe/Bratislava"
|
||||
//hwclock --set --date="2021-08-24 15:02:00" --localtime
|
||||
|
||||
//https://www.tecmint.com/set-time-timezone-and-synchronize-time-using-timedatectl-command/
|
||||
|
||||
|
||||
//timedatectl set-time "2022-04-27 09:13:00"
|
||||
{
|
||||
|
||||
let year = d.getUTCFullYear();
|
||||
let month = addZeroBefore(d.getUTCMonth() + 1);
|
||||
let day = addZeroBefore(d.getUTCDate());
|
||||
|
||||
let hours = addZeroBefore( d.getUTCHours() );
|
||||
let minutes = addZeroBefore(d.getUTCMinutes() );
|
||||
let seconds = addZeroBefore(d.getUTCSeconds());
|
||||
|
||||
let UTCstr = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
|
||||
|
||||
exec(`sudo timedatectl set-time "${UTCstr}"`, (err, stdout, stderr) => {
|
||||
if (err || stderr) {
|
||||
console.error(err);
|
||||
console.log(stderr);
|
||||
console.log(UTCstr);
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
console.log(`UTC: timedatectl set-time "${UTCstr}"`);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
} catch(e) {
|
||||
console.log(e)
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
function addZeroBefore(n) {
|
||||
return (n < 10 ? '0' : '') + n;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue