Files
old-tfm/app/server/methods.js

66 lines
1.7 KiB
JavaScript
Raw Normal View History

2016-02-14 10:34:54 +01:00
function controller_state(controller_id) {
var result = {}
if (controller_id) {
result = ControllerState.findOne({
controller_id: controller_id
});
}
if (!result) {
result = {}
};
return result;
};
function setOutValveTo(controller_id, nextState) {
var state = controller_state(controller_id);
ControllerState.update(state._id, {
'$set': {
'state.out_valve': nextState,
'time': new Date(),
'set_by': 'server'
}
});
}
function openOutValve(controller_id) {
setOutValveTo(controller_id, 'opening');
var state = controller_state(controller_id);
var config = state.config;
var jobName = "Close out valve " + state.controller_id + " after draining";
console.log("Opening valve ", controller_id, jobName);
SyncedCron.remove(jobName);
SyncedCron.add({
name: jobName,
schedule: function(parser) {
var time = moment().add(config.draining_period_amount, config.draining_period_unit).toDate();
return parser.recur().on(time).fullDate();
},
job: function() {
closeOutValve(controller_id);
}
});
console.log("Finished adding cron ", controller_id);
}
function closeOutValve(controller_id) {
var state = controller_state(controller_id);
var jobName = "Close out valve " + state.controller_id + " after draining";
console.log("Closing valve ", controller_id, jobName);
SyncedCron.remove(jobName);
setOutValveTo(controller_id, 'closing');
console.log("Finished clearing cron ", controller_id);
}
function clearLog() {
console.log("Removing sensor data");
SensorData.remove({});
}
Meteor.methods({
openOutValve: openOutValve,
closeOutValve: closeOutValve,
clearLog: clearLog
});