Honeywell Home (Lyric) smart home integration, free and open source

Honeywell Home / Resideo thermostats (Lyric, T5, T6, T9, T10): modes, setpoints, room sensors.
This integration brings your Honeywell Home / Resideo Wi-Fi thermostats into Gladys: Lyric
Round, T5, T6, T9 and T10, and their T9/T10 room sensors. It goes through the official
Resideo cloud API, with a free developer app you create yourself, like the Home Assistant
lyric integration. You get the temperature, the humidity, the setpoints, the mode, what the
equipment does and the schedule of each thermostat, and you control them from the dashboard
and from scenes.
It is not for the older Honeywell Total Connect Comfort thermostats (another API), nor for the evohome systems.
This integration is not affiliated with Resideo or Honeywell. Developed without the hardware: feedback welcome on GitHub.
What you need
- Gladys 5.1 or later, with Internet access.
- A thermostat already working in the Resideo (Honeywell Home) app.
- A free account on the Resideo developer site, to create your own app: Resideo gives no shared key to third-party software.
Set up
1. Create your Resideo developer app
- On developer.honeywellhome.com, sign up (any e-mail address), then sign in.
- Open My Apps, then Create New App.
- App Name: anything, e.g.
Gladys. - Callback URL:
https://my.gladysassistant.com/redirect/oauth(the HTTPS page Gladys uses to bring you back to your own Gladys after signing in). - Save. Open your app in My Apps: it shows a Consumer Key and a Consumer Secret. A new app may stay "pending" for a while before Resideo accepts it.
2. Enter the key and the secret
In Gladys, open Integrations → Honeywell Home (Lyric) → Configuration, paste the Consumer key and the Consumer secret, choose the language of the feature names, then Save.
3. Connect your account
Click Connect next to Honeywell Home account. Resideo opens its sign-in page: sign in with the account of the Resideo app, tick the thermostats Gladys may use, and accept. You come back to Gladys, and a few seconds later the status says the integration is connected. The thermostats are then in the Discover tab: add them.
Under Connect, the Configuration screen shows the redirect URI to declare in your
developer application: https://my.gladysassistant.com/redirect/oauth. If you reach Gladys
over HTTPS and tick Use the address of my instance instead, it shows the address of your
instance instead: then enter that one as Callback URL of your Resideo app.
If Connect does not come back to Gladys
Use the pasted code instead:
- In your Resideo app, set the Callback URL to
https://localhost/. - In Gladys, enter the same address in Callback URL (pasted code), save, then click Connect.
- After signing in, the browser shows an error page on
localhost: that is expected. Copy the whole address from the address bar (it contains?code=…). - Within a few minutes (a code is valid only once and for a short time), paste it in the action Paste the authorization code of the Configuration screen and run it. The answer is "Connected to Resideo: 2 thermostat(s)." for example.
The tokens are kept under /data: you only connect again if Resideo refuses them.
The device of each thermostat
One device per thermostat, named as in the Resideo app. Its features depend on the model:
| Feature | What it is |
|---|---|
Temperature | Temperature measured by the thermostat. |
Humidity | Indoor humidity, when the thermostat measures it. |
Outdoor temperature | Outdoor temperature known by Resideo (weather), when given. |
Heating setpoint | Temperature to reach when heating. You can change it. |
Cooling setpoint | Temperature not to exceed when cooling (air conditioning). You can change it. |
Mode | Off, Heating, Cooling or Auto, as the thermostat allows. You can change it. |
Equipment state | What the heating or cooling does right now: idle, heating, cooling. |
Schedule | T5, T6, T9, T10: follow the schedule or hold a temperature. You can change it. |
<room> temperature, <room> humidity, <room> presence | T9/T10 room sensors: average of the room, someone detected. |
- Temperatures and setpoints are in the unit of the thermostat (°C or °F), within the bounds the thermostat gives. A setpoint is rounded to 0.5 °C or 1 °F.
- Changing a setpoint while the thermostat follows its schedule makes a temporary hold, as on the thermostat itself: the schedule takes over at its next period.
- The options of
ScheduleareFollow the schedule,Temporary hold,Permanent hold,Hold until a timeandVacation hold. The last two are shown but set in the Resideo app (they need a time or dates). - In
Automode, the heating and cooling setpoints must stay apart by the gap the thermostat requires (its deadband). - A Lyric Round has no schedule hold through the API: it has no
Schedulefeature. Turning it from off toAutotakes two writes, three seconds apart (a quirk of the Resideo API). - An offline thermostat shows the "unreachable" badge; the others show "cloud".
Dashboard
No dedicated widget: the Gladys widgets already show a thermostat. Add the Devices widget with the features of your choice: it shows the temperature, the setpoints with their buttons, the mode, the schedule and the room sensors. The temperature and humidity features also fit the room temperature and humidity widgets and the charts.
Scenes
The integration adds its own cards to the scene editor, under Integrations. The device features also work with the usual cards (a temperature above a threshold, set the mode or a setpoint).
Triggers
- Thermostat offline: Resideo no longer reaches a thermostat (Wi-Fi or power cut). Filter: the thermostat. Variable: the thermostat name.
- Thermostat back online: a thermostat reported offline answers again. Filter and variable: the same.
- Honeywell Home sign-in lost: Resideo refused the sign-in; the thermostats are no longer read until you click Connect again. Fired once.
Actions
- Resume the thermostat schedule: cancels the holds, the thermostat follows its schedule again. Every thermostat when none is chosen. Result: the number of thermostats resumed (a Lyric Round is skipped).
- Hold a thermostat temperature: sets the heating setpoint (the cooling one when the
thermostat cools) until the next period of the schedule, or permanently. The temperature is
typed in the unit of the thermostat,
19.5or19,5, and can come from a variable. Result: the setpoint applied, rounded and bounded.
Scene ideas
- When the last person leaves home: Hold a thermostat temperature at 16 °C, permanently; when the first one comes back: Resume the thermostat schedule.
- Thermostat offline: send a message "{{triggerEvent.data.name}} is offline, check the power and the Wi-Fi".
- Honeywell Home sign-in lost: send a message to reconnect the integration.
- A window opened for more than 10 minutes: set
ModetoOff; closed again: set it back toHeating.
API quota and refresh
The integration reads Resideo every 5 minutes: one request for all your thermostats, plus one per T9/T10 for its room sensors. A command adds its write and one reading 15 seconds later. Resideo sizes the free quota of a developer app for a reading every 5 minutes of up to 20 devices, with a little margin for the changes. If Resideo still answers "quota reached", the integration waits twice as long (up to 30 minutes), then goes back to 5 minutes. A value that does not change is still sent to Gladys every 6 hours. Use one developer app for Gladys only.
Troubleshooting
- "Enter the consumer key and secret": fill both fields and save.
- "Click Connect": the account is not connected yet, or the key changed: click Connect.
- The Resideo page says the redirect URI is invalid: the Callback URL of your Resideo app
must be exactly
https://my.gladysassistant.com/redirect/oauth(or the address you chose, see above). - "Resideo refused the sign-in": the connection was revoked or expired at Resideo. Click Connect again. Check that the app is still active in My Apps.
- "Resideo refused the code": a code is valid only once and for a few minutes: click Connect again and paste the new address quickly.
- "Resideo API quota reached": another program uses the same developer app, or the thermostats are many. Wait: the readings slow down on their own.
- No room sensor: only T9 and T10 thermostats share them, and only the rooms with a sensor appear (the room of the thermostat is the thermostat itself). A room added later appears after Update in the Discover tab.
- Test the connection (Configuration screen) reads Resideo at once and lists each thermostat with its temperature and mode.
- More detail in the logs with
LOG_LEVEL=debug; no token or secret is ever written there.
Limits
- Cloud only: no local control, and nothing works when the Resideo cloud or your Internet access is down.
- Changes made elsewhere (thermostat, Resideo app) reach Gladys within 5 minutes.
- Not covered: the fan mode, the vacation hold settings, the schedule itself, the water leak detectors and cameras of Resideo, the Total Connect Comfort and evohome systems.
- The room sensors give the average of their room. Resideo documents their temperature in °F: for a thermostat in °C, a room value above 45 is taken for °F and converted.
- Feature names are set when a device is added: a renamed room keeps its old name in Gladys.
Configuration settings
These are the settings Honeywell Home (Lyric) asks for in its configuration screen in Gladys.
| Setting | Type | Required | Description |
|---|---|---|---|
| Your Resideo developer app | section | No | Resideo gives access to its API through a free developer app of your own. On the Resideo developer site, sign up, open My Apps, Create New App, and paste the Consumer Key and Consumer Secret below. Callback URL of the app: https://my.gladysassistant.com/redirect/oauth (see the documentation). |
| Consumer key | string | Yes | Shown under your app in My Apps on the Resideo developer site. |
| Consumer secret | secret | Yes | Shown next to the consumer key. Never share it. |
| Honeywell Home account | oauth2 | No | Save the key and secret first, then click Connect, sign in to Honeywell Home and tick your thermostats. |
| If Connect does not come back to Gladys | section | No | Enter here the callback URL of your Resideo app (for example https://localhost/), save, then click Connect. After signing in, copy the whole address shown by the browser and paste it in the action Paste the authorization code, within a few minutes. |
| Callback URL (pasted code) | string | No | Leave empty to use the Connect button alone. |
| Language of the feature names | select | No | Names given to the features when the devices are added, and language of the messages. |
How to install Honeywell Home (Lyric) in Gladys
- In Gladys, open Integrations: Honeywell Home (Lyric) appears in the catalog, next to the native integrations, with a community badge.
- Click Install. Gladys pulls the Docker image (
ghcr.io/guim31/gladys-honeywell-lyric:1.0.1), starts it in a sandbox isolated from the core, and generates the integration's interface (devices, discovery and configuration). - Open the Configuration screen of the integration, fill in the settings, and save.
- You can also install it directly from its repository URL: https://github.com/guim31/gladys-honeywell-lyric.
Honeywell Home (Lyric) requires Gladys >=5.1.0. The catalog inside Gladys refreshes every hour, so a new version becomes available at most one hour after its release.
Not running Gladys yet? It is free and open source: follow the installation guide to get started.
About external integrations
Honeywell Home (Lyric) is an external integration: a community integration packaged as a Docker container and published on GitHub, that Gladys installs in one click and runs in a sandbox isolated from its core. It is published and maintained by guim31, not by the Gladys core team.
- Browse all integrations, native and community
- Build and publish your own external integration
- Source code on GitHub — source of this documentation