diff options
| author | James Barnett <noreply@jamesbarnett.xyz> | 2019-05-12 17:03:53 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-05-12 17:03:53 +0100 |
| commit | 290a385a442c60c24907d1d3322b303926973df8 (patch) | |
| tree | 098cba0a960a7f926d37c23fa6e7a7682d5a127f | |
| parent | 516cf727b67ae924ad38d9218728b3e4f6351c7e (diff) | |
| parent | e85f5c1a3eed879a27269f5c5e0ef5561512e25f (diff) | |
| download | tplink-energy-monitor-290a385a442c60c24907d1d3322b303926973df8.tar.xz tplink-energy-monitor-290a385a442c60c24907d1d3322b303926973df8.zip | |
Merge pull request #37 from mdavey/better-discovery
Discover devices on all local interfaces
| -rw-r--r-- | services/device-manager.js | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/services/device-manager.js b/services/device-manager.js index 451734e..926c164 100644 --- a/services/device-manager.js +++ b/services/device-manager.js @@ -1,13 +1,25 @@ const { Client } = require('tplink-smarthome-api'); const dataLogger = require('./data-logger'); +const interfaces = require('os').networkInterfaces(); -const client = new Client(); var devices = []; -client.startDiscovery({ +function startDiscovery(bindAddress) { + console.log('Starting discovery on interface: ' + bindAddress); + var client = new Client(); + client.startDiscovery({ deviceTypes: ['plug'], + address: bindAddress, discoveryTimeout: 20000 - }).on('plug-new', registerPlug); + }).on('plug-new', registerPlug); +} + +Object.keys(interfaces) + .reduce((results, name) => results.concat(interfaces[name]), []) + .filter((iface) => iface.family === 'IPv4' && !iface.internal) + .map((iface) => iface.address) + .map(startDiscovery); + function registerPlug(plug) { |