@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
|
|
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
|
|
45
|
-
- Add option to skip authentication for tado
|
|
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-
|
|
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
|
package/config.schema.json
CHANGED
|
@@ -570,9 +570,9 @@
|
|
|
570
570
|
"description": "Optional: Skip creation of history service."
|
|
571
571
|
},
|
|
572
572
|
"preferSiriTemperature": {
|
|
573
|
-
"title": "Prefer Siri
|
|
573
|
+
"title": "Prefer Siri Temperature Changes",
|
|
574
574
|
"type": "boolean",
|
|
575
|
-
"description": "
|
|
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
|
|
87
|
-
Please fill out all marked fields
|
|
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
|
|
91
|
-
<input type="text" class="form-control" id="homeUsername">
|
|
92
|
-
<label for="homeTadoApiUrl">Tado API URL (optional)
|
|
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)
|
|
95
|
-
<input type="checkbox" class="form-
|
|
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
|
|
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
|
|
565
|
+
'title': 'Prefer Siri Temperature Changes',
|
|
566
566
|
'type': 'boolean',
|
|
567
|
-
'description': '
|
|
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
package/src/helper/handler.js
CHANGED
|
@@ -563,8 +563,8 @@ export default (api, accessories, config, tado, telegram) => {
|
|
|
563
563
|
);
|
|
564
564
|
break;
|
|
565
565
|
}
|
|
566
|
-
} catch (
|
|
567
|
-
|
|
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 (
|
|
799
|
-
|
|
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,
|
package/src/tado/tado-api.js
CHANGED
|
@@ -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
|
}
|