homebridge-midea-platform 0.4.5 → 0.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -46,7 +46,9 @@ Credentials for each Midea device on your Local Area Network (LAN) must be retri
46
46
  * **Username** *(required)*: Email address / userid that you use to login to the Midea cloud service.
47
47
  * **Password** *(required)*: Password for Midea cloud service
48
48
 
49
- On clicking *Discover All Devices* the plugin sends a message to the broadcast address for the subnet of each network interface attached to the Homebridge server. Midea devices attached to the network will respond. Network discovery is repeated multiple times (currently 4 times at interval of 3 seconds between each). At the end of the process details of all devices discovered are listed in the Settings window. From there, you can add new devices or update the *token/key* credentials for existing devices. You can then edit details for each device (for example change the name).
49
+ On clicking *Discover All Devices* the plugin sends a message to the broadcast address for the subnet of each network interface attached to the Homebridge server. Midea devices attached to the network will respond. Network discovery is repeated multiple times (currently 4 times at interval of 2 seconds between each). At the end of the process details of all devices discovered are listed in the Settings window. From there, you can add new devices or update the *token/key* credentials for existing devices. You can then edit details for each device (for example change the name).
50
+
51
+ If your Midea device is not connected to the same LAN subnet as your Homebridge server then you must manually add the IP addresses of each device before running discovery. Add a space- or comma-separated list of IP addresses to the entry field above the *Discover All devices* button.
50
52
 
51
53
  *You must click Save button* to update the Homebridge config.json file and restart the plugin.
52
54
 
@@ -74,6 +76,7 @@ If you delete a device in the plugin settings window, or the Homebridge config.j
74
76
  "name": "Dehumidifier",
75
77
  "id": "123456789012345",
