From 2dc5403e0424dc5c9036434a19d975b67573e923 Mon Sep 17 00:00:00 2001 From: Martin Donnelly Date: Fri, 26 Aug 2016 16:45:03 +0100 Subject: [PATCH] =?UTF-8?q?=E2=80=9D2016-08-26=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mdot/mdot_server/mdot_server/app.js | 28 +- mdot/mdot_server/mdot_server/app/js/mdot.js | 22 +- mdot/mdot_server/mdot_server/htpasswd | 2 + .../mdot_server/mdot_server/lib/mdot/apiv2.js | 1 - .../mdot_server/lib/mqtt/mqttClient.js | 57 ++-- mdot/mdot_server/mdot_server/manifest.yml | 5 +- .../mdot_server/old_html/graph.html | 125 +++++++ .../mdot_server/old_html/index.html | 318 ++++++++++++++++++ .../mdot_server/old_html/meeting.html | 76 +++++ .../mdot_server/old_html/test.html | 233 +++++++++++++ mdot/mdot_server/mdot_server/package.json | 1 + mdot/mdot_server/mdot_server/views/404.ejs | 15 + .../mdot_server/mdot_server/views/meeting.ejs | 76 +++++ mdot/mdot_server/mdot_server/views/test.ejs | 233 +++++++++++++ 14 files changed, 1154 insertions(+), 38 deletions(-) create mode 100644 mdot/mdot_server/mdot_server/htpasswd create mode 100644 mdot/mdot_server/mdot_server/old_html/graph.html create mode 100644 mdot/mdot_server/mdot_server/old_html/index.html create mode 100644 mdot/mdot_server/mdot_server/old_html/meeting.html create mode 100644 mdot/mdot_server/mdot_server/old_html/test.html create mode 100644 mdot/mdot_server/mdot_server/views/404.ejs create mode 100644 mdot/mdot_server/mdot_server/views/meeting.ejs create mode 100644 mdot/mdot_server/mdot_server/views/test.ejs diff --git a/mdot/mdot_server/mdot_server/app.js b/mdot/mdot_server/mdot_server/app.js index ef08d96..bbc581e 100644 --- a/mdot/mdot_server/mdot_server/app.js +++ b/mdot/mdot_server/mdot_server/app.js @@ -14,14 +14,14 @@ var bodyparser = require('body-parser'); var errorhandler = require('errorhandler'); var log4js = require('log4js'); var logger = log4js.getLogger(); - +var authentication = require('basic-authentication'); var WebSocketServer = require('websocket').server; var EventEmitter = require('events'); var busEmitter = new EventEmitter(); -// var apn = require('apn'); +// Var apn = require('apn'); require('sugar-date'); @@ -42,6 +42,13 @@ logger.warn('isProduction:', isProduction); var app = express(); +/*App.use(authentication(({ + hash: 'sha1', // type of hash + file: 'htpasswd', // path of file + suppress: true // suppress throwing Error if wrong user +})));*/ + + app.set('port', process.env.PORT || 4545); app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); @@ -79,8 +86,19 @@ function originIsAllowed(origin) { // Put logic here to detect whether the specified origin is allowed. return true; } +app.get('/graph', authentication(({ + hash: 'sha1', // Type of hash + file: 'htpasswd', // Path of file + suppress: true // Suppress throwing Error if wrong user + })), function(req, res) { + res.render('test',{delimiter: '^'}); + }); -// glue routes +app.get('/meeting', function(req, res) { + res.render('meeting',{delimiter: '^'}); + }); + +// Glue routes mdotApi(app); mdotApiV2(app); trackApi(app); @@ -98,6 +116,10 @@ if (isProduction) { var port = (process.env.VCAP_APP_PORT || 3010); var host = (process.env.VCAP_APP_HOST || 'localhost'); +app.get('*', function(req, res) { + res.status(404).render('404',{delimiter: '^'}); +}); + app.listen(port, function() { logger.info('Express listening on ',host, port); diff --git a/mdot/mdot_server/mdot_server/app/js/mdot.js b/mdot/mdot_server/mdot_server/app/js/mdot.js index c49d1bd..e6d9c54 100644 --- a/mdot/mdot_server/mdot_server/app/js/mdot.js +++ b/mdot/mdot_server/mdot_server/app/js/mdot.js @@ -46,10 +46,10 @@ /* Get a branch from the date tree and see if the reduced set of records has a matching timestamp.. */ - let count = 0; - const tsDate = new Date(ts); - const tsMS = tsDate.getTime(); - const branch = this.dateTree[tsDate.getFullYear().toString()][tsDate.getMonth().toString()][tsDate.getDate().toString()]; + var count = 0; + var tsDate = new Date(ts); + var tsMS = tsDate.getTime(); + var branch = this.dateTree[tsDate.getFullYear().toString()][tsDate.getMonth().toString()][tsDate.getDate().toString()]; if (typeof branch === 'undefined') { return count; @@ -69,9 +69,9 @@ */ var _tree = {}; _(occupancy).each(function(item) { - const newItem = item; - let day, month,year; - const _date = new Date(item.start); + var newItem = item; + var day, month,year; + var _date = new Date(item.start); newItem.startMS = new Date(item.start).getTime(); newItem.endMS = new Date(item.end).getTime(); @@ -125,7 +125,7 @@ } _(events.data).each(function(i) { - let _occupancy = 0; + var _occupancy = 0; if (!skipOccupancy) { _occupancy = this.findOccupancy(i.timestamp, events.occupancy); @@ -153,8 +153,8 @@ var _obj = {}; var _data = window.atob(data).split(''); - var bytes = _data.map(i => i.charCodeAt()); - + //var bytes = _data.map(i => i.charCodeAt()); +/* _obj.light = parseInt('0x' + ('0' + bytes[0]).substr(-2) + ('0' + bytes[1]).substr( -2)); _obj.co2 = parseInt(_data[2] + _data[3] + _data[4] + _data[5] + _data[6], @@ -165,7 +165,7 @@ 10) / 10); _obj.noise = parseInt('0x' + ('0' + bytes[17]).substr(-2) + ('0' + bytes[18]).substr( -2)); - _obj.binData = bytes; + _obj.binData = bytes;*/ return _obj; }, dateTime: function($date) { var dateTime = new Date.create($date); diff --git a/mdot/mdot_server/mdot_server/htpasswd b/mdot/mdot_server/mdot_server/htpasswd new file mode 100644 index 0000000..3c04cb0 --- /dev/null +++ b/mdot/mdot_server/mdot_server/htpasswd @@ -0,0 +1,2 @@ +martind2000:ae7dfe3f3ba4d1132f8c7d7e5a2d05676127458a8842b9c28cea7662ad45393c +censis:32e3248f334f9045106a86f561a4c9741c1e4f51 diff --git a/mdot/mdot_server/mdot_server/lib/mdot/apiv2.js b/mdot/mdot_server/mdot_server/lib/mdot/apiv2.js index 457ed31..5006e23 100644 --- a/mdot/mdot_server/mdot_server/lib/mdot/apiv2.js +++ b/mdot/mdot_server/mdot_server/lib/mdot/apiv2.js @@ -35,7 +35,6 @@ module.exports = function(app) { dbMdot.doGet(data) .then((d) => { - logger.debug('returning:',d.occupancy); res.json({events:d}); }) .catch((e) => { diff --git a/mdot/mdot_server/mdot_server/lib/mqtt/mqttClient.js b/mdot/mdot_server/mdot_server/lib/mqtt/mqttClient.js index c30bf99..6584f7f 100644 --- a/mdot/mdot_server/mdot_server/lib/mqtt/mqttClient.js +++ b/mdot/mdot_server/mdot_server/lib/mqtt/mqttClient.js @@ -29,7 +29,7 @@ function insertEntry(obj) { newObj.rtype = 1; logger.debug('Inserting into couch...'); - // logger.info(util.inspect(newObj)); + // Logger.info(util.inspect(newObj)); dbCouch.insert(newObj, function(err, body, header) { if (err) { logger.error('Error inserting into couch'); @@ -42,7 +42,7 @@ function insertEntry(obj) { var doInsertEntry = (obj) => { // Logger.info('sendSocket: ' + JSON.stringify(obj)); - // insertEntry(obj); + // insertEntry(obj); dbSave.addNewEvent(obj) .then(function(d) { @@ -75,9 +75,9 @@ var mqttClient = function() { var address = '.messaging.internetofthings.ibmcloud.com'; var appKey = '9txJEf3Cjy7hkSOvkv'; var prefix = 'iot-2/type/mDot/id/'; - //var deviceId = ['CENSIS-LoRa-1','CENSIS-LoRa-2','CENSIS-LoRa-3','CENSIS-LoRa-4','HIE-mobile-1','HIE-mobile-2','HIE-smart-campus-1','HIE-smart-campus-2','HIE-smart-campus-3','HIE-smart-campus-4','HIE-smart-campus-5','HIE-smart-campus-6','HIE-smart-campus-7','HIE-mDot-1']; + //Var deviceId = ['CENSIS-LoRa-1','CENSIS-LoRa-2','CENSIS-LoRa-3','CENSIS-LoRa-4','HIE-mobile-1','HIE-mobile-2','HIE-smart-campus-1','HIE-smart-campus-2','HIE-smart-campus-3','HIE-smart-campus-4','HIE-smart-campus-5','HIE-smart-campus-6','HIE-smart-campus-7','HIE-mDot-1']; - var deviceId = ['CENSIS-LoRa-1','CENSIS-LoRa-2','CENSIS-LoRa-3','CENSIS-LoRa-4','HIE-mobile-1----','HIE-mobile-2----','HIE-smart-campus-1','HIE-smart-campus-2','HIE-smart-campus-3','HIE-smart-campus-4','HIE-smart-campus-5','HIE-smart-campus-6','HIE-smart-campus-7','HIE-mDot-1']; + var deviceId = ['CENSIS-LoRa-1','CENSIS-LoRa-2','CENSIS-LoRa-3','CENSIS-LoRa-4','HIE-mobile-1----','HIE-mobile-2----','HIE-smart-campus-1','HIE-smart-campus-2','HIE-smart-campus-3','HIE-smart-campus-4','HIE-smart-campus-5','HIE-smart-campus-6','HIE-smart-campus-7','HIE-mDot-1']; //Var subscribeTopic = prefix + deviceId + '/evt/+/fmt/json'; @@ -86,10 +86,12 @@ var mqttClient = function() { this.connected = false; var options = { - keepalive: 3600, + keepalive: 10, clientId: 'a:' + orgId + ':' + Date.now(), username: userName, - password: new Buffer(appKey) + password: new Buffer(appKey), + reconnectPeriod: 1000, + connectTimeout: 30 * 1000 }; @@ -115,31 +117,44 @@ var mqttClient = function() { var json = JSON.parse(message.toString()); json.topic = topic; - // logger.debug(JSON.stringify(json)); + // Logger.debug(JSON.stringify(json)); busEmitter.emit('saveData', json); }.bind(this)); + this.client.on('connected', function() { + logger.debug('mqttConnect - doConnection - Connected'); + + }); + + this.client.on('close', function(e) { + logger.error('mqttConnect - close'); + logger.error(e); + }); + + this.client.on('offline', function(e) { + logger.error('mqttConnect - offline'); + logger.error(e); + }); + + + this.client.on('error', function(e) { + logger.error('mqttConnect - error'); + logger.error(e); + }); + + this.client.on('reconnect', function(e) { + logger.error('mqttConnect - reconnect'); + logger.error(e); + }); + + this.isConnected = function() { return this.connected; }; - this.client.on('connected', function() { - logger.debug('mqttConnect - doConnection - Connected'); - - }); - this.client.on('disconnect', function(e) { - logger.error('mqttConnect - doConnection - disconnect'); - logger.error(e); - }); - this.client.on('error', function(e) { - logger.error('mqttConnect - doConnection - disconnect'); - logger.error(e); - }); - - busEmitter.on('saveData', doInsertEntry); diff --git a/mdot/mdot_server/mdot_server/manifest.yml b/mdot/mdot_server/mdot_server/manifest.yml index 5c8c26a..4e82262 100644 --- a/mdot/mdot_server/mdot_server/manifest.yml +++ b/mdot/mdot_server/mdot_server/manifest.yml @@ -1,8 +1,9 @@ applications: - path: . memory: 256M + framework: node instances: 1 domain: mybluemix.net - name: mdotmqtt - host: mdotmqtt + name: mdotserver + host: mdotserver disk_quota: 1024M diff --git a/mdot/mdot_server/mdot_server/old_html/graph.html b/mdot/mdot_server/mdot_server/old_html/graph.html new file mode 100644 index 0000000..b626ed1 --- /dev/null +++ b/mdot/mdot_server/mdot_server/old_html/graph.html @@ -0,0 +1,125 @@ + + + + + + JS Bin + + + + + + + + +
+ + + + + + diff --git a/mdot/mdot_server/mdot_server/old_html/index.html b/mdot/mdot_server/mdot_server/old_html/index.html new file mode 100644 index 0000000..23dbd4f --- /dev/null +++ b/mdot/mdot_server/mdot_server/old_html/index.html @@ -0,0 +1,318 @@ + + + + + + Console + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+
+ + +
+
+
+
12:34
+
+
+
14 April
2016
+
+
+
+
+ +
+
+
+
+
+
+ + +
+
+
+
+
+
+ +
+
+ + +
+
+ +
+
+
+ +
+
+
+
+
+ +
+
+ + +
+
+ +
+
+ +
+
+
+
+
+ +
+
+ + +
+
+ +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mdot/mdot_server/mdot_server/old_html/meeting.html b/mdot/mdot_server/mdot_server/old_html/meeting.html new file mode 100644 index 0000000..7f91725 --- /dev/null +++ b/mdot/mdot_server/mdot_server/old_html/meeting.html @@ -0,0 +1,76 @@ + + + + + + Meetings + + + + + +
+
+
+
Meeting Log
+
+
+
+
+
+ New Meeting +
+ +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ +
+ +
+
+
+
+ + + + + + + + + + diff --git a/mdot/mdot_server/mdot_server/old_html/test.html b/mdot/mdot_server/mdot_server/old_html/test.html new file mode 100644 index 0000000..3cf7f41 --- /dev/null +++ b/mdot/mdot_server/mdot_server/old_html/test.html @@ -0,0 +1,233 @@ + + + + + Graph + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mdot/mdot_server/mdot_server/package.json b/mdot/mdot_server/mdot_server/package.json index 09e1a6f..74381b9 100644 --- a/mdot/mdot_server/mdot_server/package.json +++ b/mdot/mdot_server/mdot_server/package.json @@ -8,6 +8,7 @@ }, "dependencies": { "atob": "^2.0.3", + "basic-authentication": "^1.6.2", "body-parser": "^1.15.1", "btoa": "^1.1.2", "cfenv": "1.0.x", diff --git a/mdot/mdot_server/mdot_server/views/404.ejs b/mdot/mdot_server/mdot_server/views/404.ejs new file mode 100644 index 0000000..a38aac7 --- /dev/null +++ b/mdot/mdot_server/mdot_server/views/404.ejs @@ -0,0 +1,15 @@ + + + + 404 + + + +
+
+
404
+
Not Found
+
+
+ + diff --git a/mdot/mdot_server/mdot_server/views/meeting.ejs b/mdot/mdot_server/mdot_server/views/meeting.ejs new file mode 100644 index 0000000..7f91725 --- /dev/null +++ b/mdot/mdot_server/mdot_server/views/meeting.ejs @@ -0,0 +1,76 @@ + + + + + + Meetings + + + + + +
+
+
+
Meeting Log
+
+
+
+
+
+ New Meeting +
+ +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ +
+ +
+
+
+
+ + + + + + + + + + diff --git a/mdot/mdot_server/mdot_server/views/test.ejs b/mdot/mdot_server/mdot_server/views/test.ejs new file mode 100644 index 0000000..3cf7f41 --- /dev/null +++ b/mdot/mdot_server/mdot_server/views/test.ejs @@ -0,0 +1,233 @@ + + + + + Graph + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +