@homebridge-plugins/homebridge-wemo 7.6.0-beta.0 → 7.6.0-beta.2

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/CHANGELOG.md CHANGED
@@ -7,6 +7,8 @@ All notable changes to `@homebridge-plugins/homebridge-wemo` will be documented
7
7
  ### Changed
8
8
 
9
9
  - feat(ui): add, remove and hide devices from the config via the my devices tab
10
+ - style(ui): standardise the custom ui layout and sync the support tab with the readme
11
+ - feat(ui): add a remove all devices action to the my devices tab
10
12
 
11
13
  ## v7.5.3 (2026-07-18)
12
14
 
@@ -92,6 +92,17 @@
92
92
  </button>
93
93
  </div>
94
94
  </li>
95
+ <li class="list-group-item">
96
+ <div class="d-flex justify-content-between align-items-center">
97
+ <div class="pr-2">
98
+ <div>Remove All Devices</div>
99
+ <div class="text-muted action-desc" id="removeAllText">Remove every device from the plugin config.</div>
100
+ </div>
101
+ <button type="button" class="btn btn-primary m-0 ml-3 py-1 min-w-50" id="removeAllBtn" aria-label="Remove all devices from the config">
102
+ <i aria-hidden="true" class="fas fa-arrow-right"></i>
103
+ </button>
104
+ </div>
105
+ </li>
95
106
  <li class="list-group-item">
96
107
  <div class="d-flex justify-content-between align-items-center">
97
108
  <div class="pr-2">
@@ -162,100 +173,63 @@
162
173
  </table>
163
174
  </div>
164
175
  </div>
165
- <div id="pageSupport" class="mt-4" style="display: none;">
176
+ <div id="pageSupport" class="mt-4" style="display: none">
166
177
  <p class="text-center lead">Thank you for using <strong>homebridge-wemo</strong></p>
167
- <p class="text-center">The links below will take you to our GitHub wiki</p>
168
- <h4>Setup</h4>
169
- <ul>
170
- <li>
171
- <a href="https://github.com/homebridge-plugins/homebridge-wemo/wiki/Installation" target="_blank"
172
- >Installation</a
173
- >
174
- </li>
175
- <li>
176
- <a href="https://github.com/homebridge-plugins/homebridge-wemo/wiki/Configuration" target="_blank"
177
- >Configuration</a
178
- >
179
- </li>
180
- <li>
181
- <a href="https://github.com/homebridge/homebridge/wiki/How-to-Install-Alternate-Plugin-Versions" target="_blank"
182
- >Beta Version</a
183
- >
184
- </li>
185
- <li>
186
- <a href="https://github.com/homebridge-plugins/homebridge-wemo/wiki/Node-Version" target="_blank"
187
- >Node Version</a
188
- >
189
- </li>
190
- </ul>
191
- <h4>Features</h4>
192
- <ul>
193
- <li>
194
- <a href="https://github.com/homebridge-plugins/homebridge-wemo/wiki/Supported-Devices" target="_blank"
195
- >Supported Devices</a
196
- >
197
- </li>
198
- </ul>
199
- <h4>Help/About</h4>
200
- <ul>
201
- <li>
202
- <a href="https://github.com/homebridge-plugins/homebridge-wemo/wiki/Common-Errors" target="_blank"
203
- >Common Errors</a
204
- >
205
- </li>
206
- <li>
207
- <a href="https://github.com/homebridge-plugins/homebridge-wemo/issues/new/choose" target="_blank"
208
- >Support Request</a
209
- >
210
- </li>
211
- <li>
212
- <a href="https://github.com/homebridge-plugins/homebridge-wemo/blob/latest/CHANGELOG.md" target="_blank"
213
- >Changelog</a
214
- >
215
- </li>
216
- <li><a href="https://github.com/sponsors/bwp91" target="_blank">About Me</a></li>
217
- </ul>
218
- <h4>Credits</h4>
178
+ <h5>Plugin Information</h5>
179
+ <ul>
180
+ <li>This plugin allows you to view and control your Wemo devices within HomeKit. The plugin:</li>
219
181
  <ul>
