@homebridge-plugins/homebridge-resideo 3.0.3-beta.9 → 3.1.1-beta.0
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 +30 -30
- package/CLAUDE.md +49 -0
- package/README.md +47 -54
- package/config.schema.json +112 -3
- package/dist/{platform.d.ts → Platform.HAP.d.ts} +7 -5
- package/dist/Platform.HAP.d.ts.map +1 -0
- package/dist/{platform.js → Platform.HAP.js} +40 -38
- package/dist/Platform.HAP.js.map +1 -0
- package/dist/Platform.HAP.test.d.ts +2 -0
- package/dist/Platform.HAP.test.d.ts.map +1 -0
- package/dist/{platform.test.js → Platform.HAP.test.js} +7 -7
- package/dist/Platform.HAP.test.js.map +1 -0
- package/dist/Platform.Matter.d.ts +56 -0
- package/dist/Platform.Matter.d.ts.map +1 -0
- package/dist/Platform.Matter.js +138 -0
- package/dist/Platform.Matter.js.map +1 -0
- package/dist/devices/device.d.ts +6 -1
- package/dist/devices/device.d.ts.map +1 -1
- package/dist/devices/device.js +2 -2
- package/dist/devices/device.js.map +1 -1
- package/dist/devices/leaksensors.d.ts +1 -1
- package/dist/devices/leaksensors.d.ts.map +1 -1
- package/dist/devices/leaksensors.js +2 -2
- package/dist/devices/leaksensors.js.map +1 -1
- package/dist/devices/roomsensors.d.ts +1 -1
- package/dist/devices/roomsensors.d.ts.map +1 -1
- package/dist/devices/roomsensors.js +2 -2
- package/dist/devices/roomsensors.js.map +1 -1
- package/dist/devices/roomsensorthermostats.d.ts +1 -1
- package/dist/devices/roomsensorthermostats.d.ts.map +1 -1
- package/dist/devices/roomsensorthermostats.js +14 -14
- package/dist/devices/roomsensorthermostats.js.map +1 -1
- package/dist/devices/thermostats.d.ts +1 -1
- package/dist/devices/thermostats.d.ts.map +1 -1
- package/dist/devices/thermostats.js +61 -94
- package/dist/devices/thermostats.js.map +1 -1
- package/dist/devices/valve.d.ts +1 -1
- package/dist/devices/valve.d.ts.map +1 -1
- package/dist/devices/valve.js +4 -6
- package/dist/devices/valve.js.map +1 -1
- package/dist/homebridge-ui/public/index.html +248 -226
- package/dist/homebridge-ui/server.d.ts.map +1 -1
- package/dist/homebridge-ui/server.js +0 -217
- package/dist/homebridge-ui/server.js.map +1 -1
- package/dist/http-client.d.ts +30 -0
- package/dist/http-client.d.ts.map +1 -0
- package/dist/http-client.js +109 -0
- package/dist/http-client.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/index.test.js +2 -3
- package/dist/index.test.js.map +1 -1
- package/dist/settings.d.ts +15 -5
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +4 -4
- package/dist/settings.js.map +1 -1
- package/dist/settings.test.js +4 -4
- package/dist/settings.test.js.map +1 -1
- package/dist/utils.d.ts +12 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +36 -4
- package/dist/utils.js.map +1 -1
- package/dist/utils.test.js +74 -3
- package/dist/utils.test.js.map +1 -1
- package/package.json +47 -38
- package/.github/FUNDING.yml +0 -4
- package/.github/ISSUE_TEMPLATE/bug-report.yml +0 -97
- package/.github/ISSUE_TEMPLATE/config.yml +0 -8
- package/.github/ISSUE_TEMPLATE/feature-request.yml +0 -38
- package/.github/ISSUE_TEMPLATE/support-request.yml +0 -85
- package/.github/ISSUE_TEMPLATE.md +0 -52
- package/.github/PULL_REQUEST_TEMPLATE/pull_request.md +0 -27
- package/.github/copilot-instructions.md +0 -204
- package/.github/dependabot.yml +0 -17
- package/.github/labeler.yml +0 -49
- package/.github/npm-version-script-esm.js +0 -97
- package/.github/release-drafter.yml +0 -33
- package/.github/workflows/beta-release.yml +0 -55
- package/.github/workflows/build.yml +0 -18
- package/.github/workflows/changerelease.yml +0 -11
- package/.github/workflows/labeler.yml +0 -9
- package/.github/workflows/release-drafter.yml +0 -14
- package/.github/workflows/release.yml +0 -35
- package/.github/workflows/stale.yml +0 -12
- package/SECURITY.md +0 -19
- package/branding/Homebridge_x_Resideo.svg +0 -28
- package/branding/honeywell/Homebridge_x_Honeywell.svg +0 -1
- package/branding/honeywell/homebridge-honeywell-home-changelog.md +0 -851
- package/branding/icon.png +0 -0
- package/dist/homebridge-ui/public/lib/featureoptions.js +0 -455
- package/dist/homebridge-ui/public/lib/featureoptions.js.map +0 -1
- package/dist/homebridge-ui/public/lib/webUi-featureoptions.mjs +0 -3765
- package/dist/homebridge-ui/public/lib/webUi.mjs +0 -189
- package/dist/platform.d.ts.map +0 -1
- package/dist/platform.js.map +0 -1
- package/dist/platform.test.d.ts +0 -2
- package/dist/platform.test.d.ts.map +0 -1
- package/dist/platform.test.js.map +0 -1
- package/dist/resideo-options.d.ts +0 -24
- package/dist/resideo-options.d.ts.map +0 -1
- package/dist/resideo-options.js +0 -215
- package/dist/resideo-options.js.map +0 -1
- package/docs/.nojekyll +0 -1
- package/docs/assets/hierarchy.js +0 -1
- package/docs/assets/highlight.css +0 -22
- package/docs/assets/icons.js +0 -18
- package/docs/assets/icons.svg +0 -1
- package/docs/assets/main.js +0 -60
- package/docs/assets/navigation.js +0 -1
- package/docs/assets/search.js +0 -1
- package/docs/assets/style.css +0 -1633
- package/docs/hierarchy.html +0 -1
- package/docs/index.html +0 -82
- package/docs/modules.html +0 -1
- package/docs/variables/default.html +0 -1
- package/eslint.config.js +0 -48
package/CHANGELOG.md
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
-
|
|
1
|
+
## v3.1.1 (Pending Release)
|
|
2
|
+
|
|
3
|
+
### Changed
|
|
4
|
+
|
|
5
|
+
- fix: use the updated honeywell api endpoints (#924) (@wesleydeland)
|
|
6
|
+
- chore(deps): update dependencies
|
|
7
|
+
- chore: add .idea to .gitignore
|
|
8
|
+
- chore(github): align workflows, funding and issue templates with the other org plugins
|
|
9
|
+
- chore: align npm publishing files with the other org plugins
|
|
10
|
+
- chore: standardise the eslint setup with the other org plugins
|
|
11
|
+
- refactor: store device instances on their accessories like the other org plugins
|
|
12
|
+
- style: apply the standardised lint rules
|
|
13
|
+
- chore: standardise the package scripts and publishing config
|
|
14
|
+
- chore: update the plugin metadata for the new maintainer
|
|
15
|
+
- chore: sync the package version with the released v3.1.0
|
|
16
|
+
- docs: refresh the readme
|
|
17
|
+
- docs: add claude and copilot instructions files
|
|
18
|
+
- docs: use the standard org readme banner
|
|
19
|
+
- fix: keep matter display names within the 32 character limit
|
|
20
|
+
|
|
21
|
+
## [3.1.0](https://github.com/homebridge-plugins/homebridge-resideo/compare/v3.0.2...v3.1.0) (2026-05-04)
|
|
22
|
+
|
|
23
|
+
### Enhancements
|
|
24
|
+
- Added fan mode mapping configuration for simplified HomeKit fan control and Siri-friendly fan behavior in thermostats ([#880](https://github.com/homebridge-plugins/homebridge-resideo/pull/880)).
|
|
25
|
+
- Added a `convertUnits` configuration option to override temperature unit conversion when the Resideo API reports mismatched units ([#881](https://github.com/homebridge-plugins/homebridge-resideo/pull/881)).
|
|
26
|
+
- Enabled switching the thermostat fan between `Auto` and `On` while HomeKit fan target state remains `AUTO` ([#886](https://github.com/homebridge-plugins/homebridge-resideo/pull/886)).
|
|
27
|
+
|
|
28
|
+
### Bug Fixes
|
|
29
|
+
- Fixed current temperature conversion so Fahrenheit readings from the Resideo API are converted correctly when HomeKit is using Celsius ([#882](https://github.com/homebridge-plugins/homebridge-resideo/pull/882)).
|
|
30
30
|
|
|
31
31
|
**Full Changelog**: https://github.com/homebridge-plugins/homebridge-resideo/compare/v3.0.2...v3.1.0
|
|
32
32
|
|
|
@@ -224,4 +224,4 @@ All notable changes to this project will be documented in this file. This projec
|
|
|
224
224
|
### What's Changes
|
|
225
225
|
- Move from `homebridge-honeywell-home` to `homebridge-resideo`
|
|
226
226
|
|
|
227
|
-
**homebridge-honeywell-home Changelog**: https://github.com/homebridge-plugins/homebridge-resideo/blob/latest/honeywell/homebridge-honeywell-home-changelog.md
|
|
227
|
+
**homebridge-honeywell-home Changelog**: https://github.com/homebridge-plugins/homebridge-resideo/blob/latest/honeywell/homebridge-honeywell-home-changelog.md
|
package/CLAUDE.md
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
+
|
|
5
|
+
## Commands
|
|
6
|
+
|
|
7
|
+
- `npm run build` — `rimraf ./dist && tsc && npm run plugin-ui`. The `plugin-ui` step rsyncs `src/homebridge-ui/public/index.html` into `dist/` (the UI server itself is TypeScript and compiled by `tsc`). Skipping it produces a broken published package.
|
|
8
|
+
- `npm run lint` — ESLint over the whole repo with `--max-warnings=0`. CI fails on any warning. `npm run lint:fix` to autofix.
|
|
9
|
+
- `npm test` — vitest, colocated `src/**/*.test.ts` files. `npm run test:watch` and `npm run test-coverage` also available.
|
|
10
|
+
- `npm run watch` — build, `npm link`, then `nodemon`: recompiles and restarts `homebridge -U ./test/hbConfig -D` on `src/**/*.ts` changes. `./test/hbConfig` is gitignored; create it locally.
|
|
11
|
+
- `npm run docs` — typedoc into `docs/` (gitignored — generated output is never committed).
|
|
12
|
+
- `npm run prepublishOnly` — lint then build; runs automatically on publish.
|
|
13
|
+
|
|
14
|
+
CI (`.github/workflows/build.yml`) runs install + lint on Node 22.x/24.x. Releases publish via `.github/workflows/release.yml`: a GitHub release (tag `vX.Y.Z`) publishes to npm's `latest` tag; pushes to `beta-X.Y.Z` / `alpha-X.Y.Z` branches publish incrementing prerelease versions to the `beta` / `alpha` tags.
|
|
15
|
+
|
|
16
|
+
Supported Node: `^22.12.0 || ^24.0.0`. Homebridge: `^2.0.0`.
|
|
17
|
+
|
|
18
|
+
## Architecture
|
|
19
|
+
|
|
20
|
+
Homebridge dynamic platform plugin (`platform: "Resideo"`, package `@homebridge-plugins/homebridge-resideo`) bridging Resideo (Honeywell Home) thermostats, room sensors, leak sensors and shutoff valves into HomeKit via the Honeywell cloud API.
|
|
21
|
+
|
|
22
|
+
### Authentication (`src/Platform.HAP.ts` + `src/homebridge-ui/`)
|
|
23
|
+
|
|
24
|
+
OAuth2 against `api.honeywell.com` using the user's own developer-portal app (consumer key/secret). The custom plugin UI handles the initial account-link flow (authorize → callback → tokens written to config). At runtime the platform refreshes the access token (`refreshAccessToken`) before polling. HTTP goes through `src/http-client.ts` (`NativeHttpClient`, native Node http/https — no undici).
|
|
25
|
+
|
|
26
|
+
### HAP/Matter platform selection
|
|
27
|
+
|
|
28
|
+
`src/index.ts` registers a runtime proxy that picks `ResideoMatterPlatform` (`src/Platform.Matter.ts`, extends the HAP platform) when Homebridge reports Matter available+enabled (config-gated), otherwise `ResideoPlatform` (`src/Platform.HAP.ts`). Matter API calls must stay optional-chained.
|
|
29
|
+
|
|
30
|
+
### Device discovery and classes (`src/devices/`)
|
|
31
|
+
|
|
32
|
+
Discovery walks `/v2/locations` then `/v2/devices` per location. The `deviceClass` switch creates the matching device class, each extending `deviceBase` (`src/devices/device.ts`) and stored on the accessory as `accessory.control` (module augmentation in `device.ts`):
|
|
33
|
+
- `Thermostats` (`thermostats.ts`) — T-series/Round/TCC thermostats
|
|
34
|
+
- `RoomSensors` / `RoomSensorThermostat` (`roomsensors.ts`, `roomsensorthermostats.ts`) — T9 room sensors, grouped via `T9groups`
|
|
35
|
+
- `LeakSensor` (`leaksensors.ts`) — WiFi leak & freeze detectors
|
|
36
|
+
- `Valve` (`valve.ts`) — `ShutoffValve` device class
|
|
37
|
+
|
|
38
|
+
Devices can be published as external accessories via per-device `external` config — never pass external accessories to `api.updatePlatformAccessories`.
|
|
39
|
+
|
|
40
|
+
### Logging
|
|
41
|
+
|
|
42
|
+
Leveled log helpers (`infoLog`, `warnLog`, `errorLog`, `debugLog`, …) gated by `config.options.logging` with per-device overrides. Use these instead of `this.log` directly.
|
|
43
|
+
|
|
44
|
+
## Conventions
|
|
45
|
+
|
|
46
|
+
- TypeScript ESM (`"type": "module"`): relative imports use `.js` extensions even from `.ts` source.
|
|
47
|
+
- ESLint is `@antfu/eslint-config` (flat config in `eslint.config.js`): single quotes, 1tbs braces, `curly` multi-line only, sorted exports. Run `npm run lint:fix` before committing.
|
|
48
|
+
- `config.schema.json` defines the Homebridge UI form and must stay in sync with the interfaces in `src/settings.ts` (`ResideoPlatformConfig`, `devicesConfig`, `options`).
|
|
49
|
+
- Copyright headers in `src/` credit @donavanbecker, the original plugin author — leave them in place.
|
package/README.md
CHANGED
|
@@ -1,85 +1,78 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="https://github.com/homebridge-plugins/homebridge-resideo"><img alt="homebridge-resideo" src="https://raw.githubusercontent.com/homebridge-plugins/homebridge-resideo/latest/branding/Homebridge_x_Resideo.png" width="600px"></a>
|
|
3
|
+
</p>
|
|
1
4
|
<span align="center">
|
|
2
5
|
|
|
3
|
-
|
|
6
|
+
## homebridge-resideo
|
|
4
7
|
|
|
5
|
-
|
|
8
|
+
Homebridge plugin to integrate Resideo (Honeywell Home) devices into HomeKit
|
|
6
9
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
<p>The Homebridge <a href="https://resideo.com">Resideo</a>
|
|
13
|
-
plugin allows you to access your Resideo Device(s) from HomeKit with
|
|
14
|
-
<a href="https://homebridge.io">Homebridge</a>.
|
|
15
|
-
</p>
|
|
10
|
+
[](https://www.npmjs.com/package/@homebridge-plugins/homebridge-resideo)
|
|
11
|
+
[](https://github.com/homebridge/homebridge/wiki/How-to-Install-Alternate-Plugin-Versions)<br>
|
|
12
|
+
[](https://github.com/homebridge/homebridge/wiki/Verified-Plugins)<br>
|
|
13
|
+
[](https://www.npmjs.com/package/@homebridge-plugins/homebridge-resideo)
|
|
14
|
+
[](https://discord.gg/bHjKNkN)
|
|
16
15
|
|
|
17
16
|
</span>
|
|
18
17
|
|
|
19
|
-
|
|
18
|
+
### Plugin Information
|
|
20
19
|
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
- This plugin allows you to view and control your [Resideo](https://www.resideo.com) (Honeywell Home) devices within HomeKit. The plugin:
|
|
21
|
+
- requires a (free) Resideo developer account to work - this is separate from the Resideo account you use in the Resideo app
|
|
22
|
+
- connects to the Resideo cloud to discover and control your devices
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
### Setup
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
- Installation
|
|
27
|
+
- Search for "Resideo" on the plugin screen of the [Homebridge UI](https://github.com/homebridge/homebridge-config-ui-x) and click **Install**.
|
|
28
|
+
- Configuration
|
|
29
|
+
1. Login or create an account at the [Resideo developer portal](https://developer.honeywellhome.com/user).
|
|
30
|
+
2. Click **Create New App**, give your application a name, and copy the hostname shown in the plugin settings intro into the **Callback URL** field.
|
|
31
31
|
|
|
32
32
|
<p align="center">
|
|
33
33
|
|
|
34
|
-
<img src="https://user-images.githubusercontent.com/9875439/192078620-6998511c-1c11-4e06-b7e1-475b22ef5180.png" width="300px">
|
|
34
|
+
<img alt="Resideo developer portal app setup" src="https://user-images.githubusercontent.com/9875439/192078620-6998511c-1c11-4e06-b7e1-475b22ef5180.png" width="300px">
|
|
35
35
|
|
|
36
36
|
</p>
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
6. Click **Link Account**
|
|
38
|
+
3. Enter the generated consumer key and secret into the plugin settings and click **Link Account**.
|
|
40
39
|
|
|
41
40
|
<p align="center">
|
|
42
41
|
|
|
43
|
-
<img src="https://user-images.githubusercontent.com/9875439/192078614-e568d121-e0e4-4123-bdda-4238e8a6e601.png" width="300px">
|
|
42
|
+
<img alt="Resideo account linking" src="https://user-images.githubusercontent.com/9875439/192078614-e568d121-e0e4-4123-bdda-4238e8a6e601.png" width="300px">
|
|
44
43
|
|
|
45
44
|
</p>
|
|
46
45
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
10. Click Connect
|
|
52
|
-
11. Click Save
|
|
53
|
-
- If you plan on adding this plugin into a child bridge, I would configure that at this time before restarting Homebridge.
|
|
54
|
-
- Reminder that you will have to add this child bridge into the home app to get Resideo accessories to show up.
|
|
55
|
-
12. Restart Homebridge
|
|
46
|
+
4. Login to your Resideo account, click **Allow**, select your devices, and click **Connect**.
|
|
47
|
+
- Selecting all devices is recommended - you can hide devices you don't want in the Home app later, by device ID.
|
|
48
|
+
5. Click **Save** and restart Homebridge.
|
|
49
|
+
- If you plan to run this plugin in a child bridge, configure that before restarting, and remember to add the child bridge to the Home app.
|
|
56
50
|
|
|
57
|
-
|
|
51
|
+
### Supported Devices
|
|
58
52
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
This plugin supports **any Resideo/Honeywell thermostat** that appears in your Resideo account, including:
|
|
62
|
-
|
|
63
|
-
#### WiFi-enabled Thermostats (Already HomeKit Certified)
|
|
64
|
-
- [T10 Thermostat](https://www.resideo.com/us/en/products/air/thermostats/wifi-thermostats/t10-pro-smart-thermostat-with-redlinkr-room-sensor-thx321wfs2001w-u/)
|
|
65
|
-
- [T9 Thermostat](https://www.resideo.com/us/en/products/air/thermostats/wifi-thermostats/t9-smart-thermostat-with-sensor-rcht9610wfsw2003-u/)
|
|
53
|
+
- [T10 Thermostat](https://www.resideo.com/us/en/products/air/thermostats/wifi-thermostats/t10-pro-smart-thermostat-with-redlinkr-room-sensor-thx321wfs2001w-u/) - already HomeKit certified
|
|
54
|
+
- [T9 Thermostat](https://www.resideo.com/us/en/products/air/thermostats/wifi-thermostats/t9-smart-thermostat-with-sensor-rcht9610wfsw2003-u/) - already HomeKit certified
|
|
66
55
|
- [T9 Smart Roomsensors](https://www.resideo.com/us/en/products/air/thermostat-accessories/t9-smart-sensor-rchtsensor-1pk-u/)
|
|
67
|
-
- [T6 Thermostat](https://www.resideo.com/us/en/products/air/thermostats/wifi-thermostats/t6-pro-smart-thermostat-multi-stage-3-heat-2-cool-th6320wf2003-u/)
|
|
68
|
-
- [T5 Thermostat](https://www.resideo.com/us/en/products/air/thermostats/wifi-thermostats/t5-smart-thermostat-with-c-wire-adapter-rcht8612wf2005-u/)
|
|
69
|
-
- [Round Thermostat](https://www.resideo.com/us/en/products/air/thermostats/wifi-thermostats/the-round-smart-thermostat-rch9310wf5003-u/)
|
|
56
|
+
- [T6 Thermostat](https://www.resideo.com/us/en/products/air/thermostats/wifi-thermostats/t6-pro-smart-thermostat-multi-stage-3-heat-2-cool-th6320wf2003-u/) - already HomeKit certified
|
|
57
|
+
- [T5 Thermostat](https://www.resideo.com/us/en/products/air/thermostats/wifi-thermostats/t5-smart-thermostat-with-c-wire-adapter-rcht8612wf2005-u/) - already HomeKit certified
|
|
58
|
+
- [Round Thermostat](https://www.resideo.com/us/en/products/air/thermostats/wifi-thermostats/the-round-smart-thermostat-rch9310wf5003-u/) - already HomeKit certified
|
|
59
|
+
- Some Total Comfort Control thermostats
|
|
60
|
+
- Pushing commands may not be supported on some.
|
|
61
|
+
- [WiFi Water Leak & Freeze Detector](https://www.resideo.com/us/en/products/water/spot-leak-detection/wifi-water-leak-freeze-detector-rchw3610wf1001-u/)
|
|
62
|
+
- Water Shutoff Valves
|
|
70
63
|
|
|
71
|
-
|
|
72
|
-
- Most Total Comfort Control thermostats, including:
|
|
73
|
-
- T40 series (e.g., TTHWFP Wireless Programmable Room Thermostat)
|
|
74
|
-
- RTH series programmable thermostats
|
|
75
|
-
- Other TCC-compatible models
|
|
64
|
+
### Help/About
|
|
76
65
|
|
|
77
|
-
|
|
66
|
+
- [Support Request](https://github.com/homebridge-plugins/homebridge-resideo/issues/new/choose)
|
|
67
|
+
- [Changelog](https://github.com/homebridge-plugins/homebridge-resideo/blob/latest/CHANGELOG.md)
|
|
68
|
+
- [About Me](https://github.com/sponsors/bwp91)
|
|
78
69
|
|
|
79
|
-
###
|
|
70
|
+
### Credits
|
|
80
71
|
|
|
81
|
-
- [
|
|
72
|
+
- To [@donavanbecker](https://github.com/donavanbecker): the original creator and maintainer of this plugin.
|
|
73
|
+
- To the creators/contributors of [Homebridge](https://homebridge.io) who make this plugin possible.
|
|
82
74
|
|
|
83
|
-
###
|
|
75
|
+
### Disclaimer
|
|
84
76
|
|
|
85
|
-
|
|
77
|
+
- I am in no way affiliated with Resideo or Honeywell and this plugin is a personal project that I maintain in my free time.
|
|
78
|
+
- Use this plugin entirely at your own risk - please see licence for more information.
|
package/config.schema.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"singular": true,
|
|
5
5
|
"customUi": true,
|
|
6
6
|
"customUiPath": "./dist/homebridge-ui",
|
|
7
|
-
"headerDisplay": "<p align='center'><img width='250px' src='https://
|
|
7
|
+
"headerDisplay": "<p align='center'><img width='250px' src='https://raw.githubusercontent.com/homebridge-plugins/homebridge-resideo/latest/branding/Homebridge_x_Resideo.png'></p>\n\nThe **Homebridge Resideo** plugin allows you to control Resideo thermostats and also view your Leak and Room Sensors from HomeKit. \n\nTo get started link your Resideo account using the button below.",
|
|
8
8
|
"footerDisplay": "Your Resideo account has been linked. Please raise any issues on our [project page](https://github.com/homebridge-plugins/homebridge-resideo/issues).\n\nIf you would like to have other Resideo Devices besides Thermostat, Leak Sensors, or Room Sensors added to this plugin fill out [Feature Request Form](https://github.com/homebridge-plugins/homebridge-resideo/issues/new?assignees=&labels=&template=feature_request.md).",
|
|
9
9
|
"schema": {
|
|
10
10
|
"type": "object",
|
|
@@ -49,6 +49,18 @@
|
|
|
49
49
|
"options": {
|
|
50
50
|
"type": "object",
|
|
51
51
|
"properties": {
|
|
52
|
+
"preferMatter": {
|
|
53
|
+
"title": "Prefer Matter",
|
|
54
|
+
"type": "boolean",
|
|
55
|
+
"default": true,
|
|
56
|
+
"description": "When Matter is available in Homebridge v2.0+, prefer registering devices as Matter accessories. Requires enableMatter to also be true."
|
|
57
|
+
},
|
|
58
|
+
"enableMatter": {
|
|
59
|
+
"title": "Enable Matter",
|
|
60
|
+
"type": "boolean",
|
|
61
|
+
"default": true,
|
|
62
|
+
"description": "Allow the plugin to use the Homebridge Matter API (Homebridge v2.0+). Set to false to always use the HAP path."
|
|
63
|
+
},
|
|
52
64
|
"devices": {
|
|
53
65
|
"type": "array",
|
|
54
66
|
"items": {
|
|
@@ -126,6 +138,72 @@
|
|
|
126
138
|
"functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceClass === 'Thermostat' && model.options.devices[arrayIndices].deviceID);"
|
|
127
139
|
}
|
|
128
140
|
},
|
|
141
|
+
"fan_mode_mapping": {
|
|
142
|
+
"title": "Fan Mode Mapping",
|
|
143
|
+
"type": "object",
|
|
144
|
+
"properties": {
|
|
145
|
+
"auto_mode": {
|
|
146
|
+
"title": "Auto Mode",
|
|
147
|
+
"type": "string",
|
|
148
|
+
"default": "Auto",
|
|
149
|
+
"oneOf": [
|
|
150
|
+
{
|
|
151
|
+
"title": "Auto",
|
|
152
|
+
"enum": ["Auto"]
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"title": "On",
|
|
156
|
+
"enum": ["On"]
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"title": "Circulate",
|
|
160
|
+
"enum": ["Circulate"]
|
|
161
|
+
}
|
|
162
|
+
]
|
|
163
|
+
},
|
|
164
|
+
"on_mode": {
|
|
165
|
+
"title": "Manual/Active Mode",
|
|
166
|
+
"type": "string",
|
|
167
|
+
"default": "On",
|
|
168
|
+
"oneOf": [
|
|
169
|
+
{
|
|
170
|
+
"title": "Auto",
|
|
171
|
+
"enum": ["Auto"]
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"title": "On",
|
|
175
|
+
"enum": ["On"]
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"title": "Circulate",
|
|
179
|
+
"enum": ["Circulate"]
|
|
180
|
+
}
|
|
181
|
+
]
|
|
182
|
+
},
|
|
183
|
+
"off_mode": {
|
|
184
|
+
"title": "Manual/Inactive Mode",
|
|
185
|
+
"type": "string",
|
|
186
|
+
"default": "Circulate",
|
|
187
|
+
"oneOf": [
|
|
188
|
+
{
|
|
189
|
+
"title": "Auto",
|
|
190
|
+
"enum": ["Auto"]
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"title": "On",
|
|
194
|
+
"enum": ["On"]
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"title": "Circulate",
|
|
198
|
+
"enum": ["Circulate"]
|
|
199
|
+
}
|
|
200
|
+
]
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
"condition": {
|
|
204
|
+
"functionBody": "return (model.options && model.options.devices && !model.options.devices[arrayIndices].hide_device && model.options.devices[arrayIndices].deviceClass === 'Thermostat' && model.options.devices[arrayIndices].deviceID && !model.options.devices[arrayIndices].thermostat?.hide_fan);"
|
|
205
|
+
}
|
|
206
|
+
},
|
|
129
207
|
"hide_humidity": {
|
|
130
208
|
"title": "Hide Thermostat Humidity Service",
|
|
131
209
|
"type": "boolean",
|
|
@@ -483,6 +561,26 @@
|
|
|
483
561
|
"title": "Allow Invalid Characters",
|
|
484
562
|
"type": "boolean",
|
|
485
563
|
"description": "If true, invalid characters will be allowed in the device name."
|
|
564
|
+
},
|
|
565
|
+
"convertUnits": {
|
|
566
|
+
"title": "Temperature Unit Override",
|
|
567
|
+
"type": "string",
|
|
568
|
+
"default": "",
|
|
569
|
+
"description": "Override automatic API unit handling when temperatures are reported with the wrong unit.",
|
|
570
|
+
"oneOf": [
|
|
571
|
+
{
|
|
572
|
+
"title": "Automatic",
|
|
573
|
+
"enum": [""]
|
|
574
|
+
},
|
|
575
|
+
{
|
|
576
|
+
"title": "Force Fahrenheit Input",
|
|
577
|
+
"enum": ["fahrenheit"]
|
|
578
|
+
},
|
|
579
|
+
{
|
|
580
|
+
"title": "Force Celsius Input",
|
|
581
|
+
"enum": ["celsius"]
|
|
582
|
+
}
|
|
583
|
+
]
|
|
486
584
|
}
|
|
487
585
|
},
|
|
488
586
|
"required": ["logging"]
|
|
@@ -528,8 +626,18 @@
|
|
|
528
626
|
"options.devices[].deviceModel",
|
|
529
627
|
"options.devices[].thermostat.show_auto",
|
|
530
628
|
"options.devices[].thermostat.hide_fan",
|
|
629
|
+
{
|
|
630
|
+
"key": "options.devices[].thermostat.fan_mode_mapping",
|
|
631
|
+
"type": "fieldset",
|
|
632
|
+
"expandable": true,
|
|
633
|
+
"expanded": false,
|
|
634
|
+
"items": [
|
|
635
|
+
"options.devices[].thermostat.fan_mode_mapping.auto_mode",
|
|
636
|
+
"options.devices[].thermostat.fan_mode_mapping.on_mode",
|
|
637
|
+
"options.devices[].thermostat.fan_mode_mapping.off_mode"
|
|
638
|
+
]
|
|
639
|
+
},
|
|
531
640
|
"options.devices[].thermostat.hide_humidity",
|
|
532
|
-
"options.devices[].thermostat.statefulStatus",
|
|
533
641
|
"options.devices[].thermostat.thermostatSetpointStatus",
|
|
534
642
|
"options.devices[].leaksensor.hide_leak",
|
|
535
643
|
"options.devices[].leaksensor.hide_temperature",
|
|
@@ -605,7 +713,8 @@
|
|
|
605
713
|
"description": "<em class='primary-text'>Specifies the interval, in seconds, between pushes to the Resideo API.</em>"
|
|
606
714
|
},
|
|
607
715
|
"options.logging",
|
|
608
|
-
"options.allowInvalidCharacters"
|
|
716
|
+
"options.allowInvalidCharacters",
|
|
717
|
+
"options.convertUnits"
|
|
609
718
|
]
|
|
610
719
|
}
|
|
611
720
|
]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AxiosInstance } from 'axios';
|
|
2
1
|
import type { API, DynamicPlatformPlugin, HAP, Logging, PlatformAccessory } from 'homebridge';
|
|
2
|
+
import type { HttpClient } from './http-client.js';
|
|
3
3
|
import type { accessoryAttribute, devicesConfig, location, locations, options, resideoDevice, ResideoPlatformConfig, sensorAccessory, T9groups } from './settings.js';
|
|
4
4
|
export declare class ResideoPlatform implements DynamicPlatformPlugin {
|
|
5
5
|
accessories: PlatformAccessory[];
|
|
@@ -22,7 +22,7 @@ export declare class ResideoPlatform implements DynamicPlatformPlugin {
|
|
|
22
22
|
debugMode: boolean;
|
|
23
23
|
version: string;
|
|
24
24
|
action: string;
|
|
25
|
-
|
|
25
|
+
httpClient: HttpClient;
|
|
26
26
|
constructor(log: Logging, config: ResideoPlatformConfig, api: API);
|
|
27
27
|
configureAccessory(accessory: PlatformAccessory): void;
|
|
28
28
|
verifyConfig(): void;
|
|
@@ -33,8 +33,10 @@ export declare class ResideoPlatform implements DynamicPlatformPlugin {
|
|
|
33
33
|
getCurrentSensorData(location: location, device: resideoDevice & devicesConfig, group: T9groups): Promise<any>;
|
|
34
34
|
private normalizeSensorDate;
|
|
35
35
|
getSoftwareRevision(location: location, device: resideoDevice & devicesConfig): Promise<any>;
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
protected discoverDevices(): Promise<void>;
|
|
37
|
+
protected mergeByDeviceID(a1: {
|
|
38
|
+
deviceID: string;
|
|
39
|
+
}[], a2: any[]): any[];
|
|
38
40
|
private deviceClass;
|
|
39
41
|
private discoverRoomSensors;
|
|
40
42
|
private roomsensordisplaymethod;
|
|
@@ -93,4 +95,4 @@ export declare class ResideoPlatform implements DynamicPlatformPlugin {
|
|
|
93
95
|
loggingIsDebug(): Promise<boolean>;
|
|
94
96
|
enablingPlatformLogging(): Promise<boolean>;
|
|
95
97
|
}
|
|
96
|
-
//# sourceMappingURL=
|
|
98
|
+
//# sourceMappingURL=Platform.HAP.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Platform.HAP.d.ts","sourceRoot":"","sources":["../src/Platform.HAP.ts"],"names":[],"mappings":"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"}
|