diff --git a/node/package.json b/node/package.json index e4e776e..784066e 100644 --- a/node/package.json +++ b/node/package.json @@ -1,4 +1,5 @@ { +<<<<<<< HEAD "name": "statusbot", "description": "ctdo status bot", "version": "0.0.1", @@ -15,4 +16,22 @@ "moment": "2.3.1" }, "main": "index" +======= + "name": "statusbot", + "description": "ctdo status bot", + "version": "0.0.1", + "private": true, + "dependencies": { + "connect-flash": "0.1.1", + "express": "3.4", + "jade": "0.35", + "moment": "2.3.1", + "net-snmp": "1.1.8", + "node-notifier": "^4.2.3", + "redis": "0.8.5", + "socket.io": "0.9.16", + "underscore": "1.5.2" + }, + "main": "index" +>>>>>>> 200046b0f183420dd23f391720a740607a1ec288 } diff --git a/node/statusbot.js b/node/statusbot.js index 0fbdd29..401efce 100644 --- a/node/statusbot.js +++ b/node/statusbot.js @@ -1,7 +1,8 @@ var express = require('express'), - app = express(), - server = require('http').createServer(app), - io = require('socket.io').listen(server); + app = express(), + server = require('http').createServer(app), + io = require('socket.io').listen(server), + notifier = require('node-notifier'); var flash = require('connect-flash'); var moment = require('moment'); var SnmpMac = require("./snmp-mac"); @@ -32,7 +33,7 @@ var spaceanswer = { twitter: "@ctdo", issue_mail: "server-admin@chaostreff-dortmund.de" }, - issue_report_channels: [ "issue_mail" ], + issue_report_channels: ["issue_mail"], state: { open: null, lastchange: 0, @@ -42,24 +43,26 @@ var spaceanswer = { } }, sensors: { - power_consumption: [ { - unit: "W", - name: "mains power", - description: "overall power consumption from our space", - location: "basement", - value: 0 } ] + power_consumption: [{ + unit: "W", + name: "mains power", + description: "overall power consumption from our space", + location: "basement", + value: 0}] } }; -var simpleanswer = { state: "unknown", count: 0, names: [], lastchange: 0, power: 0 }; -var usercountanswer = { at: 0, current_value: 0, datapoints: [ - { at: 0, value: 0 } -]}; +var simpleanswer = {state: "unknown", count: 0, names: [], lastchange: 0, power: 0}; +var usercountanswer = {at: 0, current_value: 0, datapoints: [ + {at: 0, value: 0} + ]}; var snmpMac = new SnmpMac("juni.ctdo.de", "ctdo23"); var ippoll = new IpPoll("switch2.raum.ctdo.de", "195.160.169.30-120"); var flukso = new Flukso("flukso.raum.ctdo.de", "/sensor/cf00e0b22230f4a8870af58f2b8719dd"); var notification = new Notification(spaceanswer.state.open) +var laststate = false; + snmpMac.on('done', function (res) { simpleanswer.names = res; simpleanswer.lastchange = new Date().getTime(); @@ -76,24 +79,59 @@ ippoll.on('doneState', function (state) { spaceanswer.state.lastchange = new Date().getTime(); simpleanswer.state = state; simpleanswer.lastchange = spaceanswer.state.lastchange; - io.sockets.emit('sdata', { data: simpleanswer }); + io.sockets.emit('sdata', {data: simpleanswer}); }); flukso.on('done', function (num) { simpleanswer.power = num; spaceanswer.sensors.power_consumption[0].value = num; - io.sockets.emit('sdata', { data: simpleanswer }); + io.sockets.emit('sdata', {data: simpleanswer}); }); io.configure(function () { io.set('log level', 0); }); +notifier.on('click', function (notifierObject, options) { + // Happens if `wait: true` and user clicks notification +}); + +notifier.on('timeout', function (notifierObject, options) { + // Happens if `wait: true` and notification closes +}); function work() { snmpMac.poll(); ippoll.pollCount(); +<<<<<<< HEAD notification.notificate(spaceanswer.state.open); +======= + + if (spaceanswer.state.open == true && laststate != true) { + laststate == true; + notifier.notify({ + title: 'CTDO - Statusänderung', + message: 'Der Chaostreff Dortmund ist nun offen.', + icon: path.join('public/img/green.png'), // absolute path (not balloons) + sound: true, // Only Notification Center or Windows Toasters + wait: true // wait with callback until user action is taken on notification + }, function (err, response) { + // response is response from notification + }); + } else if (spaceanswer.state.open == false && lasttaste != false) { + laststate == false; + + notifier.notify({ + title: 'CTDO - Statusänderung', + message: 'Der Chaostreff Dortmund ist nun geschlossen.', + icon: path.join('public/img/red.png'), // absolute path (not balloons) + sound: true, // Only Notification Center or Windows Toasters + wait: true // wait with callback until user action is taken on notification + }, function (err, response) { + // response is response from notification + }); + } +>>>>>>> 200046b0f183420dd23f391720a740607a1ec288 } setInterval(work, 60000); @@ -114,7 +152,7 @@ app.configure('development', function () { app.use(express.static(__dirname + '/public')); app.use(express.bodyParser()); app.use(express.cookieParser('chaostreff')); -app.use(express.session({ cookie: { maxAge: 60000 }})); +app.use(express.session({cookie: {maxAge: 60000}})); app.use(flash()); @@ -152,7 +190,3 @@ app.post('/form', routes.form); app.get('/', routes.index); server.listen(3000, 'localhost'); - - - -