diff options
| author | Matthew Davey <github@project-2501.net> | 2019-04-26 13:18:50 +1000 |
|---|---|---|
| committer | Matthew Davey <github@project-2501.net> | 2019-04-26 13:18:50 +1000 |
| commit | e85f5c1a3eed879a27269f5c5e0ef5561512e25f (patch) | |
| tree | 098cba0a960a7f926d37c23fa6e7a7682d5a127f /services | |
| parent | 516cf727b67ae924ad38d9218728b3e4f6351c7e (diff) | |
| download | tplink-energy-monitor-e85f5c1a3eed879a27269f5c5e0ef5561512e25f.tar.xz tplink-energy-monitor-e85f5c1a3eed879a27269f5c5e0ef5561512e25f.zip | |
start discovery for devices on all interfaces
Diffstat (limited to 'services')
| -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) { |