Advertisement
Guest User

Untitled

a guest
Mar 1st, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.51 KB | None | 0 0
  1. var path = require('path');
  2. var express = require('express');
  3. var bodyParser = require('body-parser');
  4. var app = express();
  5. var _ = require('lodash');
  6. var mongo = require('mongodb').MongoClient;
  7. var DB_USER = 'DB_USER';
  8. var DB_PASSWORD = 'DB_PASSWORD';
  9. var MONGO_URL = 'mongodb://'+DB_USER+':'+DB_PASSWORD+'@MONGO_URL';
  10. var SENSOR_DATA_COLLECTION = 'tempHumiditySensorData';
  11. app.use(express.static(path.join(__dirname, 'bower_components')));
  12. app.use(express.static(path.join(__dirname, 'public')));
  13. app.use(bodyParser.json());
  14. app.use(bodyParser.urlencoded({extended: true, limit: '50mb'}));
  15. app.set('views', __dirname+'/views');
  16. app.set('view engine', 'jade');
  17. var PORT = process.env.PORT || 3000;
  18. app.get('/', function(req, res) {
  19. makeGraphData(function(result) {
  20. res.render('index', {data: result});
  21. });
  22. });
  23. app.get('/data', function(req, res) {
  24. mongo.connect(MONGO_URL, function(err, db) {
  25. db.collection(SENSOR_DATA_COLLECTION).find().sort({timestamp: -1}).limit(1440).toArray(function(err, result) {
  26. db.close();
  27. if (err) {
  28. console.log('[ERROR]', '/data', err);
  29. }
  30. res.json(result);
  31. });
  32. });
  33. });
  34. app.post('/data', function(req, res) {
  35. var form = {
  36. timestamp: Date.now(),
  37. temperature: Number(_.get(req.body, 'temperature', 0)),
  38. humidity: Number(_.get(req.body, 'humidity', 0)),
  39. heatIndex: Number(_.get(req.body, 'heatIndex', 0))
  40. };
  41. saveSensorData(form, function(result) {
  42. res.sendStatus(200);
  43. });
  44. });
  45. app.listen(PORT, function () {
  46. console.log('App listening on port', PORT);
  47. });
  48. function saveSensorData(data, done) {
  49. mongo.connect(MONGO_URL, function(err, db) {
  50. db.collection(SENSOR_DATA_COLLECTION).insertOne(data, function(err, result) {
  51. if (err) {
  52. console.log('[ERROR]', 'saveSensorData', err);
  53. } else {
  54. console.log('[SUCCESS]', 'saveSensorData', data);
  55. }
  56. db.close();
  57. done();
  58. });
  59. });
  60. }
  61. function makeGraphData(done) {
  62. mongo.connect(MONGO_URL, function(err, db) {
  63. db.collection(SENSOR_DATA_COLLECTION).find().sort({timestamp: -1}).limit(1440).toArray(function(err, result) {
  64. db.close();
  65. if (err || !result || !result.length) {
  66. console.log('[ERROR]', 'makeGraphData', err);
  67. done([]);
  68. } else {
  69. result = _.sortBy(result, 'timestamp');
  70. done({
  71. temperature: _.map(result, 'temperature'),
  72. humidity: _.map(result, 'humidity'),
  73. heatIndex: _.map(result, 'heatIndex'),
  74. timestamps: _.map(result, 'timestamp')
  75. });
  76. }
  77. });
  78. });
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement