@homebridge-plugins/homebridge-tado 8.6.0 → 8.6.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
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## v8.6.2 — 2025-11-02
4
+ - Fix: Config-UI: Show skip auth field as checkbox and improve instruction texts
5
+
6
+ ## v8.6.1 — 2025-11-01
7
+ - Fix: Improve error logging for failed API requests (#179)
8
+
3
9
  ## v8.6.0 — 2025-11-01
4
10
  - BREAKING CHANGE: `tadoApiUrl` and `skipAuth` must now be defined under each home configuration for proper multi-home support (#176)
5
11
  - New parameter `preferSiriTemperature` for improved Siri handling — allows temperature changes via Siri without forcing Auto mode (#178). See [#178 (comment)](https://github.com/homebridge-plugins/homebridge-tado/issues/178#issuecomment-3476646430) for a detailed explanation
@@ -10,7 +16,7 @@
10
16
  - Fixed multi-home polling and individual API handling (#176)
11
17
  - Added enhanced debug logs for zone updates and API interactions
12
18
  - Note: This update resets the Tado API counter for the current day
13
- - Apologies for the unexpected behavior introduced in 8.4.x–8.5.x — this release restores consistent and reliable behavior, with an optional fix for Siri users. Full statement: [#178 (comment)](https://github.com/homebridge-plugins/homebridge-tado/issues/178#issuecomment-3476646430)
19
+ - Apologies for the unexpected behavior introduced in v8.4.x–8.5.x — this release restores consistent and reliable behavior, with an optional fix for Siri users. Full statement: [#178 (comment)](https://github.com/homebridge-plugins/homebridge-tado/issues/178#issuecomment-3476646430)
14
20
 
15
21
  ## v8.5.0 - 2025-10-27
16
22
  - Change minimum polling interval to 30s due to improvements made in v8.2.0
@@ -41,8 +47,8 @@
41
47
  - Fix config UI not working on HOOBS 5 (#177)
42
48
 
43
49
  ## v8.1.0 - 2025-10-19
44
- - Add option to use a custom tado api url (#176)
45
- - Add option to skip authentication for tado api (#176)
50
+ - Add option to use a custom tado API url (#176)
51
+ - Add option to skip authentication for tado API (#176)
46
52
  - Update dependencies
47
53
 
48
54
  ## v8.0.2 - 2025-07-22
@@ -87,7 +93,7 @@
87
93
  - Updated changelog
88
94
 
89
95
  ## v7.4.0 - 2025-03-14
90
- - Implemented the new authentication workflow for the tado° REST API based on their [official instructions](https://support.tado.com/en/articles/8565472-how-do-i-authenticate-to-access-the-rest-api)
96
+ - Implemented the new authentication workflow for the tado° REST API based on their [official instructions](https://support.tado.com/en/articles/8565472-how-do-i-authenticate-to-access-the-rest-API)
91
97
  - Added full support for Homebridge v2.0 (it is also shown as compatible when using Homebridge v1.X)
92
98
  - Updated all dependencies to their latest version
93
99
  - Added new authentication workflow to config-ui
@@ -570,9 +570,9 @@
570
570
  "description": "Optional: Skip creation of history service."
571
571
  },
572
572
  "preferSiriTemperature": {
573
- "title": "Prefer Siri temperature changes",
573
+ "title": "Prefer Siri Temperature Changes",
574
574
  "type": "boolean",
575
- "description": "Prefers temperature changes when the Auto (state=3) mode is sent simultaneously. Default: false."
575
+ "description": "Prefer temperature changes when the state auto is sent simultaneously with a temperature change. Default: false."
576
576
  }
577
577
  }
578
578
  },
@@ -83,16 +83,16 @@
83
83
  <i class="fa fa-arrow-left" aria-hidden="true"></i>
84
84
  </button>
85
85
  <img src="images/tado_logo.png" alt="Tado meets Homebridge" width="150px" class="center-it mt-4 tadoLogo">
86
- <h6 class="text-center">To start the process, we need some data from the home you want to add in homebridge. <br>
87
- Please fill out all marked fields.</h6>
86
+ <h6 class="text-center">To start the process, we need to authenticate with the Tado account of the home you want to
87
+ add to Homebridge.<br>Please fill out all marked fields:</h6>
88
88
  <div class="container mt-5">
89
89
  <div class="form-group">
90
- <label for="homeUsername">Username <span class="text-danger">*</span> </label>
91
- <input type="text" class="form-control" id="homeUsername">
92
- <label for="homeTadoApiUrl">Tado API URL (optional) </label>
90
+ <label for="homeUsername">Username<span class="text-danger">*</span></label>
91
+ <input type="text" class="form-control" id="homeUsername" placeholder="your-tado@mail.com">
92
+ <label for="homeTadoApiUrl">Tado API URL (optional)</label>
93
93
  <input type="text" class="form-control" id="homeTadoApiUrl">
94
- <label for="homeSkipAuth">Skip Authentication (optional) </label>
95
- <input type="checkbox" class="form-control" id="homeSkipAuth">
94
+ <label for="homeSkipAuth">Skip Authentication (optional)</label>
95
+ <input type="checkbox" class="form-checkbox" id="homeSkipAuth">
96
96
  </div>
97
97
  <button id="auth" type="submit" class="btn btn-primary float-right mt-3 mr-0">Next</button>
98
98
  </div>
@@ -101,7 +101,8 @@
101
101
  <!-- fetchDevices -->
102
102
  <div id="fetchDevices" style="display:none;">
103
103
  <img src="images/tado_logo.png" alt="Tado meets Homebridge" width="150px" class="center-it mt-2 tadoLogo">
104
- <h6 class="text-center">Devices are searched. <br> Please be patient for a moment.</h6>
104
+ <h6 class="text-center">Devices are being searched.<br>Please follow the instructions below and be patient for a
105
+ moment.</h6>
105
106
  <h6 class="text-center" id="authenticationInstructions" style="display:none;font-weight:bold;"></h6>
106
107
  <div id="fetchDevicesBar" class="mt-5"></div>
107
108
  </div>
@@ -562,9 +562,9 @@ const schema = {
562
562
  'description': 'Optional: Skip creation of history service.'
563
563
  },
564
564
  'preferSiriTemperature': {
565
- 'title': 'Prefer Siri temperature changes',
565
+ 'title': 'Prefer Siri Temperature Changes',
566
566
  'type': 'boolean',
567
- 'description': 'Prefers temperature changes when the Auto (state=3) mode is sent simultaneously. Default: false.'
567
+ 'description': 'Prefer temperature changes when the state auto is sent simultaneously with a temperature change. Default: false.'
568
568
  }
569
569
  },
570
570
  'layout': [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@homebridge-plugins/homebridge-tado",
3
- "version": "8.6.0",
3
+ "version": "8.6.2",
4
4
  "description": "Homebridge plugin for controlling tado° devices.",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -563,8 +563,8 @@ export default (api, accessories, config, tado, telegram) => {
563
563
  );
564
564
  break;
565
565
  }
566
- } catch (err) {
567
- errorHandler(err);
566
+ } catch (error) {
567
+ Logger.error(`Failed to set states: ${error.message || error}`);
568
568
  } finally {
569
569
  delete helpers[config.homeId].activeSettingStateRuns[runId];
570
570
  //update zones to ensure correct state in Apple Home
@@ -795,8 +795,8 @@ export default (api, accessories, config, tado, telegram) => {
795
795
 
796
796
  //Child Lock
797
797
  if (config.childLock.length) await updateDevices();
798
- } catch (err) {
799
- errorHandler(err);
798
+ } catch (error) {
799
+ Logger.error(`Failed to get states: ${error.message || error}`);
800
800
  } finally {
801
801
  void refreshHistoryServices();
802
802
  }
@@ -1554,48 +1554,6 @@ export default (api, accessories, config, tado, telegram) => {
1554
1554
  });
1555
1555
  }
1556
1556
 
1557
- function errorHandler(err) {
1558
- let error;
1559
-
1560
- if (err.options)
1561
- Logger.debug(
1562
- 'API request ' + err.options.method + ' ' + err.options.url.pathname + ' <error> ' + err.message,
1563
- config.homeName
1564
- );
1565
-
1566
- if (err.response) {
1567
- // The request was made and the server responded with a status code
1568
- // that falls out of the range of 2xx
1569
- if (err.response.data) {
1570
- error = {
1571
- status: err.response.status,
1572
- message: err.response.statusText,
1573
- data: err.response.data,
1574
- };
1575
- } else {
1576
- error = {
1577
- status: err.response.status,
1578
- message: err.response.statusText,
1579
- };
1580
- }
1581
- } else if (err.request) {
1582
- error = {
1583
- code: err.code,
1584
- message: 'Cannot reach Tado. No response received.',
1585
- };
1586
- } else if (err.output && err.output.payload && Object.keys(err.output.payload).length) {
1587
- //simple-oauth2 boom error
1588
- error = err.output.payload;
1589
- } else {
1590
- // Something happened in setting up the request that triggered an Error
1591
- error = err;
1592
- }
1593
-
1594
- Logger.error("Error:", error, config.homeName);
1595
-
1596
- return;
1597
- }
1598
-
1599
1557
  return {
1600
1558
  initTasks: initTasks,
1601
1559
  getStates: getStates,
@@ -300,12 +300,6 @@ export default class Tado {
300
300
  return response.body;
301
301
  } catch (error) {
302
302
  Logger.error(`API Request [${method} ${path}] - FAILED: ${error.message}`, this.name);
303
- if (error.response) {
304
- Logger.error(`HTTP Status: ${error.response.statusCode} - Response: ${JSON.stringify(error.response.body)}`, this.name);
305
- }
306
- if (error.request) {
307
- Logger.error(`Request failed - Config: ${JSON.stringify(config)}`, this.name);
308
- }
309
303
  throw error;
310
304
  }
311
305
  }