MCPcopy Index your code
hub / github.com/PeteRager/lennoxs30

github.com/PeteRager/lennoxs30 @20204.8.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 20204.8.0 ↗ · + Follow
877 symbols 3,572 edges 76 files 314 documented · 36% updated 28d ago2026.6.0 · 2026-06-11★ 1394 open issues

Browse by type

Functions 825 Types & classes 52
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Lennox S40/S30/E30/M30 Component

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.

Requirements

  • Home Assistant >= 2023.3.0
  • Thermostat linked to a lennoxicomfort.com account or a Thermostat on local LAN with a static/ DHCP leased IP address

Important Information

  • Note: Where we mention S30 in this documentation that also applies to S40, E30 and M30
  • If you are having problems with your S40 - please make sure you have software version 04.25.0070 or greater installed. You also may need to shutdown HA and reboot the thermostats in order to establish a connection.
  • It is recommended to disable automatic software updates on the Thermostat. This will prevent outages if new versions are not compatible with this integration.
  • If using a local connection and you have more than one S30 in your local network, please use a different app_id for each instance (e.g. homeassistant_1, homeassistant_2). If using a Cloud Connection DO NOT change the default app_id.
  • If you are running more than 1 Home Assistant communicating to cloud or locally - you MUST use a different app_id for each instance - Detailed Configuration
  • WARNING If using the Power Inverter or Diagnostic Sensors - S30 stability problems may arise if your system is connected to the Lennox Cloud. Please review docs/diagnostics.md before using.
  • Equipment Parameters - documentation is here docs/parameters.md
  • Passwords with special characters are not properly supported by the Lennox Cloud API and may not work. Known special characters that cause issues are & and ^. If your password contains these characters you may need to change it prior to using the integration.
  • Adjusting the fan CFM in a single zone system causes some diagnostics to stop updating. Changing the diag_level to 0 and back to 2 solves the issue. A script is available here
  • A power outage to the Lennox Controller causes the diag_level to be reset to 0 on reboot. An automation/package is available here to automatically reset.
  • If you add new equipment (BLE Sensors), restart HA in order for the integration to pickup the new equipment.

Planning your install

There are several items to consider before starting the install.

  • Set the Name for the system. This name will be appended as the prefix for all the entities that get created, so you want something descriptive using only alphanumeric character; but not too long as it'll be in all the entity names. To set this, go into the panel, select settings and look for the Name field.

Overview

This image shows the main entities and controls available for the Lennox S30 integration. Specific entity documentation appears later in this document.

plot

This image shows diagnostic data being collected from the RageHouse Lennox S30 system with an Air Handler and Outdoor Compressor

plot

Donations

If you like this integration

"Buy Me A Coffee"

Installation

HACS

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.

Manually

  1. Go to releases in this repo and download the latest zip or clone the repo
  2. Extract the zip file and copy the 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.
  3. Restart HA.
  4. Follow the Configuration Instructions below

Configuration

Configuration of the integration is done within the Integrations Panel in Home Assistant.

  1. Click on Configuration, then Integrations
  2. Click Add Integration
  3. Search for Lennox S30/E30

Select Cloud or Local

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.

  1. Select Cloud or Local (default) connection

Local Configuration

The next step is providing the connection information.

  1. Enter the IP address of the S30. Alternatively, you can use a DNS name. If you have firewalls and do port mapping you may specify the port (hostname:port or ip:port) By default the S30 exposes HTTPS on Port 443.
  2. You can use the defaults for the rest of the fields, or adjust as needed. See detailed configuration parameters below. Configuration can be changed later when needed. See Detailed Configuration
  3. Submit the form

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.

Cloud Connection

If using a cloud connection. The next step is to specify the connection information.

  1. Enter the email address associated with your Lennox iComfort account
  2. Enter the password associated with your Lennox iComfort account
  3. Use the defaults for the rest of the fields, or adjust as needed. See Detailed Configuration
  4. Submit the form

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.

Advanced Configuration

The next page brings up advanced configuration properties with the recommended defaults.

  1. Use the defaults (recommended) or adjust using the Detailed Configuration
  2. Press submit

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.

plot

Configuration Options

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.

Temperature Units (Celsius, Fahrenheit)

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.

Homeassistant Scripts and automation samples

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.

Devices

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

Entities

Climate

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.

Supported operations

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:

  • If Emergency Heat Mode is set in the S30, the HA climate will show Heat and the select entity will show Emergency Heat.
  • If the Lennox Auxiliary Heat is running, the aux attribute in the HA Climate entity will be set to True and the HA Climate Entity will show Heating

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.

Supported Data

The integration provides all of the standard climate attributes, including

  1. Temperature
  2. Humidity
  3. Current HVAC action
  4. Active setpoints - dependent on the HVAC_MODE. For

Core symbols most depended-on inside this repo

Shape

Method 514
Function 311
Class 52

Languages

Python100%

Modules by API surface

custom_components/lennoxs30/sensor.py88 symbols
custom_components/lennoxs30/switch.py75 symbols
custom_components/lennoxs30/number.py69 symbols
custom_components/lennoxs30/binary_sensor.py64 symbols
custom_components/lennoxs30/select.py56 symbols
custom_components/lennoxs30/climate.py39 symbols
custom_components/lennoxs30/device.py37 symbols
custom_components/lennoxs30/__init__.py31 symbols
tests/test_climate.py30 symbols
custom_components/lennoxs30/binary_sensor_ble.py24 symbols
tests/test_manager.py22 symbols
tests/test_config_flow.py22 symbols

For agents

$ claude mcp add lennoxs30 \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page