hdl-automation-nodered
Version:
Provides control and feedback of the HDL Automation bus for Node Red https://www.hdlautomation.com/
100 lines (93 loc) • 4.39 kB
JavaScript
module.exports = {
status: "Testing",
name: "Date Time",
description: "The current date and time in the HDL system",
actions: {
set: {
request: 0xDA02,
answerBack: 0xDA03,
processData: function(data) {
return {
"success": data[0]
}
},
generateData: function(data) {
var weekday = 0;
if (typeof data.year != 'number'){ return "Invalid year: " + data.year + ". Expected a number"; }
if (typeof data.month != 'number'){ return "Invalid month: " + data.month + ". Expected a number"; }
if (typeof data.day != 'number'){ return "Invalid day: " + data.day + ". Expected a number"; }
if (typeof data.hour != 'number'){ return "Invalid hour: " + data.hour + ". Expected a number"; }
if (typeof data.minute != 'number'){ return "Invalid minute: " + data.minute + ". Expected a number"; }
if (typeof data.second != 'number'){ return "Invalid second: " + data.second + ". Expected a number"; }
if(data.year < 2000){return "Invalid year: " + data.year + ". This is expected to be above 2000";}
if(data.month < 1 || data.month > 12){return "Invalid month: " + data.month + ". This is expected to be a number between 1 and 12";}
if(data.day < 1 || data.day > 31){return "Invalid day: " + data.day + ". This is expected to be a number between 1 and 31";}
if(data.hour < 0 || data.hour > 23){return "Invalid hour: " + data.hour + ". This is expected to be a number between 0 and 23";}
if(data.minute < 0 || data.minute > 59){return "Invalid minute: " + data.minute + ". This is expected to be a number between 0 and 59";}
if(data.second < 0 || data.second > 59){return "Invalid second: " + data.second + ". This is expected to be a number between 0 and 59";}
switch(data.weekDay.toLowerCase()) {
case "sunday": {weekDay = 0; break;}
case "monday": {weekDay = 1; break;}
case "tuesday": {weekDay = 2; break;}
case "wednesday": {weekDay = 3; break;}
case "thursday": {weekDay = 4; break;}
case "friday": {weekDay = 5; break;}
case "saturday": {weekDay = 6; break;}
default: {
return "Invalid week day: " + data.weekDay + ". Expected a string with the day (sunday)";
}
}
return Buffer.from([data.year, data.month, data.day, data.hour, data.minute, data.second, weekDay]);
}
},
get: {
request: 0xDA00,
answerBack: 0xDA01,
processData: function(data) {
var weekDay = "unknown";
switch(data[7]) {
case 0: weekDay = "sunday"; break;
case 1: weekDay = "monday"; break;
case 2: weekDay = "tuesday"; break;
case 3: weekDay = "wednesday"; break;
case 4: weekDay = "thursday"; break;
case 5: weekDay = "friday"; break;
case 6: weekDay = "saturday"; break;
}
return {
"success": data[1] == 0x00F8,
"year": data[1],
"month": data[2],
"day": data[3],
"hour": data[4],
"minute": data[5],
"second": data[6],
"weekDay": weekDay
}
},
generateData: function(data) {
//There is no parameters
return Buffer.from([]);
}
},
broadcast: {
request: 0xDA44,
answerBack: 0xFFFF,
processData: function(data) {
return {
"year": data[0],
"month": data[1],
"day": data[2],
"hour": data[3],
"minute": data[4],
"second": data[5]
}
},
generateData: function(data) {
return {
"error": "Not Supported"
}
}
}
}
}