finished scheduled close after opening
This commit is contained in:
65
app/server/methods.js
Normal file
65
app/server/methods.js
Normal file
@@ -0,0 +1,65 @@
|
||||
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
|
||||
});
|
||||
Reference in New Issue
Block a user