197 lines
4.4 KiB
JavaScript
197 lines
4.4 KiB
JavaScript
var express = require('express'), fs = require('fs'), sqlite3 = require('sqlite3').verbose();
|
|
var EventEmitter = require('events');
|
|
var log4js = require('log4js');
|
|
var logger = log4js.getLogger();
|
|
|
|
var router = express.Router();
|
|
|
|
var EventEmitter = require('events');
|
|
var busEmitter = new EventEmitter();
|
|
|
|
|
|
var temp_db;
|
|
var file = process.env.DB_HOME + '/' + "temp.db";
|
|
var exists;
|
|
/* GET users listing. */
|
|
|
|
function createDB() {
|
|
logger.debug('Creating Temp db...');
|
|
logger.debug(file);
|
|
if (!fs.existsSync(file)) {
|
|
logger.debug('creating db file');
|
|
fs.openSync(file, 'w');
|
|
|
|
temp_db = new sqlite3.Database(file, createTable);
|
|
|
|
temp_db.close();
|
|
}
|
|
else {
|
|
logger.info('Database already created.');
|
|
connectDB();
|
|
}
|
|
|
|
|
|
}
|
|
|
|
function startEventHandler() {
|
|
"use strict";
|
|
|
|
}
|
|
function connectDB() {
|
|
"use strict";
|
|
logger.debug('Connect db.');
|
|
temp_db = new sqlite3.Database(file);
|
|
console.log(temp_db);
|
|
|
|
return temp_db;
|
|
}
|
|
|
|
function createTable() {
|
|
logger.debug('Creating temp table...');
|
|
temp_db.run('CREATE TABLE IF NOT EXISTS temp (date text, reading real);');
|
|
}
|
|
|
|
|
|
function closeDB() {
|
|
"use strict";
|
|
console.log('Closing db.');
|
|
temp_db.close();
|
|
}
|
|
|
|
function insertTempReading(time, reading) {
|
|
console.log('Inserting reading:' + reading);
|
|
|
|
// var sql = db.prepare('INSERT into temperature(date, reading) VALUES
|
|
// (?,?)',[time],[reading]);
|
|
temp_db.run('BEGIN TRANSACTION');
|
|
|
|
temp_db.run('INSERT into temp(date, reading) VALUES (?,?);', [time, reading]);
|
|
|
|
// temp_db.run('END');
|
|
|
|
temp_db.run('commit');
|
|
}
|
|
|
|
/*router.get('/', function (req, res, next) {
|
|
var now = new Date();
|
|
|
|
var t = req.query;
|
|
|
|
console.log('t:');
|
|
console.log(JSON.stringify(t));
|
|
if (req.query != {} && req.query.temp != null) {
|
|
// createDB();
|
|
|
|
|
|
res.writeHead(200, {"ContentType": "text/html"});
|
|
//res.send(JSON.stringify(t));
|
|
res.end('ok');
|
|
} else {
|
|
res.writeHead(200, {"ContentType": "text/html"});
|
|
//res.send(JSON.stringify(t));
|
|
res.end('error?');
|
|
}
|
|
|
|
|
|
});*/
|
|
|
|
/*router.get('/:id', function (req, res, next) {
|
|
var id = req.params.id;
|
|
|
|
console.log('id: ' + id);
|
|
res.writeHead(200, {"ContentType": "text/html"});
|
|
//res.send(JSON.stringify(t));
|
|
res.end('ok');
|
|
});*/
|
|
|
|
router.get('/reading', function (req, res, next) {
|
|
var now = new Date();
|
|
|
|
var t = req.query;
|
|
|
|
console.log('t:');
|
|
console.log(JSON.stringify(t));
|
|
|
|
res.writeHead(200, {"ContentType": "application/json"});
|
|
//res.send(JSON.stringify(t));
|
|
res.end(JSON.stringify({}));
|
|
});
|
|
|
|
|
|
router.post('/', function (req, res, next) {
|
|
"use strict";
|
|
|
|
var t = req.body;
|
|
var now = new Date();
|
|
var dataJSON={};
|
|
console.log('~~~~');
|
|
logger.debug(t);
|
|
console.log(typeof t);
|
|
//t = JSON.parse(t);
|
|
if(t.hasOwnProperty('data')){
|
|
logger.debug('We have data');
|
|
var data = t.data;
|
|
logger.debug(data);
|
|
|
|
/* var data = t.data;
|
|
dataJSON = JSON.parse(data);
|
|
if(dataJSON.hasOwnProperty('temp')) {
|
|
|
|
}
|
|
else
|
|
{
|
|
logger.error('No temp data!');
|
|
}*/
|
|
}
|
|
else
|
|
{
|
|
logger.error('No data block!');
|
|
}
|
|
console.log(JSON.stringify(t));
|
|
if (dataJSON != {} && dataJSON.temp != null) {
|
|
busEmitter.emit("saveTempData", {time: now.toJSON(), value: parseFloat(dataJSON.temp)});
|
|
}
|
|
|
|
res.writeHead(200, {"ContentType": "text/html"});
|
|
res.end('ok');
|
|
});
|
|
|
|
|
|
router.get('/all', function (req, res, next) {
|
|
"use strict";
|
|
console.log('Selecint all..');
|
|
var db = connectDB();
|
|
|
|
db.all('SELECT * from temp', function (err, rows) {
|
|
|
|
var out = [];
|
|
console.log(err);
|
|
console.log(rows);
|
|
rows.forEach(function (row) {
|
|
console.log(row.date + ', ' + row.reading);
|
|
// var t = ;
|
|
// out.push({"date": Date(row.date), "reading":row.reading});
|
|
out.push({"date": row.date, "reading": row.reading});
|
|
});
|
|
|
|
res.writeHead(200, {"ContentType": "application/json"});
|
|
//res.send(JSON.stringify(t));
|
|
res.end(JSON.stringify(out));
|
|
|
|
//closeDB();
|
|
});
|
|
|
|
|
|
});
|
|
|
|
module.exports = router;
|
|
|
|
createDB();
|
|
|
|
|
|
var sendSocketHandler = (obj) => {
|
|
// logger.info('sendSocket: ' + JSON.stringify(obj));
|
|
insertTempReading(obj.time, obj.value);
|
|
}
|
|
busEmitter.on('saveTempData', sendSocketHandler);
|