54 lines
2.0 KiB
JavaScript
54 lines
2.0 KiB
JavaScript
// Get Current Cycle Symmary Array
|
|
var currentCycle = flow.get("currentApplianceCycle");
|
|
|
|
var date = new Date();
|
|
msg.payload = {};
|
|
|
|
// Function to convert unix epoch to X hours and Y mins
|
|
// and format as 'Xh Xmin'. Drop the hours if less than 1.
|
|
function secondsToHms(d) {
|
|
d = Number(d);
|
|
var h = Math.floor(d / 3600);
|
|
var m = Math.floor(d % 3600 / 60);
|
|
if (h < 1 ) {
|
|
return ('0' + m).slice(-2)+"min";
|
|
}
|
|
else {
|
|
return ('0' + h).slice(-2) + "h " + ('0' + m).slice(-2)+"min";
|
|
}
|
|
}
|
|
|
|
// Function to convert unix epoch to 00:00
|
|
function epochToFormattedTime(d) {
|
|
d = new Date(d * 1000);
|
|
var h = d.getHours();
|
|
var m = "0" + d.getMinutes();
|
|
return h + ':' + m.substr(-2);
|
|
}
|
|
|
|
|
|
// Extract start/stop time based on the unix timestamp
|
|
// First multiply by 1000 so that the argument is in milliseconds, not seconds.
|
|
var startDateTime = new Date(currentCycle.cycleTimeStart * 1000);
|
|
var stopDateTime = new Date(currentCycle.cycleTimeStop * 1000);
|
|
var startDateHours = "0" + startDateTime.getHours();
|
|
var stopDateHours = "0" + stopDateTime.getHours();
|
|
var startDateMinutes = "0" + startDateTime.getMinutes();
|
|
var stopDateMinutes = "0" + stopDateTime.getMinutes();
|
|
|
|
// Format times
|
|
// Will display time in 10:30 format (no seconds)
|
|
var formattedStartTime = startDateHours.substr(-2) + ':' + startDateMinutes.substr(-2)
|
|
var formattedStopTime = stopDateHours.substr(-2) + ':' + stopDateMinutes.substr(-2)
|
|
|
|
// Put together a notification ready for sending to notifying tools
|
|
msg.topic = flow.get("applianceName") + " Notification";
|
|
msg.payload = "Your " + flow.get("applianceAction") +
|
|
" is complete.\nIt started at " + formattedStartTime +
|
|
", finished at " + formattedStopTime +
|
|
", and used " + currentCycle.totalCyclePowerFormatted +
|
|
", taking " + secondsToHms(currentCycle.cycleTimeStop - currentCycle.cycleTimeStart) +
|
|
" at a cost of " + currentCycle.totalCycleCostFormatted;
|
|
|
|
return msg;
|