Skip to content

Commit 62f71ae

Browse files
committed
globalize db; add garagePoll sample event
1 parent 719e9fa commit 62f71ae

2 files changed

Lines changed: 11 additions & 2 deletions

File tree

gateway.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ var serialport = require("serialport"); //https://github
4040
var Datastore = require('nedb'); //https://github.com/louischatriot/nedb
4141
var nodemailer = require('nodemailer'); //https://github.com/andris9/Nodemailer
4242
var request = require('request');
43-
var db = new Datastore({ filename: path.join(__dirname, dbDir, settings.database.name.value), autoload: true }); //used to keep all node/metric data
43+
db = new Datastore({ filename: path.join(__dirname, dbDir, settings.database.name.value), autoload: true }); //used to keep all node/metric data
4444
var dbunmatched = new Datastore({ filename: path.join(__dirname, dbDir, settings.database.nonMatchesName.value), autoload: true });
4545
serial = new serialport.SerialPort(settings.serial.port.value, { baudrate : settings.serial.baud.value, parser: serialport.parsers.readline("\n") }, false);
4646

@@ -579,7 +579,15 @@ function schedule(node, eventKey) {
579579
//run a scheduled event and reschedule it
580580
function runAndReschedule(functionToExecute, node, eventKey) {
581581
console.log('**** RUNNING SCHEDULED EVENT - nodeId:' + node._id + ' event:' + eventKey + '...');
582-
functionToExecute(node, eventKey);
582+
try {
583+
functionToExecute(node, eventKey);
584+
}
585+
catch (ex)
586+
{
587+
var msg = 'Event ' + eventKey + ' execution failed: ' + ex.message;
588+
console.error(msg);
589+
io.sockets.emit('LOG', msg);
590+
}
583591
schedule(node, eventKey);
584592
}
585593

metrics.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ exports.events = {
132132
sumpSMS : { label:'SumpPump : SMS (below 20cm)', icon:'comment', descr:'Send SMS if water < 20cm below surface', serverExecute:function(node) { if (node.metrics['CM'] && node.metrics['CM'].value < 20 && (Date.now() - new Date(node.metrics['CM'].updated).getTime() < 2000)) { sendSMS('SUMP PUMP ALERT', 'Water is only 20cm below surface and rising - [' + node._id + '] ' + node.label + ' @ ' + (new Date().toLocaleTimeString() + (new Date().getHours() > 12 ? 'PM':'AM'))); }; } },
133133

134134
garageSMS : { label:'Garage : SMS', icon:'comment', descr:'Send SMS when garage is OPENING', serverExecute:function(node) { if (node.metrics['Status'] && (node.metrics['Status'].value.indexOf('OPENING')>-1) && (Date.now() - new Date(node.metrics['Status'].updated).getTime() < 2000)) { sendSMS('Garage event', 'Garage was opening on node : [' + node._id + ':' + node.label + '] @ ' + (new Date().toLocaleTimeString() + (new Date().getHours() > 12 ? 'PM':'AM'))); }; } },
135+
garagePoll: { label:'Garage : POLL', icon:'comment', descr:'Poll Garage Status', nextSchedule:function(nodeAtScheduleTime) { return 30000; }, scheduledExecute:function(nodeAtScheduleTime) { db.findOne({ _id : nodeAtScheduleTime._id }, function (err, nodeRightNow) { if (nodeRightNow) { /*just emit a log the status to client(s)*/ io.sockets.emit('LOG', 'GARAGE POLL STATUS: ' + nodeRightNow.metrics['Status'].value ); } }); } },
135136

136137
switchMoteON_PM : { label:'SwitchMote ON at 5:30PM!', icon:'clock', descr:'Turn this switch ON every evening', nextSchedule:function(node) { return exports.timeoutOffset(17,30); }, scheduledExecute:function(node) { sendMessageToNode({nodeId:node._id, action:'BTN1:1'}); } },
137138
switchMoteOFF_AM : { label:'SwitchMote OFF at 7:30AM!', icon:'clock', descr:'Turn this switch OFF every morning', nextSchedule:function(node) { return exports.timeoutOffset(7,30); }, scheduledExecute:function(node) { sendMessageToNode({nodeId:node._id, action:'BTN1:0'}); } },

0 commit comments

Comments
 (0)