220
- <li>
221
- To the creator of this plugin:
222
- <a href="https://github.com/rudders" target="_blank">@rudders</a>, and to
223
- <a href="https://github.com/devbobo" target="_blank">@devbobo</a> for his contributions.
224
- </li>
225
- <li>
226
- To the creator of
227
- <a href="https://github.com/timonreinhard/wemo-client" target="_blank">wemo-client</a> (which
228
- is now contained within this plugin):
229
- <a href="https://github.com/timonreinhard" target="_blank">@timonreinhard</a>.
230
- </li>
231
- <li>
232
- To <a href="http://www.hardill.me.uk/wordpress/tag/wemo/" target="_blank">Ben Hardill</a> for
233
- his research on Wemo devices.
234
- </li>
235
- <li>To all users who have helped/tested to enable functionality for new devices.</li>
236
- <li>
237
- To the creators/contributors of
238
- <a href="https://github.com/simont77/fakegato-history" target="_blank">Fakegato</a>:
239
- <a href="https://github.com/simont77" target="_blank">@simont77</a> and
240
- <a href="https://github.com/NorthernMan54" target="_blank">@NorthernMan54</a>.
241
- </li>
242
- <li>
243
- To the creator of the awesome plugin header logo:
244
- <a href="https://www.instagram.com/keryan.me" target="_blank">Keryan Belahcene</a>.
245
- </li>
246
- <li>
247
- To the creators/contributors of
248
- <a href="https://homebridge.io" target="_blank">Homebridge</a> who make this plugin possible.
249
- </li>
182
+ <li>does not require your Wemo credentials as uses local network discovery (SSDP) and local control</li>
183
+ <li>will attempt to control your devices via a local HTTP request</li>
184
+ <li>will attempt to establish a UPnP connection to your devices to listen for external changes (if disabled, HTTP polling is used)</li>
250
185
  </ul>
251
- <h4>Disclaimer</h4>
186
+ </ul>
187
+ <p>&gt; [!NOTE]</p>
188
+ <p>&gt; This plugin does not use the Wemo cloud service - it is designed to work entirely on your local network.</p>
189
+ <p>&gt; This means that the plugin should continue to work after the Wemo cloud service is discontinued.</p>
190
+ <p>&gt; See <a href="https://github.com/homebridge-plugins/homebridge-wemo/issues/203" target="_blank">issue #203</a> for more information.</p>
191
+ <h5>Prerequisites</h5>
192
+ <ul>
193
+ <li>To use this plugin, you will need to already have:</li>
252
194
  <ul>
253
- <li>
254
- I am in no way affiliated with Belkin/Wemo and this plugin is a personal project that I
255
- maintain in my free time.
256
- </li>
257
- <li>Use this plugin entirely at your own risk - please see licence for more information.</li>
195
+ <li><a href="https://nodejs.org" target="_blank">Node</a>: latest version of <code>v22</code> or <code>v24</code> - any other major version is not supported.</li>
196
+ <li><a href="https://homebridge.io" target="_blank">Homebridge</a>: <code>v1.6</code> or above - refer to link for more information and installation instructions.</li>
197
+ <li>For the UPnP connection, make sure your Homebridge instance has an allocated IP from the same IP network or VLAN as your Wemo devices. Otherwise, you should disable the UPnP connection to avoid connection errors.</li>
258
198
  </ul>
199
+ </ul>
200
+ <h5>Setup</h5>
201
+ <ul>
202
+ <li><a href="https://github.com/homebridge-plugins/homebridge-wemo/wiki/Installation" target="_blank">Installation</a></li>
203
+ <li><a href="https://github.com/homebridge-plugins/homebridge-wemo/wiki/Configuration" target="_blank">Configuration</a></li>
204
+ <li><a href="https://github.com/homebridge-plugins/homebridge-wemo/wiki/Beta-Version" target="_blank">Beta Version</a></li>
205
+ <li><a href="https://github.com/homebridge-plugins/homebridge-wemo/wiki/Node-Version" target="_blank">Node Version</a></li>
206
+ </ul>
207
+ <h5>Features</h5>
208
+ <ul>
209
+ <li><a href="https://github.com/homebridge-plugins/homebridge-wemo/wiki/Supported-Devices" target="_blank">Supported Devices</a></li>
210
+ </ul>
211
+ <h5>Help/About</h5>
212
+ <ul>
213
+ <li><a href="https://github.com/homebridge-plugins/homebridge-wemo/wiki/Common-Errors" target="_blank">Common Errors</a></li>
214
+ <li><a href="https://github.com/homebridge-plugins/homebridge-wemo/issues/new/choose" target="_blank">Support Request</a></li>
215
+ <li><a href="https://github.com/homebridge-plugins/homebridge-wemo/blob/latest/CHANGELOG.md" target="_blank">Changelog</a></li>
216
+ <li><a href="https://github.com/sponsors/bwp91" target="_blank">About Me</a></li>
217
+ </ul>
218
+ <h5>Credits</h5>
219
+ <ul>
220
+ <li>To the creator of this plugin: <a href="https://github.com/rudders" target="_blank">@rudders</a>, and to <a href="https://github.com/devbobo" target="_blank">@devbobo</a> for his contributions.</li>
221
+ <li>To the creator of <a href="https://github.com/timonreinhard/wemo-client" target="_blank">wemo-client</a> (which is now contained within this plugin): <a href="https://github.com/timonreinhard" target="_blank">@timonreinhard</a>.</li>
222
+ <li>To <a href="http://www.hardill.me.uk/wordpress/tag/wemo/" target="_blank">Ben Hardill</a> for his research on Wemo devices.</li>
223
+ <li>To all users who have helped/tested to enable functionality for new devices.</li>
224
+ <li>To the creators/contributors of <a href="https://github.com/simont77/fakegato-history" target="_blank">Fakegato</a>: <a href="https://github.com/simont77" target="_blank">@simont77</a> and <a href="https://github.com/NorthernMan54" target="_blank">@NorthernMan54</a>.</li>
225
+ <li>To the creator of the awesome plugin header logo: <a href="https://www.instagram.com/keryan.me" target="_blank">Keryan Belahcene</a>.</li>
226
+ <li>To the creators/contributors of <a href="https://homebridge.io" target="_blank">Homebridge</a> who make this plugin possible.</li>
227
+ </ul>
228
+ <h5>Disclaimer</h5>
229
+ <ul>
230
+ <li>I am in no way affiliated with Belkin/Wemo and this plugin is a personal project that I maintain in my free time.</li>
231
+ <li>Use this plugin entirely at your own risk - please see licence for more information.</li>
232
+ </ul>
259
233
  </div>
