Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var path = require('path');
- var express = require('express');
- var bodyParser = require('body-parser');
- var app = express();
- var _ = require('lodash');
- var mongo = require('mongodb').MongoClient;
- var DB_USER = 'DB_USER';
- var DB_PASSWORD = 'DB_PASSWORD';
- var MONGO_URL = 'mongodb://'+DB_USER+':'+DB_PASSWORD+'@MONGO_URL';
- var SENSOR_DATA_COLLECTION = 'tempHumiditySensorData';
- app.use(express.static(path.join(__dirname, 'bower_components')));
- app.use(express.static(path.join(__dirname, 'public')));
- app.use(bodyParser.json());
- app.use(bodyParser.urlencoded({extended: true, limit: '50mb'}));
- app.set('views', __dirname+'/views');
- app.set('view engine', 'jade');
- var PORT = process.env.PORT || 3000;
- app.get('/', function(req, res) {
- makeGraphData(function(result) {
- res.render('index', {data: result});
- });
- });
- app.get('/data', function(req, res) {
- mongo.connect(MONGO_URL, function(err, db) {
- db.collection(SENSOR_DATA_COLLECTION).find().sort({timestamp: -1}).limit(1440).toArray(function(err, result) {
- db.close();
- if (err) {
- console.log('[ERROR]', '/data', err);
- }
- res.json(result);
- });
- });
- });
- app.post('/data', function(req, res) {
- var form = {
- timestamp: Date.now(),
- temperature: Number(_.get(req.body, 'temperature', 0)),
- humidity: Number(_.get(req.body, 'humidity', 0)),
- heatIndex: Number(_.get(req.body, 'heatIndex', 0))
- };
- saveSensorData(form, function(result) {
- res.sendStatus(200);
- });
- });
- app.listen(PORT, function () {
- console.log('App listening on port', PORT);
- });
- function saveSensorData(data, done) {
- mongo.connect(MONGO_URL, function(err, db) {
- db.collection(SENSOR_DATA_COLLECTION).insertOne(data, function(err, result) {
- if (err) {
- console.log('[ERROR]', 'saveSensorData', err);
- } else {
- console.log('[SUCCESS]', 'saveSensorData', data);
- }
- db.close();
- done();
- });
- });
- }
- function makeGraphData(done) {
- mongo.connect(MONGO_URL, function(err, db) {
- db.collection(SENSOR_DATA_COLLECTION).find().sort({timestamp: -1}).limit(1440).toArray(function(err, result) {
- db.close();
- if (err || !result || !result.length) {
- console.log('[ERROR]', 'makeGraphData', err);
- done([]);
- } else {
- result = _.sortBy(result, 'timestamp');
- done({
- temperature: _.map(result, 'temperature'),
- humidity: _.map(result, 'humidity'),
- heatIndex: _.map(result, 'heatIndex'),
- timestamps: _.map(result, 'timestamp')
- });
- }
- });
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement