Skip to main content

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

Honeywell Home (Lyric) integration for Gladys Assistant

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​

  1. On developer.honeywellhome.com, sign up (any e-mail address), then sign in.
  2. Open My Apps, then Create New App.
  3. App Name: anything, e.g. Gladys.
  4. Callback URL: https://my.gladysassistant.com/redirect/oauth (the HTTPS page Gladys uses to bring you back to your own Gladys after signing in).
  5. 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:

  1. In your Resideo app, set the Callback URL to https://localhost/.
  2. In Gladys, enter the same address in Callback URL (pasted code), save, then click Connect.
  3. 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=…).
  4. 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:

FeatureWhat it is
TemperatureTemperature measured by the thermostat.
HumidityIndoor humidity, when the thermostat measures it.
Outdoor temperatureOutdoor temperature known by Resideo (weather), when given.
Heating setpointTemperature to reach when heating. You can change it.
Cooling setpointTemperature not to exceed when cooling (air conditioning). You can change it.
ModeOff, Heating, Cooling or Auto, as the thermostat allows. You can change it.
Equipment stateWhat the heating or cooling does right now: idle, heating, cooling.
ScheduleT5, T6, T9, T10: follow the schedule or hold a temperature. You can change it.
<room> temperature, <room> humidity, <room> presenceT9/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 Schedule are Follow the schedule, Temporary hold, Permanent hold, Hold until a time and Vacation hold. The last two are shown but set in the Resideo app (they need a time or dates).
  • In Auto mode, 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 Schedule feature. Turning it from off to Auto takes 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.5 or 19,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 Mode to Off; closed again: set it back to Heating.

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.

SettingTypeRequiredDescription
Your Resideo developer appsectionNoResideo 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 keystringYesShown under your app in My Apps on the Resideo developer site.
Consumer secretsecretYesShown next to the consumer key. Never share it.
Honeywell Home accountoauth2NoSave the key and secret first, then click Connect, sign in to Honeywell Home and tick your thermostats.
If Connect does not come back to GladyssectionNoEnter 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)stringNoLeave empty to use the Connect button alone.
Language of the feature namesselectNoNames given to the features when the devices are added, and language of the messages.

How to install Honeywell Home (Lyric) in Gladys​

  1. In Gladys, open Integrations: Honeywell Home (Lyric) appears in the catalog, next to the native integrations, with a community badge.
  2. 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).
  3. Open the Configuration screen of the integration, fill in the settings, and save.
  4. 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.

Subscribe to the Gladys Assistant newsletter

A few emails per month about new releases and project news. Sent by Pierre-Gilles Leymarie, founder of the project. Unsubscribe anytime 🙂