UNPKG

lifx-lan-client

Version:

Node.js implementation of the LIFX LAN protocol

155 lines (144 loc) 5.06 kB
'use strict'; const LifxClient = require('../src/lifx').Client; const client = new LifxClient(); client.on('light-new', function(light) { console.log('New light found.'); console.log('ID: ' + light.id); console.log('IP: ' + light.address + ':' + light.port); light.getState(function(err, info) { if (err) { console.log(err); } console.log('Label: ' + info.label); console.log('Power:', (info.power === 1) ? 'on' : 'off'); console.log('Color:', info.color); }); light.getHardwareVersion(function(err, info) { if (err) { console.log(err); } console.log('Device Info: ' + info.vendorName + ' - ' + info.productName); console.log('Features: ', info.productFeatures, '\n'); }); }); client.on('light-online', function(light) { console.log('Light back online. ID:' + light.id + ', IP:' + light.address + ':' + light.port + '\n'); }); client.on('light-offline', function(light) { console.log('Light offline. ID:' + light.id + ', IP:' + light.address + ':' + light.port + '\n'); }); client.on('listening', function() { const address = client.address(); console.log( 'Started LIFX listening on ' + address.address + ':' + address.port + '\n' ); }); client.init(); console.log('Keys:'); console.log('Press 1 to turn the lights on'); console.log('Press 2 to turn the lights off'); console.log('Press 3 to turn the lights red'); console.log('Press 4 to turn the lights green'); console.log('Press 5 to turn the lights blue'); console.log('Press 6 to turn the lights a bright bluish white'); console.log('Press 7 to turn the lights a bright reddish white'); console.log('Press 8 to show debug messages including network traffic'); console.log('Press 9 to hide debug messages including network traffic'); console.log('Press u to request uptime from all lights'); console.log('Press r to reboot all lights'); console.log('Press 0 to exit\n'); process.stdin.setEncoding('utf8'); process.stdin.setRawMode(true); process.stdin.on('data', function(key) { if (key === '1') { client.lights().forEach(function(light) { light.on(0, function(err) { if (err) { console.log('Turning light ' + light.id + ' on failed'); } console.log('Turned light ' + light.id + ' on'); }); }); } else if (key === '2') { client.lights().forEach(function(light) { light.off(0, function(err) { if (err) { console.log('Turning light ' + light.id + ' off failed'); } console.log('Turned light ' + light.id + ' off'); }); }); } else if (key === '3') { client.lights().forEach(function(light) { light.color(0, 100, 100, 3500, 0, function(err) { if (err) { console.log('Turning light ' + light.id + ' red failed'); } console.log('Turned light ' + light.id + ' red'); }); }); } else if (key === '4') { client.lights().forEach(function(light) { light.color(120, 100, 100, 3500, 0, function(err) { if (err) { console.log('Turning light ' + light.id + ' green failed'); } console.log('Turned light ' + light.id + ' green'); }); }); } else if (key === '5') { client.lights().forEach(function(light) { light.color(240, 100, 100, 3500, 0, function(err) { if (err) { console.log('Turning light ' + light.id + ' blue failed'); } console.log('Turned light ' + light.id + ' blue'); }); }); } else if (key === '6') { client.lights().forEach(function(light) { light.color(0, 0, 100, 9000, 0, function(err) { if (err) { console.log('Turning light ' + light.id + ' bright bluish white failed'); } console.log('Turned light ' + light.id + ' bright bluish white'); }); }); } else if (key === '7') { client.lights().forEach(function(light) { light.color(0, 0, 100, 2500, 0, function(err) { if (err) { console.log('Turning light ' + light.id + ' bright reddish white failed'); } console.log('Turned light ' + light.id + ' bright reddish white'); }); }); } else if (key === '8') { client.setDebug(true); console.log('Debug messages are shown'); } else if (key === '9') { client.setDebug(false); console.log('Debug messages are hidden'); } else if (key === 'u') { client.lights().forEach(function(light) { light.getUptime(function(err, uptime) { if (err) { console.log(err); } console.log('Light ' + light.id + ' uptime: ' + uptime); }); }); console.log('Debug messages are hidden'); } else if (key === 'r') { client.lights().forEach(function(light) { light.reboot(function() { console.log('Light ' + light.id + ' reboot successful'); }); }); console.log('Debug messages are hidden'); } else if (key === '\u0003' || key === '0') { // Ctrl + C client.destroy(); process.exit(); // eslint-disable-line no-process-exit } });