76
78
  "advanced_options": {
79
+ "ip": "192.168.100.1",
77
80
  "token": "ABCDEF1234567890",
78
81
  "key": "1234567890ABCDEF",
79
82
  "verbose": false,
@@ -102,6 +105,7 @@ If you delete a device in the plugin settings window, or the Homebridge config.j
102
105
  * **name** *(optional)*: This replaces the name set by the Midea device and is displayed in the Homebridge accessories page. Entries in the log are prefixed with this name to assist in identifying the source of information being logged.
103
106
  * **id** *(required)*: ID to identify specific device. This will be filled in by the device discovery process in the Settings window but uou can also find this from the Homebridge log during plugin initialization or in the Homebridge Config UI X by clicking on an accessory settings and copying the *Product Data* field.
104
107
  * **advanced_options** *(required)*: Object with settings specific for this device:
108
+ * **ip** *(optional)*: IP address of device on your local LAN. This is only required if the device is not on the same LAN subnet as your Homebridge server.
105
109
  * **token** *(required)*: Device login token.
106
110
  * **key** *(required)*: Device login key. Specifying a token/key pair will override any values previously cached by the plugin.
107
111
  * **verbose** *(optional)*: Override global setting for this one device.
@@ -69,6 +69,12 @@
69
69
  "expandable": true,
70
70
  "expanded": false,
71
71
  "properties": {
72
+ "ip": {
73
+ "title": "IP Address",
74
+ "type": "string",
75
+ "required": false,
76
+ "description": "IP address of device on your local LAN. This is optional and shouldn't be changed if it was added by discovery."
77
+ },
72
78
  "token": {
73
79
  "title": "Device login token",
74
80
  "type": "string",
@@ -235,6 +241,7 @@
235
241
  "expandable": true,
236
242
  "expanded": false,
237
243
  "items": [
244
+ "devices[].advanced_options.ip",
238
245
  "devices[].advanced_options.token",
239
246
  "devices[].advanced_options.key",
240
247
  "devices[].advanced_options.verbose",
@@ -14,7 +14,7 @@ export default class Discover extends EventEmitter {
14
14
  * an additional "retries" times spaced by 3 seconds if the target IP
15
15
  * address has not responded (recorded in the above callback).
16
16
  */
17
- discoverDeviceByIP(ip: string, retries?: number): void;
17
+ discoverDeviceByIP(ip: string, retries?: number, timeout?: number): void;
18
18
  /*********************************************************************
19
19
  * ifBroadcastAddrs
20
20
  * Broadcasts to 255.255.255.255 only gets sent out on the first network inteface.
@@ -1 +1 @@
1
- {"version":3,"file":"MideaDiscover.d.ts","sourceRoot":"","sources":["../../src/core/MideaDiscover.ts"],"names":[],"mappings":";AAWA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGpC,OAAO,YAAY,MAAM,QAAQ,CAAC;AAMlC,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,YAAY;IAOpC,OAAO,CAAC,QAAQ,CAAC,MAAM;IANnC,OAAO,CAAC,MAAM,CAAe;IAE7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,GAAG,CAAgB;gBAEE,MAAM,EAAE,MAAM;IAiC3C;;;;;OAKG;IACI,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,SAAI;IAoBjD;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IA2BxB;;;;OAIG;IACI,aAAa,CAAC,OAAO,SAAI,EAAE,OAAO,SAAO;IA4BhD,OAAO,CAAC,gBAAgB;YAiBV,aAAa;CA2E5B"}
1
+ {"version":3,"file":"MideaDiscover.d.ts","sourceRoot":"","sources":["../../src/core/MideaDiscover.ts"],"names":[],"mappings":";AAWA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGpC,OAAO,YAAY,MAAM,QAAQ,CAAC;AAMlC,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,YAAY;IAOpC,OAAO,CAAC,QAAQ,CAAC,MAAM;IANnC,OAAO,CAAC,MAAM,CAAe;IAE7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,GAAG,CAAgB;gBAEE,MAAM,EAAE,MAAM;IAiC3C;;;;;OAKG;IACI,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,SAAI,EAAE,OAAO,SAAO;IAoBjE;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IA2BxB;;;;OAIG;IACI,aAAa,CAAC,OAAO,SAAI,EAAE,OAAO,SAAO;IA4BhD,OAAO,CAAC,gBAAgB;YAiBV,aAAa;CA2E5B"}
@@ -54,7 +54,7 @@ class Discover extends events_1.default {
54
54
  * an additional "retries" times spaced by 3 seconds if the target IP
55
55
  * address has not responded (recorded in the above callback).
56
56
  */
57
- discoverDeviceByIP(ip, retries = 3) {
57
+ discoverDeviceByIP(ip, retries = 3, timeout = 2000) {
58
58
  let tries = 0;
59
59
  function broadcast() {
60
60
  if (this.ips.includes(ip) || tries++ > retries) {
@@ -68,7 +68,7 @@ class Discover extends events_1.default {
68
68
  }
69
69
  });
70
70
  }
71
- setTimeout(broadcast.bind(this), 3000);
71
+ setTimeout(broadcast.bind(this), timeout);
72
72
  }
73
73
  broadcast.bind(this)();
74
74
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MideaDiscover.js","sourceRoot":"","sources":["../../src/core/MideaDiscover.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MideaDiscover.js","sourceRoot":"","sources":["../../src/core/MideaDiscover.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAS5H,MAAM,WAAW,cAAe,SAAQ,iBAAiB;IACvD,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,qBAAa,aAAc,YAAW,qBAAqB;aAevC,GAAG,EAAE,MAAM;aACX,MAAM,EAAE,cAAc;aACtB,GAAG,EAAE,GAAG;IAhB1B,SAAgB,OAAO,EAAE,OAAO,OAAO,CAAwB;IAC/D,SAAgB,cAAc,EAAE,OAAO,cAAc,CAA+B;IAEpF,SAAgB,WAAW,EAAE,cAAc,EAAE,CAAM;IAGnD,OAAO,CAAC,iBAAiB,CAAM;IAC/B,OAAO,CAAC,iBAAiB,CAAM;IAE/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IAEpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;gBAGtB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,GAAG;IA6B1B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAexB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IA6BzB;;;;OAIG;YACW,SAAS;IAuEvB;;;OAGG;IACH,kBAAkB,CAAC,SAAS,EAAE,cAAc;CAM7C"}
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAS5H,MAAM,WAAW,cAAe,SAAQ,iBAAiB;IACvD,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,qBAAa,aAAc,YAAW,qBAAqB;aAevC,GAAG,EAAE,MAAM;aACX,MAAM,EAAE,cAAc;aACtB,GAAG,EAAE,GAAG;IAhB1B,SAAgB,OAAO,EAAE,OAAO,OAAO,CAAwB;IAC/D,SAAgB,cAAc,EAAE,OAAO,cAAc,CAA+B;IAEpF,SAAgB,WAAW,EAAE,cAAc,EAAE,CAAM;IAGnD,OAAO,CAAC,iBAAiB,CAAM;IAC/B,OAAO,CAAC,iBAAiB,CAAM;IAE/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IAEpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;gBAGtB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,GAAG;IA6B1B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAexB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IA6BzB;;;;OAIG;YACW,SAAS;IAuEvB;;;OAGG;IACH,kBAAkB,CAAC,SAAS,EAAE,cAAc;CAM7C"}
package/dist/platform.js CHANGED
@@ -48,6 +48,21 @@ class MideaPlatform {
48
48
  */
49
49
  finishedLaunching() {
50
50
  this.log.info('Start device discovery...');
51
+ // If IP address is in config then probe them directly
52
+ this.platformConfig.devices.forEach((device) => {
53
+ // for some reason, assigning the regex has to be inside the loop, else fails after first pass.
54
+ const regexIPv4 = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/gi;
55
+ // Pull in defaults
56
+ device = (0, lodash_1.defaultsDeep)(device, platformUtils_1.defaultDeviceConfig);
57
+ const ip = device.advanced_options.ip.toString().trim();
58
+ if (regexIPv4.test(ip)) {
59
+ this.discover.discoverDeviceByIP(ip);
60
+ }
61
+ else if (ip) {
62
+ // IP is non-empty, non-null, but not valid IP address
63
+ this.log.warn(`[${device.name}] Invalid IP address in configuration: ${ip}`);
64
+ }
65
+ });
51
66
  // And then send broadcast to network(s)
52
67
  this.discover.startDiscover();
53
68
  }
@@ -80,7 +95,7 @@ class MideaPlatform {
80
95
  // Check if network broadcasting found all devices that user configured. If not then
81
96
  // we have to handle those.
82
97
  let missingDevices = 0;
83
- Object.values(this.platformConfig.devices).forEach((device) => {
98
+ this.platformConfig.devices.forEach((device) => {
84
99
  if (!this.discoveredDevices[device.id]) {
85
100
  // This device was not found by network discovery.
86
101
  missingDevices++;
@@ -1 +1 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":";;;;;;AAUA,yCAAwD;AACxD,yEAA4C;AAE5C,oFAA4D;AAC5D,4EAAoD;AACpD,mDAA2F;AAC3F,mCAAsC;AAatC,MAAa,aAAa;IAcxB,YACkB,GAAW,EACX,MAAsB,EACtB,GAAQ;QAFR,QAAG,GAAH,GAAG,CAAQ;QACX,WAAM,GAAN,MAAM,CAAgB;QACtB,QAAG,GAAH,GAAG,CAAK;QAhBV,YAAO,GAAmB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;QAC/C,mBAAc,GAA0B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC;QAEpE,gBAAW,GAAqB,EAAE,CAAC;QAEnD,oDAAoD;QAC5C,sBAAiB,GAAG,EAAE,CAAC;QACvB,sBAAiB,GAAG,EAAE,CAAC,CAAC,UAAU;QAWxC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAE5B,4BAA4B;QAC5B,IAAI,CAAC,cAAc,GAAG,IAAA,qBAAY,EAAC,MAAM,EAAE,6BAAa,CAAC,CAAC;QAC1D,yBAAyB;QACzB,IAAI,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;QACxG,IAAI,CAAC,cAAc,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3G,0BAA0B;QAC1B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAElF,IAAI,CAAC,QAAQ,GAAG,IAAI,uBAAQ,CAAC,GAAG,CAAC,CAAC;QAElC,0EAA0E;QAC1E,sCAAsC;QACtC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE7D,8EAA8E;QAC9E,qEAAqE;QACrE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEhE,8FAA8F;QAC9F,4FAA4F;QAC5F,2FAA2F;QAC3F,yCAAyC;QACzC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,oBAAoB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvE,CAAC;IAED;;;OAGG;IACK,iBAAiB;QACvB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC3C,sDAAsD;QACtD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC7C,+FAA+F;YAC/F,MAAM,SAAS,GAAG,6GAA6G,CAAC;YAChI,mBAAmB;YACnB,MAAM,GAAG,IAAA,qBAAY,EAAC,MAAM,EAAE,mCAAmB,CAAC,CAAC;YACnD,MAAM,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;YACxD,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;gBACtB,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;aACtC;iBAAM,IAAI,EAAE,EAAE;gBACb,sDAAsD;gBACtD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,0CAA0C,EAAE,EAAE,CAAC,CAAC;aAC9E;QACH,CAAC,CAAC,CAAC;QACH,wCAAwC;QACxC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;IAChC,CAAC;IAED;;;OAGG;IACK,gBAAgB,CAAC,WAAuB;;QAC9C,6EAA6E;QAC7E,0EAA0E;QAC1E,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAoB,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,CAAC,CAAC;QAC9G,IAAI,YAAY,EAAE;YAChB,mCAAmC;YACnC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;YAC9C,+DAA+D;YAC/D,WAAW,CAAC,IAAI,GAAG,MAAA,YAAY,CAAC,IAAI,mCAAI,WAAW,CAAC,IAAI,CAAC;YACzD,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;SAC3C;aAAM;YACL,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,MAAM,WAAW,CAAC,EAAE,wEAAwE,CAAC,CAAC;SACjI;IACH,CAAC;IAED;;;OAGG;IACK,iBAAiB;QACvB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAChE,qFAAqF;QACrF,2BAA2B;QAC3B,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC7C,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;gBACtC,kDAAkD;gBAClD,cAAc,EAAE,CAAC;gBACjB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,SAAS,EAAE;oBACnD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;oBAC1C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,2BAA2B,MAAM,CAAC,EAAE,uBAAuB,IAAI,CAAC,iBAAiB,UAAU,CAAC,CAAC;iBAC3H;qBAAM;oBACL,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,2BAA2B,MAAM,CAAC,EAAE,oBAAoB,IAAI,CAAC,iBAAiB,UAAU,CAAC,CAAC;iBACzH;aACF;QACH,CAAC,CAAC,CAAC;QACH,IAAI,cAAc,GAAG,CAAC,EAAE;YACtB,0EAA0E;YAC1E,UAAU,CAAC,GAAG,EAAE;gBACd,cAAc,GAAG,CAAC,CAAC;gBACnB,uFAAuF;gBACvF,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACvC,CAAC,EAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;SACnC;aAAM;YACL,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;SAC7D;IACH,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,SAAS,CAAC,WAAuB,EAAE,YAA0B;;QACzE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnE,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAExF,4BAA4B;QAC5B,IAAA,qBAAY,EAAC,YAAY,EAAE,mCAAmB,CAAC,CAAC;QAEhD,IAAI,iBAAiB,EAAE;YACrB,8DAA8D;YAC9D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,8CAA8C,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAC;YACjH,MAAM,MAAM,GAAG,uBAAa,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;YACpG,IAAI,MAAM,EAAE;gBACV,IAAI;oBACF,IAAI,YAAY,CAAC,gBAAgB,CAAC,KAAK,IAAI,YAAY,CAAC,gBAAgB,CAAC,GAAG,EAAE;wBAC5E,qFAAqF;wBACrF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,mDAAmD,CAAC,CAAC;wBACvF,iBAAiB,CAAC,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,gBAAgB,CAAC,KAAK,CAAC;wBACtE,iBAAiB,CAAC,OAAO,CAAC,GAAG,GAAG,YAAY,CAAC,gBAAgB,CAAC,GAAG,CAAC;wBAClE,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;wBAC9H,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;qBAC7B;yBAAM;wBACL,yDAAyD;wBACzD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,0CAA0C,CAAC,CAAC;wBAC9E,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;wBAC9H,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;qBAC7B;oBACD,0BAAgB,CAAC,eAAe,CAAC,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;iBACjF;gBAAC,OAAO,GAAG,EAAE;oBACZ,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;oBACnD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uCAAuC,WAAW,CAAC,EAAE,IAAI,WAAW,CAAC,IAAI,aAAa,GAAG,EAAE,CAAC,CAAC;iBAC7G;aACF;iBAAM;gBACL,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,6CAA6C,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;aACjF;SACF;aAAM;YACL,IAAI;gBACF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;gBACzD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAA4B,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACpG,MAAM,MAAM,GAAG,uBAAa,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;gBACpG,IAAI,MAAM,EAAE;oBACV,IAAI,YAAY,CAAC,gBAAgB,CAAC,KAAK,IAAI,YAAY,CAAC,gBAAgB,CAAC,GAAG,EAAE;wBAC5E,+EAA+E;wBAC/E,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,mBAAmB,WAAW,CAAC,EAAE,IAAI,WAAW,CAAC,IAAI,oCAAoC,CAAC,CAAC;wBAC7H,SAAS,CAAC,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,gBAAgB,CAAC,KAAK,CAAC;wBAC9D,SAAS,CAAC,OAAO,CAAC,GAAG,GAAG,YAAY,CAAC,gBAAgB,CAAC,GAAG,CAAC;wBAC1D,SAAS,CAAC,OAAO,CAAC,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;wBACjD,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;wBAC9G,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;qBAC7B;yBAAM;wBACL,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;qBACjF;oBACD,qEAAqE;oBACrE,SAAS,CAAC,OAAO,CAAC,EAAE,GAAG,MAAA,WAAW,CAAC,EAAE,mCAAI,SAAS,CAAC;oBACnD,SAAS,CAAC,OAAO,CAAC,KAAK,GAAG,MAAA,WAAW,CAAC,KAAK,mCAAI,SAAS,CAAC;oBACzD,8DAA8D;oBAC9D,+CAA+C;oBAC/C,0BAAgB,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;oBACxE,sCAAsC;oBACtC,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,sBAAW,EAAE,wBAAa,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;iBAC/E;qBAAM;oBACL,MAAM,IAAI,KAAK,CAAC,6CAA6C,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;iBAClF;aACF;YAAC,OAAO,GAAG,EAAE;gBACZ,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,IAAI,WAAW,CAAC,IAAI,MAAM,WAAW,CAAC,EAAE,IAAI,WAAW,CAAC,IAAI;kCACpC,WAAW,CAAC,EAAE,IAAI,WAAW,CAAC,IAAI,aAAa,GAAG,EAAE,CAC7E,CAAC;aACH;SACF;IACH,CAAC;IAED;;;OAGG;IACH,kBAAkB,CAAC,SAAyB;QAC1C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,+BAA+B,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;QAEtE,wGAAwG;QACxG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;CACF;AAhND,sCAgNC"}
@@ -12,6 +12,7 @@ export type DeviceConfig = {
12
12
  id: number;
13
13
  type: string;
14
14
  advanced_options: {
15
+ ip: string;
15
16
  token: string;
16
17
  key: string;
17
18
  verbose: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"platformUtils.d.ts","sourceRoot":"","sources":["../src/platformUtils.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAO3B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,OAAO,CAAC;QACjB,oBAAoB,EAAE,OAAO,CAAC;QAC9B,iBAAiB,EAAE,OAAO,CAAC;KAC5B,CAAC;IACF,UAAU,EAAE,SAAS,CAAC;IACtB,UAAU,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,oBAAY,SAAS;IACnB,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,UAAU,eAAe;IACzB,IAAI,SAAS;CACd;AAED,KAAK,SAAS,GAAG;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE;QACb,IAAI,EAAE,OAAO,CAAC;QACd,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,KAAK,SAAS,GAAG;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,YA8BjC,CAAC"}
1
+ {"version":3,"file":"platformUtils.d.ts","sourceRoot":"","sources":["../src/platformUtils.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAO3B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE;QAChB,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,OAAO,CAAC;QACjB,oBAAoB,EAAE,OAAO,CAAC;QAC9B,iBAAiB,EAAE,OAAO,CAAC;KAC5B,CAAC;IACF,UAAU,EAAE,SAAS,CAAC;IACtB,UAAU,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,oBAAY,SAAS;IACnB,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,UAAU,eAAe;IACzB,IAAI,SAAS;CACd;AAED,KAAK,SAAS,GAAG;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE;QACb,IAAI,EAAE,OAAO,CAAC;QACd,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,KAAK,SAAS,GAAG;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,YA+BjC,CAAC"}
@@ -20,6 +20,7 @@ exports.defaultDeviceConfig = {
20
20
  id: -1,
21
21
  type: '',
22
22
  advanced_options: {
23
+ ip: '',
23
24
  token: '',
24
25
  key: '',
25
26
  verbose: false,
@@ -1 +1 @@
1
- {"version":3,"file":"platformUtils.js","sourceRoot":"","sources":["../src/platformUtils.ts"],"names":[],"mappings":";;;AASa,QAAA,aAAa,GAAW;IACnC,eAAe,EAAE,EAAE;IACnB,iBAAiB,EAAE,EAAE;IACrB,OAAO,EAAE,KAAK;IACd,oBAAoB,EAAE,IAAI;IAC1B,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,EAAE;CACZ,CAAC;AAiBF,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,0BAAa,CAAA;IACb,kCAAqB,CAAA;IACrB,sCAAyB,CAAA;IACzB,0BAAa,CAAA;AACf,CAAC,EALW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAKpB;AAwBY,QAAA,mBAAmB,GAAiB;IAC/C,EAAE,EAAE,CAAC,CAAC;IACN,IAAI,EAAE,EAAE;IACR,gBAAgB,EAAE;QAChB,KAAK,EAAE,EAAE;QACT,GAAG,EAAE,EAAE;QACP,OAAO,EAAE,KAAK;QACd,oBAAoB,EAAE,IAAI;QAC1B,iBAAiB,EAAE,KAAK;KACzB;IACD,UAAU,EAAE;QACV,SAAS,EAAE,SAAS,CAAC,IAAI;QACzB,SAAS,EAAE,IAAI;QACf,aAAa,EAAE;YACb,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,KAAK;SACf;QACD,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,CAAC;QACX,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,KAAK;KACrB;IACD,UAAU,EAAE;QACV,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,EAAE;QACf,YAAY,EAAE,CAAC;KAChB;CACF,CAAC"}
1
+ {"version":3,"file":"platformUtils.js","sourceRoot":"","sources":["../src/platformUtils.ts"],"names":[],"mappings":";;;AASa,QAAA,aAAa,GAAW;IACnC,eAAe,EAAE,EAAE;IACnB,iBAAiB,EAAE,EAAE;IACrB,OAAO,EAAE,KAAK;IACd,oBAAoB,EAAE,IAAI;IAC1B,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,EAAE;CACZ,CAAC;AAkBF,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,0BAAa,CAAA;IACb,kCAAqB,CAAA;IACrB,sCAAyB,CAAA;IACzB,0BAAa,CAAA;AACf,CAAC,EALW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAKpB;AAwBY,QAAA,mBAAmB,GAAiB;IAC/C,EAAE,EAAE,CAAC,CAAC;IACN,IAAI,EAAE,EAAE;IACR,gBAAgB,EAAE;QAChB,EAAE,EAAE,EAAE;QACN,KAAK,EAAE,EAAE;QACT,GAAG,EAAE,EAAE;QACP,OAAO,EAAE,KAAK;QACd,oBAAoB,EAAE,IAAI;QAC1B,iBAAiB,EAAE,KAAK;KACzB;IACD,UAAU,EAAE;QACV,SAAS,EAAE,SAAS,CAAC,IAAI;QACzB,SAAS,EAAE,IAAI;QACf,aAAa,EAAE;YACb,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,KAAK;SACf;QACD,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,CAAC;QACX,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,KAAK;KACrB;IACD,UAAU,EAAE;QACV,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,EAAE;QACf,YAAY,EAAE,CAAC;KAChB;CACF,CAAC"}
@@ -41,6 +41,11 @@
41
41
  <label for="password" class="form-label">Password</label>
42
42
  <input type="password" class="form-control" id="password">
43
43
  </div>
44
+ <div class="mb-3">
45
+ <label for="ip" class="form-label">IP Addresses (comma or space separated list for when devices are on
46
+ another LAN subnet)</label>
47
+ <input type="text" class="form-control" id="ip" placeholder="IP addresses">
48
+ </div>
44
49
  <button class="btn btn-primary btn-login" type="submit" id="discoverBtn" style="border: 0;">
45
50
  Discover All Devices
46
51
  </button>
@@ -159,6 +164,7 @@
159
164
  const username = document.getElementById('username').value;
160
165
  const password = document.getElementById('password').value;
161
166
  const registeredApp = document.getElementById('registeredApp').value;
167
+ let ipAddrs = document.getElementById('ip').value ? document.getElementById('ip').value.split(/[\s,]+/) : [];
162
168
 
163
169
  if (!username || !password || !registeredApp) {
164
170
  homebridge.toast.error('Please enter username, password and registered app');
@@ -173,17 +179,42 @@
173
179
  } catch (e) {
174
180
  homebridge.toast.error(e.message);
175
181
  homebridge.hideSpinner();
182
+ // Abort if we did not login successfully.
183
+ return;
176
184
  }
177
185
 
178
186
  const table = document.getElementById('discoverTable').getElementsByTagName('tbody')[0];
179
187
  table.innerHTML = '';
180
188
 
189
+ // Merge current config over to the server so discover has latest device config...
190
+ let currentConfig = await homebridge.getPluginConfig();
191
+ currentConfig = currentConfig.length > 0 ? currentConfig[0] : {};
192
+ configuration = await homebridge.request('/mergeToDefault', { config: currentConfig });
193
+
194
+ // Add any existing IP addresses to list user provided
195
+ configuration.devices.forEach((d) => {
196
+ if (d.advanced_options?.ip) ipAddrs.push(d.advanced_options.ip);
197
+ });
198
+ // Remove duplicates from the array
199
+ ipAddrs = [...new Set(ipAddrs)];
200
+ // Check that all are valid IPv4 addresses
201
+ const validIPs = ipAddrs.every(ip => {
202
+ const regexIPv4 = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/gi;
203
+ return (regexIPv4.test(ip));
204
+ });
205
+ if (!validIPs) {
206
+ homebride.toast.error(`Invalid IP address provided`);
207
+ homebridge.hideSpinner();
208
+ // Abort if we have invalid IP address
209
+ return;
210
+ }
211
+
212
+ // Ask server to discover all devices...
181
213
  console.info(`Request device discovery...`);
182
- const devices = await homebridge.request('/discover');
214
+ debugLog(`Specific IP addresses: ${JSON.stringify(ipAddrs)}`);
215
+ const devices = await homebridge.request('/discover', { ip: ipAddrs.length ? ipAddrs : undefined });
183
216
  debugLog(`Discovered devices:\n${JSON.stringify(devices, null, 2)}`);
184
217
 
185
- let currentConfig = await homebridge.getPluginConfig();
186
- currentConfig = currentConfig.length > 0 ? currentConfig[0] : {};
187
218
  currentConfig.devices = currentConfig.devices || [];
188
219
  if (devices) {
189
220
  devices.forEach((device) => {
@@ -197,12 +228,12 @@
197
228
  tr.insertCell().appendChild(document.createTextNode(device.model));
198
229
  tr.insertCell().appendChild(document.createTextNode(device.id));
199
230
  tr.insertCell().appendChild(document.createTextNode(
200
- device.token ?
231
+ device.token ?
201
232
  device.token.slice(0, 6) + '...' + device.token.slice(-4) :
202
- 'token missing' + '\n' +
203
- device.key ?
204
- device.key.slice(0, 6) + '...' + device.key.slice(-4) :
205
- 'key missing'
233
+ 'token missing' + '\n' +
234
+ device.key ?
235
+ device.key.slice(0, 6) + '...' + device.key.slice(-4) :
236
+ 'key missing'
206
237
  ));
207
238
  tr.insertCell().appendChild(document.createTextNode(device.ip));
208
239
 
@@ -211,17 +242,20 @@
211
242
  addCell.appendChild(document.createTextNode('Not supported'));
212
243
  } else if (!validAuth) {
213
244
  addCell.appendChild(document.createTextNode('Invalid credentials'));
214
- } else if (currentDevice = currentConfig.devices.find((d) => d.id === device.id)) {
215
- // addCell.appendChild(document.createTextNode('Already added'));
216
- debugLog(`Existing device:\n${JSON.stringify(currentDevice, null, 2)}`);
245
+ } else if (currentConfig.devices.find((d) => d.id === device.id)) {
246
+ // We already have a record for this device, either with device ID, add button to update it.
217
247
  const button = document.createElement('button');
218
248
  button.innerText = 'Update';
219
249
  button.className = 'btn btn-outline-secondary btn-sm';
220
250
  button.addEventListener('click', async () => {
251
+ // Update button clicked...
221
252
  const i = configuration.devices.findIndex((o) => o.id === device.id);
222
253
  configuration.devices[i].advanced_options.token = device.token;
223
254
  configuration.devices[i].advanced_options.key = device.key;
224
- createForm(configSchema, configuration); // update view
255
+ // update IP address only if we are already storing an IP address (it might have changed)
256
+ configuration.devices[i].advanced_options.ip = configuration.devices[i].advanced_options.ip ? device.ip : undefined;
257
+ // refresh view
258
+ createForm(configSchema, configuration);
225
259
 
226
260
  addCell.removeChild(button);
227
261
  addCell.appendChild(document.createTextNode('Updated'));
@@ -230,17 +264,20 @@
230
264
  });
231
265
  addCell.appendChild(button);
232
266
  } else {
267
+ // No record for this device, add button to add it.
233
268
  const button = document.createElement('button');
234
269
  button.innerText = 'Add';
235
270
  button.className = 'btn btn-secondary btn-sm';
236
271
  button.addEventListener('click', async () => {
237
-
272
+ // Add button clicked...
238
273
  const newDevice = {
239
274
  id: device.id,
240
275
  name: device.name,
241
276
  type: device.displayName,
242
277
  advanced_options: {
243
278
  ...defaultDeviceConfig.advanced_options,
279
+ // add IP address only if it is one we were asked to find
280
+ ip: (ipAddrs.includes(device.ip)) ? device.ip : undefined,
244
281
  token: device.token,
245
282
  key: device.key,
246
283
  }
@@ -251,7 +288,8 @@
251
288
  ...newDevice
252
289
  });
253
290
  debugLog(`Adding new device:\n${JSON.stringify({ ...defaultDeviceConfig, ...newDevice }, null, 2)}`);
254
- createForm(configSchema, configuration); // update view
291
+ // refresh view
292
+ createForm(configSchema, configuration);
255
293
 
256
294
  addCell.removeChild(button);
257
295
  addCell.appendChild(document.createTextNode('Added'));
@@ -110,9 +110,9 @@ class UiServer extends HomebridgePluginUiServer {
110
110
  };
111
111
  });
112
112
 
113
- this.onRequest('/discover', async () => {
113
+ this.onRequest('/discover', async ({ ip }) => {
114
114
  try {
115
- const devices = await this.blockingDiscover();
115
+ const devices = await this.blockingDiscover(ip);
116
116
  for (const device of devices) {
117
117
  await this.getNewCredentials(device);
118
118
  }
@@ -198,11 +198,17 @@ class UiServer extends HomebridgePluginUiServer {
198
198
  * broadcast to network(s) to discover new devices, obtain credentials
199
199
  * for each as discovered.
200
200
  */
201
- async blockingDiscover() {
201
+ async blockingDiscover(ipAddrs = undefined) {
202
202
  let devices = [];
203
+ this.logger.debug(`[blockingDiscover] IP addresses: ${JSON.stringify(ipAddrs)}`);
203
204
  const discover = new Discover(this.logger);
204
205
  return new Promise((resolve, reject) => {
205
206
  this.logger.info('Start device discovery...');
207
+ // If IP addresses provided then probe them directly
208
+ ipAddrs?.forEach((ip) => {
209
+ discover.discoverDeviceByIP(ip);
210
+ });
211
+ // And then send broadcast to network(s)
206
212
  discover.startDiscover();
207
213
  discover.on('device', async (device) => {
208
214
  switch (device.type) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "Homebridge Midea Platform",
3
3
  "name": "homebridge-midea-platform",
4
- "version": "0.4.5",
4
+ "version": "0.4.6",
5
5
  "description": "Homebridge plugin for Midea devices",
6
6
  "license": "Apache-2.0",
7
7
  "repository": {