You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

79 lines
2.0 KiB

  1. /*
  2. https://www.npmjs.com/package/pi-gpio
  3. */
  4. var gpio = require("pi-gpio");
  5. var express=require('express'),
  6. app=express(),
  7. server=require('http').createServer(app),
  8. io = require('socket.io',{transports: ['websocket']}).listen(server);
  9. server.listen(3000);
  10. var shortId = require('shortid');
  11. //ip
  12. var os = require( 'os' );
  13. var networkInterfaces = os.networkInterfaces( );
  14. //own modules
  15. var IsPinAlreadyON = require('./IsPinAlreadyON.js');
  16. //poder accedir al server i interactuar
  17. app.use(express.static(__dirname + '/clientGPIO'));
  18. var numconnections=0;
  19. var listPinsON=[];
  20. io.on('connection', function (socket) {
  21. socket.on('newconnection', function (data,callback){
  22. numconnections++;
  23. console.log("numconnections: " + numconnections);
  24. //io.sockets.emit('numconnections',{numconnections}); //aqí envia la data
  25. });
  26. socket.on('pinON', function (data,callback){
  27. console.log(data + "--> ON");
  28. //comprova si el pin està already encès
  29. if(IsPinAlreadyON.isit(listPinsON, data)==false)
  30. {
  31. listPinsON.push(data);
  32. console.log("listPinsON: " + listPinsON);
  33. gpio.open(data, "output", function(err) { // Open pin per output
  34. gpio.write(data, 1, function() { // Set pin high (1)
  35. gpio.close(data); // Close pin
  36. });
  37. });
  38. io.sockets.emit('listPinsON',listPinsON);
  39. }else{
  40. //pin already encès
  41. io.sockets.emit("alreadyON", data);
  42. }
  43. });
  44. socket.on('pinOFF', function (data,callback){
  45. console.log(data + "--> OFF");
  46. for(var i=0; i<listPinsON.length; i++)
  47. {
  48. if(listPinsON[i]==data)
  49. {
  50. listPinsON.splice(i, 1);
  51. }
  52. }
  53. console.log("listPinsON: " + listPinsON);
  54. gpio.open(data, "output", function(err) { // Open pin per output
  55. gpio.write(data, 0, function() { // Set pin low (0)
  56. gpio.close(data); // Close pin
  57. });
  58. });
  59. io.sockets.emit('listPinsON',listPinsON); //aqí envia la data
  60. });
  61. });
  62. console.log("------- server is running -------");