mirror of
https://github.com/mgerb/mywebsite
synced 2026-01-11 10:22:53 +00:00
125 lines
3.0 KiB
JavaScript
125 lines
3.0 KiB
JavaScript
var express = require('express');
|
|
var router = express.Router();
|
|
var mongoose = require('mongoose');
|
|
|
|
require("../models/temperature");
|
|
var temperature = mongoose.model('temperature');
|
|
|
|
|
|
/* GET sensors page. */
|
|
router.get('/', function(req, res, next) {
|
|
|
|
temperature.aggregate( [{ $group : { _id : "$location", temperature : {$last : "$temperature"}, humidity : {$last : "$humidity"}, updated : {$last : "$updated"}}},
|
|
{$sort : {_id : -1}} ] ).exec(function(err, info){
|
|
|
|
|
|
//get month for each entry and convert 24 hour time to US time
|
|
//also check to see if device has sent a data point in past 5 minutes
|
|
//if not will show up as disconnected
|
|
for (var i = 0; i < info.length; i++){
|
|
var monthNames = ["January", "February", "March", "April", "May", "June",
|
|
"July", "August", "September", "October", "November", "December"];
|
|
|
|
var hours = info[i].updated.getHours();
|
|
var minutes = info[i].updated.getMinutes();
|
|
var month = monthNames[info[i].updated.getMonth()];
|
|
var date = info[i].updated.getDate();
|
|
var year = info[i].updated.getFullYear();
|
|
|
|
var dateString = month + " " + date + ", " + year;
|
|
|
|
var loc = info[i]._id;
|
|
|
|
var info_link = "/sensors/information?location="
|
|
|
|
if (loc != null){
|
|
loc = loc.split().join("+");
|
|
info_link += loc;
|
|
}
|
|
|
|
info[i].info_link = info_link;
|
|
|
|
//adjust minutes to show up correctly
|
|
if (minutes < 10){
|
|
minutes = "0" + minutes;
|
|
}
|
|
|
|
//converting 24 hours time to AM or PM
|
|
if (hours == 0){
|
|
hours = 12;
|
|
info[i].lastUpdate = dateString + " - " + hours + ":" + minutes + " AM";
|
|
}
|
|
else if (hours < 12){
|
|
info[i].lastUpdate = dateString + " - " + hours + ":" + minutes + " AM";
|
|
}
|
|
else if (hours == 12){
|
|
info[i].lastUpdate = dateString + " - " + hours + ":" + minutes + " PM";
|
|
}
|
|
else{
|
|
hours = hours - 12;
|
|
info[i].lastUpdate = dateString + " - " + hours + ":" + minutes + " PM";
|
|
}
|
|
|
|
//compared current time to last db entry - 1200000 milliseconds is 2 minutes
|
|
if(info[i].updated.getTime() > (Date.now() - 350000)){
|
|
info[i].connected = true;
|
|
}
|
|
else {
|
|
info[i].connected = false;
|
|
}
|
|
|
|
}
|
|
|
|
res.render('sensors', {query : info});
|
|
});
|
|
|
|
|
|
});
|
|
|
|
router.get('/information', function(req, res, err){
|
|
|
|
var sensor_location = req.query.location;
|
|
|
|
if (sensor_location == null){
|
|
res.redirect('/404');
|
|
}
|
|
else{
|
|
temperature.aggregate([{$project : {location : "$location", year : {$year : "$updated"}, month : {$month : "$updated"}}},
|
|
{$match : {location : sensor_location}},
|
|
{$group : {_id : {year : "$year", month : "$month", location : "$location"}}},
|
|
{$sort : {"_id.year" : -1, "_id.month" : -1}}]).exec(function(err, info){
|
|
|
|
//generate list of unique years to display in dropdown menu
|
|
var years_list = [];
|
|
|
|
for (var i in info){
|
|
if (years_list.indexOf(info[i]._id.year) > -1){
|
|
|
|
}
|
|
else {
|
|
years_list.push(info[i]._id.year);
|
|
}
|
|
}
|
|
|
|
res.render('sensor_information', {info, years_list});
|
|
|
|
});
|
|
|
|
}
|
|
});
|
|
|
|
module.exports = router;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|