260
234
  <script>
261
235
  ;(async () => {
@@ -291,6 +265,7 @@
291
265
  }
292
266
  let pickerAccessories = []
293
267
  let removeConfirmTimer
268
+ let removeAllConfirmTimer
294
269
 
295
270
  // The action buttons always show the settings-page arrow; the row text
296
271
  // (and the button's aria-label) says what the arrow will do
@@ -497,6 +472,58 @@
497
472
  homebridge.toast.error(err.message, 'Error')
498
473
  }
499
474
  })
475
+ const resetRemoveAllButton = () => {
476
+ const btn = document.getElementById('removeAllBtn')
477
+ clearTimeout(removeAllConfirmTimer)
478
+ delete btn.dataset.confirm
479
+ btn.classList.remove('btn-danger')
480
+ btn.classList.add('btn-primary')
481
+ btn.innerHTML = actionArrow
482
+ btn.setAttribute('aria-label', 'Remove all devices from the config')
483
+ document.getElementById('removeAllText').innerHTML = 'Remove every device from the plugin config.'
484
+ }
485
+
486
+ document.getElementById('removeAllBtn').addEventListener('click', async () => {
487
+ try {
488
+ const btn = document.getElementById('removeAllBtn')
489
+ const blocks = await getConfigBlocks()
490
+ const config = blocks[0]
491
+ let total = 0
492
+ deviceArrays.forEach((key) => {
493
+ if (Array.isArray(config[key])) {
494
+ total += config[key].length
495
+ }
496
+ })
497
+ if (total === 0) {
498
+ resetRemoveAllButton()
499
+ homebridge.toast.info('There are no devices in the config.', 'Nothing To Remove')
500
+ return
501
+ }
502
+ if (btn.dataset.confirm !== 'yes') {
503
+ // Removing everything always asks for a second click, since any
504
+ // settings on the entries would be lost
505
+ btn.dataset.confirm = 'yes'
506
+ btn.classList.remove('btn-primary')
507
+ btn.classList.add('btn-danger')
508
+ btn.innerHTML = actionArrow
509
+ btn.setAttribute('aria-label', 'Confirm removing all devices from the config')
510
+ document.getElementById('removeAllText').innerHTML = 'Any settings on these entries will be lost. Click again to remove all ' + total + (total === 1 ? ' entry.' : ' entries.')
511
+ removeAllConfirmTimer = setTimeout(resetRemoveAllButton, 5000)
512
+ return
513
+ }
514
+ deviceArrays.forEach((key) => {
515
+ delete config[key]
516
+ })
517
+ await homebridge.updatePluginConfig(blocks)
518
+ resetRemoveAllButton()
519
+ setConfigButton(false)
520
+ setHideControl(false)
521
+ homebridge.toast.success(total + ' device entr' + (total === 1 ? 'y' : 'ies') + ' removed - press Save to apply.', 'Removed From Config')
522
+ } catch (err) {
523
+ homebridge.toast.error(err.message, 'Error')
524
+ }
525
+ })
526
+
500
527
  // ===== End device picker =====
501
528
 
502
529
  showIntro = () => {
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@homebridge-plugins/homebridge-wemo",
3
3
  "alias": "Wemo",
4
4
  "type": "module",
5
- "version": "7.6.0-beta.0",
5
+ "version": "7.6.0-beta.2",
6
6
  "description": "Homebridge plugin to integrate Wemo devices into HomeKit.",
7
7
  "author": {
8
8
  "name": "bwp91",