-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
108 lines (88 loc) · 3.31 KB
/
server.js
File metadata and controls
108 lines (88 loc) · 3.31 KB
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
103
104
105
106
107
108
let http = require('http');
// let qs = require('querystring');
let Log = require('./lib/log');
let config = require('./lib/config');
let url = require('url');
let illuminate = require('./src/illuminate');
let redis = require('./lib/redis.js');
let led = require('./lib/led');
let log = new Log();
http.createServer(function (request, response) {
redis.connect();
// let postData = '';
let responseData = {
"status": 'success'
};
// if (request.method === 'POST') {
// request.on('data', function (data) {
// postData += data;
// });
//
// request.on('end', function () {
// let postDataFull = qs.parse(postData);
// });
// }
if (request.method === 'GET') {
let getData = url.parse(request.url, true);
switch (getData.query.app) {
case 'illuminate':
illuminateHandler(getData.query, responseData);
break;
case 'alert':
alertHandler(getData.query.status, responseData);
break;
default:
responseData.status = 'fail';
responseData.message ='Application is not specified.';
log.logInfo('Application is not specified: ' + getData.query.app, 'server', true);
}
}
response.end(JSON.stringify(responseData));
}).listen(3000);
function alertHandler (paramValue, responseData) {
if (paramValue === 'on') {
redis.setData('alert_armed', 'true');
log.logInfo('Alert turn on.', 'server', true);
led.on(config.get('alert_gpio.arm_led'));
responseData.message = 'Alert enabled';
} else {
redis.setData('alert_armed', 'false');
log.logInfo('Alert turn off.', 'server', true);
led.off(config.get('alert_gpio.arm_led'));
responseData.message = 'Alert disabled';
}
}
function illuminateHandler (params, responseData) {
switch (params.status) {
case 'force_on':
illuminate.launch(['on'], config);
redis.setData('illuminate_force', true);
log.logInfo('Light force on enable.', 'server', true);
responseData.message = 'force enabled';
break;
case 'force_off':
redis.setData('illuminate_force', false);
log.logInfo('Light force on disable.', 'server', true);
responseData.message = 'force disabled';
break;
case 'force_status':
redis.getData('illuminate_force', function (data) {
responseData.message = data === 'true' ? 'enabled' : 'disabled';
});
break;
case 'force_default':
redis.setData('illuminate_force', false);
log.logInfo('Light force on disable.', 'server', true);
responseData.message = 'force set to default';
break;
case 'set_time':
redis.setData('illuminate_minimal_time', params.min_time);
redis.setData('illuminate_turn_on', params.turn_on);
redis.setData('illuminate_shut_down_time', params.turn_off);
let logTime = JSON.stringify({});
log.logInfo('Times set to: ' + logTime, 'server', true);
responseData.message = 'new times set up';
break;
}
}
console.log('Server is running.');