aboutsummaryrefslogtreecommitdiff
path: root/services/device-manager.js
diff options
context:
space:
mode:
authorMatthew Davey <github@project-2501.net>2019-04-26 13:18:50 +1000
committerMatthew Davey <github@project-2501.net>2019-04-26 13:18:50 +1000
commite85f5c1a3eed879a27269f5c5e0ef5561512e25f (patch)
tree098cba0a960a7f926d37c23fa6e7a7682d5a127f /services/device-manager.js
parent516cf727b67ae924ad38d9218728b3e4f6351c7e (diff)
downloadtplink-energy-monitor-e85f5c1a3eed879a27269f5c5e0ef5561512e25f.tar.xz
tplink-energy-monitor-e85f5c1a3eed879a27269f5c5e0ef5561512e25f.zip
start discovery for devices on all interfaces
Diffstat (limited to 'services/device-manager.js')
-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) {