aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Barnett <noreply@jamesbarnett.xyz>2019-05-12 17:03:53 +0100
committerGitHub <noreply@github.com>2019-05-12 17:03:53 +0100
commit290a385a442c60c24907d1d3322b303926973df8 (patch)
tree098cba0a960a7f926d37c23fa6e7a7682d5a127f
parent516cf727b67ae924ad38d9218728b3e4f6351c7e (diff)
parente85f5c1a3eed879a27269f5c5e0ef5561512e25f (diff)
downloadtplink-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.js18
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) {