@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 +2 -0
- package/lib/homebridge-ui/public/index.html +116 -89
- package/package.json +1 -1
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
|
-
<
|
|
168
|
-
|
|
169
|
-
<
|
|
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
|
-
|
|
222
|
-
|
|
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
|
-
|
|
186
|
+
</ul>
|
|
187
|
+
<p>> [!NOTE]</p>
|
|
188
|
+
<p>> This plugin does not use the Wemo cloud service - it is designed to work entirely on your local network.</p>
|
|
189
|
+
<p>> This means that the plugin should continue to work after the Wemo cloud service is discontinued.</p>
|
|
190
|
+
<p>> 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
|
-
|
|
255
|
-
|
|
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