From e85f5c1a3eed879a27269f5c5e0ef5561512e25f Mon Sep 17 00:00:00 2001 From: Matthew Davey Date: Fri, 26 Apr 2019 13:18:50 +1000 Subject: start discovery for devices on all interfaces --- services/device-manager.js | 18 +++++++++++++++--- 1 file 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) { -- cgit v1.2.3