Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
amphancm authored Feb 14, 2018
1 parent ea83021 commit 019e118
Showing 1 changed file with 56 additions and 0 deletions.
56 changes: 56 additions & 0 deletions webserver.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
var http = require('http').createServer(handler); //require http server, and create server with function handler()
var fs = require('fs'); //require filesystem module
var io = require('socket.io')(http) //require socket.io module and pass the http object (server)

var Gpio = require('onoff').Gpio; //include onoff to interact with the GPIO
var LED = new Gpio(4, 'out'); //use GPIO pin 4 as output
var pushButton = new Gpio(17, 'in', 'both'); //use GPIO pin 17 as input, and 'both' button presses, and releases should be handled

http.listen(8080); //listen to port 8080

function handler (req, res) { //create server
fs.readFile(__dirname + '/Public/index.html', function(err, data) { //read file index.html in public folder
if (err) {
res.writeHead(404, {'Content-Type': 'text/html'}); //display 404 on error
return res.end("404 Not Found");
}
res.writeHead(200, {'Content-Type': 'text/html'}); //write HTML
res.write(data); //write data from index.html
return res.end();
});
}



io.sockets.on('connection', function (socket) { // WebSocket Connection
var lightvalue = 0;

socket.emit('led1', "TEST");
// static variable for current status
pushButton.watch(function (err, value) { // Watch for hardware interrupts on pushButton
if (err) { //if an error
console.error('There was an error', err); // output error message to console
return;
}
lightvalue = value;
socket.emit('light', lightvalue); // send button status to client
});

socket.on('light', function(data) { // get light switch status from client
lightvalue = data;
if (lightvalue != LED.readSync()) { // only change LED if status has changed
LED.writeSync(lightvalue); // turn LED on or off
console.log("lightvalue : " + lightvalue);
socket.emit('light', lightvalue);
socket.emit('led1', "TEST"+lightvalue);
}

});
});

process.on('SIGINT', function () { //on ctrl+c
LED.writeSync(0); // Turn LED off
LED.unexport(); // Unexport LED GPIO to free resources
pushButton.unexport(); // Unexport Button GPIO to free resources
process.exit(); //exit completely
});

0 comments on commit 019e118

Please sign in to comment.