Browse by type
A custom component for Home Assistant to integrate with Lennox iComfort S40, S30, E30 or M30 thermostats; supporting local LAN connections and Lennox Cloud Connections depending on the device model. We believe these configurations work - let us know if your experience is different!
| Device Type | Local Connection | Cloud Connection |
|---|---|---|
| S30 | Yes | Yes |
| S40 | Yes | Unknown |
| E30 | Yes | Yes |
| M30 | No | Yes |
| Armstrong Comfort Sync A3 | Yes | Unknown |
Please Note: This component does not support the other models of Lennox Thermostats.
There are several items to consider before starting the install.
This image shows the main entities and controls available for the Lennox S30 integration. Specific entity documentation appears later in this document.

This image shows diagnostic data being collected from the RageHouse Lennox S30 system with an Air Handler and Outdoor Compressor
If you like this integration
HACS is recommended as it provides automated install and will notify you when updates are available.
This assumes you have HACS installed and know how to use it. If you need help with this, go to the HACS project documentation.
As of October 2023, this integration is included in the HACS default configuration.
custom_components/lennoxs30 folder and all it's contents including the translations subfolder, into the custom_components folder in your HA installation. If upgrading from a prior release, please remove ALL files from this folder.Configuration of the integration is done within the Integrations Panel in Home Assistant.
The first step is to select a Cloud or a Local connection.
Most, will use the Local Connection. Local connections are faster and more reliable than Cloud Connections. To have this work requires that the S30 has a static IP address (DHCP lease), consult your router documentation for how to configure this.
Why would you use a Cloud Connection? Perhaps you want to monitor your vacation home in the Alps? Or your parent's house?
Need both or have multiple S30s? You are able to run multiple local and multiple cloud connections at the same time. Each is configured using this process.
The next step is providing the connection information.
At this point, the integration will attempt to connect to the S30 - this should take no more than 5-10 seconds. If it succeeds, the Advanced Configuration Page will appear. If it is unable to connect errors will be reported and detailed information will be in the Home Assistant log file. Go onto the Advanced Configuration section.
If using a cloud connection. The next step is to specify the connection information.
At this point, the integration will attempt to connect to the S30 - this should take no more than 5-15 seconds. If it succeeds, the Advanced Configuration Page will appear. If it is unable to connect errors will be reported and detailed information will be in the Home Assistant log file. Go onto the Advanced Configuration section.
The next page brings up advanced configuration properties with the recommended defaults.
At this point, the integration will connect to the S30, download and process its configuration (100kb) and create the Entities in Home Assistant. For local connections, this step typically takes 10-30 seconds complete, for cloud connections it an takes 15-45 seconds. If it is successful, you will be presented with a list of discovered devices. If it fails, review the error and look in the log file for more detailed information.
For Local Connections the Integration instance name is the ip_address / host name. For Cloud Connections the instance name is a redacted version of your email.

If you want to change the integration configuration, do into the integrations page, find the integration and click configure. This will bring up the set of options you can change. After saving, select Reload or Restart HA for the changes to take affect.
The integration detects the unit system configured in Home Assistant and reports the data in the correct units. Celsius is in 0.5 degree increments. Fahrenheit is in 1.0 degrees increments. The Lennox API delivers data in both units, so there is no conversion in the Integration and what you see in the Lennox UI should be what you see in HA.
Samples of useful automations and scripts can be found in the samples/ directory. If you have some you'd like included, open a pull request.
The integration will create a full set of devices representing your HVAC system. Note: depending on your HVAC configuration and the configuration options not all devices may have entities. Please don't delete the unused devices, they will be used as we add more entities in future releases
| Device Type | Description | Name | Parent |
|---|---|---|---|
| S30 | This is the HVAC controller, it is a little box with an antenna located near the indoor unit. | S30 System Name | None |
| Indoor Unit | This specifies the type of indoor unit you have. Examples, include Furnace and Air Handler. |
S30 System Name + Outdoor Unit | S30 |
| Outdoor Unit | This specifies the type of outdoor unit you have. Examples include Heat Pump and Air Conditioner. |
S30 System Name + Indoor Unit | S30 |
| Thermostat | One thermostat device is created for each zone. These are mounted on the walls in your house. | S30 System Name + Zone Name | S30 |
Cloud - Automatically detects all the zones across the homes and systems in your cloud account. Climate Entities created for each zone. The integration creates internal unique_ids using the Cloud GUID of your S30 plus the zone index (0,1,2,3).
Local - Automatically detects all the zones in the S30 it is connected to. Climate Entities created for each zone. The integration creates internal unique_ids using the Serial Number of your S30 plus the zone index (0,1,2,3).
Entities are attached to the corresponding S30 Device and have default names (which you can change in Home Assistant)
climate.*
System name is the name you gave to your S30. By default Lennox names the Zones - "Zone 1", "Zone 2", "Zone 3", "Zone 4" - this is configurable within the S30.
HVAC_MODE supports off, cool, heat or heat_cool mode. The specific modes available depend on you equipment. For example an AC does not support heat, hence the heat and heat_cool modes will not be available.
FAN_MODE may be set to auto, on, circulate.
Heating and cooling setpoints can be set
Presets are supported. The Preset List is the list of schedules that you have configured in the S30.
When you are running a schedule; changes to the temperature or fan create a temporary schedule override (the Mobile APP does the same thing). The override will automatically end at the end of the Next Period (e.g. at the time of your next schedule period.) To cancel the override, there is a preset called Cancel Hold. Invoking this preset will remove the hold and re-enable the underlying schedule.
Away Mode. The Away preset will put the S30 system into Manual Away Mode. You could also use the manual away mode switch to do this. Works the same as if you pressed the away button on the S30 Panel
Cancel Manual Away Mode or Smart Away Mode. The cancel away mode preset will cancel the active away mode (manual or smart) and return the S30 system to whatever state it was in prior to putting it into away mode. This works the same as if you pressed the cancel away icon on the S30 panel.
Emergency Heat - Lennox systems that have a heat pump and an auxiliary furnace, have an additional HVAC_MODE to run just the auxiliary furnace. In the S30 App this is shown as Emergency Heat. Home Assistant does not allow this mode directly - instead a select.system_zone_hvac_mode entity provides support for setting the hvac mode to emergency heat. The integration has the following behavior:
Humidification and Dehumidification
Lennox systems may have humidification and dehumidification capability. If so, you will be able to control the humidity setpoint via the Climate Entity and enable / disable humidification/dehumidification via the humidity mode select entity. Lennox has separate setpoints for humidification (husp) and dehumidification (desp); however Home Assistant only support one humidity setpoint. Hence, the Target Humidity shown in Thermostat is based on the active humidity mode. If no humidity mode is active for the zone, the Target Humidity will be unavailable.
The integration provides all of the standard climate attributes, including
$ claude mcp add lennoxs30 \
-- python -m otcore.mcp_server <graph>