Skip to content

Instantly share code, notes, and snippets.

@kfatehi
Created November 29, 2017 07:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kfatehi/5126dc74705c9ad414a74ad5f3635ebf to your computer and use it in GitHub Desktop.
Save kfatehi/5126dc74705c9ad414a74ad5f3635ebf to your computer and use it in GitHub Desktop.
fireplace server
root@fireplace:~# cat server.js
var fs = require('fs');
var http = require('http');
const PORT=80;
function write(file, content) {
try {fs.writeFileSync(file, content)}
catch (err) {console.error(err.message)}
}
write('/sys/class/gpio/export', 26);
write('/sys/class/gpio/gpio26/direction', 'out');
write('/sys/class/gpio/gpio26/value', 0);
http.createServer(function(request, response) {
console.log('Handling request', request.url);
if ( request.url === '/off' ) {
write('/sys/class/gpio/gpio26/value', 0);
response.end('off');
} else if ( request.url === '/on' ) {
write('/sys/class/gpio/gpio26/value', 1);
response.end('on');
} else if (request.url === '/toggle' ) {
var oldValue = parseInt(fs.readFileSync('/sys/class/gpio/gpio26/value'));
var newValue = oldValue === 0 ? 1 : 0
write('/sys/class/gpio/gpio26/value', newValue);
response.end(newValue === 0 ? 'off' : 'on');
} else if (request.url === '/status' ) {
response.end(JSON.stringify({
value: parseInt(fs.readFileSync('/sys/class/gpio/gpio26/value'))
}))
} else {
response.end('404');
}
}).listen(PORT, function() {
console.log("Server listening on: http://localhost:%s", PORT);
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment