@homebridge-plugins/homebridge-resideo 3.2.0-beta.0 → 3.2.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
@@ -3,6 +3,8 @@
3
3
  ### Changed
4
4
 
5
5
  - feat(ui): add, remove and hide devices from the config via the devices tab
6
+ - style(ui): standardise the custom ui layout and sync the support tab with the readme
7
+ - feat(ui): add a remove all devices action to the my devices tab
6
8
 
7
9
  ## v3.1.5 (2026-07-24)
8
10
 
@@ -62,9 +62,7 @@
62
62
  <button type="button" class="btn btn-primary" id="menuSettings">
63
63
  Settings
64
64
  </button>
65
- <button type="button" class="btn btn-primary" id="menuDevices">
66
- Devices
67
- </button>
65
+ <button type="button" class="btn btn-primary" id="menuDevices">My Devices</button>
68
66
  <button type="button" class="btn btn-primary mr-0" id="menuHome">
69
67
  Support
70
68
  </button>
@@ -120,6 +118,17 @@
120
118
  </button>
121
119
  </div>
122
120
  </li>
121
+ <li class="list-group-item">
122
+ <div class="d-flex justify-content-between align-items-center">
123
+ <div class="pr-2">
124
+ <div>Remove All Devices</div>
125
+ <div class="text-muted action-desc" id="removeAllText">Remove every device from the plugin config.</div>
126
+ </div>
127
+ <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">
128
+ <i aria-hidden="true" class="fas fa-arrow-right"></i>
129
+ </button>
130
+ </div>
131
+ </li>
123
132
  <li class="list-group-item">
124
133
  <div class="d-flex justify-content-between align-items-center">
125
134
  <div class="pr-2">
@@ -167,66 +176,65 @@
167
176
  </table>
168
177
  </div>
169
178
  </div>
170
- <div id="pageSupport" class="mt-4" style="display: none;">
171
- <p class="text-center lead">Thank you for using <strong>homebridge-resideo</strong></p>
172
- <p class="text-center">The links below will take you to our GitHub wiki</p>
173
- <h5>Setup</h5>
174
- <ul>
175
- <li>
176
- <a href="https://github.com/homebridge-plugins/homebridge-resideo/wiki" target="_blank">Wiki Home</a>
177
- </li>
178
- <li>
179
- <a href="https://github.com/homebridge-plugins/homebridge-resideo/wiki/Configuration"
180
- target="_blank">Configuration</a>
181
- </li>
182
- <li>
183
- <a href="https://github.com/homebridge-plugins/homebridge-resideo/wiki/Beta-Version" target="_blank">Beta
184
- Version</a>
185
- </li>
186
- <li>
187
- <a href="https://github.com/homebridge-plugins/homebridge-resideo/wiki/Node-Version" target="_blank">Node
188
- Version</a>
189
- </li>
190
- <li>
191
- <a href="https://github.com/homebridge-plugins/homebridge-resideo/wiki/Uninstallation"
192
- target="_blank">Uninstallation</a>
193
- </li>
194
- </ul>
195
- <h5>Features</h5>
196
- <ul>
197
- <li>
198
- <a href="https://github.com/homebridge-plugins/homebridge-resideo/wiki/Supported-Devices" target="_blank">Supported
199
- Devices</a>
200
- </li>
201
- <li>
202
- <a href="https://github.com/homebridge-plugins/homebridge-resideo/wiki/Fan-Modes" target="_blank">Fan
203
- Modes</a>
204
- </li>
205
- </ul>
206
- <h5>Help/About</h5>
207
- <ul>
208
- <li>
209
- <a href="https://github.com/homebridge-plugins/homebridge-resideo/issues/new/choose" target="_blank">Support
210
- Request</a>
211
- </li>
212
- <li>
213
- <a href="https://github.com/homebridge-plugins/homebridge-resideo/blob/latest/CHANGELOG.md"
214
- target="_blank">Changelog</a>
215
- </li>
216
- <li>
217
- <a href="https://github.com/sponsors/donavanbecker" target="_blank">About Me</a>
218
- </li>
219
- </ul>
220
- <h5>Disclaimer</h5>
221
- <ul>
222
- <li>
223
- I am in no way affiliated with Resideo and this plugin is a personal project that I maintain in
224
- my free time.
225
- </li>
226
- <li>
227
- Use this plugin entirely at your own risk - please see licence for more information.
228
- </li>
229
- </ul>
179
+ <div id="pageSupport" class="mt-4" style="display: none">
180
+ <p class="text-center lead">Thank you for using <strong>homebridge-resideo</strong></p>
181
+ <h5>Plugin Information</h5>
182
+ <ul>
183
+ <li>This plugin allows you to view and control your <a href="https://www.resideo.com" target="_blank">Resideo</a> (Honeywell Home) devices within HomeKit. The plugin:</li>
184
+ <ul>
185
+ <li>requires a (free) Resideo developer account to work - this is separate from the Resideo account you use in the Resideo app</li>
186
+ <li>connects to the Resideo cloud to discover and control your devices</li>
187
+ </ul>
188
+ </ul>
189
+ <h5>Prerequisites</h5>
190
+ <ul>
191
+ <li>To use this plugin, you will need to already have:</li>
192
+ <ul>
193
+ <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>
194
+ <li><a href="https://homebridge.io" target="_blank">Homebridge</a>: <code>v2</code> - refer to link for more information and installation instructions.</li>
195
+ </ul>
196
+ </ul>
197
+ <h5>Setup</h5>
198
+ <ul>
199
+ <li><a href="https://github.com/homebridge-plugins/homebridge-resideo/wiki/Installation" target="_blank">Installation</a></li>
200
+ <li><a href="https://github.com/homebridge-plugins/homebridge-resideo/wiki/Configuration" target="_blank">Configuration</a></li>
201
+ <li><a href="https://github.com/homebridge-plugins/homebridge-resideo/wiki/Beta-Version" target="_blank">Beta Version</a></li>
202
+ <li><a href="https://github.com/homebridge-plugins/homebridge-resideo/wiki/Node-Version" target="_blank">Node Version</a></li>
203
+ </ul>
204
+ <h5>Supported Devices</h5>
205
+ <ul>
206
+ <li><a href="https://www.resideo.com/us/en/products/air/thermostats/wifi-thermostats/t10-pro-smart-thermostat-with-redlinkr-room-sensor-thx321wfs2001w-u/" target="_blank">T10 Thermostat</a> - already HomeKit certified</li>
207
+ <li><a href="https://www.resideo.com/us/en/products/air/thermostats/wifi-thermostats/t9-smart-thermostat-with-sensor-rcht9610wfsw2003-u/" target="_blank">T9 Thermostat</a> - already HomeKit certified</li>
208
+ <ul>
209
+ <li><a href="https://www.resideo.com/us/en/products/air/thermostat-accessories/t9-smart-sensor-rchtsensor-1pk-u/" target="_blank">T9 Smart Roomsensors</a></li>
210
+ </ul>
211
+ <li><a href="https://www.resideo.com/us/en/products/air/thermostats/wifi-thermostats/t6-pro-smart-thermostat-multi-stage-3-heat-2-cool-th6320wf2003-u/" target="_blank">T6 Thermostat</a> - already HomeKit certified</li>
212
+ <li><a href="https://www.resideo.com/us/en/products/air/thermostats/wifi-thermostats/t5-smart-thermostat-with-c-wire-adapter-rcht8612wf2005-u/" target="_blank">T5 Thermostat</a> - already HomeKit certified</li>
213
+ <li><a href="https://www.resideo.com/us/en/products/air/thermostats/wifi-thermostats/the-round-smart-thermostat-rch9310wf5003-u/" target="_blank">Round Thermostat</a> - already HomeKit certified</li>
214
+ <li>Some Total Comfort Control thermostats</li>
215
+ <ul>
216
+ <li>Pushing commands may not be supported on some.</li>
217
+ </ul>
218
+ <li><a href="https://www.resideo.com/us/en/products/water/spot-leak-detection/wifi-water-leak-freeze-detector-rchw3610wf1001-u/" target="_blank">WiFi Water Leak &amp; Freeze Detector</a></li>
219
+ <li>Water Shutoff Valves</li>
220
+ </ul>
221
+ <h5>Help/About</h5>
222
+ <ul>
223
+ <li><a href="https://github.com/homebridge-plugins/homebridge-resideo/wiki/Common-Errors" target="_blank">Common Errors</a></li>
224
+ <li><a href="https://github.com/homebridge-plugins/homebridge-resideo/issues/new/choose" target="_blank">Support Request</a></li>
225
+ <li><a href="https://github.com/homebridge-plugins/homebridge-resideo/blob/latest/CHANGELOG.md" target="_blank">Changelog</a></li>
226
+ <li><a href="https://github.com/sponsors/bwp91" target="_blank">About Me</a></li>
227
+ </ul>
228
+ <h5>Credits</h5>
229
+ <ul>
230
+ <li>To <a href="https://github.com/donavanbecker" target="_blank">@donavanbecker</a>: the original creator and maintainer of this plugin.</li>
231
+ <li>To the creators/contributors of <a href="https://homebridge.io" target="_blank">Homebridge</a> who make this plugin possible.</li>
232
+ </ul>
233
+ <h5>Disclaimer</h5>
234
+ <ul>
235
+ <li>I am in no way affiliated with Resideo or Honeywell and this plugin is a personal project that I maintain in my free time.</li>
236
+ <li>Use this plugin entirely at your own risk - please see licence for more information.</li>
237
+ </ul>
230
238
  </div>
231
239
  <script>
232
240
  ; (async () => {
@@ -238,6 +246,7 @@
238
246
  // so staged-but-unsaved edits made in the Settings tab are respected
239
247
  let pickerAccessories = []
240
248
  let removeConfirmTimer
249
+ let removeAllConfirmTimer
241
250
 
242
251
  // The action buttons always show the settings-page arrow; the row text
243
252
  // (and the button's aria-label) says what the arrow will do
@@ -452,6 +461,51 @@
452
461
  homebridge.toast.error(err.message, 'Error')
453
462
  }
454
463
  })
464
+ const resetRemoveAllButton = () => {
465
+ const btn = document.getElementById('removeAllBtn')
466
+ clearTimeout(removeAllConfirmTimer)
467
+ delete btn.dataset.confirm
468
+ btn.classList.remove('btn-danger')
469
+ btn.classList.add('btn-primary')
470
+ btn.innerHTML = actionArrow
471
+ btn.setAttribute('aria-label', 'Remove all devices from the config')
472
+ document.getElementById('removeAllText').innerHTML = 'Remove every device from the plugin config.'
473
+ }
474
+
475
+ document.getElementById('removeAllBtn').addEventListener('click', async () => {
476
+ try {
477
+ const btn = document.getElementById('removeAllBtn')
478
+ const blocks = await getConfigBlocks()
479
+ const config = blocks[0]
480
+ const total = config.options && Array.isArray(config.options.devices) ? config.options.devices.length : 0
481
+ if (total === 0) {
482
+ resetRemoveAllButton()
483
+ homebridge.toast.info('There are no devices in the config.', 'Nothing To Remove')
484
+ return
485
+ }
486
+ if (btn.dataset.confirm !== 'yes') {
487
+ // Removing everything always asks for a second click, since any
488
+ // settings on the entries would be lost
489
+ btn.dataset.confirm = 'yes'
490
+ btn.classList.remove('btn-primary')
491
+ btn.classList.add('btn-danger')
492
+ btn.innerHTML = actionArrow
493
+ btn.setAttribute('aria-label', 'Confirm removing all devices from the config')
494
+ document.getElementById('removeAllText').innerHTML = 'Any settings on these entries will be lost. Click again to remove all ' + total + (total === 1 ? ' entry.' : ' entries.')
495
+ removeAllConfirmTimer = setTimeout(resetRemoveAllButton, 5000)
496
+ return
497
+ }
498
+ delete config.options.devices
499
+ await homebridge.updatePluginConfig(blocks)
500
+ resetRemoveAllButton()
501
+ setConfigButton(false)
502
+ setHideControl(false)
503
+ homebridge.toast.success(total + ' device entr' + (total === 1 ? 'y' : 'ies') + ' removed - press Save to apply.', 'Removed From Config')
504
+ } catch (err) {
505
+ homebridge.toast.error(err.message, 'Error')
506
+ }
507
+ })
508
+
455
509
  // ===== End device picker =====
456
510
  const hostname = window.location.hostname
457
511
  try {
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@homebridge-plugins/homebridge-resideo",
3
3
  "displayName": "Resideo",
4
4
  "type": "module",
5
- "version": "3.2.0-beta.0",
5
+ "version": "3.2.0-beta.2",
6
6
  "description": "The Resideo plugin allows you to access your Resideo device(s) from HomeKit.",
7
7
  "author": {
8
8
  "name": "bwp91",