-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.js
102 lines (72 loc) · 3.44 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
// set up ======================================================================
var express = require('express.io');
var app = express(); // create our app w/ express
var mongoose = require('mongoose'); // mongoose for mongodb
var port = process.env.PORT || 3000; // set the port
var database = require('./config/database'); // load the database config
var morgan = require('morgan');
var bodyParser = require('body-parser');
var methodOverride = require('method-override');
var dgram = require('dgram');
var arduino_server = dgram.createSocket("udp4");
var fs = require('fs');
app.http().io();
// configuration ===============================================================
mongoose.connect(database.url); // connect to mongoDB database on modulus.io
app.use(express.static(__dirname + '/public')); // set the static files location /public/img will be /img for users
app.use(morgan('dev')); // log every request to the console
app.use(bodyParser.urlencoded({'extended':'true'})); // parse application/x-www-form-urlencoded
app.use(bodyParser.json()); // parse application/json
app.use(bodyParser.json({ type: 'application/vnd.api+json' })); // parse application/vnd.api+json as json
app.use(methodOverride('X-HTTP-Method-Override')); // override with the X-HTTP-Method-Override header in the request
// routes ======================================================================
require('./app/routes/home.js')(app);
var crlf = new Buffer(2);
crlf[0] = 0xD; //CR - Carriage return character
crlf[1] = 0xA; //LF - Line feed character
function getDateTime() {
var date = new Date();
var hour = date.getHours();
hour = (hour < 10 ? "0" : "") + hour;
var min = date.getMinutes();
min = (min < 10 ? "0" : "") + min;
var sec = date.getSeconds();
sec = (sec < 10 ? "0" : "") + sec;
var year = date.getFullYear();
var month = date.getMonth() + 1;
month = (month < 10 ? "0" : "") + month;
var day = date.getDate();
day = (day < 10 ? "0" : "") + day;
return year + "/" + month + "/" + day + " " + hour + ":" + min + ", ";
}
arduino_server.on("error", function (err) {
console.log("server error:\n" + err.stack);
arduino_server.close();
});
arduino_server.on("message", function (msg, rinfo) {
var arduinoArray = msg.toString().split(',');
var arduinoJson = {};
arduinoJson.temperatura = arduinoArray[0];
arduinoJson.steps = arduinoArray[1];
arduinoJson.heart = arduinoArray[2];
arduinoJson.food = arduinoArray[3];
//x=msg;
//debugger;
// console.log(getDateTime() + msg + " from " +
// rinfo.address + ":" + rinfo.port);
// fs.appendFile("mydata.txt",getDateTime() + msg + crlf, encoding='utf8',function(err){});//write the value to file and add CRLF for line break
console.log(msg + " from " +
rinfo.address + ":" + rinfo.port);
fs.appendFile("mydata.txt",getDateTime() + msg + crlf, encoding='utf8',function(err){});//write the value to file and add CRLF for line break
//Actualiza Datos
app.io.broadcast('data_arduino', arduinoJson);
});
//Socket_Arduino
arduino_server.on("listening", function() {
var address = arduino_server.address();
console.log("server listening " + address.address + ":" + address.port);
});
arduino_server.bind(6000); //listen to udp traffic on port 6000
// listen (start app with node server.js) ======================================
app.listen(port);
console.log("App listening on port " + port);