Added js folder with related files.

This commit is contained in:
rnpenguin
2013-10-03 21:34:19 -07:00
parent 4d1e2805d4
commit 0984714091
2 changed files with 5 additions and 158 deletions
+5 -5
View File
@@ -5,15 +5,15 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>NightScout</title>
<link rel="stylesheet" type="text/css" href="http://nvd3.org/src/nv.d3.css">
<link rel="stylesheet" type="text/css" href="fonts.css">
<link rel="stylesheet" type="text/css" href="buttons.css">
<link rel="stylesheet" type="text/css" href="svg_chart.css">
<link rel="stylesheet" type="text/css" href="css/fonts.css">
<link rel="stylesheet" type="text/css" href="css/buttons.css">
<link rel="stylesheet" type="text/css" href="css/svg_chart.css">
<script src="/socket.io/socket.io.js"></script>
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
<script src="nv.d3.min.js"></script>
<script src="js/nv.d3.min.js"></script>
<script src="https://d396qusza40orc.cloudfront.net/startup%2Fcode%2Fjquery.js"></script>
<script src="https://d396qusza40orc.cloudfront.net/startup%2Fcode%2Fbootstrap.js"></script>
<script src="svg_chart.js"></script>
<script src="js/svg_chart.js"></script>
</head>
<body>
<!-- Mobile-friendly navbar. -->
-153
View File
@@ -1,153 +0,0 @@
//basic web server to display data from Dexcom G4
//requires a small program which sits on the
//Dexcom Studio DLL and creates a CSV file
//this program reads the csv file, parses it, then
//acts as a web server to display the current value
var test = true;
var refresh_rate = test === true ? 0.1 : 1;
var http = require("http");
var app = require("express");
var sys = require("sys");
var fs = require('fs');
var moment = require('moment');
var nodestatic = require('node-static');
var staticServer = new nodestatic.Server("."); //Setup static server for current directory
var exec = require('child_process').exec,
child;
//initialize to yesterday
var last_acknowledge_datetime = moment().subtract('days', 1);
//delete old data file
fs.unlink('sgv3.json', function (err) {
console.log('successfully deleted sgv3.json');
});
//Setup node http server
var server = require('http').createServer(function (request, response) {
// Grab the URL requested by the client and parse any query options
var url = require('url').parse(request.url, true);
var pathfile = url.pathname;
//console.log(url, pathfile);
var query = url.query;
// Print requested file to terminal
//console.log('Request from '+ request.connection.remoteAddress +' for: ' + pathfile);
// Serve file using node-static
staticServer.serve(request, response, function (err, result) {
if (err) {
// Log the error
sys.error("Error serving " + request.url + " - " + err.message);
// Respond to the client
response.writeHead(err.status, err.headers);
response.end('Error 404 - file not found');
return;
}
return;
})
});
var io = require('socket.io').listen(server);
var fs = require('fs');
server.listen(3000);
clearInterval(current_sensor);
//reload the csv file every refresh_rate minutes
var current_sensor = setInterval(function () {
fs.readFile('Dexcom.csv', 'utf-8', function (err, data) {
if (!err) {
// parse the csv file into lines
var lines = data.trim().split('\n');
var latest = lines.length - 1;
for (var i = 0; i <= latest; i++) {
if (!lines[i])
lines.splice(i, 1);
else
lines[i] = lines[i].split(",");
}
var sbgs = new Array(lines.length);
var timestamps = new moment(Array(lines.length));
for (i = 0; i <= latest; i++) {
sbgs[i] = lines[i][1];
timestamps[i] = moment(lines[i][10], 'MM/DD/YYYY hh:mm:ss A');
console.log(lines[i][10]);
}
var GMTdatetime = moment();
var historylength = 72;
var data2 = new Array(historylength);
for (i = 0; i <= historylength; i++) {
GMTdatetime = timestamps[i - historylength + latest];
//GMTdatetime = GMTdatetime.add('hours', GMTdatetime.zone()/60);
data2[i] = {
datetime: GMTdatetime,
sgv: sbgs.map(function (x) {
return parseInt(x)
})[i - historylength + latest],
status: 'gray'
};
}
var data2_len = data2.length - 1;
var elapsed_min = (data2[data2_len].datetime - data2[data2_len - 1].datetime) / 60000
//recursively predict using AR model
var reference_bg = 140; //
var y = Math.log(data2[data2_len].sgv / reference_bg);
if (elapsed_min < 5.1) {
y = [y, Math.log(data2[data2_len].sgv / reference_bg)]
} else {
y = [y, y]
};
var n = 4 * 12 //predict 4 hours ahead
var AR = [-0.723, 1.716];
var dt = moment(data2[data2_len].datetime);
for (i = 0; i <= n; i++) {
y = [y[1], AR[0] * y[0] + AR[1] * y[1]];
dt = moment.unix(dt.unix() + 60 * 5)
data2[i + data2_len + 1] = {
datetime: dt,
sgv: Math.round(reference_bg * Math.exp(y[1])),
status: 'blue'
};
}
data2_len = data2_len + n;
var outputFilename = 'sgv3.json';
fs.writeFile(outputFilename, JSON.stringify(data2, null, 4), function (err) {
if (err) {
console.log(err);
} else {
console.log("JSON saved to " + outputFilename);
}
});
current_sensor = JSON.stringify(data2, null, 4);
console.log(current_sensor)
io.sockets.emit("sgv", current_sensor);
}
});
}, refresh_rate * 60 * 1000);
io.sockets.on('connection', function (socket) {
console.log(current_sensor)
//socket.emit('sgv', current_sensor);
socket.emit('last_acknowledge_datetime', JSON.stringify(last_acknowledge_datetime.valueOf()));
socket.on('acknowledged', function (data) {
last_acknowledge_datetime = moment(data);
console.log("alarm acknowledged: ", last_acknowledge_datetime.format("LLL"));
socket.emit('last_acknowledge_datetime', 1);
});
});