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