const Orvibo = require('./Orvibo'); const http = require('http'); const url = require('url'); const httpPort = 3000; const createArray = str => { // split on each comma const arr = str.split(','); // put back elements by pairs const pairs = []; for (let i=0; i<arr.length; i+=2) { let o = {}; o.uid = arr[i].split(':')[1]; o.name = arr[i+1].split(':')[1]; pairs.push(o); } return pairs; } // Create a settings object to pass PK key and map sockets to names const settings = { LOG_PACKET: true, //Show incoming packet data from the socket ORVIBO_KEY: process.env.orviboPK, plugInfo : [ createArray(process.env.plugArray) ], }; let orvibo = new Orvibo(settings); // When a socket first connects and initiates the handshake it will emit the connected event with the uid of the socket; orvibo.on('plugConnected', ({uid, name}) => { console.log(`Connected ${uid} name = ${name}`); }); // If the socket state is updated this event will fire orvibo.on('plugStateUpdated', ({uid, state , name}) => { console.log(`Plug ${name} ${uid} updated state ${state}`); }); // The plug sends a hearbeat to let the server know it's still alive orvibo.on('gotHeartbeat', ({uid, name}) => { console.log(`Plug ${name} ${uid} sent heartbeat`); }); // Called when the plug disconnects orvibo.on('plugDisconnected', ({uid, name }) => { console.log(`Plug ${uid} - ${name} disconnected`); }); // Called when the plug disconnects with an error ie it's been unplugged orvibo.on('plugDisconnectedWithError', ({uid, name }) => { console.log(`Plug ${uid} - ${name} disconnected with error`); }); // Start the Orvibo socket server orvibo.startServer(); // Create a basic example HTTP server // If there are no parameters it will return the uid, state, modelId and name of the socket // You can then use the uid to toggle the state of the switch like // http://localhost:3000?uid=5dcf7ff76e7a const requestHandler = (request, response) => { response.writeHead(200, {'Content-Type': 'application/json'}); let q = url.parse(request.url, true).query; if (q.uid != null) { orvibo.toggleSocket(q.uid); } // Get all currently connected sockets, their names and states // let sockets = orvibo.getConnectedSocket(); let sockets = [{"name":"3D Printer","state":1,"uid":"5ccf7f22fba4","modelId":"f8b11bed724647e98bd07a66dca6d5b6"}] response.end(JSON.stringify(sockets)); }; const httpServer = http.createServer(requestHandler); httpServer.listen(httpPort, (err) => { if (err) { return console.log('something bad happened', err) } console.log(`http server is listening on ${httpPort}`) });